@ng-nest/ui 20.2.5 → 20.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -333,7 +333,7 @@ declare class XCheckboxComponent extends XCheckboxProperty implements OnChanges,
333
333
  labelMapSignal: _angular_core.Signal<{
334
334
  [x: string]: boolean;
335
335
  }>;
336
- checkboxType: _angular_core.Signal<"button" | "icon" | "tag" | "initial">;
336
+ checkboxType: _angular_core.Signal<"initial" | "button" | "icon" | "tag">;
337
337
  constructor();
338
338
  ngOnChanges(changes: SimpleChanges): void;
339
339
  ngOnDestroy(): void;
@@ -318,7 +318,7 @@ class XBubbleComponent extends XBubbleProperty {
318
318
  return XIsTemplateRef(this.reasoningContent());
319
319
  }, ...(ngDevMode ? [{ debugName: "isReasoningTemplate" }] : []));
320
320
  this.isReasoningString = computed(() => {
321
- return XIsString(this.reasoningContent());
321
+ return XIsString(this.reasoningContent()) && !XIsEmpty(this.reasoningContent());
322
322
  }, ...(ngDevMode ? [{ debugName: "isReasoningString" }] : []));
323
323
  effect(() => {
324
324
  if (this.isString() && !this.typing()) {
@@ -336,7 +336,7 @@ class XBubbleComponent extends XBubbleProperty {
336
336
  const setValue = (value) => {
337
337
  this.reasoningRenderedContent.set(this.sanitizer.bypassSecurityTrustHtml(value));
338
338
  };
339
- if (this.renderer()) {
339
+ if (this.renderer() && XIsString(finalReasoningContent)) {
340
340
  const rendered = this.renderer()(finalReasoningContent);
341
341
  if (isObservable(rendered)) {
342
342
  rendered.subscribe((value) => {
@@ -356,7 +356,7 @@ class XBubbleComponent extends XBubbleProperty {
356
356
  const setValue = (value) => {
357
357
  this.renderedContent.set(this.sanitizer.bypassSecurityTrustHtml(value));
358
358
  };
359
- if (this.renderer()) {
359
+ if (this.renderer() && XIsString(finalContent)) {
360
360
  const rendered = this.renderer()(finalContent);
361
361
  if (isObservable(rendered)) {
362
362
  rendered.subscribe((value) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-bubble.mjs","sources":["../../../../lib/ng-nest/ui/bubble/bubble.property.ts","../../../../lib/ng-nest/ui/bubble/bubbles.component.ts","../../../../lib/ng-nest/ui/bubble/bubbles.component.html","../../../../lib/ng-nest/ui/bubble/bubble.component.ts","../../../../lib/ng-nest/ui/bubble/bubble.component.html","../../../../lib/ng-nest/ui/bubble/bubble.module.ts","../../../../lib/ng-nest/ui/bubble/ng-nest-ui-bubble.ts"],"sourcesContent":["import { Component, input, output } from '@angular/core';\r\nimport { XBoolean, XNumber, XPropertyFunction, XSize, XTemplate, XToBoolean, XToNumber } from '@ng-nest/ui/core';\r\nimport { XAvatarOption } from '@ng-nest/ui/avatar';\r\nimport { Observable } from 'rxjs';\r\n\r\n/**\r\n * Bubble\r\n * @selector x-bubble\r\n * @decorator component\r\n */\r\nexport const XBubblePrefix = 'x-bubble';\r\nconst X_BUBBLE_CONFIG_NAME = 'bubble';\r\n\r\n/**\r\n * Bubble Property\r\n */\r\n@Component({ selector: `${XBubblePrefix}-property`, template: '' })\r\nexport class XBubbleProperty extends XPropertyFunction(X_BUBBLE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 气泡内容\r\n * @en_US Bubble content\r\n */\r\n readonly content = input<XTemplate>();\r\n /**\r\n * @zh_CN 推理内容\r\n * @en_US reasoning content\r\n */\r\n readonly reasoningContent = input<XTemplate>();\r\n /**\r\n * @zh_CN 推理标题\r\n * @en_US reasoning title\r\n */\r\n readonly reasoningTitle = input<XTemplate>(this.config?.reasoningTitle ?? '深度思考');\r\n /**\r\n * @zh_CN 头像\r\n * @en_US Avatar\r\n */\r\n readonly avatar = input<XBubbleAvatarOption>();\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Bubble variant\r\n */\r\n readonly variant = input<XBubbleVariant>(this.config?.variant ?? 'outlined');\r\n /**\r\n * @zh_CN 位置\r\n * @en_US Bubble placement\r\n */\r\n readonly placement = input<XBubblePlacement>('start');\r\n /**\r\n * @zh_CN 气泡头部内容\r\n * @en_US Bubble header content\r\n */\r\n readonly header = input<XTemplate>();\r\n /**\r\n * @zh_CN 气泡底部内容\r\n * @en_US Bubble header content\r\n */\r\n readonly footer = input<XTemplate>();\r\n /**\r\n * @zh_CN 加载中\r\n * @en_US Loading\r\n */\r\n readonly loading = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 内容输出打字机效果\r\n * @en_US Typing effect\r\n */\r\n readonly typing = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 打字机输出速度\r\n * @en_US Typing speed\r\n */\r\n readonly speed = input<number, XNumber>(30, { transform: XToNumber });\r\n /**\r\n * @zh_CN 内容渲染器,可自定义内容的渲染方式,如 HTML、Markdown\r\n * @en_US Content renderer, can customize content rendering, such as HTML, Markdown\r\n */\r\n readonly renderer = input<XBubbleContentRenderer>();\r\n /**\r\n * @zh_CN 是否显示打字机光标\r\n * @en_US Whether to show the typing cursor\r\n */\r\n readonly showCursor = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 打字开始\r\n * @en_US Typing start\r\n */\r\n readonly typingStart = output<void>();\r\n /**\r\n * @zh_CN 打字正在输出的字符\r\n * @en_US Typing output character\r\n */\r\n readonly typingOuput = output<string>();\r\n /**\r\n * @zh_CN 打字结束\r\n * @en_US Typing end\r\n */\r\n readonly typingEnd = output<void>();\r\n}\r\n\r\n/**\r\n * @zh_CN 头像配置,继承了组件 Avatar 相关属性\r\n * @en_US Avatar settings\r\n */\r\nexport interface XBubbleAvatarOption extends XAvatarOption {\r\n /**\r\n * @zh_CN 是否显示头像\r\n * @en_US Whether to show the avatar\r\n */\r\n hidden?: boolean;\r\n}\r\n\r\n/**\r\n * Bubbles\r\n * @selector x-bubbles\r\n * @decorator component\r\n */\r\nexport const XBubblesPrefix = 'x-bubbles';\r\nconst X_BUBBLES_CONFIG_NAME = 'bubbles';\r\n\r\n/**\r\n * Bubbles Property\r\n */\r\n@Component({ selector: `${XBubblesPrefix}-property`, template: '' })\r\nexport class XBubblesProperty extends XPropertyFunction(X_BUBBLES_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize>();\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Bubble variant\r\n */\r\n readonly variant = input<XBubbleVariant>();\r\n /**\r\n * @zh_CN 滚动条滚动事件,自动获取父级可滚动的元素\r\n * @en_US Scroll event of the scroll bar, automatically obtaining the scrollable element of the parent\r\n */\r\n readonly scrollChange = output<Event>();\r\n}\r\n\r\n/**\r\n * @zh_CN 形态变体\r\n * @en_US Bubble variant\r\n */\r\nexport type XBubbleVariant = 'outlined' | 'filled' | 'shadow' | 'borderless';\r\n\r\n/**\r\n * @zh_CN 位置\r\n * @en_US Bubble placement\r\n */\r\nexport type XBubblePlacement = 'start' | 'end';\r\n\r\n/**\r\n * @zh_CN 内容渲染函数\r\n * @en_US Bubble content renderer\r\n */\r\nexport type XBubbleContentRenderer = (content: string) => string | Observable<string> | undefined;\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n contentChildren,\r\n ElementRef,\r\n inject,\r\n Renderer2,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { XBubblesProperty } from './bubble.property';\r\nimport { XBubbleComponent } from './bubble.component';\r\nimport { fromEvent, Subject, Subscription, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'x-bubbles',\r\n templateUrl: './bubbles.component.html',\r\n styleUrls: ['./bubbles.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: []\r\n})\r\nexport class XBubblesComponent extends XBubblesProperty {\r\n elementRef = inject(ElementRef);\r\n renderer = inject(Renderer2);\r\n\r\n private parentScrollElement: HTMLElement | null = null;\r\n private isFollowing = true;\r\n private removeScrollListener: Subscription | null = null;\r\n private contentMutationObserver: MutationObserver | null = null;\r\n private typingObserver: MutationObserver | null = null;\r\n private $destroy = new Subject<void>();\r\n\r\n bubbles = contentChildren(XBubbleComponent);\r\n\r\n ngAfterViewInit(): void {\r\n this.stepScroll();\r\n this.observeContentChanges();\r\n }\r\n\r\n ngDoCheck(): void {\r\n const bubbles = this.bubbles();\r\n if (bubbles.length <= 0) return;\r\n const lastBubble = bubbles[bubbles.length - 1];\r\n if (\r\n lastBubble &&\r\n lastBubble.typing() &&\r\n (lastBubble.pendingContent().length > 0 || lastBubble.reasoningPendingContent().length > 0)\r\n ) {\r\n if (!this.typingObserver) {\r\n this.startTypingObserver(lastBubble);\r\n }\r\n } else {\r\n if (this.typingObserver) {\r\n this.stopTypingObserver();\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeScrollListener?.unsubscribe();\r\n this.contentMutationObserver?.disconnect();\r\n this.stopTypingObserver();\r\n this.$destroy.next();\r\n this.$destroy.complete();\r\n }\r\n\r\n private stepScroll() {\r\n const newScroll = this.getParentScrollElement(this.elementRef.nativeElement);\r\n if (this.parentScrollElement && newScroll === this.parentScrollElement) return;\r\n this.parentScrollElement = newScroll;\r\n if (this.parentScrollElement) {\r\n this.removeScrollListener?.unsubscribe();\r\n this.removeScrollListener = fromEvent(this.parentScrollElement, 'scroll')\r\n .pipe(takeUntil(this.$destroy))\r\n .subscribe((event: Event) => {\r\n const atBottom =\r\n this.parentScrollElement!.scrollHeight - this.parentScrollElement!.scrollTop ===\r\n this.parentScrollElement!.clientHeight;\r\n if (!atBottom) {\r\n this.isFollowing = false;\r\n } else {\r\n this.isFollowing = true;\r\n }\r\n this.scrollChange.emit(event);\r\n });\r\n }\r\n }\r\n\r\n private getParentScrollElement(element: HTMLElement): HTMLElement | null {\r\n let parent = this.renderer.parentNode(element) as HTMLElement;\r\n while (parent && parent.nodeType === 1) {\r\n const overflowY = getComputedStyle(parent).overflowY;\r\n if (overflowY === 'auto' || overflowY === 'scroll') {\r\n return parent;\r\n }\r\n parent = this.renderer.parentNode(parent);\r\n }\r\n return null;\r\n }\r\n private observeContentChanges(): void {\r\n this.contentMutationObserver = new MutationObserver(() => {\r\n this.isFollowing = true;\r\n this.scrollToBottom();\r\n });\r\n\r\n this.contentMutationObserver.observe(this.elementRef.nativeElement, { childList: true });\r\n }\r\n\r\n private startTypingObserver(bubble: XBubbleComponent): void {\r\n const bubbleContent = bubble.wrapperRef()?.nativeElement;\r\n if (bubbleContent) {\r\n this.typingObserver = new MutationObserver(() => {\r\n if (this.isFollowing) {\r\n this.scrollToBottom();\r\n }\r\n });\r\n\r\n this.typingObserver.observe(bubbleContent, {\r\n childList: true,\r\n subtree: true,\r\n characterData: true\r\n });\r\n }\r\n }\r\n\r\n private stopTypingObserver(): void {\r\n if (this.typingObserver) {\r\n this.typingObserver.disconnect();\r\n this.typingObserver = null;\r\n }\r\n }\r\n\r\n scrollToBottom(): void {\r\n this.stepScroll();\r\n if (this.parentScrollElement) {\r\n this.parentScrollElement.scrollTop = this.parentScrollElement.scrollHeight;\r\n }\r\n }\r\n\r\n scrollToTop(): void {\r\n this.stepScroll();\r\n if (this.parentScrollElement) {\r\n this.parentScrollElement.scrollTop = 0;\r\n }\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n computed,\r\n viewChild,\r\n ElementRef,\r\n signal,\r\n effect,\r\n SimpleChanges,\r\n inject,\r\n Renderer2,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { XBubblePrefix, XBubbleProperty } from './bubble.property';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XIsEmpty, XIsString, XIsTemplateRef } from '@ng-nest/ui/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { XAvatarComponent } from '@ng-nest/ui/avatar';\r\nimport { XLoadingComponent } from '@ng-nest/ui/loading';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { XBubblesComponent } from './bubbles.component';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { isObservable } from 'rxjs';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\n\r\n@Component({\r\n selector: 'x-bubble',\r\n templateUrl: './bubble.component.html',\r\n styleUrls: ['./bubble.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, XOutletDirective, XAvatarComponent, XIconComponent, XLoadingComponent]\r\n})\r\nexport class XBubbleComponent extends XBubbleProperty {\r\n sanitizer = inject(DomSanitizer);\r\n renderer2 = inject(Renderer2);\r\n cdr = inject(ChangeDetectorRef);\r\n private bubbles = inject(XBubblesComponent, { optional: true, host: true });\r\n\r\n wrapperRef = viewChild<ElementRef<HTMLElement>>('wrapperRef');\r\n\r\n classMap = computed(() => ({\r\n [`${XBubblePrefix}-${this.variantSignal()}`]: !XIsEmpty(this.variantSignal()),\r\n [`${XBubblePrefix}-${this.placement()}`]: !XIsEmpty(this.placement()),\r\n [`${XBubblePrefix}-cursor`]: this.showCursor() && this.typing(),\r\n [`${XBubblePrefix}-typing`]:\r\n this.typing() && (this.pendingContent().length > 0 || this.reasoningPendingContent().length > 0),\r\n [`x-${this.sizeSignal()}`]: !XIsEmpty(this.sizeSignal())\r\n }));\r\n\r\n typedContent = signal('');\r\n typedContentObserver = toObservable(this.typedContent);\r\n pendingContent = signal('');\r\n pendingContentObserver = toObservable(this.pendingContent);\r\n\r\n reasoningTypedContent = signal('');\r\n reasoningTypedContentObserver = toObservable(this.reasoningTypedContent);\r\n reasoningPendingContent = signal('');\r\n reasoningRenderedContent = signal<SafeHtml>('');\r\n reasoningToggle = signal(true);\r\n\r\n private typingInterval: any = null;\r\n renderedContent = signal<SafeHtml>('');\r\n\r\n sizeSignal = computed(() => {\r\n return this.bubbles?.size() || this.size();\r\n });\r\n\r\n variantSignal = computed(() => {\r\n return this.bubbles?.variant() || this.variant();\r\n });\r\n\r\n isTemplate = computed(() => {\r\n return XIsTemplateRef(this.content());\r\n });\r\n\r\n isString = computed(() => {\r\n return XIsString(this.content());\r\n });\r\n\r\n isReasoningTemplate = computed(() => {\r\n return XIsTemplateRef(this.reasoningContent());\r\n });\r\n\r\n isReasoningString = computed(() => {\r\n return XIsString(this.reasoningContent());\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.isString() && !this.typing()) {\r\n this.stopTyping();\r\n\r\n if (this.reasoningPendingContent().length === 0) {\r\n this.typedContent.set(this.typedContent() + this.pendingContent());\r\n this.pendingContent.set('');\r\n }\r\n }\r\n });\r\n\r\n this.reasoningTypedContentObserver.subscribe(() => {\r\n const finalReasoningContent = this.typing()\r\n ? this.reasoningTypedContent()\r\n : (this.reasoningContent() as string) || '';\r\n const setValue = (value: string) => {\r\n this.reasoningRenderedContent.set(this.sanitizer.bypassSecurityTrustHtml(value));\r\n };\r\n\r\n if (this.renderer()) {\r\n const rendered = this.renderer()!(finalReasoningContent);\r\n if (isObservable(rendered)) {\r\n rendered.subscribe((value) => {\r\n setValue(value);\r\n });\r\n } else {\r\n setValue(rendered as string);\r\n }\r\n } else {\r\n setValue(finalReasoningContent);\r\n }\r\n });\r\n\r\n this.typedContentObserver.subscribe(() => {\r\n const finalContent = this.typing() ? this.typedContent() : (this.content() as string) || '';\r\n const setValue = (value: string) => {\r\n this.renderedContent.set(this.sanitizer.bypassSecurityTrustHtml(value));\r\n };\r\n\r\n if (this.renderer()) {\r\n const rendered = this.renderer()!(finalContent);\r\n if (isObservable(rendered)) {\r\n rendered.subscribe((value) => {\r\n setValue(value);\r\n });\r\n } else {\r\n setValue(rendered as string);\r\n }\r\n } else {\r\n setValue(finalContent);\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { content, reasoningContent } = changes;\r\n\r\n if (reasoningContent && this.isReasoningString()) {\r\n const newReasoningContent = reasoningContent.currentValue || '';\r\n const currentTypedReasoningContent = this.reasoningTypedContent();\r\n\r\n if (!this.typing()) {\r\n this.reasoningTypedContent.set(newReasoningContent);\r\n return;\r\n }\r\n\r\n if (newReasoningContent.startsWith(currentTypedReasoningContent)) {\r\n this.reasoningPendingContent.set(newReasoningContent.substring(currentTypedReasoningContent.length));\r\n if (this.reasoningPendingContent().length > 0 && !this.typingInterval) {\r\n this.startTyping();\r\n }\r\n } else {\r\n this.stopTyping();\r\n this.reasoningTypedContent.set('');\r\n this.reasoningPendingContent.set(newReasoningContent);\r\n this.startTyping();\r\n }\r\n }\r\n\r\n if (content && this.isString()) {\r\n const newFullContent = content.currentValue || '';\r\n const currentTypedContent = this.typedContent();\r\n\r\n if (!this.typing()) {\r\n if (this.reasoningPendingContent().length === 0) {\r\n this.typedContent.set(newFullContent);\r\n }\r\n return;\r\n }\r\n\r\n if (newFullContent.startsWith(currentTypedContent)) {\r\n this.pendingContent.set(newFullContent.substring(currentTypedContent.length));\r\n if (this.reasoningPendingContent().length === 0 && this.pendingContent().length > 0 && !this.typingInterval) {\r\n this.startTyping();\r\n }\r\n } else {\r\n this.stopTyping();\r\n this.typedContent.set('');\r\n this.pendingContent.set(newFullContent);\r\n if (this.reasoningPendingContent().length === 0 && this.pendingContent().length > 0) {\r\n this.startTyping();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private startTyping(): void {\r\n if (this.typingInterval) {\r\n return;\r\n }\r\n\r\n if (this.reasoningPendingContent().length === 0 && this.pendingContent().length === 0) {\r\n return;\r\n }\r\n\r\n this.typingStart.emit();\r\n this.typingInterval = setInterval(() => {\r\n if (this.reasoningPendingContent().length > 0) {\r\n const nextChar = this.reasoningPendingContent().charAt(0);\r\n this.reasoningTypedContent.update((current) => current + nextChar);\r\n this.reasoningPendingContent.update((current) => current.substring(1));\r\n this.typingOuput.emit(nextChar);\r\n } else if (this.pendingContent().length > 0) {\r\n const nextChar = this.pendingContent().charAt(0);\r\n this.typedContent.update((current) => current + nextChar);\r\n this.pendingContent.update((current) => current.substring(1));\r\n this.typingOuput.emit(nextChar);\r\n } else {\r\n this.typingEnd.emit();\r\n this.stopTyping();\r\n }\r\n }, this.speed());\r\n }\r\n\r\n private stopTyping(): void {\r\n if (this.typingInterval) {\r\n clearInterval(this.typingInterval);\r\n this.typingInterval = null;\r\n }\r\n }\r\n\r\n onReasoningToggle() {\r\n this.reasoningToggle.update((x) => !x);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stopTyping();\r\n }\r\n}\r\n","<div class=\"x-bubble\" [ngClass]=\"classMap()\">\r\n @if (!!avatar()) {\r\n <div class=\"x-bubble-avatar\" [class.x-bubble-avatar-hidden]=\"avatar()?.hidden\">\r\n <x-avatar\r\n [icon]=\"avatar()?.icon!\"\r\n [label]=\"avatar()?.label!\"\r\n [src]=\"avatar()?.src!\"\r\n [size]=\"avatar()?.size ?? size()\"\r\n [gap]=\"avatar()?.gap ?? '0.25rem'\"\r\n [fit]=\"avatar()?.fit ?? 'cover'\"\r\n [backgroundColor]=\"avatar()?.backgroundColor ?? '#999999'\"\r\n [color]=\"avatar()?.color ?? '#FFFFFF'\"\r\n [shape]=\"avatar()?.shape ?? 'circle'\"\r\n ></x-avatar>\r\n </div>\r\n }\r\n <div #wrapperRef class=\"x-bubble-wrapper\">\r\n @if (loading()) {\r\n <div class=\"x-bubble-content\" [x-loading]=\"true\" [size]=\"'small'\" inline></div>\r\n } @else {\r\n @if (header()) {\r\n <div class=\"x-bubble-header\">\r\n <ng-container *xOutlet=\"header()\">{{ header() }}</ng-container>\r\n </div>\r\n }\r\n\r\n @if (isReasoningString()) {\r\n <div class=\"x-bubble-reasoning\">\r\n <ng-container *xOutlet=\"reasoningHeaderTpl\"></ng-container>\r\n @if (reasoningToggle()) {\r\n <div class=\"x-bubble-reasoning-content\" #reasoningContentRef [innerHTML]=\"reasoningRenderedContent()\"></div>\r\n }\r\n </div>\r\n } @else if (isReasoningTemplate()) {\r\n <div class=\"x-bubble-reasoning\">\r\n <ng-container *xOutlet=\"reasoningHeaderTpl\"></ng-container>\r\n @if (reasoningToggle()) {\r\n <div class=\"x-bubble-reasoning-content\" #reasoningContentRef>\r\n <ng-container *xOutlet=\"reasoningContent()\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <ng-template #reasoningHeaderTpl>\r\n <div class=\"x-bubble-reasoning-header\" (click)=\"onReasoningToggle()\">\r\n <x-icon\r\n class=\"x-bubble-reasoning-toggle\"\r\n [type]=\"reasoningToggle() ? 'fto-chevron-down' : 'fto-chevron-right'\"\r\n ></x-icon>\r\n <span>{{ reasoningTitle() }}</span>\r\n </div>\r\n </ng-template>\r\n\r\n @if (isString()) {\r\n <div class=\"x-bubble-content\" #contentRef [innerHTML]=\"renderedContent()\"></div>\r\n } @else if (isTemplate()) {\r\n <div class=\"x-bubble-content\" #contentRef>\r\n <ng-container *xOutlet=\"content()\"></ng-container>\r\n </div>\r\n }\r\n\r\n @if (footer()) {\r\n <div class=\"x-bubble-footer\">\r\n <ng-container *xOutlet=\"footer()\">{{ footer() }}</ng-container>\r\n </div>\r\n }\r\n }\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XBubbleComponent } from './bubble.component';\r\nimport { XBubblesComponent } from './bubbles.component';\r\n\r\n@NgModule({\r\n exports: [XBubbleComponent, XBubblesComponent],\r\n imports: [XBubbleComponent, XBubblesComponent]\r\n})\r\nexport class XBubbleModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-bubble.mjs","sources":["../../../../lib/ng-nest/ui/bubble/bubble.property.ts","../../../../lib/ng-nest/ui/bubble/bubbles.component.ts","../../../../lib/ng-nest/ui/bubble/bubbles.component.html","../../../../lib/ng-nest/ui/bubble/bubble.component.ts","../../../../lib/ng-nest/ui/bubble/bubble.component.html","../../../../lib/ng-nest/ui/bubble/bubble.module.ts","../../../../lib/ng-nest/ui/bubble/ng-nest-ui-bubble.ts"],"sourcesContent":["import { Component, input, output } from '@angular/core';\r\nimport { XBoolean, XNumber, XPropertyFunction, XSize, XTemplate, XToBoolean, XToNumber } from '@ng-nest/ui/core';\r\nimport { XAvatarOption } from '@ng-nest/ui/avatar';\r\nimport { Observable } from 'rxjs';\r\n\r\n/**\r\n * Bubble\r\n * @selector x-bubble\r\n * @decorator component\r\n */\r\nexport const XBubblePrefix = 'x-bubble';\r\nconst X_BUBBLE_CONFIG_NAME = 'bubble';\r\n\r\n/**\r\n * Bubble Property\r\n */\r\n@Component({ selector: `${XBubblePrefix}-property`, template: '' })\r\nexport class XBubbleProperty extends XPropertyFunction(X_BUBBLE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 气泡内容\r\n * @en_US Bubble content\r\n */\r\n readonly content = input<XTemplate>();\r\n /**\r\n * @zh_CN 推理内容\r\n * @en_US reasoning content\r\n */\r\n readonly reasoningContent = input<XTemplate>();\r\n /**\r\n * @zh_CN 推理标题\r\n * @en_US reasoning title\r\n */\r\n readonly reasoningTitle = input<XTemplate>(this.config?.reasoningTitle ?? '深度思考');\r\n /**\r\n * @zh_CN 头像\r\n * @en_US Avatar\r\n */\r\n readonly avatar = input<XBubbleAvatarOption>();\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Bubble variant\r\n */\r\n readonly variant = input<XBubbleVariant>(this.config?.variant ?? 'outlined');\r\n /**\r\n * @zh_CN 位置\r\n * @en_US Bubble placement\r\n */\r\n readonly placement = input<XBubblePlacement>('start');\r\n /**\r\n * @zh_CN 气泡头部内容\r\n * @en_US Bubble header content\r\n */\r\n readonly header = input<XTemplate>();\r\n /**\r\n * @zh_CN 气泡底部内容\r\n * @en_US Bubble header content\r\n */\r\n readonly footer = input<XTemplate>();\r\n /**\r\n * @zh_CN 加载中\r\n * @en_US Loading\r\n */\r\n readonly loading = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 内容输出打字机效果\r\n * @en_US Typing effect\r\n */\r\n readonly typing = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 打字机输出速度\r\n * @en_US Typing speed\r\n */\r\n readonly speed = input<number, XNumber>(30, { transform: XToNumber });\r\n /**\r\n * @zh_CN 内容渲染器,可自定义内容的渲染方式,如 HTML、Markdown\r\n * @en_US Content renderer, can customize content rendering, such as HTML, Markdown\r\n */\r\n readonly renderer = input<XBubbleContentRenderer>();\r\n /**\r\n * @zh_CN 是否显示打字机光标\r\n * @en_US Whether to show the typing cursor\r\n */\r\n readonly showCursor = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 打字开始\r\n * @en_US Typing start\r\n */\r\n readonly typingStart = output<void>();\r\n /**\r\n * @zh_CN 打字正在输出的字符\r\n * @en_US Typing output character\r\n */\r\n readonly typingOuput = output<string>();\r\n /**\r\n * @zh_CN 打字结束\r\n * @en_US Typing end\r\n */\r\n readonly typingEnd = output<void>();\r\n}\r\n\r\n/**\r\n * @zh_CN 头像配置,继承了组件 Avatar 相关属性\r\n * @en_US Avatar settings\r\n */\r\nexport interface XBubbleAvatarOption extends XAvatarOption {\r\n /**\r\n * @zh_CN 是否显示头像\r\n * @en_US Whether to show the avatar\r\n */\r\n hidden?: boolean;\r\n}\r\n\r\n/**\r\n * Bubbles\r\n * @selector x-bubbles\r\n * @decorator component\r\n */\r\nexport const XBubblesPrefix = 'x-bubbles';\r\nconst X_BUBBLES_CONFIG_NAME = 'bubbles';\r\n\r\n/**\r\n * Bubbles Property\r\n */\r\n@Component({ selector: `${XBubblesPrefix}-property`, template: '' })\r\nexport class XBubblesProperty extends XPropertyFunction(X_BUBBLES_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize>();\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Bubble variant\r\n */\r\n readonly variant = input<XBubbleVariant>();\r\n /**\r\n * @zh_CN 滚动条滚动事件,自动获取父级可滚动的元素\r\n * @en_US Scroll event of the scroll bar, automatically obtaining the scrollable element of the parent\r\n */\r\n readonly scrollChange = output<Event>();\r\n}\r\n\r\n/**\r\n * @zh_CN 形态变体\r\n * @en_US Bubble variant\r\n */\r\nexport type XBubbleVariant = 'outlined' | 'filled' | 'shadow' | 'borderless';\r\n\r\n/**\r\n * @zh_CN 位置\r\n * @en_US Bubble placement\r\n */\r\nexport type XBubblePlacement = 'start' | 'end';\r\n\r\n/**\r\n * @zh_CN 内容渲染函数\r\n * @en_US Bubble content renderer\r\n */\r\nexport type XBubbleContentRenderer = (content: string) => string | Observable<string> | undefined;\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n contentChildren,\r\n ElementRef,\r\n inject,\r\n Renderer2,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { XBubblesProperty } from './bubble.property';\r\nimport { XBubbleComponent } from './bubble.component';\r\nimport { fromEvent, Subject, Subscription, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'x-bubbles',\r\n templateUrl: './bubbles.component.html',\r\n styleUrls: ['./bubbles.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: []\r\n})\r\nexport class XBubblesComponent extends XBubblesProperty {\r\n elementRef = inject(ElementRef);\r\n renderer = inject(Renderer2);\r\n\r\n private parentScrollElement: HTMLElement | null = null;\r\n private isFollowing = true;\r\n private removeScrollListener: Subscription | null = null;\r\n private contentMutationObserver: MutationObserver | null = null;\r\n private typingObserver: MutationObserver | null = null;\r\n private $destroy = new Subject<void>();\r\n\r\n bubbles = contentChildren(XBubbleComponent);\r\n\r\n ngAfterViewInit(): void {\r\n this.stepScroll();\r\n this.observeContentChanges();\r\n }\r\n\r\n ngDoCheck(): void {\r\n const bubbles = this.bubbles();\r\n if (bubbles.length <= 0) return;\r\n const lastBubble = bubbles[bubbles.length - 1];\r\n if (\r\n lastBubble &&\r\n lastBubble.typing() &&\r\n (lastBubble.pendingContent().length > 0 || lastBubble.reasoningPendingContent().length > 0)\r\n ) {\r\n if (!this.typingObserver) {\r\n this.startTypingObserver(lastBubble);\r\n }\r\n } else {\r\n if (this.typingObserver) {\r\n this.stopTypingObserver();\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeScrollListener?.unsubscribe();\r\n this.contentMutationObserver?.disconnect();\r\n this.stopTypingObserver();\r\n this.$destroy.next();\r\n this.$destroy.complete();\r\n }\r\n\r\n private stepScroll() {\r\n const newScroll = this.getParentScrollElement(this.elementRef.nativeElement);\r\n if (this.parentScrollElement && newScroll === this.parentScrollElement) return;\r\n this.parentScrollElement = newScroll;\r\n if (this.parentScrollElement) {\r\n this.removeScrollListener?.unsubscribe();\r\n this.removeScrollListener = fromEvent(this.parentScrollElement, 'scroll')\r\n .pipe(takeUntil(this.$destroy))\r\n .subscribe((event: Event) => {\r\n const atBottom =\r\n this.parentScrollElement!.scrollHeight - this.parentScrollElement!.scrollTop ===\r\n this.parentScrollElement!.clientHeight;\r\n if (!atBottom) {\r\n this.isFollowing = false;\r\n } else {\r\n this.isFollowing = true;\r\n }\r\n this.scrollChange.emit(event);\r\n });\r\n }\r\n }\r\n\r\n private getParentScrollElement(element: HTMLElement): HTMLElement | null {\r\n let parent = this.renderer.parentNode(element) as HTMLElement;\r\n while (parent && parent.nodeType === 1) {\r\n const overflowY = getComputedStyle(parent).overflowY;\r\n if (overflowY === 'auto' || overflowY === 'scroll') {\r\n return parent;\r\n }\r\n parent = this.renderer.parentNode(parent);\r\n }\r\n return null;\r\n }\r\n private observeContentChanges(): void {\r\n this.contentMutationObserver = new MutationObserver(() => {\r\n this.isFollowing = true;\r\n this.scrollToBottom();\r\n });\r\n\r\n this.contentMutationObserver.observe(this.elementRef.nativeElement, { childList: true });\r\n }\r\n\r\n private startTypingObserver(bubble: XBubbleComponent): void {\r\n const bubbleContent = bubble.wrapperRef()?.nativeElement;\r\n if (bubbleContent) {\r\n this.typingObserver = new MutationObserver(() => {\r\n if (this.isFollowing) {\r\n this.scrollToBottom();\r\n }\r\n });\r\n\r\n this.typingObserver.observe(bubbleContent, {\r\n childList: true,\r\n subtree: true,\r\n characterData: true\r\n });\r\n }\r\n }\r\n\r\n private stopTypingObserver(): void {\r\n if (this.typingObserver) {\r\n this.typingObserver.disconnect();\r\n this.typingObserver = null;\r\n }\r\n }\r\n\r\n scrollToBottom(): void {\r\n this.stepScroll();\r\n if (this.parentScrollElement) {\r\n this.parentScrollElement.scrollTop = this.parentScrollElement.scrollHeight;\r\n }\r\n }\r\n\r\n scrollToTop(): void {\r\n this.stepScroll();\r\n if (this.parentScrollElement) {\r\n this.parentScrollElement.scrollTop = 0;\r\n }\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n computed,\r\n viewChild,\r\n ElementRef,\r\n signal,\r\n effect,\r\n SimpleChanges,\r\n inject,\r\n Renderer2,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { XBubblePrefix, XBubbleProperty } from './bubble.property';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XIsEmpty, XIsString, XIsTemplateRef } from '@ng-nest/ui/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { XAvatarComponent } from '@ng-nest/ui/avatar';\r\nimport { XLoadingComponent } from '@ng-nest/ui/loading';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { XBubblesComponent } from './bubbles.component';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { isObservable } from 'rxjs';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\n\r\n@Component({\r\n selector: 'x-bubble',\r\n templateUrl: './bubble.component.html',\r\n styleUrls: ['./bubble.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, XOutletDirective, XAvatarComponent, XIconComponent, XLoadingComponent]\r\n})\r\nexport class XBubbleComponent extends XBubbleProperty {\r\n sanitizer = inject(DomSanitizer);\r\n renderer2 = inject(Renderer2);\r\n cdr = inject(ChangeDetectorRef);\r\n private bubbles = inject(XBubblesComponent, { optional: true, host: true });\r\n\r\n wrapperRef = viewChild<ElementRef<HTMLElement>>('wrapperRef');\r\n\r\n classMap = computed(() => ({\r\n [`${XBubblePrefix}-${this.variantSignal()}`]: !XIsEmpty(this.variantSignal()),\r\n [`${XBubblePrefix}-${this.placement()}`]: !XIsEmpty(this.placement()),\r\n [`${XBubblePrefix}-cursor`]: this.showCursor() && this.typing(),\r\n [`${XBubblePrefix}-typing`]:\r\n this.typing() && (this.pendingContent().length > 0 || this.reasoningPendingContent().length > 0),\r\n [`x-${this.sizeSignal()}`]: !XIsEmpty(this.sizeSignal())\r\n }));\r\n\r\n typedContent = signal('');\r\n typedContentObserver = toObservable(this.typedContent);\r\n pendingContent = signal('');\r\n pendingContentObserver = toObservable(this.pendingContent);\r\n\r\n reasoningTypedContent = signal('');\r\n reasoningTypedContentObserver = toObservable(this.reasoningTypedContent);\r\n reasoningPendingContent = signal('');\r\n reasoningRenderedContent = signal<SafeHtml>('');\r\n reasoningToggle = signal(true);\r\n\r\n private typingInterval: any = null;\r\n renderedContent = signal<SafeHtml>('');\r\n\r\n sizeSignal = computed(() => {\r\n return this.bubbles?.size() || this.size();\r\n });\r\n\r\n variantSignal = computed(() => {\r\n return this.bubbles?.variant() || this.variant();\r\n });\r\n\r\n isTemplate = computed(() => {\r\n return XIsTemplateRef(this.content());\r\n });\r\n\r\n isString = computed(() => {\r\n return XIsString(this.content());\r\n });\r\n\r\n isReasoningTemplate = computed(() => {\r\n return XIsTemplateRef(this.reasoningContent());\r\n });\r\n\r\n isReasoningString = computed(() => {\r\n return XIsString(this.reasoningContent()) && !XIsEmpty(this.reasoningContent());\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.isString() && !this.typing()) {\r\n this.stopTyping();\r\n\r\n if (this.reasoningPendingContent().length === 0) {\r\n this.typedContent.set(this.typedContent() + this.pendingContent());\r\n this.pendingContent.set('');\r\n }\r\n }\r\n });\r\n\r\n this.reasoningTypedContentObserver.subscribe(() => {\r\n const finalReasoningContent = this.typing()\r\n ? this.reasoningTypedContent()\r\n : (this.reasoningContent() as string) || '';\r\n const setValue = (value: string) => {\r\n this.reasoningRenderedContent.set(this.sanitizer.bypassSecurityTrustHtml(value));\r\n };\r\n\r\n if (this.renderer() && XIsString(finalReasoningContent)) {\r\n const rendered = this.renderer()!(finalReasoningContent);\r\n if (isObservable(rendered)) {\r\n rendered.subscribe((value) => {\r\n setValue(value);\r\n });\r\n } else {\r\n setValue(rendered as string);\r\n }\r\n } else {\r\n setValue(finalReasoningContent);\r\n }\r\n });\r\n\r\n this.typedContentObserver.subscribe(() => {\r\n const finalContent = this.typing() ? this.typedContent() : (this.content() as string) || '';\r\n const setValue = (value: string) => {\r\n this.renderedContent.set(this.sanitizer.bypassSecurityTrustHtml(value));\r\n };\r\n\r\n if (this.renderer() && XIsString(finalContent)) {\r\n const rendered = this.renderer()!(finalContent);\r\n if (isObservable(rendered)) {\r\n rendered.subscribe((value) => {\r\n setValue(value);\r\n });\r\n } else {\r\n setValue(rendered as string);\r\n }\r\n } else {\r\n setValue(finalContent);\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { content, reasoningContent } = changes;\r\n\r\n if (reasoningContent && this.isReasoningString()) {\r\n const newReasoningContent = reasoningContent.currentValue || '';\r\n const currentTypedReasoningContent = this.reasoningTypedContent();\r\n\r\n if (!this.typing()) {\r\n this.reasoningTypedContent.set(newReasoningContent);\r\n return;\r\n }\r\n\r\n if (newReasoningContent.startsWith(currentTypedReasoningContent)) {\r\n this.reasoningPendingContent.set(newReasoningContent.substring(currentTypedReasoningContent.length));\r\n if (this.reasoningPendingContent().length > 0 && !this.typingInterval) {\r\n this.startTyping();\r\n }\r\n } else {\r\n this.stopTyping();\r\n this.reasoningTypedContent.set('');\r\n this.reasoningPendingContent.set(newReasoningContent);\r\n this.startTyping();\r\n }\r\n }\r\n\r\n if (content && this.isString()) {\r\n const newFullContent = content.currentValue || '';\r\n const currentTypedContent = this.typedContent();\r\n\r\n if (!this.typing()) {\r\n if (this.reasoningPendingContent().length === 0) {\r\n this.typedContent.set(newFullContent);\r\n }\r\n return;\r\n }\r\n\r\n if (newFullContent.startsWith(currentTypedContent)) {\r\n this.pendingContent.set(newFullContent.substring(currentTypedContent.length));\r\n if (this.reasoningPendingContent().length === 0 && this.pendingContent().length > 0 && !this.typingInterval) {\r\n this.startTyping();\r\n }\r\n } else {\r\n this.stopTyping();\r\n this.typedContent.set('');\r\n this.pendingContent.set(newFullContent);\r\n if (this.reasoningPendingContent().length === 0 && this.pendingContent().length > 0) {\r\n this.startTyping();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private startTyping(): void {\r\n if (this.typingInterval) {\r\n return;\r\n }\r\n\r\n if (this.reasoningPendingContent().length === 0 && this.pendingContent().length === 0) {\r\n return;\r\n }\r\n\r\n this.typingStart.emit();\r\n this.typingInterval = setInterval(() => {\r\n if (this.reasoningPendingContent().length > 0) {\r\n const nextChar = this.reasoningPendingContent().charAt(0);\r\n this.reasoningTypedContent.update((current) => current + nextChar);\r\n this.reasoningPendingContent.update((current) => current.substring(1));\r\n this.typingOuput.emit(nextChar);\r\n } else if (this.pendingContent().length > 0) {\r\n const nextChar = this.pendingContent().charAt(0);\r\n this.typedContent.update((current) => current + nextChar);\r\n this.pendingContent.update((current) => current.substring(1));\r\n this.typingOuput.emit(nextChar);\r\n } else {\r\n this.typingEnd.emit();\r\n this.stopTyping();\r\n }\r\n }, this.speed());\r\n }\r\n\r\n private stopTyping(): void {\r\n if (this.typingInterval) {\r\n clearInterval(this.typingInterval);\r\n this.typingInterval = null;\r\n }\r\n }\r\n\r\n onReasoningToggle() {\r\n this.reasoningToggle.update((x) => !x);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stopTyping();\r\n }\r\n}\r\n","<div class=\"x-bubble\" [ngClass]=\"classMap()\">\r\n @if (!!avatar()) {\r\n <div class=\"x-bubble-avatar\" [class.x-bubble-avatar-hidden]=\"avatar()?.hidden\">\r\n <x-avatar\r\n [icon]=\"avatar()?.icon!\"\r\n [label]=\"avatar()?.label!\"\r\n [src]=\"avatar()?.src!\"\r\n [size]=\"avatar()?.size ?? size()\"\r\n [gap]=\"avatar()?.gap ?? '0.25rem'\"\r\n [fit]=\"avatar()?.fit ?? 'cover'\"\r\n [backgroundColor]=\"avatar()?.backgroundColor ?? '#999999'\"\r\n [color]=\"avatar()?.color ?? '#FFFFFF'\"\r\n [shape]=\"avatar()?.shape ?? 'circle'\"\r\n ></x-avatar>\r\n </div>\r\n }\r\n <div #wrapperRef class=\"x-bubble-wrapper\">\r\n @if (loading()) {\r\n <div class=\"x-bubble-content\" [x-loading]=\"true\" [size]=\"'small'\" inline></div>\r\n } @else {\r\n @if (header()) {\r\n <div class=\"x-bubble-header\">\r\n <ng-container *xOutlet=\"header()\">{{ header() }}</ng-container>\r\n </div>\r\n }\r\n\r\n @if (isReasoningString()) {\r\n <div class=\"x-bubble-reasoning\">\r\n <ng-container *xOutlet=\"reasoningHeaderTpl\"></ng-container>\r\n @if (reasoningToggle()) {\r\n <div class=\"x-bubble-reasoning-content\" #reasoningContentRef [innerHTML]=\"reasoningRenderedContent()\"></div>\r\n }\r\n </div>\r\n } @else if (isReasoningTemplate()) {\r\n <div class=\"x-bubble-reasoning\">\r\n <ng-container *xOutlet=\"reasoningHeaderTpl\"></ng-container>\r\n @if (reasoningToggle()) {\r\n <div class=\"x-bubble-reasoning-content\" #reasoningContentRef>\r\n <ng-container *xOutlet=\"reasoningContent()\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <ng-template #reasoningHeaderTpl>\r\n <div class=\"x-bubble-reasoning-header\" (click)=\"onReasoningToggle()\">\r\n <x-icon\r\n class=\"x-bubble-reasoning-toggle\"\r\n [type]=\"reasoningToggle() ? 'fto-chevron-down' : 'fto-chevron-right'\"\r\n ></x-icon>\r\n <span>{{ reasoningTitle() }}</span>\r\n </div>\r\n </ng-template>\r\n\r\n @if (isString()) {\r\n <div class=\"x-bubble-content\" #contentRef [innerHTML]=\"renderedContent()\"></div>\r\n } @else if (isTemplate()) {\r\n <div class=\"x-bubble-content\" #contentRef>\r\n <ng-container *xOutlet=\"content()\"></ng-container>\r\n </div>\r\n }\r\n\r\n @if (footer()) {\r\n <div class=\"x-bubble-footer\">\r\n <ng-container *xOutlet=\"footer()\">{{ footer() }}</ng-container>\r\n </div>\r\n }\r\n }\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XBubbleComponent } from './bubble.component';\r\nimport { XBubblesComponent } from './bubbles.component';\r\n\r\n@NgModule({\r\n exports: [XBubbleComponent, XBubblesComponent],\r\n imports: [XBubbleComponent, XBubblesComponent]\r\n})\r\nexport class XBubbleModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -164,11 +164,11 @@ class XDrawerComponent extends XDrawerProperty {
164
164
  }
165
165
  }
166
166
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
167
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.5", type: XDrawerComponent, isStandalone: true, selector: "x-drawer", host: { properties: { "class.x-drawer-visible": "this.getVisible" } }, viewQueries: [{ propertyName: "drawerTpl", first: true, predicate: ["drawerTpl"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #drawerTpl>\r\n @if (visible()) {\r\n @if (hasContainer() && hasBackdrop()) {\r\n <div\r\n class=\"x-drawer-backdrop\"\r\n [animate.enter]=\"`x-opacity-enter`\"\r\n [animate.leave]=\"`x-opacity-leave`\"\r\n (click)=\"closePortal()\"\r\n ></div>\r\n }\r\n\r\n <div\r\n class=\"x-drawer\"\r\n [ngClass]=\"classMap()\"\r\n [style.width]=\"hasContainer() ? width() : '100%'\"\r\n [style.height]=\"hasContainer() ? height() : '100%'\"\r\n [animate.enter]=\"`x-slide-${placement()}-enter`\"\r\n [animate.leave]=\"`x-slide-${placement()}-leave`\"\r\n >\r\n @if (title()) {\r\n {{ hasContainer() }} {{ hasBackdrop() }}\r\n <div class=\"x-drawer-header\">\r\n <div class=\"x-drawer-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <x-button\r\n size=\"small\"\r\n class=\"x-drawer-close\"\r\n icon=\"fto-x\"\r\n type=\"text\"\r\n (click)=\"closePortal()\"\r\n closable\r\n ></x-button>\r\n </div>\r\n }\r\n <div class=\"x-drawer-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n@if (hasContainer()) {\r\n <ng-container *ngTemplateOutlet=\"drawerTpl\"></ng-container>\r\n}\r\n", styles: [".x-drawer{margin:0;padding:0}.x-drawer{background-color:var(--x-background);position:relative;box-shadow:var(--x-box-shadow)}.x-drawer-header{padding:1rem 1rem .5rem}.x-drawer-title{font-weight:600;color:var(--x-text-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.x-drawer-close{position:absolute;top:.425rem;right:.425rem}.x-drawer-title{padding:0}.x-drawer-content{padding:0 1rem 1rem;height:calc(100% - 3rem);overflow:auto}.x-drawer-no-title .x-drawer-content{padding:.5rem 1rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XButtonComponent, selector: "x-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
167
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.5", type: XDrawerComponent, isStandalone: true, selector: "x-drawer", host: { properties: { "class.x-drawer-visible": "this.getVisible" } }, viewQueries: [{ propertyName: "drawerTpl", first: true, predicate: ["drawerTpl"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #drawerTpl>\r\n @if (visible()) {\r\n @if (hasContainer() && hasBackdrop()) {\r\n <div\r\n class=\"x-drawer-backdrop\"\r\n [animate.enter]=\"`x-opacity-enter`\"\r\n [animate.leave]=\"`x-opacity-leave`\"\r\n (click)=\"closePortal()\"\r\n ></div>\r\n }\r\n\r\n <div\r\n class=\"x-drawer\"\r\n [ngClass]=\"classMap()\"\r\n [style.width]=\"hasContainer() ? width() : '100%'\"\r\n [style.height]=\"hasContainer() ? height() : '100%'\"\r\n [animate.enter]=\"`x-slide-${placement()}-enter`\"\r\n [animate.leave]=\"`x-slide-${placement()}-leave`\"\r\n >\r\n @if (title()) {\r\n <div class=\"x-drawer-header\">\r\n <div class=\"x-drawer-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <x-button\r\n size=\"small\"\r\n class=\"x-drawer-close\"\r\n icon=\"fto-x\"\r\n type=\"text\"\r\n (click)=\"closePortal()\"\r\n closable\r\n ></x-button>\r\n </div>\r\n }\r\n <div class=\"x-drawer-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n@if (hasContainer()) {\r\n <ng-container *ngTemplateOutlet=\"drawerTpl\"></ng-container>\r\n}\r\n", styles: [".x-drawer{margin:0;padding:0}.x-drawer{background-color:var(--x-background);position:relative;box-shadow:var(--x-box-shadow)}.x-drawer-header{padding:1rem 1rem .5rem}.x-drawer-title{font-weight:600;color:var(--x-text-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.x-drawer-close{position:absolute;top:.425rem;right:.425rem}.x-drawer-title{padding:0}.x-drawer-content{padding:0 1rem 1rem;height:calc(100% - 3rem);overflow:auto}.x-drawer-no-title .x-drawer-content{padding:.5rem 1rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XButtonComponent, selector: "x-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
168
168
  }
169
169
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerComponent, decorators: [{
170
170
  type: Component,
171
- args: [{ selector: `${XDrawerPrefix}`, imports: [NgClass, NgTemplateOutlet, XOutletDirective, XButtonComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #drawerTpl>\r\n @if (visible()) {\r\n @if (hasContainer() && hasBackdrop()) {\r\n <div\r\n class=\"x-drawer-backdrop\"\r\n [animate.enter]=\"`x-opacity-enter`\"\r\n [animate.leave]=\"`x-opacity-leave`\"\r\n (click)=\"closePortal()\"\r\n ></div>\r\n }\r\n\r\n <div\r\n class=\"x-drawer\"\r\n [ngClass]=\"classMap()\"\r\n [style.width]=\"hasContainer() ? width() : '100%'\"\r\n [style.height]=\"hasContainer() ? height() : '100%'\"\r\n [animate.enter]=\"`x-slide-${placement()}-enter`\"\r\n [animate.leave]=\"`x-slide-${placement()}-leave`\"\r\n >\r\n @if (title()) {\r\n {{ hasContainer() }} {{ hasBackdrop() }}\r\n <div class=\"x-drawer-header\">\r\n <div class=\"x-drawer-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <x-button\r\n size=\"small\"\r\n class=\"x-drawer-close\"\r\n icon=\"fto-x\"\r\n type=\"text\"\r\n (click)=\"closePortal()\"\r\n closable\r\n ></x-button>\r\n </div>\r\n }\r\n <div class=\"x-drawer-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n@if (hasContainer()) {\r\n <ng-container *ngTemplateOutlet=\"drawerTpl\"></ng-container>\r\n}\r\n", styles: [".x-drawer{margin:0;padding:0}.x-drawer{background-color:var(--x-background);position:relative;box-shadow:var(--x-box-shadow)}.x-drawer-header{padding:1rem 1rem .5rem}.x-drawer-title{font-weight:600;color:var(--x-text-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.x-drawer-close{position:absolute;top:.425rem;right:.425rem}.x-drawer-title{padding:0}.x-drawer-content{padding:0 1rem 1rem;height:calc(100% - 3rem);overflow:auto}.x-drawer-no-title .x-drawer-content{padding:.5rem 1rem}\n"] }]
171
+ args: [{ selector: `${XDrawerPrefix}`, imports: [NgClass, NgTemplateOutlet, XOutletDirective, XButtonComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #drawerTpl>\r\n @if (visible()) {\r\n @if (hasContainer() && hasBackdrop()) {\r\n <div\r\n class=\"x-drawer-backdrop\"\r\n [animate.enter]=\"`x-opacity-enter`\"\r\n [animate.leave]=\"`x-opacity-leave`\"\r\n (click)=\"closePortal()\"\r\n ></div>\r\n }\r\n\r\n <div\r\n class=\"x-drawer\"\r\n [ngClass]=\"classMap()\"\r\n [style.width]=\"hasContainer() ? width() : '100%'\"\r\n [style.height]=\"hasContainer() ? height() : '100%'\"\r\n [animate.enter]=\"`x-slide-${placement()}-enter`\"\r\n [animate.leave]=\"`x-slide-${placement()}-leave`\"\r\n >\r\n @if (title()) {\r\n <div class=\"x-drawer-header\">\r\n <div class=\"x-drawer-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <x-button\r\n size=\"small\"\r\n class=\"x-drawer-close\"\r\n icon=\"fto-x\"\r\n type=\"text\"\r\n (click)=\"closePortal()\"\r\n closable\r\n ></x-button>\r\n </div>\r\n }\r\n <div class=\"x-drawer-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n@if (hasContainer()) {\r\n <ng-container *ngTemplateOutlet=\"drawerTpl\"></ng-container>\r\n}\r\n", styles: [".x-drawer{margin:0;padding:0}.x-drawer{background-color:var(--x-background);position:relative;box-shadow:var(--x-box-shadow)}.x-drawer-header{padding:1rem 1rem .5rem}.x-drawer-title{font-weight:600;color:var(--x-text-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.x-drawer-close{position:absolute;top:.425rem;right:.425rem}.x-drawer-title{padding:0}.x-drawer-content{padding:0 1rem 1rem;height:calc(100% - 3rem);overflow:auto}.x-drawer-no-title .x-drawer-content{padding:.5rem 1rem}\n"] }]
172
172
  }], ctorParameters: () => [], propDecorators: { getVisible: [{
173
173
  type: HostBinding,
174
174
  args: ['class.x-drawer-visible']
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-drawer.mjs","sources":["../../../../lib/ng-nest/ui/drawer/drawer.property.ts","../../../../lib/ng-nest/ui/drawer/drawer.component.ts","../../../../lib/ng-nest/ui/drawer/drawer.component.html","../../../../lib/ng-nest/ui/drawer/drawer-portal.component.ts","../../../../lib/ng-nest/ui/drawer/drawer-portal.component.html","../../../../lib/ng-nest/ui/drawer/drawer-ref.ts","../../../../lib/ng-nest/ui/drawer/drawer-portal.directives.ts","../../../../lib/ng-nest/ui/drawer/drawer-container.component.ts","../../../../lib/ng-nest/ui/drawer/drawer-container.component.html","../../../../lib/ng-nest/ui/drawer/drawer.module.ts","../../../../lib/ng-nest/ui/drawer/drawer.service.ts","../../../../lib/ng-nest/ui/drawer/ng-nest-ui-drawer.ts"],"sourcesContent":["import { XPropertyFunction, XProperty, XToCssPixelValue, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, InjectionToken, ViewContainerRef, input, model, output } from '@angular/core';\r\nimport { XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { XDrawerPortalComponent } from './drawer-portal.component';\r\nimport type { XDrawerRef } from './drawer-ref';\r\nimport type { XTemplate, XPosition, XBoolean, XNumber } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Drawer\r\n * @selector x-drawer\r\n * @decorator component\r\n */\r\nexport const XDrawerPrefix = 'x-drawer';\r\nexport const X_DRAWER_CONFIG_NAME = 'drawer';\r\nexport const X_DRAWER_DATA = new InjectionToken<any>('XDrawerData');\r\n\r\n/**\r\n * Drawer Property\r\n */\r\n@Component({ selector: `${XDrawerPrefix}-property`, template: '' })\r\nexport class XDrawerProperty extends XPropertyFunction(X_DRAWER_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 标题\r\n * @en_US Title\r\n */\r\n readonly title = input<XTemplate>();\r\n /**\r\n * @zh_CN 显示/隐藏\r\n * @en_US Show/hide\r\n */\r\n readonly visible = model<boolean>(false);\r\n /**\r\n * @zh_CN 展示方向\r\n * @en_US Display direction\r\n */\r\n readonly placement = input<XPosition>(this.config?.placement ?? 'right');\r\n /**\r\n * @zh_CN 尺寸,支持固定值\r\n * @en_US Size, supports fixed value\r\n */\r\n readonly size = input<string, XNumber>(this.config?.size ?? '30%', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 点击遮罩关闭\r\n * @en_US Click the mask to close\r\n */\r\n readonly backdropClose = input<boolean, XBoolean>(this.config?.backdropClose ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否显示背景遮罩\r\n * @en_US Whether to display the background mask\r\n */\r\n readonly hasBackdrop = input<boolean, XBoolean>(this.config?.hasBackdrop ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 自定义样式名\r\n * @en_US Custom style name\r\n */\r\n readonly className = input<string>(this.config?.className ?? '');\r\n /**\r\n * @zh_CN 关闭的事件\r\n * @en_US Closed event\r\n */\r\n readonly close = output();\r\n}\r\n\r\n/**\r\n * Drawer Option\r\n */\r\nexport interface XDrawerOption {\r\n /**\r\n * @zh_CN 展示方向\r\n * @en_US Display direction\r\n * @default 'right'\r\n * @withConfig true\r\n */\r\n placement?: XPosition;\r\n /**\r\n * @zh_CN 尺寸,支持固定值\r\n * @en_US Size, supports fixed value\r\n * @default '30%'\r\n * @withConfig true\r\n */\r\n size?: string;\r\n /**\r\n * @zh_CN 自定义样式名\r\n * @en_US Custom style name\r\n */\r\n className?: string;\r\n /**\r\n * @zh_CN 点击遮罩关闭\r\n * @en_US Click the mask to close\r\n * @default true\r\n * @withConfig true\r\n */\r\n backdropClose?: boolean;\r\n /**\r\n * @zh_CN 是否显示背景遮罩\r\n * @en_US Whether to display the background mask\r\n * @default true\r\n * @withConfig true\r\n */\r\n hasBackdrop?: boolean;\r\n /**\r\n * @zh_CN 数据,通过 \"@Inject(X_DRAWER_DATA)\" 来接收数据\r\n * @en_US Data. Receive data by \"@Inject(X_DRAWER_DATA)\"\r\n */\r\n data?: any;\r\n /**\r\n * @zh_CN 视图容器实例可以包含其他视图容器。\r\n * @en_US A view container instance can contain other view containers.\r\n */\r\n viewContainerRef?: ViewContainerRef;\r\n}\r\n\r\n/**\r\n * Drawer Container\r\n * @selector x-drawer-container\r\n * @decorator component\r\n */\r\nexport const XDrawerContainerPrefix = 'x-drawer-container';\r\nexport const X_DRAWER_CONTAINER = new InjectionToken('X_DRAWER_CONTAINER');\r\n\r\n/**\r\n * Drawer Container Property\r\n */\r\n@Component({ selector: `${XDrawerContainerPrefix}-property`, template: '' })\r\nexport class XDrawerContainerProperty extends XProperty {}\r\n\r\n/**\r\n * @zh_CN 创建的抽屉对象\r\n * @en_US Drawer object created\r\n */\r\nexport interface XDrawerPortalOverlayRef extends XPortalOverlayRef<XDrawerPortalComponent> {\r\n drawerRef?: XDrawerRef<any>;\r\n}\r\n\r\n/**\r\n * @zh_CN 抽屉动画状态\r\n * @en_US Drawer animation status\r\n */\r\nexport type XDrawerAnimationState = XPosition | 'void';\r\n\r\n/**\r\n * @zh_CN 抽屉动画事件\r\n * @en_US Drawer animation event\r\n */\r\nexport interface XDrawerAnimationEvent {\r\n state: XDrawerAnimationState;\r\n action: 'start' | 'done';\r\n totalTime: number;\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n TemplateRef,\r\n ViewContainerRef,\r\n HostBinding,\r\n inject,\r\n OnDestroy,\r\n computed,\r\n signal,\r\n AfterViewInit,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XDrawerPrefix, XDrawerProperty, X_DRAWER_CONTAINER } from './drawer.property';\r\nimport { XIsEmpty } from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\nimport { Overlay } from '@angular/cdk/overlay';\r\nimport { XDrawerContainerComponent } from './drawer-container.component';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: `${XDrawerPrefix}`,\r\n imports: [NgClass, NgTemplateOutlet, XOutletDirective, XButtonComponent],\r\n templateUrl: './drawer.component.html',\r\n styleUrls: ['./drawer.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XDrawerComponent extends XDrawerProperty implements AfterViewInit, OnDestroy {\r\n @HostBinding('class.x-drawer-visible') get getVisible() {\r\n return this.visible();\r\n }\r\n drawerTpl = viewChild.required<TemplateRef<void>>('drawerTpl');\r\n portal!: XPortalOverlayRef<any>;\r\n back$: Subscription | null = null;\r\n width = computed(() => {\r\n return ['left', 'right'].includes(this.placement()) ? this.size() : '100%';\r\n });\r\n height = computed(() => {\r\n return ['top', 'bottom'].includes(this.placement()) ? this.size() : '100%';\r\n });\r\n\r\n private overlay = inject(Overlay);\r\n private portalService = inject(XPortalService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private unSubject = new Subject<void>();\r\n container = inject<XDrawerContainerComponent>(X_DRAWER_CONTAINER, { optional: true });\r\n hasContainer = signal(false);\r\n classMap = computed(() => ({\r\n [`${XDrawerPrefix}-${this.placement()}`]: !XIsEmpty(this.placement()),\r\n [`${XDrawerPrefix}-no-title`]: XIsEmpty(this.title())\r\n }));\r\n visibleChanged = toObservable(this.visible);\r\n\r\n constructor() {\r\n super();\r\n this.visibleChanged.pipe(takeUntil(this.unSubject)).subscribe(() => this.setVisible());\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.hasContainer.set(!!this.container);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.back$?.unsubscribe();\r\n }\r\n\r\n setVisible() {\r\n if (this.visible()) {\r\n this.createPortal();\r\n } else {\r\n this.closePortal();\r\n }\r\n }\r\n\r\n createPortal() {\r\n if (this.hasContainer()) return;\r\n this.portal = this.portalService.attach({\r\n content: this.drawerTpl(),\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: {\r\n panelClass: this.className(),\r\n hasBackdrop: this.hasBackdrop(),\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n positionStrategy: this.portalService.setPosition(this.placement(), this.width(), this.height())\r\n }\r\n });\r\n if (this.portal.overlayRef && this.backdropClose()) {\r\n this.back$ = this.portal.overlayRef.backdropClick().subscribe(() => this.closePortal());\r\n }\r\n }\r\n\r\n portalAttached() {\r\n return this.portal?.overlayRef?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portal?.overlayRef?.detach();\r\n this.back$?.unsubscribe();\r\n this.close.emit();\r\n } else if (this.container && this.visible()) {\r\n this.visible.set(false);\r\n }\r\n }\r\n}\r\n","<ng-template #drawerTpl>\r\n @if (visible()) {\r\n @if (hasContainer() && hasBackdrop()) {\r\n <div\r\n class=\"x-drawer-backdrop\"\r\n [animate.enter]=\"`x-opacity-enter`\"\r\n [animate.leave]=\"`x-opacity-leave`\"\r\n (click)=\"closePortal()\"\r\n ></div>\r\n }\r\n\r\n <div\r\n class=\"x-drawer\"\r\n [ngClass]=\"classMap()\"\r\n [style.width]=\"hasContainer() ? width() : '100%'\"\r\n [style.height]=\"hasContainer() ? height() : '100%'\"\r\n [animate.enter]=\"`x-slide-${placement()}-enter`\"\r\n [animate.leave]=\"`x-slide-${placement()}-leave`\"\r\n >\r\n @if (title()) {\r\n {{ hasContainer() }} {{ hasBackdrop() }}\r\n <div class=\"x-drawer-header\">\r\n <div class=\"x-drawer-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <x-button\r\n size=\"small\"\r\n class=\"x-drawer-close\"\r\n icon=\"fto-x\"\r\n type=\"text\"\r\n (click)=\"closePortal()\"\r\n closable\r\n ></x-button>\r\n </div>\r\n }\r\n <div class=\"x-drawer-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n@if (hasContainer()) {\r\n <ng-container *ngTemplateOutlet=\"drawerTpl\"></ng-container>\r\n}\r\n","import { PortalModule, CdkPortalOutlet, Portal } from '@angular/cdk/portal';\r\nimport { ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation, input, viewChild } from '@angular/core';\r\nimport { XPosition } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: 'x-drawer-portal',\r\n imports: [PortalModule],\r\n templateUrl: './drawer-portal.component.html',\r\n styleUrls: ['./drawer-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XDrawerPortalComponent {\r\n @HostBinding('class.x-drawer-portal') _has = true;\r\n\r\n placement = input<XPosition>();\r\n portal!: Portal<any>;\r\n\r\n @HostBinding('animate.enter') get animateEnter() {\r\n return `x-slide-${this.placement()}-enter`;\r\n }\r\n @HostBinding('animate.leave') get animateLeave() {\r\n return `x-slide-${this.placement()}-leave`;\r\n }\r\n\r\n portalOutlet = viewChild.required(CdkPortalOutlet);\r\n\r\n ngAfterViewInit() {\r\n this.portalOutlet().setDisposeFn(() => {});\r\n }\r\n}\r\n","<ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\r\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { XDrawerPortalComponent } from './drawer-portal.component';\r\n\r\n// TODO: add more function\r\nexport class XDrawerRef<C> {\r\n componentInstance!: C;\r\n constructor(\r\n public overlayRef: OverlayRef,\r\n public containerInstance: XDrawerPortalComponent\r\n ) {}\r\n close() {\r\n this.overlayRef.detach();\r\n }\r\n}\r\n","import { Directive, HostBinding, HostListener, inject } from '@angular/core';\r\nimport { XDrawerRef } from './drawer-ref';\r\n\r\n@Directive({\r\n selector: `[x-drawer-close]`\r\n})\r\nexport class XDrawerCloseDirective {\r\n @HostListener('click') onCloseClick() {\r\n this.drawerRef && this.drawerRef.close();\r\n }\r\n drawerRef = inject(XDrawerRef, { optional: true });\r\n}\r\n\r\n@Directive({\r\n selector: `[x-drawer-title]`\r\n})\r\nexport class XDrawerTitleDirective {\r\n @HostBinding('class.x-drawer-portal-title') _has = true;\r\n}\r\n\r\n@Directive({\r\n selector: `[x-drawer-content], x-drawer-content`\r\n})\r\nexport class XDrawerContentDirective {\r\n @HostBinding('class.x-drawer-portal-content') _has = true;\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation } from '@angular/core';\r\nimport { XDrawerContainerPrefix, XDrawerContainerProperty, X_DRAWER_CONTAINER } from './drawer.property';\r\n\r\n@Component({\r\n selector: XDrawerContainerPrefix,\r\n templateUrl: './drawer-container.component.html',\r\n styleUrls: ['./drawer-container.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: X_DRAWER_CONTAINER,\r\n useExisting: XDrawerContainerComponent\r\n }\r\n ]\r\n})\r\nexport class XDrawerContainerComponent extends XDrawerContainerProperty {\r\n @HostBinding('class') className = XDrawerContainerPrefix;\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { XDrawerComponent } from './drawer.component';\r\nimport { XDrawerCloseDirective, XDrawerContentDirective, XDrawerTitleDirective } from './drawer-portal.directives';\r\nimport { XDrawerContainerComponent } from './drawer-container.component';\r\n\r\n@NgModule({\r\n exports: [\r\n XDrawerComponent,\r\n XDrawerCloseDirective,\r\n XDrawerTitleDirective,\r\n XDrawerContentDirective,\r\n XDrawerContainerComponent\r\n ],\r\n imports: [\r\n XDrawerComponent,\r\n XDrawerCloseDirective,\r\n XDrawerTitleDirective,\r\n XDrawerContentDirective,\r\n XDrawerContainerComponent\r\n ]\r\n})\r\nexport class XDrawerModule {}\r\n","import { Overlay } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType, TemplatePortal } from '@angular/cdk/portal';\r\nimport { Injectable, TemplateRef, inject } from '@angular/core';\r\nimport { XFillDefault, XConfigService, XDrawerConfig } from '@ng-nest/ui/core';\r\nimport { XPortalService } from '@ng-nest/ui/portal';\r\nimport { XDrawerPortalComponent } from './drawer-portal.component';\r\nimport { XDrawerRef } from './drawer-ref';\r\nimport { XDrawerOption, X_DRAWER_CONFIG_NAME, X_DRAWER_DATA } from './drawer.property';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XDrawerService {\r\n default: XDrawerOption = {\r\n placement: 'right',\r\n size: '30%',\r\n hasBackdrop: true,\r\n backdropClose: true\r\n };\r\n configDefault?: XDrawerConfig;\r\n private portalService = inject(XPortalService);\r\n private configService = inject(XConfigService);\r\n private overlay = inject(Overlay);\r\n\r\n constructor() {\r\n this.configDefault = this.configService.getConfigForComponent(X_DRAWER_CONFIG_NAME);\r\n Object.assign(this.default, this.configDefault);\r\n }\r\n\r\n create<T>(content: TemplateRef<any> | ComponentType<T>, option: XDrawerOption = {}): XDrawerRef<T> {\r\n XFillDefault(option, this.default);\r\n const width = ['left', 'right'].includes(option.placement as string) ? option.size : '100%';\r\n const height = ['top', 'bottom'].includes(option.placement as string) ? option.size : '100%';\r\n const portal = this.portalService.attach<XDrawerPortalComponent>({\r\n content: XDrawerPortalComponent,\r\n viewContainerRef: option.viewContainerRef,\r\n overlayConfig: {\r\n hasBackdrop: option.hasBackdrop,\r\n panelClass: option.className,\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n positionStrategy: this.portalService.setPosition(option.placement, width, height)\r\n }\r\n });\r\n const { overlayRef, componentRef } = portal || {};\r\n const { instance } = componentRef! || {};\r\n componentRef?.setInput('placement', option.placement);\r\n const drawerRef = new XDrawerRef<T>(overlayRef!, instance);\r\n if (content instanceof TemplateRef) {\r\n instance.portal = new TemplatePortal(content, option.viewContainerRef!, {\r\n $implicit: option.data,\r\n drawerRef: drawerRef\r\n });\r\n } else {\r\n const injector = this.portalService.createInjector([\r\n { provide: X_DRAWER_DATA, useValue: option.data },\r\n { provide: XDrawerRef, useValue: drawerRef }\r\n ]);\r\n\r\n instance.portal = new ComponentPortal(content, option.viewContainerRef, injector);\r\n }\r\n if (option.hasBackdrop && option.backdropClose && overlayRef)\r\n overlayRef.backdropClick().subscribe(() => {\r\n drawerRef.close();\r\n });\r\n\r\n return drawerRef;\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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"}
1
+ {"version":3,"file":"ng-nest-ui-drawer.mjs","sources":["../../../../lib/ng-nest/ui/drawer/drawer.property.ts","../../../../lib/ng-nest/ui/drawer/drawer.component.ts","../../../../lib/ng-nest/ui/drawer/drawer.component.html","../../../../lib/ng-nest/ui/drawer/drawer-portal.component.ts","../../../../lib/ng-nest/ui/drawer/drawer-portal.component.html","../../../../lib/ng-nest/ui/drawer/drawer-ref.ts","../../../../lib/ng-nest/ui/drawer/drawer-portal.directives.ts","../../../../lib/ng-nest/ui/drawer/drawer-container.component.ts","../../../../lib/ng-nest/ui/drawer/drawer-container.component.html","../../../../lib/ng-nest/ui/drawer/drawer.module.ts","../../../../lib/ng-nest/ui/drawer/drawer.service.ts","../../../../lib/ng-nest/ui/drawer/ng-nest-ui-drawer.ts"],"sourcesContent":["import { XPropertyFunction, XProperty, XToCssPixelValue, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, InjectionToken, ViewContainerRef, input, model, output } from '@angular/core';\r\nimport { XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { XDrawerPortalComponent } from './drawer-portal.component';\r\nimport type { XDrawerRef } from './drawer-ref';\r\nimport type { XTemplate, XPosition, XBoolean, XNumber } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Drawer\r\n * @selector x-drawer\r\n * @decorator component\r\n */\r\nexport const XDrawerPrefix = 'x-drawer';\r\nexport const X_DRAWER_CONFIG_NAME = 'drawer';\r\nexport const X_DRAWER_DATA = new InjectionToken<any>('XDrawerData');\r\n\r\n/**\r\n * Drawer Property\r\n */\r\n@Component({ selector: `${XDrawerPrefix}-property`, template: '' })\r\nexport class XDrawerProperty extends XPropertyFunction(X_DRAWER_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 标题\r\n * @en_US Title\r\n */\r\n readonly title = input<XTemplate>();\r\n /**\r\n * @zh_CN 显示/隐藏\r\n * @en_US Show/hide\r\n */\r\n readonly visible = model<boolean>(false);\r\n /**\r\n * @zh_CN 展示方向\r\n * @en_US Display direction\r\n */\r\n readonly placement = input<XPosition>(this.config?.placement ?? 'right');\r\n /**\r\n * @zh_CN 尺寸,支持固定值\r\n * @en_US Size, supports fixed value\r\n */\r\n readonly size = input<string, XNumber>(this.config?.size ?? '30%', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 点击遮罩关闭\r\n * @en_US Click the mask to close\r\n */\r\n readonly backdropClose = input<boolean, XBoolean>(this.config?.backdropClose ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否显示背景遮罩\r\n * @en_US Whether to display the background mask\r\n */\r\n readonly hasBackdrop = input<boolean, XBoolean>(this.config?.hasBackdrop ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 自定义样式名\r\n * @en_US Custom style name\r\n */\r\n readonly className = input<string>(this.config?.className ?? '');\r\n /**\r\n * @zh_CN 关闭的事件\r\n * @en_US Closed event\r\n */\r\n readonly close = output();\r\n}\r\n\r\n/**\r\n * Drawer Option\r\n */\r\nexport interface XDrawerOption {\r\n /**\r\n * @zh_CN 展示方向\r\n * @en_US Display direction\r\n * @default 'right'\r\n * @withConfig true\r\n */\r\n placement?: XPosition;\r\n /**\r\n * @zh_CN 尺寸,支持固定值\r\n * @en_US Size, supports fixed value\r\n * @default '30%'\r\n * @withConfig true\r\n */\r\n size?: string;\r\n /**\r\n * @zh_CN 自定义样式名\r\n * @en_US Custom style name\r\n */\r\n className?: string;\r\n /**\r\n * @zh_CN 点击遮罩关闭\r\n * @en_US Click the mask to close\r\n * @default true\r\n * @withConfig true\r\n */\r\n backdropClose?: boolean;\r\n /**\r\n * @zh_CN 是否显示背景遮罩\r\n * @en_US Whether to display the background mask\r\n * @default true\r\n * @withConfig true\r\n */\r\n hasBackdrop?: boolean;\r\n /**\r\n * @zh_CN 数据,通过 \"@Inject(X_DRAWER_DATA)\" 来接收数据\r\n * @en_US Data. Receive data by \"@Inject(X_DRAWER_DATA)\"\r\n */\r\n data?: any;\r\n /**\r\n * @zh_CN 视图容器实例可以包含其他视图容器。\r\n * @en_US A view container instance can contain other view containers.\r\n */\r\n viewContainerRef?: ViewContainerRef;\r\n}\r\n\r\n/**\r\n * Drawer Container\r\n * @selector x-drawer-container\r\n * @decorator component\r\n */\r\nexport const XDrawerContainerPrefix = 'x-drawer-container';\r\nexport const X_DRAWER_CONTAINER = new InjectionToken('X_DRAWER_CONTAINER');\r\n\r\n/**\r\n * Drawer Container Property\r\n */\r\n@Component({ selector: `${XDrawerContainerPrefix}-property`, template: '' })\r\nexport class XDrawerContainerProperty extends XProperty {}\r\n\r\n/**\r\n * @zh_CN 创建的抽屉对象\r\n * @en_US Drawer object created\r\n */\r\nexport interface XDrawerPortalOverlayRef extends XPortalOverlayRef<XDrawerPortalComponent> {\r\n drawerRef?: XDrawerRef<any>;\r\n}\r\n\r\n/**\r\n * @zh_CN 抽屉动画状态\r\n * @en_US Drawer animation status\r\n */\r\nexport type XDrawerAnimationState = XPosition | 'void';\r\n\r\n/**\r\n * @zh_CN 抽屉动画事件\r\n * @en_US Drawer animation event\r\n */\r\nexport interface XDrawerAnimationEvent {\r\n state: XDrawerAnimationState;\r\n action: 'start' | 'done';\r\n totalTime: number;\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n TemplateRef,\r\n ViewContainerRef,\r\n HostBinding,\r\n inject,\r\n OnDestroy,\r\n computed,\r\n signal,\r\n AfterViewInit,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XDrawerPrefix, XDrawerProperty, X_DRAWER_CONTAINER } from './drawer.property';\r\nimport { XIsEmpty } from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\nimport { Overlay } from '@angular/cdk/overlay';\r\nimport { XDrawerContainerComponent } from './drawer-container.component';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: `${XDrawerPrefix}`,\r\n imports: [NgClass, NgTemplateOutlet, XOutletDirective, XButtonComponent],\r\n templateUrl: './drawer.component.html',\r\n styleUrls: ['./drawer.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XDrawerComponent extends XDrawerProperty implements AfterViewInit, OnDestroy {\r\n @HostBinding('class.x-drawer-visible') get getVisible() {\r\n return this.visible();\r\n }\r\n drawerTpl = viewChild.required<TemplateRef<void>>('drawerTpl');\r\n portal!: XPortalOverlayRef<any>;\r\n back$: Subscription | null = null;\r\n width = computed(() => {\r\n return ['left', 'right'].includes(this.placement()) ? this.size() : '100%';\r\n });\r\n height = computed(() => {\r\n return ['top', 'bottom'].includes(this.placement()) ? this.size() : '100%';\r\n });\r\n\r\n private overlay = inject(Overlay);\r\n private portalService = inject(XPortalService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private unSubject = new Subject<void>();\r\n container = inject<XDrawerContainerComponent>(X_DRAWER_CONTAINER, { optional: true });\r\n hasContainer = signal(false);\r\n classMap = computed(() => ({\r\n [`${XDrawerPrefix}-${this.placement()}`]: !XIsEmpty(this.placement()),\r\n [`${XDrawerPrefix}-no-title`]: XIsEmpty(this.title())\r\n }));\r\n visibleChanged = toObservable(this.visible);\r\n\r\n constructor() {\r\n super();\r\n this.visibleChanged.pipe(takeUntil(this.unSubject)).subscribe(() => this.setVisible());\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.hasContainer.set(!!this.container);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.back$?.unsubscribe();\r\n }\r\n\r\n setVisible() {\r\n if (this.visible()) {\r\n this.createPortal();\r\n } else {\r\n this.closePortal();\r\n }\r\n }\r\n\r\n createPortal() {\r\n if (this.hasContainer()) return;\r\n this.portal = this.portalService.attach({\r\n content: this.drawerTpl(),\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: {\r\n panelClass: this.className(),\r\n hasBackdrop: this.hasBackdrop(),\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n positionStrategy: this.portalService.setPosition(this.placement(), this.width(), this.height())\r\n }\r\n });\r\n if (this.portal.overlayRef && this.backdropClose()) {\r\n this.back$ = this.portal.overlayRef.backdropClick().subscribe(() => this.closePortal());\r\n }\r\n }\r\n\r\n portalAttached() {\r\n return this.portal?.overlayRef?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portal?.overlayRef?.detach();\r\n this.back$?.unsubscribe();\r\n this.close.emit();\r\n } else if (this.container && this.visible()) {\r\n this.visible.set(false);\r\n }\r\n }\r\n}\r\n","<ng-template #drawerTpl>\r\n @if (visible()) {\r\n @if (hasContainer() && hasBackdrop()) {\r\n <div\r\n class=\"x-drawer-backdrop\"\r\n [animate.enter]=\"`x-opacity-enter`\"\r\n [animate.leave]=\"`x-opacity-leave`\"\r\n (click)=\"closePortal()\"\r\n ></div>\r\n }\r\n\r\n <div\r\n class=\"x-drawer\"\r\n [ngClass]=\"classMap()\"\r\n [style.width]=\"hasContainer() ? width() : '100%'\"\r\n [style.height]=\"hasContainer() ? height() : '100%'\"\r\n [animate.enter]=\"`x-slide-${placement()}-enter`\"\r\n [animate.leave]=\"`x-slide-${placement()}-leave`\"\r\n >\r\n @if (title()) {\r\n <div class=\"x-drawer-header\">\r\n <div class=\"x-drawer-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <x-button\r\n size=\"small\"\r\n class=\"x-drawer-close\"\r\n icon=\"fto-x\"\r\n type=\"text\"\r\n (click)=\"closePortal()\"\r\n closable\r\n ></x-button>\r\n </div>\r\n }\r\n <div class=\"x-drawer-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n@if (hasContainer()) {\r\n <ng-container *ngTemplateOutlet=\"drawerTpl\"></ng-container>\r\n}\r\n","import { PortalModule, CdkPortalOutlet, Portal } from '@angular/cdk/portal';\r\nimport { ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation, input, viewChild } from '@angular/core';\r\nimport { XPosition } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: 'x-drawer-portal',\r\n imports: [PortalModule],\r\n templateUrl: './drawer-portal.component.html',\r\n styleUrls: ['./drawer-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XDrawerPortalComponent {\r\n @HostBinding('class.x-drawer-portal') _has = true;\r\n\r\n placement = input<XPosition>();\r\n portal!: Portal<any>;\r\n\r\n @HostBinding('animate.enter') get animateEnter() {\r\n return `x-slide-${this.placement()}-enter`;\r\n }\r\n @HostBinding('animate.leave') get animateLeave() {\r\n return `x-slide-${this.placement()}-leave`;\r\n }\r\n\r\n portalOutlet = viewChild.required(CdkPortalOutlet);\r\n\r\n ngAfterViewInit() {\r\n this.portalOutlet().setDisposeFn(() => {});\r\n }\r\n}\r\n","<ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\r\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { XDrawerPortalComponent } from './drawer-portal.component';\r\n\r\n// TODO: add more function\r\nexport class XDrawerRef<C> {\r\n componentInstance!: C;\r\n constructor(\r\n public overlayRef: OverlayRef,\r\n public containerInstance: XDrawerPortalComponent\r\n ) {}\r\n close() {\r\n this.overlayRef.detach();\r\n }\r\n}\r\n","import { Directive, HostBinding, HostListener, inject } from '@angular/core';\r\nimport { XDrawerRef } from './drawer-ref';\r\n\r\n@Directive({\r\n selector: `[x-drawer-close]`\r\n})\r\nexport class XDrawerCloseDirective {\r\n @HostListener('click') onCloseClick() {\r\n this.drawerRef && this.drawerRef.close();\r\n }\r\n drawerRef = inject(XDrawerRef, { optional: true });\r\n}\r\n\r\n@Directive({\r\n selector: `[x-drawer-title]`\r\n})\r\nexport class XDrawerTitleDirective {\r\n @HostBinding('class.x-drawer-portal-title') _has = true;\r\n}\r\n\r\n@Directive({\r\n selector: `[x-drawer-content], x-drawer-content`\r\n})\r\nexport class XDrawerContentDirective {\r\n @HostBinding('class.x-drawer-portal-content') _has = true;\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation } from '@angular/core';\r\nimport { XDrawerContainerPrefix, XDrawerContainerProperty, X_DRAWER_CONTAINER } from './drawer.property';\r\n\r\n@Component({\r\n selector: XDrawerContainerPrefix,\r\n templateUrl: './drawer-container.component.html',\r\n styleUrls: ['./drawer-container.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: X_DRAWER_CONTAINER,\r\n useExisting: XDrawerContainerComponent\r\n }\r\n ]\r\n})\r\nexport class XDrawerContainerComponent extends XDrawerContainerProperty {\r\n @HostBinding('class') className = XDrawerContainerPrefix;\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { XDrawerComponent } from './drawer.component';\r\nimport { XDrawerCloseDirective, XDrawerContentDirective, XDrawerTitleDirective } from './drawer-portal.directives';\r\nimport { XDrawerContainerComponent } from './drawer-container.component';\r\n\r\n@NgModule({\r\n exports: [\r\n XDrawerComponent,\r\n XDrawerCloseDirective,\r\n XDrawerTitleDirective,\r\n XDrawerContentDirective,\r\n XDrawerContainerComponent\r\n ],\r\n imports: [\r\n XDrawerComponent,\r\n XDrawerCloseDirective,\r\n XDrawerTitleDirective,\r\n XDrawerContentDirective,\r\n XDrawerContainerComponent\r\n ]\r\n})\r\nexport class XDrawerModule {}\r\n","import { Overlay } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType, TemplatePortal } from '@angular/cdk/portal';\r\nimport { Injectable, TemplateRef, inject } from '@angular/core';\r\nimport { XFillDefault, XConfigService, XDrawerConfig } from '@ng-nest/ui/core';\r\nimport { XPortalService } from '@ng-nest/ui/portal';\r\nimport { XDrawerPortalComponent } from './drawer-portal.component';\r\nimport { XDrawerRef } from './drawer-ref';\r\nimport { XDrawerOption, X_DRAWER_CONFIG_NAME, X_DRAWER_DATA } from './drawer.property';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XDrawerService {\r\n default: XDrawerOption = {\r\n placement: 'right',\r\n size: '30%',\r\n hasBackdrop: true,\r\n backdropClose: true\r\n };\r\n configDefault?: XDrawerConfig;\r\n private portalService = inject(XPortalService);\r\n private configService = inject(XConfigService);\r\n private overlay = inject(Overlay);\r\n\r\n constructor() {\r\n this.configDefault = this.configService.getConfigForComponent(X_DRAWER_CONFIG_NAME);\r\n Object.assign(this.default, this.configDefault);\r\n }\r\n\r\n create<T>(content: TemplateRef<any> | ComponentType<T>, option: XDrawerOption = {}): XDrawerRef<T> {\r\n XFillDefault(option, this.default);\r\n const width = ['left', 'right'].includes(option.placement as string) ? option.size : '100%';\r\n const height = ['top', 'bottom'].includes(option.placement as string) ? option.size : '100%';\r\n const portal = this.portalService.attach<XDrawerPortalComponent>({\r\n content: XDrawerPortalComponent,\r\n viewContainerRef: option.viewContainerRef,\r\n overlayConfig: {\r\n hasBackdrop: option.hasBackdrop,\r\n panelClass: option.className,\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n positionStrategy: this.portalService.setPosition(option.placement, width, height)\r\n }\r\n });\r\n const { overlayRef, componentRef } = portal || {};\r\n const { instance } = componentRef! || {};\r\n componentRef?.setInput('placement', option.placement);\r\n const drawerRef = new XDrawerRef<T>(overlayRef!, instance);\r\n if (content instanceof TemplateRef) {\r\n instance.portal = new TemplatePortal(content, option.viewContainerRef!, {\r\n $implicit: option.data,\r\n drawerRef: drawerRef\r\n });\r\n } else {\r\n const injector = this.portalService.createInjector([\r\n { provide: X_DRAWER_DATA, useValue: option.data },\r\n { provide: XDrawerRef, useValue: drawerRef }\r\n ]);\r\n\r\n instance.portal = new ComponentPortal(content, option.viewContainerRef, injector);\r\n }\r\n if (option.hasBackdrop && option.backdropClose && overlayRef)\r\n overlayRef.backdropClick().subscribe(() => {\r\n drawerRef.close();\r\n });\r\n\r\n return drawerRef;\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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"}
@@ -888,15 +888,18 @@ class XTableCheckboxDragSelectDirective {
888
888
  return;
889
889
  const target = event.target;
890
890
  if (this.isCheckboxLike(target)) {
891
- this.dragSelectService.downValue = !!this.checkbox.value();
892
- this.dragSelectService.startIndex = this.dragRows().findIndex((row) => row.id === this.dragRow().id);
893
- this.dragSelectService.isMouseDown = true;
891
+ this.dragTimeout = setTimeout(() => {
892
+ this.dragSelectService.downValue = !!this.checkbox.value();
893
+ this.dragSelectService.startIndex = this.dragRows().findIndex((row) => row.id === this.dragRow().id);
894
+ this.dragSelectService.isMouseDown = true;
895
+ }, 100);
894
896
  event.preventDefault();
895
897
  }
896
898
  }
897
899
  onMouseUp() {
898
900
  if (this.dragDisabled())
899
901
  return;
902
+ clearTimeout(this.dragTimeout);
900
903
  if (this.dragSelectService.isDragging) {
901
904
  this.dragEnd.emit(this.dragSelectService.changeRows);
902
905
  }