@dignite-ng/expand.core 3.0.0-rc.48 → 3.0.0-rc.50
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.
- package/esm2022/lib/constants/styles.mjs +77 -0
- package/esm2022/lib/core.module.mjs +58 -0
- package/esm2022/lib/pipes/get-tenant-img.pipe.mjs +2 -1
- package/esm2022/lib/pipes/slug-normalizer.pipe.mjs +36 -6
- package/esm2022/lib/providers/core-config.providers.mjs +15 -0
- package/esm2022/lib/providers/index.mjs +3 -0
- package/esm2022/lib/providers/styles.providers.mjs +18 -0
- package/esm2022/lib/services/dignite-validators.service.mjs +144 -0
- package/esm2022/lib/services/get-image-lacol-base64url.service.mjs +27 -0
- package/esm2022/lib/services/index.mjs +5 -1
- package/esm2022/lib/services/location-back.service.mjs +4 -1
- package/esm2022/lib/services/models.mjs +2 -0
- package/esm2022/lib/services/to-pinyin.service.mjs +36 -0
- package/esm2022/lib/services/validators.service.mjs +4 -1
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/dignite-ng-expand.core.mjs +400 -11
- package/fesm2022/dignite-ng-expand.core.mjs.map +1 -1
- package/lib/constants/styles.d.ts +2 -0
- package/lib/core.module.d.ts +17 -0
- package/lib/pipes/get-tenant-img.pipe.d.ts +1 -0
- package/lib/pipes/slug-normalizer.pipe.d.ts +1 -0
- package/lib/providers/core-config.providers.d.ts +4 -0
- package/lib/providers/index.d.ts +2 -0
- package/lib/providers/styles.providers.d.ts +9 -0
- package/lib/services/dignite-validators.service.d.ts +39 -0
- package/lib/services/get-image-lacol-base64url.service.d.ts +10 -0
- package/lib/services/index.d.ts +4 -0
- package/lib/services/location-back.service.d.ts +4 -4
- package/lib/services/models.d.ts +17 -0
- package/lib/services/to-pinyin.service.d.ts +6 -0
- package/lib/services/validators.service.d.ts +3 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dignite-ng-expand.core.mjs","sources":["../../../../packages/core/src/lib/strategies/simple-reuse-strategy.ts","../../../../packages/core/src/lib/services/update-list.service.ts","../../../../packages/core/src/lib/services/validators.service.ts","../../../../packages/core/src/lib/services/location-back.service.ts","../../../../packages/core/src/lib/pipes/get-now-domain.pipe.ts","../../../../packages/core/src/lib/pipes/get-tenant-img.pipe.ts","../../../../packages/core/src/lib/pipes/slug-normalizer.pipe.ts","../../../../packages/core/src/lib/expand/image-preview.component.ts","../../../../packages/core/src/lib/directives/keydown-prevent-default.directive.ts","../../../../packages/core/src/public-api.ts","../../../../packages/core/src/dignite-ng-expand.core.ts"],"sourcesContent":["import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';\r\n/**\r\n * 路由复用策略\r\n * \r\n * 1. 实现shouldReuseRoute方法,判断是否同一路由时复用路由\r\n * 2. 实现retrieve方法,获取存储路由\r\n * 3. 实现shouldDetach方法,判断是否有路由存储\r\n * 4. 实现store方法,存储路由\r\n * 5. 实现shouldAttach方法,判断是否有路由存储\r\n * 6. 实现retrieve方法,获取存储路由\r\n * 7. 实现destroy方法,销毁路由\r\n * \r\n * *使用方法\r\n @NgModule({\r\n providers: [\r\n { provide: RouteReuseStrategy, useClass: SimpleReuseStrategy }\r\n ],\r\n })\r\n\r\n data: { keep: true }\r\n */\r\nexport class SimpleReuseStrategy implements RouteReuseStrategy {\r\n static cacheRouters = new Map<string, DetachedRouteHandle>();\r\n\r\n public static deleteRouteCache(url): void {\r\n if (SimpleReuseStrategy.cacheRouters.has(url)) {\r\n const handle: any = SimpleReuseStrategy.cacheRouters.get(url);\r\n try {\r\n handle.componentRef.destory();\r\n } catch (e) { /* empty */ }\r\n SimpleReuseStrategy.cacheRouters.delete(url);\r\n }\r\n }\r\n\r\n public static deleteAllRouteCache(): void {\r\n SimpleReuseStrategy.cacheRouters.forEach((handle: any, key) => {\r\n SimpleReuseStrategy.deleteRouteCache(key);\r\n });\r\n }\r\n\r\n // one 进入路由触发,是否同一路由时复用路由\r\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\r\n return (\r\n future.routeConfig === curr.routeConfig &&\r\n JSON.stringify(future.params) === JSON.stringify(curr.params)\r\n );\r\n }\r\n\r\n // 获取存储路由\r\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {\r\n const url = this.getFullRouteURL(route);\r\n if (route.data.keep && SimpleReuseStrategy.cacheRouters.has(url)) {\r\n return SimpleReuseStrategy.cacheRouters.get(url);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n // Whether to allow multiplexing routes\r\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\r\n return Boolean(route.data.keep);\r\n }\r\n //It is triggered when the route leaves. The route is stored\r\n store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {\r\n const url = this.getFullRouteURL(route);\r\n // 先把之前缓存的删除,\r\n SimpleReuseStrategy.cacheRouters.forEach((handle: any, key) => {\r\n SimpleReuseStrategy.deleteRouteCache(key);\r\n });\r\n SimpleReuseStrategy.cacheRouters.set(url, handle);\r\n }\r\n // Whether to allow route restoration\r\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\r\n const url = this.getFullRouteURL(route);\r\n return Boolean(route.data.keep) && SimpleReuseStrategy.cacheRouters.has(url);\r\n }\r\n\r\n // Gets the current route url\r\n private getFullRouteURL(route: ActivatedRouteSnapshot): string {\r\n const { pathFromRoot } = route;\r\n let fullRouteUrlPath: string[] = [];\r\n pathFromRoot.forEach((item: ActivatedRouteSnapshot) => {\r\n fullRouteUrlPath = fullRouteUrlPath.concat(this.getRouteUrlPath(item));\r\n });\r\n return `/${fullRouteUrlPath.join('/')}`;\r\n }\r\n private getRouteUrlPath(route: ActivatedRouteSnapshot) {\r\n return route.url.map(urlSegment => urlSegment.path);\r\n }\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n/**\r\n * 子页面更新父级列表服务\r\n * \r\n * 父页面:\r\n * \r\n private _UpdateListService=inject(UpdateListService)\r\n\r\n this._UpdateListService.updateListEvent.subscribe(() => {\r\n this.list.get()\r\n });\r\n * \r\n * 子页面:\r\n * \r\n private _UpdateListService=inject(UpdateListService)\r\n this._UpdateListService.updateList();\r\n */\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UpdateListService {\r\n public updateListEvent: EventEmitter<any> = new EventEmitter();\r\n\r\n\r\n updateList() {\r\n this.updateListEvent.emit();\r\n }\r\n\r\n /**\r\n * 使用发起数据\r\n * this.dataSubject.next(res);\r\n * \r\n * 接收数据产生回调\r\n this._UpdateLogoService.userInfo$.subscribe((res) => {\r\n this.getData();\r\n });\r\n */\r\n\r\n private dataSubject = new BehaviorSubject<any>(null);\r\n data$ = this.dataSubject.asObservable();\r\n updatedata(newdata: any) {\r\n this.dataSubject.next(newdata);\r\n }\r\n}\r\n","import { LocalizationService } from '@abp/ng.core';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { Injectable } from '@angular/core';\r\nimport { FormGroup, FormArray, FormControl, Validators } from '@angular/forms';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ValidatorsService {\r\n constructor(private toaster: ToasterService, private _LocalizationService: LocalizationService) {}\r\n\r\n /**检查表单- */\r\n isCheckForm(input: { [key: string]: boolean }, module = 'AbpValidation'): boolean {\r\n const keys = Object.keys(input);\r\n for (let i = 0; i < keys.length; i++) {\r\n const element = keys[i];\r\n if (input[element] === false) {\r\n const displayName = element.charAt(0).toUpperCase() + element.slice(1);\r\n console.log(element,'element',displayName);\r\n let info = `\"${this._LocalizationService.instant(`${module}::${displayName}`)}\" `;\r\n if (element.includes('.') && !element.includes('].')) {\r\n const arr = element.split('.');\r\n info = `\"${this._LocalizationService.instant(\r\n `${module}::${arr[0]}`,\r\n )}.${this._LocalizationService.instant(`${module}::${arr[1]}`)}\"`;\r\n }\r\n if (element.includes('].')) {\r\n const arr = element.split('].');\r\n const arrStart = arr[0].split('[');\r\n info = `\"${this._LocalizationService.instant(`${module}::${arrStart[0]}`)}[${\r\n arrStart[1]\r\n }].${this._LocalizationService.instant(`${module}::${arr[1]}`)}\"`;\r\n }\r\n info = info + this._LocalizationService.instant(`AbpValidation::ThisFieldIsNotValid.`);\r\n\r\n //使用abp多语言提示\r\n this.toaster.warn(info);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**获取表单所有字段是否通过验证 */\r\n getFormValidationStatus(formEntity: FormGroup | FormArray): { [key: string]: any } {\r\n const validationStatus: { [key: string]: any } = {};\r\n \r\n // 递归遍历表单组和表单控件集合\r\n const traverseForm = (form: FormGroup | FormArray, prefix = '') => {\r\n if (form instanceof FormGroup) {\r\n Object.keys(form.controls).forEach(key => {\r\n const control = form.controls[key];\r\n // const displayName = key.charAt(0).toUpperCase() + key.slice(1);\r\n const displayName = key;\r\n const fullKey = prefix ? `${prefix}.${displayName}` : displayName;\r\n if (control instanceof FormControl) {\r\n validationStatus[fullKey] = control.valid;\r\n } else if (control instanceof FormArray) {\r\n traverseForm(control, fullKey);\r\n } else if (control instanceof FormGroup) {\r\n traverseForm(control, fullKey);\r\n }\r\n });\r\n } else if (form instanceof FormArray) {\r\n form.controls.forEach((control, index) => {\r\n const fullKey = prefix ? `${prefix}[${index}]` : `[${index}]`;\r\n if (control instanceof FormControl) {\r\n validationStatus[fullKey] = control.valid;\r\n } else if (control instanceof FormArray) {\r\n traverseForm(control, fullKey);\r\n } else if (control instanceof FormGroup) {\r\n traverseForm(control, fullKey);\r\n }\r\n });\r\n }\r\n };\r\n\r\n traverseForm(formEntity);\r\n\r\n return validationStatus;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { Router } from '@angular/router';\r\n\r\nexport interface backBase {\r\n //检查的链接,如果链接中包含该字符串,则返回上一页,否则跳转到Url页\r\n url?: string;\r\n //链接补充,用于在url后面补充其余链接\r\n replenish?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LocationBackService {\r\n constructor(public _location: Location, private router: Router) {}\r\n backTo(input?: backBase) {\r\n const { url, replenish } = input;\r\n const referrer = document.referrer;\r\n const targetUrl = url;\r\n //如果referrer中包含targetUrl,则返回上一页,否则跳转到targetUrl页\r\n if (referrer && referrer.includes(targetUrl) && !referrer.includes(targetUrl + replenish)) {\r\n this.back();\r\n } else {\r\n this.router.navigate([targetUrl]);\r\n }\r\n }\r\n\r\n back() {\r\n this._location.back();\r\n }\r\n}\r\n","import { EnvironmentService } from '@abp/ng.core';\r\nimport { inject, Pipe, PipeTransform } from '@angular/core';\r\n/**获取当前窗口域名\r\n * 需要将environment.ts页面配置\r\n application: {\r\n baseUrl,\r\n name: 'Travely',\r\n webUrl:'https://localhost:44374',\r\n },\r\n *\r\n */\r\n@Pipe({\r\n name: 'getNowDomain',\r\n standalone: true\r\n})\r\nexport class GetNowDomainPipe implements PipeTransform {\r\n private environment = inject(EnvironmentService);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n transform(value: unknown, ...args: unknown[]): unknown {\r\n const production = this.environment.getEnvironment()?.production;\r\n const application:any=this.environment.getEnvironment()?.application;\r\n const webUrl=application?.webUrl;\r\n if (!production) return webUrl + value;\r\n return this.get(value);\r\n }\r\n\r\n /**获取当前域名并重定向链接 */\r\n get(value) {\r\n const baseUrl: any = (function () {\r\n const extractDomain = (url) => {\r\n const regex = /^(https?:\\/\\/)?([^/]+)(?:[/?].*)?$/;\r\n // const regex = /^(https?:\\/\\/)?([^\\/]+)(?:[\\/?].*)?$/;\r\n const match = url.match(regex);\r\n if (match) {\r\n const protocol = match[1] || '';\r\n const domain = `${protocol}${match[2]}`;\r\n return `${domain}`;\r\n }\r\n return url;\r\n }\r\n const url = window.location.href;\r\n return `${extractDomain(url)}` + value\r\n })()\r\n return baseUrl\r\n }\r\n\r\n}\r\n","//pipe下新建:get-tenant-img.pipe.ts,\r\n//如何引用见:独立管道的使用\r\n\r\nimport { ConfigStateService, EnvironmentService } from '@abp/ng.core';\r\nimport { inject, Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'getTenantImg',\r\n standalone:true,\r\n})\r\nexport class GetTenantImgPipe implements PipeTransform {\r\n private configState = inject(ConfigStateService)\r\n private environment = inject(EnvironmentService)\r\n transform(value: unknown, ...args: unknown[]): unknown {\r\n const tenantId = this.configState.getDeep('currentUser.tenantId')||'';\r\n const environment = this.environment.getEnvironment();\r\n const imgUrl =`${environment.apis.default.url}/api/file-explorer/files/${args}/${value}?__tenant=${tenantId}`\r\n return value?imgUrl:'';\r\n }\r\n}\r\n//使用\r\n// {{'agentAvatarBlobName'|getTenantImg:'Avatar'}}\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'slugNormalizer',\r\n standalone: true\r\n})\r\nexport class SlugNormalizerPipe implements PipeTransform {\r\n\r\n transform(value: unknown, ...args: unknown[]): unknown {\r\n return this.normalize(value);\r\n }\r\n\r\n normalize(value) {\r\n // Convert to lowercase\r\n value = value.toLowerCase();\r\n // Replace special characters with hyphen\r\n const invalidChars = ['\\\\', '/', '?', '&', '=', '+', '%', '#', '@', '!', '$', '\\'', '\"', ':', ';', '>', '<', '*', '(', ')', '[', '],', '{', '}', '|', '^', '`', '~'];\r\n for (const c of invalidChars) {\r\n value = value.replaceAll(c, '-');\r\n }\r\n // Convert spaces to hyphens\r\n value = value.replaceAll(\" \", \"-\");\r\n\r\n // Remove multiple consecutive hyphens\r\n while (value.includes(\"--\")) {\r\n value = value.replaceAll(\"--\", \"-\");\r\n }\r\n\r\n // Trim hyphens from start and end\r\n value = value.trim('-');\r\n \r\n // URL encode the remaining string (handles UTF-8 characters)\r\n //部分编码-保留语义\r\n //return encodeURI(value);\r\n //全部编码\r\n return encodeURIComponent(value);\r\n }\r\n\r\n}\r\n","/* eslint-disable @angular-eslint/component-selector */\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-image-preview',\r\n template: `\r\n <div\r\n [id]=\"id\"\r\n *ngIf=\"_src\"\r\n class=\"image-preview imagehove border position-relative m-1 overflow-hidden \"\r\n [style]=\"{'width': width+'px','height': height+'px',borderRadius:rounded}\" [ngClass]=\"{'rounded-4': !rounded,'bg-black':bgBlack}\"\r\n >\r\n <img [src]=\"_src\" alt=\"\" class=\"w-100 h-100 object-fit-cover\" />\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input position-absolute top-0 end-0 m-1\"\r\n *ngIf=\"checkChange.observed\"\r\n (change)=\"checkImage($event)\"\r\n style=\"z-index: 10;\"\r\n />\r\n <div\r\n class=\"w-100 h-100 text-white position-absolute top-0 start-0\"\r\n style=\"background-color: #00000050;\"\r\n *ngIf=\"preview || deleteChange.observed\"\r\n >\r\n <i\r\n type=\"button\"\r\n class=\"fa fa-eye p-2\"\r\n *ngIf=\"preview\"\r\n (click.stop)=\"OpenPreviewImage(content)\"\r\n ></i>\r\n <i\r\n type=\"button\"\r\n class=\"fa fa-times p-2\"\r\n *ngIf=\"deleteChange.observed\"\r\n (click.stop)=\"deletecoverPics()\"\r\n ></i>\r\n </div>\r\n </div>\r\n\r\n <ng-template #content let-modal>\r\n <div class=\"modal-header\">\r\n <div class=\"d-flex justify-content-end w-100 fs-3 text-white\">\r\n <i\r\n class=\"mx-2 fa fa fa-repeat\"\r\n aria-hidden=\"true\"\r\n title=\"右旋转\"\r\n role=\"button\"\r\n (click)=\"RotateRight()\"\r\n ></i>\r\n <i\r\n class=\"mx-2 fa fa-search-minus\"\r\n aria-hidden=\"true\"\r\n title=\"缩小\"\r\n role=\"button\"\r\n (click)=\"zoomOut()\"\r\n ></i>\r\n <i\r\n class=\"mx-2 fa fa-search-plus\"\r\n aria-hidden=\"true\"\r\n title=\"放大\"\r\n role=\"button\"\r\n (click)=\"zoomIn()\"\r\n ></i>\r\n <i\r\n class=\"mx-2 fa fa-times\"\r\n aria-hidden=\"true\"\r\n role=\"button\"\r\n (click)=\"modal.dismiss('Cross click')\"\r\n ></i>\r\n </div>\r\n </div>\r\n <div class=\"modal-body d-flex justify-content-center align-items-center \">\r\n <img\r\n width=\"400\"\r\n class=\"modal-body-preview\"\r\n [src]=\"_src\"\r\n [style.transform]=\"'scale(' + zoom / 10 + ') rotate(' + rotate + 'deg)'\"\r\n />\r\n </div>\r\n </ng-template>\r\n `,\r\n styles: [\r\n `\r\n .image-preview.imagehove > div {\r\n display: none;\r\n }\r\n\r\n .image-preview.imagehove:hover div {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n ::ng-deep.dignite-preview .modal-content {\r\n background-color: transparent !important;\r\n }\r\n .object-fit-cover{\r\n object-fit: cover;\r\n }\r\n `,\r\n ],\r\n standalone: true,\r\n imports: [CoreModule, ThemeSharedModule, CommonModule, PageModule],\r\n})\r\nexport class ImagePreviewComponent {\r\n /**图片链接 */\r\n _src: any = '';\r\n @Input()\r\n public set src(v: any) {\r\n this._src = v;\r\n }\r\n\r\n /**是否预览 */\r\n @Input() preview = true;\r\n\r\n /**宽 */\r\n @Input() width = 90;\r\n /**高 */\r\n @Input() height = 90;\r\n @Input() rounded = '';\r\n @Input() id = '';\r\n @Input() bgBlack = false;\r\n\r\n /**模态框实例 */\r\n modalRef!: NgbModalRef;\r\n\r\n /**放大倍数 */\r\n zoom: number|any = 10;\r\n\r\n /**旋转 */\r\n rotate: number|any = 0;\r\n constructor(\r\n private modalService:NgbModal\r\n ){}\r\n\r\n\r\n @Output() deleteChange = new EventEmitter();\r\n @Output() checkChange = new EventEmitter();\r\n\r\n /**选择图片的事件,返回父组件是否选中 */\r\n checkImage(event: any) {\r\n this.checkChange.emit(event.target.checked);\r\n }\r\n\r\n /**删除图片 */\r\n deletecoverPics() {\r\n this.deleteChange.emit();\r\n }\r\n\r\n /**打开预览弹窗 */\r\n OpenPreviewImage(content: TemplateRef<any>) {\r\n this.modalRef = this.modalService.open(content, {\r\n fullscreen: true,\r\n modalDialogClass: 'dignite-preview',\r\n });\r\n this.modalRef.result.then(\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n () => {\r\n },\r\n () => {\r\n this.zoom = 10;\r\n }\r\n );\r\n }\r\n /**放大图像 */\r\n zoomIn() {\r\n let zoom = this.zoom;\r\n if (zoom == 20) return;\r\n zoom++;\r\n this.zoom = zoom;\r\n }\r\n\r\n /**缩小图像 */\r\n zoomOut() {\r\n let zoom = this.zoom;\r\n if (zoom == 3) return;\r\n zoom--;\r\n this.zoom = zoom;\r\n }\r\n\r\n /**右旋转 */\r\n RotateRight() {\r\n if (this.rotate == 360) return (this.rotate = 0);\r\n this.rotate += 90;\r\n }\r\n}\r\n","/* eslint-disable @angular-eslint/directive-selector */\r\nimport { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[KeydownPreventDefault]',\r\n standalone: true,\r\n})\r\nexport class KeydownPreventDefaultDirective {\r\n\r\n @HostListener('keydown.enter', ['$event'])\r\n onKeyDown(event: KeyboardEvent) {\r\n event.preventDefault();\r\n }\r\n}\r\n","/*\r\n * Public API Surface of core\r\n */\r\n\r\nexport * from './lib/strategies';\r\nexport * from './lib/services';\r\nexport * from './lib/pipes';\r\nexport * from './lib/expand';\r\nexport * from './lib/directives';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dignite-ng-expand.core.mjs","sources":["../../../../packages/core/src/lib/strategies/simple-reuse-strategy.ts","../../../../packages/core/src/lib/services/update-list.service.ts","../../../../packages/core/src/lib/services/validators.service.ts","../../../../packages/core/src/lib/services/location-back.service.ts","../../../../packages/core/src/lib/services/dignite-validators.service.ts","../../../../packages/core/src/lib/services/to-pinyin.service.ts","../../../../packages/core/src/lib/services/get-image-lacol-base64url.service.ts","../../../../packages/core/src/lib/pipes/get-now-domain.pipe.ts","../../../../packages/core/src/lib/pipes/get-tenant-img.pipe.ts","../../../../packages/core/src/lib/pipes/slug-normalizer.pipe.ts","../../../../packages/core/src/lib/expand/image-preview.component.ts","../../../../packages/core/src/lib/directives/keydown-prevent-default.directive.ts","../../../../packages/core/src/lib/constants/styles.ts","../../../../packages/core/src/lib/providers/styles.providers.ts","../../../../packages/core/src/lib/providers/core-config.providers.ts","../../../../packages/core/src/lib/core.module.ts","../../../../packages/core/src/public-api.ts","../../../../packages/core/src/dignite-ng-expand.core.ts"],"sourcesContent":["import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';\r\n/**\r\n * 路由复用策略\r\n * \r\n * 1. 实现shouldReuseRoute方法,判断是否同一路由时复用路由\r\n * 2. 实现retrieve方法,获取存储路由\r\n * 3. 实现shouldDetach方法,判断是否有路由存储\r\n * 4. 实现store方法,存储路由\r\n * 5. 实现shouldAttach方法,判断是否有路由存储\r\n * 6. 实现retrieve方法,获取存储路由\r\n * 7. 实现destroy方法,销毁路由\r\n * \r\n * *使用方法\r\n @NgModule({\r\n providers: [\r\n { provide: RouteReuseStrategy, useClass: SimpleReuseStrategy }\r\n ],\r\n })\r\n\r\n data: { keep: true }\r\n */\r\nexport class SimpleReuseStrategy implements RouteReuseStrategy {\r\n static cacheRouters = new Map<string, DetachedRouteHandle>();\r\n\r\n public static deleteRouteCache(url): void {\r\n if (SimpleReuseStrategy.cacheRouters.has(url)) {\r\n const handle: any = SimpleReuseStrategy.cacheRouters.get(url);\r\n try {\r\n handle.componentRef.destory();\r\n } catch (e) { /* empty */ }\r\n SimpleReuseStrategy.cacheRouters.delete(url);\r\n }\r\n }\r\n\r\n public static deleteAllRouteCache(): void {\r\n SimpleReuseStrategy.cacheRouters.forEach((handle: any, key) => {\r\n SimpleReuseStrategy.deleteRouteCache(key);\r\n });\r\n }\r\n\r\n // one 进入路由触发,是否同一路由时复用路由\r\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\r\n return (\r\n future.routeConfig === curr.routeConfig &&\r\n JSON.stringify(future.params) === JSON.stringify(curr.params)\r\n );\r\n }\r\n\r\n // 获取存储路由\r\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {\r\n const url = this.getFullRouteURL(route);\r\n if (route.data.keep && SimpleReuseStrategy.cacheRouters.has(url)) {\r\n return SimpleReuseStrategy.cacheRouters.get(url);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n // Whether to allow multiplexing routes\r\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\r\n return Boolean(route.data.keep);\r\n }\r\n //It is triggered when the route leaves. The route is stored\r\n store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {\r\n const url = this.getFullRouteURL(route);\r\n // 先把之前缓存的删除,\r\n SimpleReuseStrategy.cacheRouters.forEach((handle: any, key) => {\r\n SimpleReuseStrategy.deleteRouteCache(key);\r\n });\r\n SimpleReuseStrategy.cacheRouters.set(url, handle);\r\n }\r\n // Whether to allow route restoration\r\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\r\n const url = this.getFullRouteURL(route);\r\n return Boolean(route.data.keep) && SimpleReuseStrategy.cacheRouters.has(url);\r\n }\r\n\r\n // Gets the current route url\r\n private getFullRouteURL(route: ActivatedRouteSnapshot): string {\r\n const { pathFromRoot } = route;\r\n let fullRouteUrlPath: string[] = [];\r\n pathFromRoot.forEach((item: ActivatedRouteSnapshot) => {\r\n fullRouteUrlPath = fullRouteUrlPath.concat(this.getRouteUrlPath(item));\r\n });\r\n return `/${fullRouteUrlPath.join('/')}`;\r\n }\r\n private getRouteUrlPath(route: ActivatedRouteSnapshot) {\r\n return route.url.map(urlSegment => urlSegment.path);\r\n }\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n/**\r\n * 子页面更新父级列表服务\r\n * \r\n * 父页面:\r\n * \r\n private _UpdateListService=inject(UpdateListService)\r\n\r\n this._UpdateListService.updateListEvent.subscribe(() => {\r\n this.list.get()\r\n });\r\n * \r\n * 子页面:\r\n * \r\n private _UpdateListService=inject(UpdateListService)\r\n this._UpdateListService.updateList();\r\n */\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UpdateListService {\r\n public updateListEvent: EventEmitter<any> = new EventEmitter();\r\n\r\n\r\n updateList() {\r\n this.updateListEvent.emit();\r\n }\r\n\r\n /**\r\n * 使用发起数据\r\n * this.dataSubject.next(res);\r\n * \r\n * 接收数据产生回调\r\n this._UpdateLogoService.userInfo$.subscribe((res) => {\r\n this.getData();\r\n });\r\n */\r\n\r\n private dataSubject = new BehaviorSubject<any>(null);\r\n data$ = this.dataSubject.asObservable();\r\n updatedata(newdata: any) {\r\n this.dataSubject.next(newdata);\r\n }\r\n}\r\n","import { LocalizationService } from '@abp/ng.core';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { Injectable } from '@angular/core';\r\nimport { FormGroup, FormArray, FormControl, Validators } from '@angular/forms';\r\n\r\n\r\n/**\r\n * @deprecated 请使用 {@link DigniteValidatorsService} 服务。\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ValidatorsService {\r\n constructor(private toaster: ToasterService, private _LocalizationService: LocalizationService) {}\r\n\r\n /**检查表单- */\r\n isCheckForm(input: { [key: string]: boolean }, module = 'AbpValidation'): boolean {\r\n const keys = Object.keys(input);\r\n for (let i = 0; i < keys.length; i++) {\r\n const element = keys[i];\r\n if (input[element] === false) {\r\n const displayName = element.charAt(0).toUpperCase() + element.slice(1);\r\n console.log(element,'element',displayName);\r\n let info = `\"${this._LocalizationService.instant(`${module}::${displayName}`)}\" `;\r\n if (element.includes('.') && !element.includes('].')) {\r\n const arr = element.split('.');\r\n info = `\"${this._LocalizationService.instant(\r\n `${module}::${arr[0]}`,\r\n )}.${this._LocalizationService.instant(`${module}::${arr[1]}`)}\"`;\r\n }\r\n if (element.includes('].')) {\r\n const arr = element.split('].');\r\n const arrStart = arr[0].split('[');\r\n info = `\"${this._LocalizationService.instant(`${module}::${arrStart[0]}`)}[${\r\n arrStart[1]\r\n }].${this._LocalizationService.instant(`${module}::${arr[1]}`)}\"`;\r\n }\r\n info = info + this._LocalizationService.instant(`AbpValidation::ThisFieldIsNotValid.`);\r\n\r\n //使用abp多语言提示\r\n this.toaster.warn(info);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**获取表单所有字段是否通过验证 */\r\n getFormValidationStatus(formEntity: FormGroup | FormArray): { [key: string]: any } {\r\n const validationStatus: { [key: string]: any } = {};\r\n \r\n // 递归遍历表单组和表单控件集合\r\n const traverseForm = (form: FormGroup | FormArray, prefix = '') => {\r\n if (form instanceof FormGroup) {\r\n Object.keys(form.controls).forEach(key => {\r\n const control = form.controls[key];\r\n // const displayName = key.charAt(0).toUpperCase() + key.slice(1);\r\n const displayName = key;\r\n const fullKey = prefix ? `${prefix}.${displayName}` : displayName;\r\n if (control instanceof FormControl) {\r\n validationStatus[fullKey] = control.valid;\r\n } else if (control instanceof FormArray) {\r\n traverseForm(control, fullKey);\r\n } else if (control instanceof FormGroup) {\r\n traverseForm(control, fullKey);\r\n }\r\n });\r\n } else if (form instanceof FormArray) {\r\n form.controls.forEach((control, index) => {\r\n const fullKey = prefix ? `${prefix}[${index}]` : `[${index}]`;\r\n if (control instanceof FormControl) {\r\n validationStatus[fullKey] = control.valid;\r\n } else if (control instanceof FormArray) {\r\n traverseForm(control, fullKey);\r\n } else if (control instanceof FormGroup) {\r\n traverseForm(control, fullKey);\r\n }\r\n });\r\n }\r\n };\r\n\r\n traverseForm(formEntity);\r\n\r\n return validationStatus;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { Router } from '@angular/router';\r\nimport { backBase } from './models';\r\n\r\n\r\n/**\r\n * 用于返回上一页的服务\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LocationBackService {\r\n constructor(public _location: Location, private router: Router) {}\r\n backTo(input?: backBase) {\r\n const { url, replenish } = input;\r\n const referrer = document.referrer;\r\n const targetUrl = url;\r\n //如果referrer中包含targetUrl,则返回上一页,否则跳转到targetUrl页\r\n if (referrer && referrer.includes(targetUrl) && !referrer.includes(targetUrl + replenish)) {\r\n this.back();\r\n } else {\r\n this.router.navigate([targetUrl]);\r\n }\r\n }\r\n\r\n back() {\r\n this._location.back();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\r\nimport { LocalizationService } from '@abp/ng.core';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { FormControlStateDto } from './models';\r\nimport { AbstractControl } from '@angular/forms';\r\n\r\ninterface InvalidControlInfo {\r\n path: string;\r\n control: FormControl | FormArray;\r\n errors: any;\r\n}\r\n\r\n/**\r\n * 用于验证表单的服务\r\n * 包含表单验证方法和多语言翻译方法\r\n * @description 针对自定义表单暂未有更好的表单验证提示,继续使用本机的验证方式\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DigniteValidatorsService {\r\n constructor(private toaster: ToasterService, private _LocalizationService: LocalizationService) {}\r\n\r\n /**\r\n * 设置表单中指定多个字段禁用或者启用\r\n * @param input 包含表单、字段名称和禁用状态的输入对象\r\n * @returns 无返回值\r\n */\r\n setFormControlState(input: FormControlStateDto) {\r\n const { form, controlNames, disabled } = input;\r\n for (const name of controlNames) {\r\n const control = form.get(`${name}`) as FormControl;\r\n if (control && disabled) {\r\n control.disable();\r\n } else if (control && !disabled) {\r\n control.enable();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 获取错误信息\r\n * @description 获取表单的错误信息,并根据映射对象进行本地化\r\n * @param form 表单\r\n * @param map 映射对象\r\n * @returns 错误信息\r\n */\r\n getErrorMessage(input: any): string|InvalidControlInfo[] {\r\n const { form, map,isShowToast=true } = input;\r\n const InvalidControls = this.findInvalidControls(form);\r\n // console.log(InvalidControls, 'InvalidControls');\r\n if(!isShowToast) return InvalidControls;\r\n const error: any = InvalidControls[0];\r\n\r\n // 获取本地化标签\r\n const getLocalizedLabel = (path: string) => {\r\n return this._LocalizationService.instant(map[path as keyof typeof map]);\r\n };\r\n\r\n // 格式化数组索引\r\n const formatArrayIndex = (item: string) => {\r\n const regex = /\\[[0-9]+\\]/g;\r\n const indexMatch = item.match(regex);\r\n const [basePath] = item.split(regex);\r\n return getLocalizedLabel(basePath) + (indexMatch ? indexMatch[0] : '');\r\n };\r\n\r\n let errorMessage = '';\r\n // 如果错误路径包含formConfiguration\r\n if (error.path.includes('formConfiguration')) {\r\n // 将错误路径中的formConfiguration-替换掉,并按-分割\r\n const pathParts = error.path.replaceAll('formConfiguration-', '').split('-');\r\n // 对分割后的路径进行格式化\r\n const formattedParts = pathParts.map((part, index) => {\r\n // 如果是最后一个路径且不是第一个路径\r\n if (index === pathParts.length - 1 && index > 0) {\r\n // 获取前一个路径\r\n const prevPart = pathParts[index - 1];\r\n // 将前一个路径按数组索引分割\r\n const [prevBasePath] = prevPart.split(/\\[[0-9]+\\]/);\r\n // 将当前路径按数组索引分割\r\n const [currentBasePath] = part.split(/\\[[0-9]+\\]/);\r\n // 组合前一个路径和当前路径\r\n const combinedKey = `${prevBasePath}-${currentBasePath}`;\r\n\r\n // 如果map中存在组合后的路径,则返回本地化标签,否则返回格式化后的数组索引\r\n return map[combinedKey as keyof typeof map]\r\n ? getLocalizedLabel(combinedKey)\r\n : formatArrayIndex(part);\r\n }\r\n // 否则返回格式化后的数组索引\r\n return formatArrayIndex(part);\r\n });\r\n // 将格式化后的路径用-连接起来\r\n errorMessage = formattedParts.join('-');\r\n }else if(error.path.includes('extraProperties')){\r\n const pathParts = error.path.replaceAll('extraProperties-', '');\r\n errorMessage=map[pathParts as keyof typeof map];\r\n } else {\r\n // 否则返回本地化标签\r\n errorMessage = getLocalizedLabel(error.path);\r\n }\r\n\r\n // 添加错误信息\r\n errorMessage = `${errorMessage} ${this._LocalizationService.instant(\r\n 'AbpValidation::ThisFieldIsNotValid.',\r\n )}`;\r\n // 显示警告信息\r\n this.toaster.warn(errorMessage);\r\n return errorMessage;\r\n }\r\n\r\n findInvalidControls(control: AbstractControl, path = ''): InvalidControlInfo[] {\r\n const invalidControls: InvalidControlInfo[] = [];\r\n\r\n if (control instanceof FormControl) {\r\n if (control.invalid) {\r\n invalidControls.push({\r\n path,\r\n control,\r\n errors: control.errors,\r\n });\r\n }\r\n } else if (control instanceof FormGroup) {\r\n Object.keys(control.controls).forEach(key => {\r\n const childControl = control.controls[key];\r\n const childPath = path ? `${path}-${key}` : key;\r\n invalidControls.push(...this.findInvalidControls(childControl, childPath));\r\n });\r\n } else if (control instanceof FormArray) {\r\n if(control.invalid){\r\n invalidControls.push({\r\n path,\r\n control,\r\n errors: control.errors,\r\n });\r\n }\r\n control.controls.forEach((childControl, index) => {\r\n const childPath = `${path}[${index + 1}]`;\r\n invalidControls.push(...this.findInvalidControls(childControl, childPath));\r\n });\r\n }\r\n\r\n return invalidControls;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { pinyin } from 'pinyin-pro';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ToPinyinService {\r\n get(value) {\r\n //去除字符串中所有的空格\r\n const val = value.replace(/[^a-zA-Z0-9\\u4e00-\\u9fa5-]/g, \"\");\r\n const array = val.split('');\r\n const newArray = [];\r\n array.forEach((el: any, index: any) => {\r\n //转化为小写\r\n let elChange = el.toLowerCase();\r\n const isChinese = str => {\r\n return /^[\\u4e00-\\u9fa5]+$/.test(str);\r\n };\r\n if (isChinese(elChange)) {\r\n const resultWithoutTone = pinyin(elChange, { toneType: 'none', type: 'array' });\r\n elChange = resultWithoutTone.toString();\r\n if (index < array.length - 1) elChange += '-';\r\n }\r\n newArray.push(elChange);\r\n });\r\n const pinyinstr = newArray.join('');\r\n return pinyinstr || val;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * 获取图片的本地连接\r\n * @description 用于获取图片的本地连接\r\n * */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GetImageLacolBase64urlService {\r\n \r\n get(file: File) {\r\n return new Promise((resolve, rejects) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = (e: any) => {\r\n resolve(e.target.result);\r\n };\r\n reader.onerror = error => rejects(error);\r\n });\r\n }\r\n}\r\n","import { EnvironmentService } from '@abp/ng.core';\r\nimport { inject, Pipe, PipeTransform } from '@angular/core';\r\n/**获取当前窗口域名\r\n * 需要将environment.ts页面配置\r\n application: {\r\n baseUrl,\r\n name: 'Travely',\r\n webUrl:'https://localhost:44374',\r\n },\r\n *\r\n */\r\n@Pipe({\r\n name: 'getNowDomain',\r\n standalone: true\r\n})\r\nexport class GetNowDomainPipe implements PipeTransform {\r\n private environment = inject(EnvironmentService);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n transform(value: unknown, ...args: unknown[]): unknown {\r\n const production = this.environment.getEnvironment()?.production;\r\n const application:any=this.environment.getEnvironment()?.application;\r\n const webUrl=application?.webUrl;\r\n if (!production) return webUrl + value;\r\n return this.get(value);\r\n }\r\n\r\n /**获取当前域名并重定向链接 */\r\n get(value) {\r\n const baseUrl: any = (function () {\r\n const extractDomain = (url) => {\r\n const regex = /^(https?:\\/\\/)?([^/]+)(?:[/?].*)?$/;\r\n // const regex = /^(https?:\\/\\/)?([^\\/]+)(?:[\\/?].*)?$/;\r\n const match = url.match(regex);\r\n if (match) {\r\n const protocol = match[1] || '';\r\n const domain = `${protocol}${match[2]}`;\r\n return `${domain}`;\r\n }\r\n return url;\r\n }\r\n const url = window.location.href;\r\n return `${extractDomain(url)}` + value\r\n })()\r\n return baseUrl\r\n }\r\n\r\n}\r\n","//pipe下新建:get-tenant-img.pipe.ts,\r\n//如何引用见:独立管道的使用\r\n\r\nimport { ConfigStateService, EnvironmentService } from '@abp/ng.core';\r\nimport { inject, Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**获取租户图片 */\r\n@Pipe({\r\n name: 'getTenantImg',\r\n standalone:true,\r\n})\r\nexport class GetTenantImgPipe implements PipeTransform {\r\n private configState = inject(ConfigStateService)\r\n private environment = inject(EnvironmentService)\r\n transform(value: unknown, ...args: unknown[]): unknown {\r\n const tenantId = this.configState.getDeep('currentUser.tenantId')||'';\r\n const environment = this.environment.getEnvironment();\r\n const imgUrl =`${environment.apis.default.url}/api/file-explorer/files/${args}/${value}?__tenant=${tenantId}`\r\n return value?imgUrl:'';\r\n }\r\n}\r\n//使用\r\n// {{'agentAvatarBlobName'|getTenantImg:'Avatar'}}\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'slugNormalizer',\r\n standalone: true,\r\n})\r\nexport class SlugNormalizerPipe implements PipeTransform {\r\n transform(value: unknown, ...args: unknown[]): unknown {\r\n return this.normalize(value);\r\n }\r\n /**去除特殊字符 */\r\n normalize(value) {\r\n // Convert to lowercase\r\n value = value.toLowerCase();\r\n // Replace special characters with hyphen\r\n const invalidChars = [\r\n '\\\\',\r\n '/',\r\n '?',\r\n '&',\r\n '=',\r\n '+',\r\n '%',\r\n '#',\r\n '@',\r\n '!',\r\n '$',\r\n \"'\",\r\n '\"',\r\n ':',\r\n ';',\r\n '>',\r\n '<',\r\n '*',\r\n '(',\r\n ')',\r\n '[',\r\n '],',\r\n '{',\r\n '}',\r\n '|',\r\n '^',\r\n '`',\r\n '~',\r\n ];\r\n for (const c of invalidChars) {\r\n value = value.replaceAll(c, '-');\r\n }\r\n // Convert spaces to hyphens\r\n value = value.replaceAll(' ', '-');\r\n\r\n // Remove multiple consecutive hyphens\r\n while (value.includes('--')) {\r\n value = value.replaceAll('--', '-');\r\n }\r\n\r\n // Trim hyphens from start and end\r\n value = value.trim('-');\r\n\r\n // URL encode the remaining string (handles UTF-8 characters)\r\n //部分编码-保留语义\r\n //return encodeURI(value);\r\n //全部编码\r\n return encodeURIComponent(value);\r\n }\r\n}\r\n","/* eslint-disable @angular-eslint/component-selector */\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-image-preview',\r\n template: `\r\n <div\r\n [id]=\"id\"\r\n *ngIf=\"_src\"\r\n class=\"image-preview imagehove border position-relative m-1 overflow-hidden \"\r\n [style]=\"{'width': width+'px','height': height+'px',borderRadius:rounded}\" [ngClass]=\"{'rounded-4': !rounded,'bg-black':bgBlack}\"\r\n >\r\n <img [src]=\"_src\" alt=\"\" class=\"w-100 h-100 object-fit-cover\" />\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input position-absolute top-0 end-0 m-1\"\r\n *ngIf=\"checkChange.observed\"\r\n (change)=\"checkImage($event)\"\r\n style=\"z-index: 10;\"\r\n />\r\n <div\r\n class=\"w-100 h-100 text-white position-absolute top-0 start-0\"\r\n style=\"background-color: #00000050;\"\r\n *ngIf=\"preview || deleteChange.observed\"\r\n >\r\n <i\r\n type=\"button\"\r\n class=\"fa fa-eye p-2\"\r\n *ngIf=\"preview\"\r\n (click.stop)=\"OpenPreviewImage(content)\"\r\n ></i>\r\n <i\r\n type=\"button\"\r\n class=\"fa fa-times p-2\"\r\n *ngIf=\"deleteChange.observed\"\r\n (click.stop)=\"deletecoverPics()\"\r\n ></i>\r\n </div>\r\n </div>\r\n\r\n <ng-template #content let-modal>\r\n <div class=\"modal-header\">\r\n <div class=\"d-flex justify-content-end w-100 fs-3 text-white\">\r\n <i\r\n class=\"mx-2 fa fa fa-repeat\"\r\n aria-hidden=\"true\"\r\n title=\"右旋转\"\r\n role=\"button\"\r\n (click)=\"RotateRight()\"\r\n ></i>\r\n <i\r\n class=\"mx-2 fa fa-search-minus\"\r\n aria-hidden=\"true\"\r\n title=\"缩小\"\r\n role=\"button\"\r\n (click)=\"zoomOut()\"\r\n ></i>\r\n <i\r\n class=\"mx-2 fa fa-search-plus\"\r\n aria-hidden=\"true\"\r\n title=\"放大\"\r\n role=\"button\"\r\n (click)=\"zoomIn()\"\r\n ></i>\r\n <i\r\n class=\"mx-2 fa fa-times\"\r\n aria-hidden=\"true\"\r\n role=\"button\"\r\n (click)=\"modal.dismiss('Cross click')\"\r\n ></i>\r\n </div>\r\n </div>\r\n <div class=\"modal-body d-flex justify-content-center align-items-center \">\r\n <img\r\n width=\"400\"\r\n class=\"modal-body-preview\"\r\n [src]=\"_src\"\r\n [style.transform]=\"'scale(' + zoom / 10 + ') rotate(' + rotate + 'deg)'\"\r\n />\r\n </div>\r\n </ng-template>\r\n `,\r\n styles: [\r\n `\r\n .image-preview.imagehove > div {\r\n display: none;\r\n }\r\n\r\n .image-preview.imagehove:hover div {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n ::ng-deep.dignite-preview .modal-content {\r\n background-color: transparent !important;\r\n }\r\n .object-fit-cover{\r\n object-fit: cover;\r\n }\r\n `,\r\n ],\r\n standalone: true,\r\n imports: [CoreModule, ThemeSharedModule, CommonModule, PageModule],\r\n})\r\nexport class ImagePreviewComponent {\r\n /**图片链接 */\r\n _src: any = '';\r\n @Input()\r\n public set src(v: any) {\r\n this._src = v;\r\n }\r\n\r\n /**是否预览 */\r\n @Input() preview = true;\r\n\r\n /**宽 */\r\n @Input() width = 90;\r\n /**高 */\r\n @Input() height = 90;\r\n @Input() rounded = '';\r\n @Input() id = '';\r\n @Input() bgBlack = false;\r\n\r\n /**模态框实例 */\r\n modalRef!: NgbModalRef;\r\n\r\n /**放大倍数 */\r\n zoom: number|any = 10;\r\n\r\n /**旋转 */\r\n rotate: number|any = 0;\r\n constructor(\r\n private modalService:NgbModal\r\n ){}\r\n\r\n\r\n @Output() deleteChange = new EventEmitter();\r\n @Output() checkChange = new EventEmitter();\r\n\r\n /**选择图片的事件,返回父组件是否选中 */\r\n checkImage(event: any) {\r\n this.checkChange.emit(event.target.checked);\r\n }\r\n\r\n /**删除图片 */\r\n deletecoverPics() {\r\n this.deleteChange.emit();\r\n }\r\n\r\n /**打开预览弹窗 */\r\n OpenPreviewImage(content: TemplateRef<any>) {\r\n this.modalRef = this.modalService.open(content, {\r\n fullscreen: true,\r\n modalDialogClass: 'dignite-preview',\r\n });\r\n this.modalRef.result.then(\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n () => {\r\n },\r\n () => {\r\n this.zoom = 10;\r\n }\r\n );\r\n }\r\n /**放大图像 */\r\n zoomIn() {\r\n let zoom = this.zoom;\r\n if (zoom == 20) return;\r\n zoom++;\r\n this.zoom = zoom;\r\n }\r\n\r\n /**缩小图像 */\r\n zoomOut() {\r\n let zoom = this.zoom;\r\n if (zoom == 3) return;\r\n zoom--;\r\n this.zoom = zoom;\r\n }\r\n\r\n /**右旋转 */\r\n RotateRight() {\r\n if (this.rotate == 360) return (this.rotate = 0);\r\n this.rotate += 90;\r\n }\r\n}\r\n","/* eslint-disable @angular-eslint/directive-selector */\r\nimport { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[KeydownPreventDefault]',\r\n standalone: true,\r\n})\r\nexport class KeydownPreventDefaultDirective {\r\n\r\n @HostListener('keydown.enter', ['$event'])\r\n onKeyDown(event: KeyboardEvent) {\r\n event.preventDefault();\r\n }\r\n}\r\n","export default `\r\n :root .lpx-content-container .lpx-content{min-height:calc(100vh - 44px);padding:1.25em 2em 1.25em}h1,h2,h3,h4,h5,h6{color:inherit}.lpx-settings .lpx-context-menu{overflow:auto}\r\n// a {\r\n// text-decoration: unset;\r\n// }\r\n\r\n\r\n:root select{\r\n cursor: pointer; /* this will show the pointer when hovering */\r\n} \r\n.cdk-global-overlay-wrapper, .cdk-overlay-container {pointer-events: none;top: 0;left: 0;height: 100%;width: 100% }.cdk-overlay-container {position: fixed;z-index: 1000 }.cdk-overlay-container:empty {display: none }.cdk-global-overlay-wrapper, .cdk-overlay-connected-position-bounding-box, .cdk-overlay-pane {position: absolute;z-index: 1000;display: flex }.cdk-overlay-pane {pointer-events: auto;box-sizing: border-box;max-width: 100%;max-height: 100% }.cdk-overlay-backdrop {position: absolute;top: 0;bottom: 0;left: 0;right: 0;z-index: 1000;pointer-events: auto;transition: opacity .4s cubic-bezier(.25, .8, .25, 1);opacity: 0 }.cdk-overlay-backdrop.cdk-overlay-backdrop-showing {opacity: 1 }.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing {opacity: .6 }.cdk-overlay-dark-backdrop {background: rgba(0, 0, 0, .32) }.cdk-overlay-transparent-backdrop {transition: visibility 1ms linear, opacity 1ms linear;visibility: hidden;opacity: 1 }.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing {opacity: 0;visibility: visible }.cdk-overlay-backdrop-noop-animation {transition: none }.cdk-overlay-connected-position-bounding-box {flex-direction: column;min-width: 1px;min-height: 1px }.cdk-global-scrollblock {position: fixed;width: 100%;overflow-y: scroll }.cdk-visually-hidden {border: 0;clip: rect(0 0 0 0);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;outline: 0;-webkit-appearance: none;-moz-appearance: none }.nz-overlay-transparent-backdrop, .nz-overlay-transparent-backdrop.cdk-overlay-backdrop-showing {opacity: 0 }.ant-select, .ant-select-dropdown {margin: 0;line-height: 1.5715;box-sizing: border-box;font-feature-settings: 'tnum';list-style: none }.ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottom, .ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottomLeft, .ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottomRight, .ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottom, .ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottomLeft, .ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottomRight, .ant-select-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-select-dropdown-placement-bottomLeft, .ant-select-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-select-dropdown-placement-bottomLeft {animation-name: antSlideUpIn }.ant-select-dropdown.ant-select-tree-dropdown {top: 100%;left: 0;position: relative;width: 100%;margin-top: 4px;margin-bottom: 4px;overflow: auto }.ant-select-dropdown-hidden, .ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info .anticon-delete, .ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info .anticon-eye, .ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info::before {display: none }.ant-select-dropdown {top: 100%;left: 0;position: relative;width: 100%;margin-top: 4px;margin-bottom: 4px;display: block }.ant-select-dropdown .cdk-virtual-scroll-content-wrapper {right: 0 }.ant-select-dropdown .full-width {contain: initial }.ant-select-dropdown .full-width .cdk-virtual-scroll-content-wrapper {position: static }.ant-select-dropdown .full-width .cdk-virtual-scroll-spacer {position: absolute;top: 0;width: 1px }.ant-select-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-select-dropdown-placement-topLeft, .ant-select-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-select-dropdown-placement-topLeft {animation-name: antSlideDownIn }.ant-select-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-select-dropdown-placement-bottomLeft {animation-name: antSlideUpOut }.ant-select-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-select-dropdown-placement-topLeft {animation-name: antSlideDownOut }\r\n\r\n/*** 表单验证样式 start */\r\n.was-validated .form-control:invalid, .form-control.is-invalid{\r\n border-color: #c00d49 !important;\r\n}\r\n/*** 表单验证样式 end */\r\n\r\n .dignite-form-select {\r\n width: 100%;\r\n\r\n .ant-select-selector {\r\n background: transparent !important;\r\n border: none !important;\r\n padding: 0.475rem 1.25rem !important;\r\n box-shadow: none !important;\r\n height: auto !important;\r\n }\r\n\r\n .anticon-search,\r\n .anticon-down {\r\n display: none;\r\n }\r\n\r\n .ant-select-arrow,\r\n .ant-select-clear {\r\n right: 36px !important;\r\n }\r\n\r\n .ant-select {\r\n color: inherit !important;\r\n }\r\n\r\n .ant-select-selection-placeholder {\r\n color: inherit !important;\r\n }\r\n}\r\n\r\n.dignite-form-select.ant-select-multiple .ant-select-selection-item {\r\n max-width: 60% !important;\r\n}\r\n\r\n.dignite-form-select-dropdown {\r\n .ant-select-dropdown {\r\n background: var(--bs-light) !important;\r\n }\r\n\r\n .ant-select-item-option-active:not(.ant-select-item-option-disabled) {\r\n background-color: var(--bs-primary) !important;\r\n color: var(--bs-white) !important;\r\n }\r\n\r\n .ant-select-item-option-selected:not(.ant-select-item-option-disabled) {\r\n background-color: var(--lpx-brand);\r\n color: var(--bs-white) !important;\r\n }\r\n\r\n .ant-select-item {\r\n color: var(--bs-body-color);\r\n }\r\n}\r\n\r\n// /***select 选择器end */\r\n\r\n\r\n`;\r\n","import { CONTENT_STRATEGY, DomInsertionService } from '@abp/ng.core';\nimport { APP_INITIALIZER } from '@angular/core';\nimport styles from '../constants/styles';\n\n/**将样式添加到head中 */\nexport const CORE_STYLES_PROVIDERS = [\n {\n provide: APP_INITIALIZER,\n useFactory: configureStyles,\n deps: [DomInsertionService],\n multi: true,\n },\n];\n\nexport function configureStyles(domInsertion: DomInsertionService) {\n return () => {\n domInsertion.insertContent(CONTENT_STRATEGY.AppendStyleToHead(styles));\n };\n}\n","import { makeEnvironmentProviders } from '@angular/core';\r\nimport { CORE_STYLES_PROVIDERS } from './styles.providers';\r\nimport { RouteReuseStrategy } from '@angular/router';\r\nimport { SimpleReuseStrategy } from '../strategies';\r\n\r\n/**\r\n * 用于导入providers依赖\r\n */\r\nexport function provideCoreConfig() {\r\n return makeEnvironmentProviders([\r\n CORE_STYLES_PROVIDERS,\r\n //路由复用策略\r\n { provide: RouteReuseStrategy, useClass: SimpleReuseStrategy }\r\n ]);\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { provideCoreConfig } from './providers';\n\nconst standaloneDirectives = [\n \n];\n/**\n * BaseCoreModule is the module that holds\n * all imports, declarations, exports, and entryComponents\n * but not the providers.\n * This module will be imported and exported by all others.\n */\n@NgModule({\n exports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n ...standaloneDirectives,\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n ...standaloneDirectives,\n ],\n declarations: [\n \n ],\n providers: [\n ],\n})\nexport class CoreModule {\n static forRoot(): ModuleWithProviders<CoreModule> {\n return {\n ngModule: CoreModule,\n providers: [provideCoreConfig()],\n };\n }\n}","/*\r\n * Public API Surface of core\r\n */\r\n\r\nexport * from './lib/strategies';\r\nexport * from './lib/services';\r\nexport * from './lib/pipes';\r\nexport * from './lib/expand';\r\nexport * from './lib/directives';\r\nexport * from './lib/core.module'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","CoreModule","i3"],"mappings":";;;;;;;;;;;;;;;;AACA;;;;;;;;;;;;;;;;;;;AAmBG;MACU,mBAAmB,CAAA;AACrB,IAAA,SAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAA+B,CAAC;IAEtD,OAAO,gBAAgB,CAAC,GAAG,EAAA;QAC9B,IAAI,mBAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC3C,MAAM,MAAM,GAAQ,mBAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7D,YAAA,IAAI;AACA,gBAAA,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;;AAC/B,YAAA,OAAO,CAAC,EAAE;AACZ,YAAA,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC;;;AAI7C,IAAA,OAAO,mBAAmB,GAAA;QAC7B,mBAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAW,EAAE,GAAG,KAAI;AAC1D,YAAA,mBAAmB,CAAC,gBAAgB,CAAC,GAAG,CAAC;AAC7C,SAAC,CAAC;;;IAIN,gBAAgB,CAAC,MAA8B,EAAE,IAA4B,EAAA;AACzE,QAAA,QACI,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW;AACvC,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;;;AAKrE,IAAA,QAAQ,CAAC,KAA6B,EAAA;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACvC,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,mBAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC9D,OAAO,mBAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;;aAC7C;AACH,YAAA,OAAO,IAAI;;;;AAKnB,IAAA,YAAY,CAAC,KAA6B,EAAA;QACtC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;;IAGnC,KAAK,CAAC,KAA6B,EAAE,MAA2B,EAAA;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;;QAEvC,mBAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAW,EAAE,GAAG,KAAI;AAC1D,YAAA,mBAAmB,CAAC,gBAAgB,CAAC,GAAG,CAAC;AAC7C,SAAC,CAAC;QACF,mBAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;;;AAGrD,IAAA,YAAY,CAAC,KAA6B,EAAA;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACvC,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;;;AAIxE,IAAA,eAAe,CAAC,KAA6B,EAAA;AACjD,QAAA,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK;QAC9B,IAAI,gBAAgB,GAAa,EAAE;AACnC,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAA4B,KAAI;AAClD,YAAA,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC1E,SAAC,CAAC;QACF,OAAO,CAAA,CAAA,EAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;;AAEnC,IAAA,eAAe,CAAC,KAA6B,EAAA;AACjD,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC;;;;ACrF3D;;;;;;;;;;;;;;;AAeG;MAKU,iBAAiB,CAAA;AAH9B,IAAA,WAAA,GAAA;AAIS,QAAA,IAAA,CAAA,eAAe,GAAsB,IAAI,YAAY,EAAE;AAO9D;;;;;;;;AAQG;AAEK,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC;AACpD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAIxC;IAnBC,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;;AAe7B,IAAA,UAAU,CAAC,OAAY,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;;8GArBrB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACfD;;AAEG;MAIU,iBAAiB,CAAA;IAC5B,WAAoB,CAAA,OAAuB,EAAU,oBAAyC,EAAA;QAA1E,IAAO,CAAA,OAAA,GAAP,OAAO;QAA0B,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;;;AAGzE,IAAA,WAAW,CAAC,KAAiC,EAAE,MAAM,GAAG,eAAe,EAAA;QACrE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;AACvB,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE;AAC5B,gBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAC,SAAS,EAAC,WAAW,CAAC;AAC1C,gBAAA,IAAI,IAAI,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAA,EAAG,MAAM,CAAK,EAAA,EAAA,WAAW,CAAE,CAAA,CAAC,IAAI;AACjF,gBAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBACpD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,oBAAA,IAAI,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAC1C,CAAA,EAAG,MAAM,CAAK,EAAA,EAAA,GAAG,CAAC,CAAC,CAAC,CAAE,CAAA,CACvB,CAAI,CAAA,EAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAG,EAAA,MAAM,CAAK,EAAA,EAAA,GAAG,CAAC,CAAC,CAAC,CAAE,CAAA,CAAC,GAAG;;AAEnE,gBAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AAClC,oBAAA,IAAI,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAG,EAAA,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC,CACvE,CAAA,EAAA,QAAQ,CAAC,CAAC,CACZ,CAAK,EAAA,EAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAA,EAAG,MAAM,CAAA,EAAA,EAAK,GAAG,CAAC,CAAC,CAAC,CAAE,CAAA,CAAC,GAAG;;gBAEnE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAqC,mCAAA,CAAA,CAAC;;AAGtF,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,gBAAA,OAAO,IAAI;;;AAGf,QAAA,OAAO,KAAK;;;AAId,IAAA,uBAAuB,CAAC,UAAiC,EAAA;QACvD,MAAM,gBAAgB,GAA2B,EAAE;;QAGnD,MAAM,YAAY,GAAG,CAAC,IAA2B,EAAE,MAAM,GAAG,EAAE,KAAI;AAChE,YAAA,IAAI,IAAI,YAAY,SAAS,EAAE;AAC7B,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;oBACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;;oBAElC,MAAM,WAAW,GAAG,GAAG;AACvB,oBAAA,MAAM,OAAO,GAAG,MAAM,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,WAAW,CAAE,CAAA,GAAG,WAAW;AACjE,oBAAA,IAAI,OAAO,YAAY,WAAW,EAAE;AAClC,wBAAA,gBAAgB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK;;AACpC,yBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACvC,wBAAA,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC;;AACzB,yBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACvC,wBAAA,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC;;AAElC,iBAAC,CAAC;;AACG,iBAAA,IAAI,IAAI,YAAY,SAAS,EAAE;gBACpC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;AACvC,oBAAA,MAAM,OAAO,GAAG,MAAM,GAAG,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,KAAK,GAAG,GAAG,CAAI,CAAA,EAAA,KAAK,GAAG;AAC7D,oBAAA,IAAI,OAAO,YAAY,WAAW,EAAE;AAClC,wBAAA,gBAAgB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK;;AACpC,yBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACvC,wBAAA,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC;;AACzB,yBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACvC,wBAAA,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC;;AAElC,iBAAC,CAAC;;AAEN,SAAC;QAED,YAAY,CAAC,UAAU,CAAC;AAExB,QAAA,OAAO,gBAAgB;;8GAvEd,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACLD;;AAEG;MAIU,mBAAmB,CAAA;IAC9B,WAAmB,CAAA,SAAmB,EAAU,MAAc,EAAA;QAA3C,IAAS,CAAA,SAAA,GAAT,SAAS;QAAoB,IAAM,CAAA,MAAA,GAAN,MAAM;;AACtD,IAAA,MAAM,CAAC,KAAgB,EAAA;AACrB,QAAA,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK;AAChC,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ;QAClC,MAAM,SAAS,GAAG,GAAG;;AAErB,QAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE;YACzF,IAAI,CAAC,IAAI,EAAE;;aACN;YACL,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;;;IAIrC,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;8GAfZ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACED;;;;AAIG;MAIU,wBAAwB,CAAA;IACnC,WAAoB,CAAA,OAAuB,EAAU,oBAAyC,EAAA;QAA1E,IAAO,CAAA,OAAA,GAAP,OAAO;QAA0B,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;;AAEzE;;;;AAIG;AACH,IAAA,mBAAmB,CAAC,KAA0B,EAAA;QAC5C,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,KAAK;AAC9C,QAAA,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAG,EAAA,IAAI,CAAE,CAAA,CAAgB;AAClD,YAAA,IAAI,OAAO,IAAI,QAAQ,EAAE;gBACvB,OAAO,CAAC,OAAO,EAAE;;AACZ,iBAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE;gBAC/B,OAAO,CAAC,MAAM,EAAE;;;;AAKtB;;;;;;AAMG;AACH,IAAA,eAAe,CAAC,KAAU,EAAA;QACxB,MAAM,EAAE,IAAI,EAAE,GAAG,EAAC,WAAW,GAAC,IAAI,EAAE,GAAG,KAAK;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;;AAEtD,QAAA,IAAG,CAAC,WAAW;AAAE,YAAA,OAAO,eAAe;AACvC,QAAA,MAAM,KAAK,GAAQ,eAAe,CAAC,CAAC,CAAC;;AAGrC,QAAA,MAAM,iBAAiB,GAAG,CAAC,IAAY,KAAI;YACzC,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAwB,CAAC,CAAC;AACzE,SAAC;;AAGD,QAAA,MAAM,gBAAgB,GAAG,CAAC,IAAY,KAAI;YACxC,MAAM,KAAK,GAAG,aAAa;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACpC,YAAA,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACxE,SAAC;QAED,IAAI,YAAY,GAAG,EAAE;;QAErB,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;;AAE5C,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;;YAE5E,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;;AAEnD,gBAAA,IAAI,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;;oBAE/C,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;;oBAErC,MAAM,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;;oBAEnD,MAAM,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;;AAElD,oBAAA,MAAM,WAAW,GAAG,CAAA,EAAG,YAAY,CAAI,CAAA,EAAA,eAAe,EAAE;;oBAGxD,OAAO,GAAG,CAAC,WAA+B;AACxC,0BAAE,iBAAiB,CAAC,WAAW;AAC/B,0BAAE,gBAAgB,CAAC,IAAI,CAAC;;;AAG5B,gBAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAC/B,aAAC,CAAC;;AAEF,YAAA,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;;aACnC,IAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAC;AAC9C,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,EAAE,CAAC;AAC/D,YAAA,YAAY,GAAC,GAAG,CAAC,SAA6B,CAAC;;aAC1C;;AAEL,YAAA,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC;;;AAI9C,QAAA,YAAY,GAAG,CAAA,EAAG,YAAY,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CACjE,qCAAqC,CACtC,EAAE;;AAEH,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/B,QAAA,OAAO,YAAY;;AAGrB,IAAA,mBAAmB,CAAC,OAAwB,EAAE,IAAI,GAAG,EAAE,EAAA;QACrD,MAAM,eAAe,GAAyB,EAAE;AAEhD,QAAA,IAAI,OAAO,YAAY,WAAW,EAAE;AAClC,YAAA,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,eAAe,CAAC,IAAI,CAAC;oBACnB,IAAI;oBACJ,OAAO;oBACP,MAAM,EAAE,OAAO,CAAC,MAAM;AACvB,iBAAA,CAAC;;;AAEC,aAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACvC,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;gBAC1C,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC1C,gBAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,GAAG,CAAE,CAAA,GAAG,GAAG;AAC/C,gBAAA,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAC5E,aAAC,CAAC;;AACG,aAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACvC,YAAA,IAAG,OAAO,CAAC,OAAO,EAAC;gBACjB,eAAe,CAAC,IAAI,CAAC;oBACnB,IAAI;oBACJ,OAAO;oBACP,MAAM,EAAE,OAAO,CAAC,MAAM;AACvB,iBAAA,CAAC;;YAEJ,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,KAAI;gBAC/C,MAAM,SAAS,GAAG,CAAG,EAAA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAA,CAAA,CAAG;AACzC,gBAAA,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAC5E,aAAC,CAAC;;AAGJ,QAAA,OAAO,eAAe;;8GA3Hb,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFvB,MAAM,EAAA,CAAA,CAAA;;2FAEP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCdY,eAAe,CAAA;AAC1B,IAAA,GAAG,CAAC,KAAK,EAAA;;QAEP,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,EAAE;QACnB,KAAK,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,KAAU,KAAI;;AAEpC,YAAA,IAAI,QAAQ,GAAG,EAAE,CAAC,WAAW,EAAE;AAC/B,YAAA,MAAM,SAAS,GAAG,GAAG,IAAG;AACtB,gBAAA,OAAO,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;AACvC,aAAC;AACD,YAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;AACvB,gBAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC/E,gBAAA,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE;AACvC,gBAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;oBAAE,QAAQ,IAAI,GAAG;;AAE/C,YAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzB,SAAC,CAAC;QACF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,IAAI,GAAG;;8GApBd,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACHD;;;AAGM;MAIO,6BAA6B,CAAA;AAExC,IAAA,GAAG,CAAC,IAAU,EAAA;QACZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,KAAI;AACtC,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC1B,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAM,KAAI;AACzB,gBAAA,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1B,aAAC;YACD,MAAM,CAAC,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;AAC1C,SAAC,CAAC;;8GAVO,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,cAF5B,MAAM,EAAA,CAAA,CAAA;;2FAEP,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACND;;;;;;;;AAQG;MAKU,gBAAgB,CAAA;AAJ7B,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;AA+BjD;;AA5BC,IAAA,SAAS,CAAC,KAAc,EAAE,GAAG,IAAe,EAAA;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,UAAU;QAChE,MAAM,WAAW,GAAK,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,WAAW;AACpE,QAAA,MAAM,MAAM,GAAC,WAAW,EAAE,MAAM;AAChC,QAAA,IAAI,CAAC,UAAU;YAAE,OAAO,MAAM,GAAG,KAAK;AACtC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;;AAIxB,IAAA,GAAG,CAAC,KAAK,EAAA;QACP,MAAM,OAAO,GAAQ,CAAC,YAAA;AACpB,YAAA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAI;gBAC5B,MAAM,KAAK,GAAG,oCAAoC;;gBAElD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC9B,IAAI,KAAK,EAAE;oBACT,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;oBAC/B,MAAM,MAAM,GAAG,CAAA,EAAG,QAAQ,CAAA,EAAG,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE;oBACvC,OAAO,CAAA,EAAG,MAAM,CAAA,CAAE;;AAEpB,gBAAA,OAAO,GAAG;AACZ,aAAC;AACD,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI;YAChC,OAAO,CAAA,EAAG,aAAa,CAAC,GAAG,CAAC,CAAE,CAAA,GAAG,KAAK;SACvC,GAAG;AACJ,QAAA,OAAO,OAAO;;8GA7BL,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACdD;AACA;AAKA;MAKa,gBAAgB,CAAA;AAJ7B,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACxC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAOjD;AANC,IAAA,SAAS,CAAC,KAAc,EAAE,GAAG,IAAe,EAAA;AAC1C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAE,EAAE;QACrE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;AACrD,QAAA,MAAM,MAAM,GAAE,CAAA,EAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,4BAA4B,IAAI,CAAA,CAAA,EAAI,KAAK,CAAa,UAAA,EAAA,QAAQ,EAAE;QAC7G,OAAO,KAAK,GAAC,MAAM,GAAC,EAAE;;8GAPb,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAC,IAAI;AAChB,iBAAA;;;ACVD;MAOa,kBAAkB,CAAA;AAC7B,IAAA,SAAS,CAAC,KAAc,EAAE,GAAG,IAAe,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;;AAG9B,IAAA,SAAS,CAAC,KAAK,EAAA;;AAEb,QAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;;AAE3B,QAAA,MAAM,YAAY,GAAG;YACnB,IAAI;YACJ,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,IAAI;YACJ,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;SACJ;AACD,QAAA,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;YAC5B,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC;;;QAGlC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;;AAGlC,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC3B,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;;;AAIrC,QAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;AAMvB,QAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;;8GAzDvB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACND;MA8Ga,qBAAqB,CAAA;IAGhC,IACW,GAAG,CAAC,CAAM,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;;AAsBf,IAAA,WAAA,CACU,YAAqB,EAAA;QAArB,IAAY,CAAA,YAAA,GAAZ,YAAY;;QA1BtB,IAAI,CAAA,IAAA,GAAQ,EAAE;;QAOL,IAAO,CAAA,OAAA,GAAG,IAAI;;QAGd,IAAK,CAAA,KAAA,GAAG,EAAE;;QAEV,IAAM,CAAA,MAAA,GAAG,EAAE;QACX,IAAO,CAAA,OAAA,GAAG,EAAE;QACZ,IAAE,CAAA,EAAA,GAAG,EAAE;QACP,IAAO,CAAA,OAAA,GAAG,KAAK;;QAMxB,IAAI,CAAA,IAAA,GAAe,EAAE;;QAGrB,IAAM,CAAA,MAAA,GAAe,CAAC;AAMZ,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE;;;AAG1C,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;;;IAI7C,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;;AAI1B,IAAA,gBAAgB,CAAC,OAAyB,EAAA;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE;AAC9C,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,gBAAgB,EAAE,iBAAiB;AACpC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI;;AAEvB,QAAA,MAAK;SACJ,EACD,MAAK;AACH,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AAChB,SAAC,CACF;;;IAGH,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI;QACpB,IAAI,IAAI,IAAI,EAAE;YAAE;AAChB,QAAA,IAAI,EAAE;AACN,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;;IAIlB,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI;QACpB,IAAI,IAAI,IAAI,CAAC;YAAE;AACf,QAAA,IAAI,EAAE;AACN,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;;IAIlB,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG;AAAE,YAAA,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC;AAC/C,QAAA,IAAI,CAAC,MAAM,IAAI,EAAE;;8GA/ER,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EApGtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4ET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAsBSE,YAAU,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,UAAU,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEtD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAtGjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EACnB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4ET,EAqBW,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAACD,YAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,CAAC,EAAA,MAAA,EAAA,CAAA,4PAAA,CAAA,EAAA;+EAMvD,GAAG,EAAA,CAAA;sBADb;gBAMQ,OAAO,EAAA,CAAA;sBAAf;gBAGQ,KAAK,EAAA,CAAA;sBAAb;gBAEQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,EAAE,EAAA,CAAA;sBAAV;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAeS,YAAY,EAAA,CAAA;sBAArB;gBACS,WAAW,EAAA,CAAA;sBAApB;;;AC/IH;MAOa,8BAA8B,CAAA;AAGzC,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,KAAK,CAAC,cAAc,EAAE;;8GAJb,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;8BAIC,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;;ACT3C,aAAe,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Ed;;ACvED;AACO,MAAM,qBAAqB,GAAG;AACnC,IAAA;AACE,QAAA,OAAO,EAAE,eAAe;AACxB,QAAA,UAAU,EAAE,eAAe;QAC3B,IAAI,EAAE,CAAC,mBAAmB,CAAC;AAC3B,QAAA,KAAK,EAAE,IAAI;AACZ,KAAA;CACF;AAEK,SAAU,eAAe,CAAC,YAAiC,EAAA;AAC/D,IAAA,OAAO,MAAK;QACV,YAAY,CAAC,aAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACxE,KAAC;AACH;;ACbA;;AAEG;SACa,iBAAiB,GAAA;AAC/B,IAAA,OAAO,wBAAwB,CAAC;QAC9B,qBAAqB;;AAErB,QAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,mBAAmB;AAC7D,KAAA,CAAC;AACJ;;ACRA,MAAM,oBAAoB,GAAG,EAE5B;AACD;;;;;AAKG;MAsBU,UAAU,CAAA;AACrB,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,SAAS,EAAE,CAAC,iBAAiB,EAAE,CAAC;SACjC;;8GALQ,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAZnB,YAAY;YACZ,WAAW;YACX,mBAAmB;AACnB,YAAA,YAAY,aAVZ,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,YAAY,CAAA,EAAA,CAAA,CAAA;AAgBH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAZnB,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,YAAY,EACT,oBAAoB,EAXvB,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAgBH,UAAU,EAAA,UAAA,EAAA,CAAA;kBArBtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,YAAY;AACZ,wBAAA,GAAG,oBAAoB;AACxB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,YAAY;AACZ,wBAAA,GAAG,oBAAoB;AACxB,qBAAA;AACD,oBAAA,YAAY,EAAE,EAEb;AACD,oBAAA,SAAS,EAAE,EACV;AACF,iBAAA;;;ACnCD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: "\n :root .lpx-content-container .lpx-content{min-height:calc(100vh - 44px);padding:1.25em 2em 1.25em}h1,h2,h3,h4,h5,h6{color:inherit}.lpx-settings .lpx-context-menu{overflow:auto}\n// a {\n// text-decoration: unset;\n// }\n\n\n:root select{\n cursor: pointer; /* this will show the pointer when hovering */\n} \n.cdk-global-overlay-wrapper, .cdk-overlay-container {pointer-events: none;top: 0;left: 0;height: 100%;width: 100% }.cdk-overlay-container {position: fixed;z-index: 1000 }.cdk-overlay-container:empty {display: none }.cdk-global-overlay-wrapper, .cdk-overlay-connected-position-bounding-box, .cdk-overlay-pane {position: absolute;z-index: 1000;display: flex }.cdk-overlay-pane {pointer-events: auto;box-sizing: border-box;max-width: 100%;max-height: 100% }.cdk-overlay-backdrop {position: absolute;top: 0;bottom: 0;left: 0;right: 0;z-index: 1000;pointer-events: auto;transition: opacity .4s cubic-bezier(.25, .8, .25, 1);opacity: 0 }.cdk-overlay-backdrop.cdk-overlay-backdrop-showing {opacity: 1 }.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing {opacity: .6 }.cdk-overlay-dark-backdrop {background: rgba(0, 0, 0, .32) }.cdk-overlay-transparent-backdrop {transition: visibility 1ms linear, opacity 1ms linear;visibility: hidden;opacity: 1 }.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing {opacity: 0;visibility: visible }.cdk-overlay-backdrop-noop-animation {transition: none }.cdk-overlay-connected-position-bounding-box {flex-direction: column;min-width: 1px;min-height: 1px }.cdk-global-scrollblock {position: fixed;width: 100%;overflow-y: scroll }.cdk-visually-hidden {border: 0;clip: rect(0 0 0 0);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;outline: 0;-webkit-appearance: none;-moz-appearance: none }.nz-overlay-transparent-backdrop, .nz-overlay-transparent-backdrop.cdk-overlay-backdrop-showing {opacity: 0 }.ant-select, .ant-select-dropdown {margin: 0;line-height: 1.5715;box-sizing: border-box;font-feature-settings: 'tnum';list-style: none }.ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottom, .ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottomLeft, .ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottomRight, .ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottom, .ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottomLeft, .ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottomRight, .ant-select-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-select-dropdown-placement-bottomLeft, .ant-select-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-select-dropdown-placement-bottomLeft {animation-name: antSlideUpIn }.ant-select-dropdown.ant-select-tree-dropdown {top: 100%;left: 0;position: relative;width: 100%;margin-top: 4px;margin-bottom: 4px;overflow: auto }.ant-select-dropdown-hidden, .ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info .anticon-delete, .ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info .anticon-eye, .ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info::before {display: none }.ant-select-dropdown {top: 100%;left: 0;position: relative;width: 100%;margin-top: 4px;margin-bottom: 4px;display: block }.ant-select-dropdown .cdk-virtual-scroll-content-wrapper {right: 0 }.ant-select-dropdown .full-width {contain: initial }.ant-select-dropdown .full-width .cdk-virtual-scroll-content-wrapper {position: static }.ant-select-dropdown .full-width .cdk-virtual-scroll-spacer {position: absolute;top: 0;width: 1px }.ant-select-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-select-dropdown-placement-topLeft, .ant-select-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-select-dropdown-placement-topLeft {animation-name: antSlideDownIn }.ant-select-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-select-dropdown-placement-bottomLeft {animation-name: antSlideUpOut }.ant-select-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-select-dropdown-placement-topLeft {animation-name: antSlideDownOut }\n\n/*** 表单验证样式 start */\n.was-validated .form-control:invalid, .form-control.is-invalid{\n border-color: #c00d49 !important;\n}\n/*** 表单验证样式 end */\n\n .dignite-form-select {\n width: 100%;\n\n .ant-select-selector {\n background: transparent !important;\n border: none !important;\n padding: 0.475rem 1.25rem !important;\n box-shadow: none !important;\n height: auto !important;\n }\n\n .anticon-search,\n .anticon-down {\n display: none;\n }\n\n .ant-select-arrow,\n .ant-select-clear {\n right: 36px !important;\n }\n\n .ant-select {\n color: inherit !important;\n }\n\n .ant-select-selection-placeholder {\n color: inherit !important;\n }\n}\n\n.dignite-form-select.ant-select-multiple .ant-select-selection-item {\n max-width: 60% !important;\n}\n\n.dignite-form-select-dropdown {\n .ant-select-dropdown {\n background: var(--bs-light) !important;\n }\n\n .ant-select-item-option-active:not(.ant-select-item-option-disabled) {\n background-color: var(--bs-primary) !important;\n color: var(--bs-white) !important;\n }\n\n .ant-select-item-option-selected:not(.ant-select-item-option-disabled) {\n background-color: var(--lpx-brand);\n color: var(--bs-white) !important;\n }\n\n .ant-select-item {\n color: var(--bs-body-color);\n }\n}\n\n// /***select 选择器end */\n\n\n";
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ModuleWithProviders } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/forms";
|
|
5
|
+
import * as i3 from "@angular/router";
|
|
6
|
+
/**
|
|
7
|
+
* BaseCoreModule is the module that holds
|
|
8
|
+
* all imports, declarations, exports, and entryComponents
|
|
9
|
+
* but not the providers.
|
|
10
|
+
* This module will be imported and exported by all others.
|
|
11
|
+
*/
|
|
12
|
+
export declare class CoreModule {
|
|
13
|
+
static forRoot(): ModuleWithProviders<CoreModule>;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CoreModule, never>;
|
|
15
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<CoreModule, never, [typeof i1.CommonModule, typeof i2.FormsModule, typeof i2.ReactiveFormsModule, typeof i3.RouterModule], [typeof i1.CommonModule, typeof i2.FormsModule, typeof i2.ReactiveFormsModule, typeof i3.RouterModule]>;
|
|
16
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<CoreModule>;
|
|
17
|
+
}
|
|
@@ -2,6 +2,7 @@ import { PipeTransform } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class SlugNormalizerPipe implements PipeTransform {
|
|
4
4
|
transform(value: unknown, ...args: unknown[]): unknown;
|
|
5
|
+
/**去除特殊字符 */
|
|
5
6
|
normalize(value: any): string;
|
|
6
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<SlugNormalizerPipe, never>;
|
|
7
8
|
static ɵpipe: i0.ɵɵPipeDeclaration<SlugNormalizerPipe, "slugNormalizer", true>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DomInsertionService } from '@abp/ng.core';
|
|
2
|
+
/**将样式添加到head中 */
|
|
3
|
+
export declare const CORE_STYLES_PROVIDERS: {
|
|
4
|
+
provide: import("@angular/core").InjectionToken<readonly (() => import("rxjs").Observable<unknown> | Promise<unknown> | void)[]>;
|
|
5
|
+
useFactory: typeof configureStyles;
|
|
6
|
+
deps: (typeof DomInsertionService)[];
|
|
7
|
+
multi: boolean;
|
|
8
|
+
}[];
|
|
9
|
+
export declare function configureStyles(domInsertion: DomInsertionService): () => void;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { FormArray, FormControl } from '@angular/forms';
|
|
2
|
+
import { LocalizationService } from '@abp/ng.core';
|
|
3
|
+
import { ToasterService } from '@abp/ng.theme.shared';
|
|
4
|
+
import { FormControlStateDto } from './models';
|
|
5
|
+
import { AbstractControl } from '@angular/forms';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
interface InvalidControlInfo {
|
|
8
|
+
path: string;
|
|
9
|
+
control: FormControl | FormArray;
|
|
10
|
+
errors: any;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 用于验证表单的服务
|
|
14
|
+
* 包含表单验证方法和多语言翻译方法
|
|
15
|
+
* @description 针对自定义表单暂未有更好的表单验证提示,继续使用本机的验证方式
|
|
16
|
+
*/
|
|
17
|
+
export declare class DigniteValidatorsService {
|
|
18
|
+
private toaster;
|
|
19
|
+
private _LocalizationService;
|
|
20
|
+
constructor(toaster: ToasterService, _LocalizationService: LocalizationService);
|
|
21
|
+
/**
|
|
22
|
+
* 设置表单中指定多个字段禁用或者启用
|
|
23
|
+
* @param input 包含表单、字段名称和禁用状态的输入对象
|
|
24
|
+
* @returns 无返回值
|
|
25
|
+
*/
|
|
26
|
+
setFormControlState(input: FormControlStateDto): void;
|
|
27
|
+
/**
|
|
28
|
+
* 获取错误信息
|
|
29
|
+
* @description 获取表单的错误信息,并根据映射对象进行本地化
|
|
30
|
+
* @param form 表单
|
|
31
|
+
* @param map 映射对象
|
|
32
|
+
* @returns 错误信息
|
|
33
|
+
*/
|
|
34
|
+
getErrorMessage(input: any): string | InvalidControlInfo[];
|
|
35
|
+
findInvalidControls(control: AbstractControl, path?: string): InvalidControlInfo[];
|
|
36
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DigniteValidatorsService, never>;
|
|
37
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DigniteValidatorsService>;
|
|
38
|
+
}
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* 获取图片的本地连接
|
|
4
|
+
* @description 用于获取图片的本地连接
|
|
5
|
+
* */
|
|
6
|
+
export declare class GetImageLacolBase64urlService {
|
|
7
|
+
get(file: File): Promise<unknown>;
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GetImageLacolBase64urlService, never>;
|
|
9
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<GetImageLacolBase64urlService>;
|
|
10
|
+
}
|
package/lib/services/index.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
export * from './update-list.service';
|
|
2
2
|
export * from './validators.service';
|
|
3
3
|
export * from './location-back.service';
|
|
4
|
+
export * from './dignite-validators.service';
|
|
5
|
+
export * from './to-pinyin.service';
|
|
6
|
+
export * from './get-image-lacol-base64url.service';
|
|
7
|
+
export * from './models';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Location } from '@angular/common';
|
|
2
2
|
import { Router } from '@angular/router';
|
|
3
|
+
import { backBase } from './models';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
5
|
+
/**
|
|
6
|
+
* 用于返回上一页的服务
|
|
7
|
+
*/
|
|
8
8
|
export declare class LocationBackService {
|
|
9
9
|
_location: Location;
|
|
10
10
|
private router;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FormGroup, FormArray } from "@angular/forms";
|
|
2
|
+
export interface validateAllFormDto {
|
|
3
|
+
form: FormGroup | FormArray;
|
|
4
|
+
map: object;
|
|
5
|
+
loopName?: string;
|
|
6
|
+
resources: Array<string>;
|
|
7
|
+
}
|
|
8
|
+
export interface FormControlStateDto {
|
|
9
|
+
form: FormGroup;
|
|
10
|
+
controlNames: string[];
|
|
11
|
+
disabled: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**location-back.service.ts */
|
|
14
|
+
export interface backBase {
|
|
15
|
+
url?: string;
|
|
16
|
+
replenish?: string;
|
|
17
|
+
}
|
|
@@ -2,6 +2,9 @@ import { LocalizationService } from '@abp/ng.core';
|
|
|
2
2
|
import { ToasterService } from '@abp/ng.theme.shared';
|
|
3
3
|
import { FormGroup, FormArray } from '@angular/forms';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated 请使用 {@link DigniteValidatorsService} 服务。
|
|
7
|
+
*/
|
|
5
8
|
export declare class ValidatorsService {
|
|
6
9
|
private toaster;
|
|
7
10
|
private _LocalizationService;
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED