{"version":3,"file":"ng-nest-ui-portal.mjs","sources":["../../../../lib/ng-nest/ui/portal/portal.module.ts","../../../../lib/ng-nest/ui/portal/portal.property.ts","../../../../lib/ng-nest/ui/portal/portal.service.ts","../../../../lib/ng-nest/ui/portal/ng-nest-ui-portal.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\n\r\n@NgModule({\r\n  imports: [],\r\n  exports: [],\r\n  providers: []\r\n})\r\nexport class XPortalModule {}\r\n","import { TemplateRef, ViewContainerRef, ComponentRef, EmbeddedViewRef } from '@angular/core';\r\nimport { ComponentType, TemplatePortal, ComponentPortal } from '@angular/cdk/portal';\r\nimport { OverlayRef, OverlayConfig, ConnectedPosition } from '@angular/cdk/overlay';\r\nimport { XInvertKeyValues } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Portal\r\n * @selector x-portal\r\n * @decorator component\r\n */\r\nexport const XPortalPrefix = 'x-portal';\r\nexport const XPortalResizablePrefix = 'x-portal-resizable';\r\n\r\nexport const XPortalPlacement: { [proptery: string]: ConnectedPosition } = {\r\n  bottom: { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' },\r\n  left: { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },\r\n  right: { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },\r\n  top: { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' },\r\n  'bottom-end': { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\r\n  'bottom-start': { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n  'left-end': { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom' },\r\n  'left-start': { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top' },\r\n  'right-end': { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' },\r\n  'right-start': { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' },\r\n  'top-end': { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\r\n  'top-start': { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' }\r\n};\r\n\r\nexport const XPortalConnectedPosition: Map<ConnectedPosition, string> = XInvertKeyValues(XPortalPlacement);\r\n\r\n/**\r\n * Portal Property\r\n */\r\nexport interface XPortalProperty<T> {\r\n  /**\r\n   * @zh_CN 内容，模板/组件\r\n   * @en_US Content, template/component\r\n   */\r\n  content?: TemplateRef<any> | ComponentType<T>;\r\n  /**\r\n   * @zh_CN 视图容器\r\n   * @en_US View container\r\n   */\r\n  viewContainerRef?: ViewContainerRef;\r\n  /**\r\n   * @zh_CN 上下文\r\n   * @en_US Context\r\n   */\r\n  context?: any;\r\n  /**\r\n   * @zh_CN 注入器\r\n   * @en_US Injector\r\n   */\r\n  injector?: any;\r\n  /**\r\n   * @zh_CN 覆盖视图层配置\r\n   * @en_US Overlay view layer configuration\r\n   */\r\n  overlayConfig?: OverlayConfig;\r\n}\r\n\r\nexport interface XPortalOverlayRef<T> {\r\n  /**\r\n   * @zh_CN cdk 创建的覆盖视图层\r\n   * @en_US Overlay view layer created by cdk\r\n   */\r\n  overlayRef?: OverlayRef;\r\n  /**\r\n   * @zh_CN cdk 模板视图\r\n   * @en_US Cdk template view\r\n   */\r\n  templatePortal?: TemplatePortal<any>;\r\n  /**\r\n   * @zh_CN cdk 组件视图\r\n   * @en_US Cdk component view\r\n   */\r\n  componentPortal?: ComponentPortal<T>;\r\n  /**\r\n   * @zh_CN 组件视图\r\n   * @en_US Component view\r\n   */\r\n  componentRef?: ComponentRef<T>;\r\n  /**\r\n   * @zh_CN 模板视图\r\n   * @en_US Template view\r\n   */\r\n  embeddedViewRef?: EmbeddedViewRef<any>;\r\n}\r\n","import {\r\n  Injectable,\r\n  TemplateRef,\r\n  Injector,\r\n  ElementRef,\r\n  ViewContainerRef,\r\n  StaticProvider,\r\n  RendererFactory2,\r\n  inject\r\n} from '@angular/core';\r\nimport { Overlay, OverlayRef, PositionStrategy, ConnectedPosition, ComponentType } from '@angular/cdk/overlay';\r\nimport { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';\r\nimport { XPortalProperty, XPortalOverlayRef, XPortalPlacement } from './portal.property';\r\nimport { XPlacement, XPosition, XPlace, XComputed } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * 动态创建视图服务\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class XPortalService {\r\n  overlay = inject(Overlay);\r\n  injector = inject(Injector);\r\n  private rendererFactory = inject(RendererFactory2);\r\n  renderer = this.rendererFactory.createRenderer(null, null);\r\n\r\n  attach<T>(option: XPortalProperty<T>): XPortalOverlayRef<T> {\r\n    let portal: XPortalOverlayRef<T> = {};\r\n    if (typeof option.content === 'undefined') return portal;\r\n    portal.overlayRef = this.createOverlayRef(option);\r\n    if (option.content instanceof TemplateRef && option.viewContainerRef) {\r\n      portal.templatePortal = new TemplatePortal(option.content, option.viewContainerRef, option.context);\r\n      portal.embeddedViewRef = portal.overlayRef.attach(portal.templatePortal);\r\n    } else {\r\n      portal.componentPortal = new ComponentPortal(\r\n        option.content as ComponentType<T>,\r\n        option.viewContainerRef,\r\n        option.injector\r\n      );\r\n      portal.componentRef = portal.overlayRef.attach(portal.componentPortal);\r\n    }\r\n\r\n    return portal;\r\n  }\r\n\r\n  createInjector(providers: StaticProvider[], viewContainerRef?: ViewContainerRef) {\r\n    const injector = viewContainerRef && viewContainerRef.injector;\r\n    return Injector.create({ parent: injector || this.injector, providers });\r\n  }\r\n\r\n  setPlacement(param?: {\r\n    elementRef?: ElementRef;\r\n    placement?: XPlace[] | XPlacement[];\r\n    transformOriginOn?: string;\r\n  }): PositionStrategy {\r\n    if (!param) {\r\n      return this.overlay.position().global().centerHorizontally().centerVertically();\r\n    } else {\r\n      return (\r\n        this.overlay\r\n          .position()\r\n          .flexibleConnectedTo(param.elementRef!)\r\n          // .withLockedPosition(true)\r\n          .withFlexibleDimensions(false)\r\n          .withPush(false)\r\n          .withPositions(this.setConnectedPosition(...param.placement!))\r\n          .withTransformOriginOn(param.transformOriginOn!)\r\n      );\r\n    }\r\n  }\r\n\r\n  setPosition(position?: XPosition, width?: string, height?: string): PositionStrategy {\r\n    let result = this.overlay.position().global().width(width).height(height);\r\n    switch (position) {\r\n      case 'left':\r\n        return result.left();\r\n      case 'right':\r\n        return result.right();\r\n      case 'top':\r\n        return result.top();\r\n      case 'bottom':\r\n      default:\r\n        return result.bottom();\r\n    }\r\n  }\r\n\r\n  setPlace(place?: XPlace, ...offset: string[]): PositionStrategy {\r\n    let result = this.overlay.position().global();\r\n    let [top, right, bottom, left] = this.getOffset(offset);\r\n    switch (place) {\r\n      case 'top-start':\r\n        return result.top(top).left(left);\r\n      case 'top':\r\n        return result.centerHorizontally().top(top);\r\n      case 'top-end':\r\n        return result.top(top).right(right);\r\n      case 'left':\r\n        return result.centerVertically().left(left);\r\n      case 'center':\r\n        return result.centerVertically().centerHorizontally();\r\n      case 'right':\r\n        return result.centerVertically().right(right);\r\n      case 'bottom-start':\r\n        return result.bottom(bottom).left(left);\r\n      case 'bottom':\r\n        return result.centerHorizontally().bottom(bottom);\r\n      case 'bottom-end':\r\n        return result.bottom(bottom).right(right);\r\n      default:\r\n        return result.centerVertically().centerHorizontally();\r\n    }\r\n  }\r\n\r\n  setResizable(ele: HTMLElement, place?: XPlace) {\r\n    const { clientWidth, clientHeight } = ele;\r\n    const computedStyle = XComputed(ele);\r\n    const marginRight = parseFloat(computedStyle.marginRight);\r\n    const marginBottom = parseFloat(computedStyle.marginBottom);\r\n    let marginLeft = null;\r\n    let marginTop = null;\r\n    switch (place) {\r\n      case 'top-start':\r\n        break;\r\n      case 'top':\r\n        marginLeft = `calc(50vw - ${clientWidth / 2}px)`;\r\n        break;\r\n      case 'top-end':\r\n        marginLeft = `calc(100vw - ${clientWidth + marginRight}px)`;\r\n        break;\r\n      case 'left':\r\n        marginTop = `calc(50vh - ${clientHeight / 2}px)`;\r\n        break;\r\n      case 'center':\r\n        marginLeft = `calc(50vw - ${clientWidth / 2}px)`;\r\n        marginTop = `calc(50vh - ${clientHeight / 2}px)`;\r\n        break;\r\n      case 'right':\r\n        marginLeft = `calc(100vw - ${clientWidth + marginRight}px)`;\r\n        marginTop = `calc(50vh - ${clientHeight / 2}px)`;\r\n        break;\r\n      case 'bottom-start':\r\n        marginTop = `calc(100vh - ${clientHeight + marginBottom}px)`;\r\n        break;\r\n      case 'bottom':\r\n        marginLeft = `calc(50vw - ${clientWidth / 2}px)`;\r\n        marginTop = `calc(100vh - ${clientHeight + marginBottom}px)`;\r\n        break;\r\n      case 'bottom-end':\r\n        marginLeft = `calc(100vw - ${clientWidth + marginRight}px)`;\r\n        marginTop = `calc(100vh - ${clientHeight + marginBottom}px)`;\r\n        break;\r\n      default:\r\n        marginLeft = `calc(50vw - ${clientWidth / 2}px)`;\r\n        marginTop = `calc(100vh - ${clientHeight / 2}px)`;\r\n        break;\r\n    }\r\n    marginLeft && this.renderer.setStyle(ele, 'margin-left', marginLeft);\r\n    marginTop && this.renderer.setStyle(ele, 'margin-top', marginTop);\r\n\r\n    return {\r\n      marginLeft: marginLeft || computedStyle.marginLeft,\r\n      marginTop: marginTop || computedStyle.marginTop,\r\n      marginBottom: computedStyle.marginBottom,\r\n      marginRight: computedStyle.marginRight\r\n    };\r\n  }\r\n\r\n  setContainerStyle(place?: XPlace, ...offset: string[]) {\r\n    let [top, right, bottom, left] = this.getOffset(offset);\r\n    switch (place) {\r\n      case 'top-start':\r\n        return { top, left };\r\n      case 'top':\r\n        return { top };\r\n      case 'top-end':\r\n        return { top, right };\r\n      case 'left':\r\n        return { left };\r\n      case 'center':\r\n        return {};\r\n      case 'right':\r\n        return { right };\r\n      case 'bottom-start':\r\n        return { bottom, left };\r\n      case 'bottom':\r\n        return { bottom };\r\n      case 'bottom-end':\r\n        return { bottom, right };\r\n    }\r\n    return {};\r\n  }\r\n\r\n  getOffset(offset: string[]) {\r\n    if (offset.length === 0) offset = Array.from({ length: 4 }).map(() => `0`);\r\n    else if (offset.length < 4) {\r\n      Array.from({ length: 4 - offset.length }).map(() => (offset = [...offset, offset[offset.length - 1]]));\r\n    }\r\n    return offset;\r\n  }\r\n\r\n  createOverlayRef<T>(option: XPortalProperty<T>): OverlayRef {\r\n    return this.overlay.create(option.overlayConfig);\r\n  }\r\n\r\n  setConnectedPosition(...placement: XPlace[] | XPlacement[]): ConnectedPosition[] {\r\n    let result: ConnectedPosition[] = [];\r\n    placement.forEach((place: XPlace | XPlacement) => result.push(XPortalPlacement[place]));\r\n    return result;\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}