@ng-atomic/common 19.34.0 → 19.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/fesm2022/ng-atomic-common-directives-active-control.mjs.map +1 -1
  2. package/fesm2022/ng-atomic-common-directives-molecules-column.mjs.map +1 -1
  3. package/fesm2022/ng-atomic-common-interceptors-authorization.mjs +3 -1
  4. package/fesm2022/ng-atomic-common-interceptors-authorization.mjs.map +1 -1
  5. package/fesm2022/ng-atomic-common-interceptors-throttle.mjs.map +1 -1
  6. package/fesm2022/ng-atomic-common-pipes-domain.mjs +2 -2
  7. package/fesm2022/ng-atomic-common-pipes-domain.mjs.map +1 -1
  8. package/fesm2022/ng-atomic-common-pipes-pagination.mjs.map +1 -1
  9. package/fesm2022/ng-atomic-common-pipes-smart-field.mjs +1 -1
  10. package/fesm2022/ng-atomic-common-pipes-smart-field.mjs.map +1 -1
  11. package/fesm2022/ng-atomic-common-pipes-sort-by.mjs +2 -2
  12. package/fesm2022/ng-atomic-common-pipes-sort-by.mjs.map +1 -1
  13. package/fesm2022/ng-atomic-common-services-auth.mjs.map +1 -1
  14. package/fesm2022/ng-atomic-common-services-breakpoint.mjs +3 -2
  15. package/fesm2022/ng-atomic-common-services-breakpoint.mjs.map +1 -1
  16. package/fesm2022/ng-atomic-common-services-fab.mjs.map +1 -1
  17. package/fesm2022/ng-atomic-common-services-form-columns.mjs.map +1 -1
  18. package/fesm2022/ng-atomic-common-services-form-json-schema.mjs +1 -1
  19. package/fesm2022/ng-atomic-common-services-form-json-schema.mjs.map +1 -1
  20. package/fesm2022/ng-atomic-common-services-form-sort.mjs.map +1 -1
  21. package/fesm2022/ng-atomic-common-services-form.mjs +1 -1
  22. package/fesm2022/ng-atomic-common-services-form.mjs.map +1 -1
  23. package/fesm2022/ng-atomic-common-services-root-property.mjs +10 -7
  24. package/fesm2022/ng-atomic-common-services-root-property.mjs.map +1 -1
  25. package/fesm2022/ng-atomic-common-services-side-app.mjs.map +1 -1
  26. package/fesm2022/ng-atomic-common-services-spreadsheet.mjs +4 -4
  27. package/fesm2022/ng-atomic-common-services-spreadsheet.mjs.map +1 -1
  28. package/fesm2022/ng-atomic-common-services-ui.mjs +5 -4
  29. package/fesm2022/ng-atomic-common-services-ui.mjs.map +1 -1
  30. package/fesm2022/ng-atomic-common-stores-entities.mjs +3 -1
  31. package/fesm2022/ng-atomic-common-stores-entities.mjs.map +1 -1
  32. package/fesm2022/ng-atomic-common-stores-selection.mjs.map +1 -1
  33. package/fesm2022/ng-atomic-common-stores-sort.mjs.map +1 -1
  34. package/fesm2022/ng-atomic-common-utils.mjs +5 -5
  35. package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
  36. package/fesm2022/ng-atomic-common.mjs.map +1 -1
  37. package/package.json +3 -3
  38. package/types/ng-atomic-common-directives-active-control.d.ts +2 -2
  39. package/types/ng-atomic-common-directives-molecules-column.d.ts +7 -7
  40. package/types/ng-atomic-common-interceptors-authorization.d.ts.map +1 -1
  41. package/types/ng-atomic-common-interceptors-throttle.d.ts +1 -1
  42. package/types/ng-atomic-common-interceptors-throttle.d.ts.map +1 -1
  43. package/types/ng-atomic-common-pipes-data-accessor.d.ts +1 -1
  44. package/types/ng-atomic-common-pipes-index-length.d.ts +1 -1
  45. package/types/ng-atomic-common-pipes-index.d.ts +1 -1
  46. package/types/ng-atomic-common-pipes-pagination.d.ts +1 -1
  47. package/types/ng-atomic-common-pipes-pagination.d.ts.map +1 -1
  48. package/types/ng-atomic-common-pipes-sort-by.d.ts +1 -1
  49. package/types/ng-atomic-common-pipes-sort-by.d.ts.map +1 -1
  50. package/types/ng-atomic-common-services-auth.d.ts +4 -4
  51. package/types/ng-atomic-common-services-breakpoint.d.ts +1 -1
  52. package/types/ng-atomic-common-services-breakpoint.d.ts.map +1 -1
  53. package/types/ng-atomic-common-services-fab.d.ts +1 -1
  54. package/types/ng-atomic-common-services-form-_index.d.ts +12 -12
  55. package/types/ng-atomic-common-services-form-json-schema.d.ts +1 -1
  56. package/types/ng-atomic-common-services-form-json-schema.d.ts.map +1 -1
  57. package/types/ng-atomic-common-services-form-pagination.d.ts +3 -3
  58. package/types/ng-atomic-common-services-form-sort.d.ts +3 -3
  59. package/types/ng-atomic-common-services-form-sort.d.ts.map +1 -1
  60. package/types/ng-atomic-common-services-language.d.ts +1 -1
  61. package/types/ng-atomic-common-services-root-property.d.ts +5 -65
  62. package/types/ng-atomic-common-services-root-property.d.ts.map +1 -1
  63. package/types/ng-atomic-common-services-spreadsheet.d.ts +8 -8
  64. package/types/ng-atomic-common-services-spreadsheet.d.ts.map +1 -1
  65. package/types/ng-atomic-common-services-ui.d.ts +6 -6
  66. package/types/ng-atomic-common-stores-entities.d.ts +5 -5
  67. package/types/ng-atomic-common-stores-entities.d.ts.map +1 -1
  68. package/types/ng-atomic-common-utils.d.ts +8 -8
  69. package/types/ng-atomic-common.d.ts +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-directives-active-control.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/handlers/event-handlers.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/handlers/scroll-control.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/active-control.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/ng-atomic-common-directives-active-control.ts"],"sourcesContent":["import { Signal, WritableSignal } from '@angular/core';\n\nexport type CleanupFunction = () => void;\n\nexport interface ActiveControlOptions {\n /** mousedownでstopPropagationを呼ばない */\n disableStopPropagation?: boolean;\n /** スクロールを許可する要素のセレクタ */\n scrollSelectors?: string[];\n}\n\nexport class ActiveControlEventHandlers {\n private cleanupFunctions: CleanupFunction[] = [];\n\n constructor(\n private hostElement: HTMLElement,\n private isActive: WritableSignal<boolean>,\n private onActiveChange: (active: boolean) => void,\n private options: ActiveControlOptions = {}\n ) {}\n\n setupAll(): CleanupFunction[] {\n this.setupClickHandlers();\n this.setupPreventionHandlers();\n return this.cleanupFunctions;\n }\n\n private setupClickHandlers(): void {\n // ホスト要素クリック\n const mousedownHandler = (e: MouseEvent) => {\n this.toggleActive();\n // React Flowなどのドラッグと共存するため、オプションでstopPropagationを無効化\n if (!this.options.disableStopPropagation) {\n e.stopPropagation();\n }\n };\n this.addEventListener(this.hostElement, 'mousedown', mousedownHandler);\n\n // 外部クリック\n const documentClickListener = (e: MouseEvent) => {\n if (!this.hostElement.contains(e.target as Node) && this.isActive()) {\n this.setActive(false);\n }\n };\n document.addEventListener('mousedown', documentClickListener, { capture: true });\n this.cleanupFunctions.push(() =>\n document.removeEventListener('mousedown', documentClickListener, { capture: true })\n );\n }\n\n private setupPreventionHandlers(): void {\n // ホイールイベント(スクロール対象要素以外でのみブロック)\n // ただし、ctrlKey + wheel(トラックパッドのピンチズーム)は常にブロック\n // 非アクティブ時はScrollControlがスクロール位置をリセットするため、ここでは処理しない\n this.addEventListener(this.hostElement, 'wheel', (e: WheelEvent) => {\n if (this.isActive()) {\n // ctrlKey + wheel = トラックパッドのピンチズーム → 常にブロック\n if (e.ctrlKey) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n // 通常のホイールスクロール: スクロール対象要素からのイベントは許可\n const target = e.target as HTMLElement;\n const isScrollableElement = this.options.scrollSelectors?.some(selector =>\n target.closest(selector) !== null\n );\n if (!isScrollableElement) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n }, { passive: false });\n\n // タッチイベント(ホスト要素レベル)\n const touchHandler = (e: TouchEvent) => {\n if (!this.isActive()) return;\n\n // スクロール対象要素からのイベントは許可\n const target = e.target as HTMLElement;\n const isScrollableElement = this.options.scrollSelectors?.some(selector =>\n target.closest(selector) !== null\n );\n if (!isScrollableElement) {\n if (e.touches.length > 1) {\n // ピンチズームなどマルチタッチ操作をブロック\n e.preventDefault();\n e.stopPropagation();\n }\n // シングルタッチはデフォルト動作を許可(スクロールなど)\n }\n };\n this.addEventListener(this.hostElement, 'touchstart', touchHandler, { passive: false });\n this.addEventListener(this.hostElement, 'touchmove', touchHandler, { passive: false });\n\n // ジェスチャーイベント(ホスト要素レベル)\n const gestureHandler = (e: Event) => {\n if (this.isActive()) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n ['gesturestart', 'gesturechange', 'gestureend'].forEach(eventName => {\n this.addEventListener(this.hostElement, eventName, gestureHandler, { passive: false });\n });\n\n // Document-level capture phaseハンドラ\n // ブラウザのピンチズームがデフォルト動作を行う前にキャッチする\n this.setupDocumentLevelPinchZoomPrevention();\n }\n\n /**\n * Document-levelでcapture phaseを使ってピンチズームを防止\n * ホスト要素内で発生したマルチタッチ/ジェスチャーイベントのみをブロック\n */\n private setupDocumentLevelPinchZoomPrevention(): void {\n // タッチイベント(capture phase)\n const documentTouchHandler = (e: TouchEvent) => {\n if (!this.isActive()) return;\n if (!this.hostElement.contains(e.target as Node)) return;\n\n if (e.touches.length > 1) {\n e.preventDefault();\n }\n };\n\n document.addEventListener('touchstart', documentTouchHandler, { capture: true, passive: false });\n document.addEventListener('touchmove', documentTouchHandler, { capture: true, passive: false });\n\n this.cleanupFunctions.push(() => {\n document.removeEventListener('touchstart', documentTouchHandler, { capture: true });\n document.removeEventListener('touchmove', documentTouchHandler, { capture: true });\n });\n\n // Safari gestureイベント(capture phase)\n const documentGestureHandler = (e: Event) => {\n if (!this.isActive()) return;\n if (!this.hostElement.contains(e.target as Node)) return;\n e.preventDefault();\n };\n\n ['gesturestart', 'gesturechange', 'gestureend'].forEach(eventName => {\n document.addEventListener(eventName, documentGestureHandler, { capture: true, passive: false });\n this.cleanupFunctions.push(() =>\n document.removeEventListener(eventName, documentGestureHandler, { capture: true })\n );\n });\n }\n\n private addEventListener(\n element: HTMLElement | Document,\n event: string,\n handler: EventListener,\n options?: AddEventListenerOptions\n ): void {\n element.addEventListener(event, handler, options);\n this.cleanupFunctions.push(() => element.removeEventListener(event, handler, options));\n }\n\n private toggleActive(): void {\n this.setActive(!this.isActive());\n }\n\n private setActive(active: boolean): void {\n this.isActive.set(active);\n this.onActiveChange(active);\n }\n}\n","import { Signal } from '@angular/core';\nimport { CleanupFunction } from './event-handlers';\n\nexport interface ScrollControlOptions {\n /** スクロール位置のロックを無効化する(常にスクロール可能にする) */\n disableScrollLock?: boolean;\n}\n\nexport class ScrollControl {\n private lockedScrollTop = 0;\n private wasActive = false;\n private rafId?: number;\n\n constructor(\n private scrollElement: HTMLElement,\n private isActive: Signal<boolean>,\n private options: ScrollControlOptions = {}\n ) {}\n\n setup(): CleanupFunction[] {\n const cleanups: CleanupFunction[] = [];\n\n // アクティブ状態の監視\n const checkActiveState = () => {\n const isActiveNow = this.isActive();\n\n if (!this.options.disableScrollLock) {\n if (!isActiveNow && this.wasActive) {\n // アクティブ → 非アクティブ: 現在位置をロック\n this.lockedScrollTop = this.scrollElement.scrollTop;\n } else if (!isActiveNow) {\n // 継続して非アクティブ: ロック位置を維持\n this.scrollElement.scrollTop = this.lockedScrollTop;\n }\n }\n // アクティブ時 or disableScrollLock時: 何もしない(自由スクロール)\n\n this.wasActive = isActiveNow;\n this.rafId = requestAnimationFrame(checkActiveState);\n };\n checkActiveState();\n cleanups.push(() => {\n if (this.rafId !== undefined) {\n cancelAnimationFrame(this.rafId);\n }\n });\n\n // スクロールイベント監視\n const scrollHandler = () => {\n if (!this.options.disableScrollLock && !this.isActive()) {\n this.scrollElement.scrollTop = this.lockedScrollTop;\n }\n };\n this.scrollElement.addEventListener('scroll', scrollHandler);\n cleanups.push(() => this.scrollElement.removeEventListener('scroll', scrollHandler));\n\n return cleanups;\n }\n}\n","import { Directive, ElementRef, input, output, effect, signal, OnDestroy, inject } from '@angular/core';\nimport { ActiveControlEventHandlers, ScrollControl } from './handlers';\n\n/**\n * アクティブ状態を管理するディレクティブ\n *\n * クリックでアクティブ化、外部クリックで非アクティブ化し、\n * スクロール位置の固定やイベント伝播の制御を行います。\n *\n * @example\n * ```html\n * <!-- 単一セレクタ -->\n * <div appActiveControl\n * [scrollSelector]=\"'.xterm-viewport'\"\n * (activeChange)=\"onActiveChange($event)\">\n * <!-- content -->\n * </div>\n *\n * <!-- 複数セレクタ -->\n * <div appActiveControl\n * [scrollSelectors]=\"['.xterm-viewport', '.qtp-content']\"\n * (activeChange)=\"onActiveChange($event)\">\n * <!-- content -->\n * </div>\n * ```\n */\n@Directive({\n selector: '[appActiveControl]',\n standalone: true,\n host: {\n '[class.active]': 'isActive()',\n '[class.nodrag]': '!disableNodrag()',\n '[class.nowheel]': 'isActive()',\n }\n})\nexport class ActiveControlDirective implements OnDestroy {\n private readonly el = inject(ElementRef);\n readonly scrollSelector = input<string>();\n readonly scrollSelectors = input<string[]>();\n /** mousedownでstopPropagationを呼ばない(React Flowなどのドラッグと共存するため) */\n readonly disableStopPropagation = input<boolean>(false);\n /** スクロール位置のロックを無効化する(常にスクロール可能にする) */\n readonly disableScrollLock = input<boolean>(false);\n /** nodragクラスを付与しない(React Flowのノードでドラッグを有効化するため) */\n readonly disableNodrag = input<boolean>(false);\n readonly activeChange = output<boolean>();\n readonly isActive = signal<boolean>(false);\n\n private eventCleanupFunctions: (() => void)[] = [];\n private scrollCleanupFunctions: (() => void)[] = [];\n private eventHandlersInitialized = false;\n\n constructor() {\n // イベントハンドラーの初期化(一度だけ)\n effect(() => {\n if (!this.eventHandlersInitialized) {\n setTimeout(() => this.initializeEventHandlers(), 100);\n this.eventHandlersInitialized = true;\n }\n }, { allowSignalWrites: true });\n\n // スクロール制御の初期化(セレクタが変わるたびに再設定)\n effect(() => {\n const selectors = this.getScrollSelectors();\n setTimeout(() => this.setupScrollControls(selectors), 150);\n });\n }\n\n ngOnDestroy(): void {\n this.eventCleanupFunctions.forEach(cleanup => cleanup());\n this.scrollCleanupFunctions.forEach(cleanup => cleanup());\n }\n\n private initializeEventHandlers(): void {\n const hostElement = this.el.nativeElement as HTMLElement;\n const scrollSelectors = this.getScrollSelectors();\n const eventHandlers = new ActiveControlEventHandlers(\n hostElement,\n this.isActive,\n (active) => this.activeChange.emit(active),\n { disableStopPropagation: this.disableStopPropagation(), scrollSelectors }\n );\n this.eventCleanupFunctions.push(...eventHandlers.setupAll());\n }\n\n private setupScrollControls(selectors: string[]): void {\n // 既存のスクロール制御をクリーンアップ\n this.scrollCleanupFunctions.forEach(cleanup => cleanup());\n this.scrollCleanupFunctions = [];\n\n const hostElement = this.el.nativeElement as HTMLElement;\n const disableScrollLock = this.disableScrollLock();\n for (const selector of selectors) {\n // querySelectorAll を使用して全てのマッチする要素を取得\n const scrollElements = hostElement.querySelectorAll<HTMLElement>(selector);\n scrollElements.forEach(scrollElement => {\n const scrollControl = new ScrollControl(scrollElement, this.isActive, { disableScrollLock });\n this.scrollCleanupFunctions.push(...scrollControl.setup());\n });\n }\n }\n\n private getScrollSelectors(): string[] {\n const multiple = this.scrollSelectors();\n if (multiple && multiple.length > 0) {\n return multiple;\n }\n const single = this.scrollSelector();\n return single ? [single] : [];\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-atomic-common-directives-active-control.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/handlers/event-handlers.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/handlers/scroll-control.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/active-control.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/active-control/ng-atomic-common-directives-active-control.ts"],"sourcesContent":["import { Signal, WritableSignal } from '@angular/core';\n\nexport type CleanupFunction = () => void;\n\nexport interface ActiveControlOptions {\n /** mousedownでstopPropagationを呼ばない */\n disableStopPropagation?: boolean;\n /** スクロールを許可する要素のセレクタ */\n scrollSelectors?: string[];\n}\n\nexport class ActiveControlEventHandlers {\n private cleanupFunctions: CleanupFunction[] = [];\n\n constructor(\n private hostElement: HTMLElement,\n private isActive: WritableSignal<boolean>,\n private onActiveChange: (active: boolean) => void,\n private options: ActiveControlOptions = {}\n ) {}\n\n setupAll(): CleanupFunction[] {\n this.setupClickHandlers();\n this.setupPreventionHandlers();\n return this.cleanupFunctions;\n }\n\n private setupClickHandlers(): void {\n // ホスト要素クリック\n const mousedownHandler = (e: MouseEvent) => {\n this.toggleActive();\n // React Flowなどのドラッグと共存するため、オプションでstopPropagationを無効化\n if (!this.options.disableStopPropagation) {\n e.stopPropagation();\n }\n };\n this.addEventListener(this.hostElement, 'mousedown', mousedownHandler);\n\n // 外部クリック\n const documentClickListener = (e: MouseEvent) => {\n if (!this.hostElement.contains(e.target as Node) && this.isActive()) {\n this.setActive(false);\n }\n };\n document.addEventListener('mousedown', documentClickListener, { capture: true });\n this.cleanupFunctions.push(() =>\n document.removeEventListener('mousedown', documentClickListener, { capture: true })\n );\n }\n\n private setupPreventionHandlers(): void {\n // ホイールイベント(スクロール対象要素以外でのみブロック)\n // ただし、ctrlKey + wheel(トラックパッドのピンチズーム)は常にブロック\n // 非アクティブ時はScrollControlがスクロール位置をリセットするため、ここでは処理しない\n this.addEventListener(this.hostElement, 'wheel', (e: WheelEvent) => {\n if (this.isActive()) {\n // ctrlKey + wheel = トラックパッドのピンチズーム → 常にブロック\n if (e.ctrlKey) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n // 通常のホイールスクロール: スクロール対象要素からのイベントは許可\n const target = e.target as HTMLElement;\n const isScrollableElement = this.options.scrollSelectors?.some(selector =>\n target.closest(selector) !== null\n );\n if (!isScrollableElement) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n }, { passive: false });\n\n // タッチイベント(ホスト要素レベル)\n const touchHandler = (e: TouchEvent) => {\n if (!this.isActive()) return;\n\n // スクロール対象要素からのイベントは許可\n const target = e.target as HTMLElement;\n const isScrollableElement = this.options.scrollSelectors?.some(selector =>\n target.closest(selector) !== null\n );\n if (!isScrollableElement) {\n if (e.touches.length > 1) {\n // ピンチズームなどマルチタッチ操作をブロック\n e.preventDefault();\n e.stopPropagation();\n }\n // シングルタッチはデフォルト動作を許可(スクロールなど)\n }\n };\n this.addEventListener(this.hostElement, 'touchstart', touchHandler, { passive: false });\n this.addEventListener(this.hostElement, 'touchmove', touchHandler, { passive: false });\n\n // ジェスチャーイベント(ホスト要素レベル)\n const gestureHandler = (e: Event) => {\n if (this.isActive()) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n ['gesturestart', 'gesturechange', 'gestureend'].forEach(eventName => {\n this.addEventListener(this.hostElement, eventName, gestureHandler, { passive: false });\n });\n\n // Document-level capture phaseハンドラ\n // ブラウザのピンチズームがデフォルト動作を行う前にキャッチする\n this.setupDocumentLevelPinchZoomPrevention();\n }\n\n /**\n * Document-levelでcapture phaseを使ってピンチズームを防止\n * ホスト要素内で発生したマルチタッチ/ジェスチャーイベントのみをブロック\n */\n private setupDocumentLevelPinchZoomPrevention(): void {\n // タッチイベント(capture phase)\n const documentTouchHandler = (e: TouchEvent) => {\n if (!this.isActive()) return;\n if (!this.hostElement.contains(e.target as Node)) return;\n\n if (e.touches.length > 1) {\n e.preventDefault();\n }\n };\n\n document.addEventListener('touchstart', documentTouchHandler, { capture: true, passive: false });\n document.addEventListener('touchmove', documentTouchHandler, { capture: true, passive: false });\n\n this.cleanupFunctions.push(() => {\n document.removeEventListener('touchstart', documentTouchHandler, { capture: true });\n document.removeEventListener('touchmove', documentTouchHandler, { capture: true });\n });\n\n // Safari gestureイベント(capture phase)\n const documentGestureHandler = (e: Event) => {\n if (!this.isActive()) return;\n if (!this.hostElement.contains(e.target as Node)) return;\n e.preventDefault();\n };\n\n ['gesturestart', 'gesturechange', 'gestureend'].forEach(eventName => {\n document.addEventListener(eventName, documentGestureHandler, { capture: true, passive: false });\n this.cleanupFunctions.push(() =>\n document.removeEventListener(eventName, documentGestureHandler, { capture: true })\n );\n });\n }\n\n private addEventListener(\n element: HTMLElement | Document,\n event: string,\n handler: (e: any) => void,\n options?: AddEventListenerOptions\n ): void {\n element.addEventListener(event, handler as EventListener, options);\n this.cleanupFunctions.push(() => element.removeEventListener(event, handler as EventListener, options));\n }\n\n private toggleActive(): void {\n this.setActive(!this.isActive());\n }\n\n private setActive(active: boolean): void {\n this.isActive.set(active);\n this.onActiveChange(active);\n }\n}\n","import { Signal } from '@angular/core';\nimport { CleanupFunction } from './event-handlers';\n\nexport interface ScrollControlOptions {\n /** スクロール位置のロックを無効化する(常にスクロール可能にする) */\n disableScrollLock?: boolean;\n}\n\nexport class ScrollControl {\n private lockedScrollTop = 0;\n private wasActive = false;\n private rafId?: number;\n\n constructor(\n private scrollElement: HTMLElement,\n private isActive: Signal<boolean>,\n private options: ScrollControlOptions = {}\n ) {}\n\n setup(): CleanupFunction[] {\n const cleanups: CleanupFunction[] = [];\n\n // アクティブ状態の監視\n const checkActiveState = () => {\n const isActiveNow = this.isActive();\n\n if (!this.options.disableScrollLock) {\n if (!isActiveNow && this.wasActive) {\n // アクティブ → 非アクティブ: 現在位置をロック\n this.lockedScrollTop = this.scrollElement.scrollTop;\n } else if (!isActiveNow) {\n // 継続して非アクティブ: ロック位置を維持\n this.scrollElement.scrollTop = this.lockedScrollTop;\n }\n }\n // アクティブ時 or disableScrollLock時: 何もしない(自由スクロール)\n\n this.wasActive = isActiveNow;\n this.rafId = requestAnimationFrame(checkActiveState);\n };\n checkActiveState();\n cleanups.push(() => {\n if (this.rafId !== undefined) {\n cancelAnimationFrame(this.rafId);\n }\n });\n\n // スクロールイベント監視\n const scrollHandler = () => {\n if (!this.options.disableScrollLock && !this.isActive()) {\n this.scrollElement.scrollTop = this.lockedScrollTop;\n }\n };\n this.scrollElement.addEventListener('scroll', scrollHandler);\n cleanups.push(() => this.scrollElement.removeEventListener('scroll', scrollHandler));\n\n return cleanups;\n }\n}\n","import { Directive, ElementRef, input, output, effect, signal, OnDestroy, inject } from '@angular/core';\nimport { ActiveControlEventHandlers, ScrollControl } from './handlers';\n\n/**\n * アクティブ状態を管理するディレクティブ\n *\n * クリックでアクティブ化、外部クリックで非アクティブ化し、\n * スクロール位置の固定やイベント伝播の制御を行います。\n *\n * @example\n * ```html\n * <!-- 単一セレクタ -->\n * <div appActiveControl\n * [scrollSelector]=\"'.xterm-viewport'\"\n * (activeChange)=\"onActiveChange($event)\">\n * <!-- content -->\n * </div>\n *\n * <!-- 複数セレクタ -->\n * <div appActiveControl\n * [scrollSelectors]=\"['.xterm-viewport', '.qtp-content']\"\n * (activeChange)=\"onActiveChange($event)\">\n * <!-- content -->\n * </div>\n * ```\n */\n@Directive({\n selector: '[appActiveControl]',\n standalone: true,\n host: {\n '[class.active]': 'isActive()',\n '[class.nodrag]': '!disableNodrag()',\n '[class.nowheel]': 'isActive()',\n }\n})\nexport class ActiveControlDirective implements OnDestroy {\n private readonly el = inject(ElementRef);\n readonly scrollSelector = input<string>();\n readonly scrollSelectors = input<string[]>();\n /** mousedownでstopPropagationを呼ばない(React Flowなどのドラッグと共存するため) */\n readonly disableStopPropagation = input<boolean>(false);\n /** スクロール位置のロックを無効化する(常にスクロール可能にする) */\n readonly disableScrollLock = input<boolean>(false);\n /** nodragクラスを付与しない(React Flowのノードでドラッグを有効化するため) */\n readonly disableNodrag = input<boolean>(false);\n readonly activeChange = output<boolean>();\n readonly isActive = signal<boolean>(false);\n\n private eventCleanupFunctions: (() => void)[] = [];\n private scrollCleanupFunctions: (() => void)[] = [];\n private eventHandlersInitialized = false;\n\n constructor() {\n // イベントハンドラーの初期化(一度だけ)\n effect(() => {\n if (!this.eventHandlersInitialized) {\n setTimeout(() => this.initializeEventHandlers(), 100);\n this.eventHandlersInitialized = true;\n }\n }, { allowSignalWrites: true });\n\n // スクロール制御の初期化(セレクタが変わるたびに再設定)\n effect(() => {\n const selectors = this.getScrollSelectors();\n setTimeout(() => this.setupScrollControls(selectors), 150);\n });\n }\n\n ngOnDestroy(): void {\n this.eventCleanupFunctions.forEach(cleanup => cleanup());\n this.scrollCleanupFunctions.forEach(cleanup => cleanup());\n }\n\n private initializeEventHandlers(): void {\n const hostElement = this.el.nativeElement as HTMLElement;\n const scrollSelectors = this.getScrollSelectors();\n const eventHandlers = new ActiveControlEventHandlers(\n hostElement,\n this.isActive,\n (active) => this.activeChange.emit(active),\n { disableStopPropagation: this.disableStopPropagation(), scrollSelectors }\n );\n this.eventCleanupFunctions.push(...eventHandlers.setupAll());\n }\n\n private setupScrollControls(selectors: string[]): void {\n // 既存のスクロール制御をクリーンアップ\n this.scrollCleanupFunctions.forEach(cleanup => cleanup());\n this.scrollCleanupFunctions = [];\n\n const hostElement = this.el.nativeElement as HTMLElement;\n const disableScrollLock = this.disableScrollLock();\n for (const selector of selectors) {\n // querySelectorAll を使用して全てのマッチする要素を取得\n const scrollElements = hostElement.querySelectorAll<HTMLElement>(selector);\n scrollElements.forEach(scrollElement => {\n const scrollControl = new ScrollControl(scrollElement, this.isActive, { disableScrollLock });\n this.scrollCleanupFunctions.push(...scrollControl.setup());\n });\n }\n }\n\n private getScrollSelectors(): string[] {\n const multiple = this.scrollSelectors();\n if (multiple && multiple.length > 0) {\n return multiple;\n }\n const single = this.scrollSelector();\n return single ? [single] : [];\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-directives-molecules-column.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/directives/molecules/column/column.molecule.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/molecules/column/ng-atomic-common-directives-molecules-column.ts"],"sourcesContent":["import { computed, Directive, effect, inject, input, signal, viewChild, OnInit, OnDestroy } from '@angular/core';\nimport { CdkCellDef, CdkColumnDef, CdkHeaderCellDef, CdkTable } from '@angular/cdk/table';\nimport { _computed, InjectableComponent, NgAtomicComponent } from '@ng-atomic/core';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { makeConfig } from '@ng-atomic/common/services/ui';\nimport { SpreadSheetService } from '@ng-atomic/common/services/spreadsheet';\nimport { Column } from '@ng-atomic/common/models';\n\nenum ActionId {\n CHANGE_WIDTH = '[@ng-atomic/common/directives/molecules/column] change width',\n}\n\n@Directive({ standalone: true })\nexport abstract class NgAtomicColumnMoleculeStore extends InjectableComponent {\n static readonly _ActionId = ActionId;\n static readonly _Config = makeConfig(() => {\n return () => ({\n index: 0,\n sort: 'none' as 'asc' | 'desc' | 'none',\n sticky: false,\n stickyEnd: false,\n name: '',\n editable: false,\n clickCopy: false,\n });\n }, ['@ng-atomic/common', 'molecules', 'column']);\n\n readonly #config = NgAtomicColumnMoleculeStore._Config.inject();\n readonly column = input.required<Column>();\n readonly index = input.required<number>();\n readonly tooltipText = signal<string | null>(null);\n readonly clickCopy = input(_computed(() => this.#config().clickCopy));\n readonly editable = input(_computed(() => this.#config().editable));\n\n readonly sticky = computed(() => this.column().sticky);\n readonly stickyEnd = computed(() => this.column().stickyEnd);\n readonly stickyLeft = computed(() => this.column().stickyLeft);\n readonly sort = computed(() => this.column().sort);\n readonly name = computed(() => this.column().name);\n readonly width = computed(() => this.column().width);\n readonly columnStyle = computed(() => {\n const stickyLeft = `${this.stickyLeft()}px`;\n const left = this.column().sticky ? stickyLeft : 'auto';\n return ({\n width: `${this.width()}px`,\n minWidth: `${this.width()}px`,\n maxWidth: `${this.width()}px`,\n left,\n });\n });\n}\n\n@Directive({ standalone: true })\nexport abstract class NgAtomicColumnMolecule extends NgAtomicComponent implements OnInit, OnDestroy {\n readonly #store = inject(NgAtomicColumnMoleculeStore);\n readonly #table = inject(CdkTable, {optional: true});\n readonly #clipboard = inject(Clipboard);\n protected ss = inject(SpreadSheetService);\n\n\n readonly columnDef = viewChild.required(CdkColumnDef);\n readonly cell = viewChild.required(CdkCellDef);\n readonly headerCell = viewChild.required(CdkHeaderCellDef);\n\n constructor() {\n super();\n effect(() => {\n const name = this.#store.name();\n if (this.columnDef()) this.columnDef().name = name;\n });\n\n effect(() => {\n const columnDef = this.columnDef();\n const name = this.#store.name();\n const cell = this.cell();\n const headerCell = this.headerCell();\n if (this.#table) {\n this.columnDef().name = name;\n this.columnDef().cell = cell;\n this.columnDef().headerCell = headerCell;\n this.#table.addColumnDef(this.columnDef());\n }\n })\n }\n\n ngOnInit() {\n\n }\n\n ngOnDestroy() {\n if (this.#table) {\n this.#table.removeColumnDef(this.columnDef());\n }\n }\n\n protected copy(text: string, $event: Event) {\n if (!this.#store.clickCopy()) {\n $event.preventDefault();\n $event.stopPropagation();\n return;\n }\n this.#clipboard.copy(text);\n this.#store.tooltipText.set('コピーしました!');\n setTimeout(() => this.#store.tooltipText.set(null), 1000);\n }\n\n protected onResize(index: number, width: number) {\n this.dispatch({ id: ActionId.CHANGE_WIDTH, payload: { index, name: this.#store.name(), width } });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-atomic-common-directives-molecules-column.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/directives/molecules/column/column.molecule.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/molecules/column/ng-atomic-common-directives-molecules-column.ts"],"sourcesContent":["import { computed, Directive, effect, inject, input, signal, viewChild, OnInit, OnDestroy } from '@angular/core';\nimport { CdkCellDef, CdkColumnDef, CdkHeaderCellDef, CdkTable } from '@angular/cdk/table';\nimport { _computed, InjectableComponent, NgAtomicComponent } from '@ng-atomic/core';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { makeConfig } from '@ng-atomic/common/services/ui';\nimport { SpreadSheetService } from '@ng-atomic/common/services/spreadsheet';\nimport { Column } from '@ng-atomic/common/models';\n\nenum ActionId {\n CHANGE_WIDTH = '[@ng-atomic/common/directives/molecules/column] change width',\n}\n\n@Directive({ standalone: true })\nexport abstract class NgAtomicColumnMoleculeStore extends InjectableComponent {\n static readonly _ActionId = ActionId;\n static readonly _Config = makeConfig(() => {\n return () => ({\n index: 0,\n sort: 'none' as 'asc' | 'desc' | 'none',\n sticky: false,\n stickyEnd: false,\n name: '',\n editable: false,\n clickCopy: false,\n });\n }, ['@ng-atomic/common', 'molecules', 'column']);\n\n readonly #config = NgAtomicColumnMoleculeStore._Config.inject();\n readonly column = input.required<Column>();\n readonly index = input.required<number>();\n readonly tooltipText = signal<string | null>(null);\n readonly clickCopy = input(_computed(() => this.#config().clickCopy));\n readonly editable = input(_computed(() => this.#config().editable));\n\n readonly sticky = computed(() => this.column().sticky);\n readonly stickyEnd = computed(() => this.column().stickyEnd);\n readonly stickyLeft = computed(() => this.column().stickyLeft);\n readonly sort = computed(() => this.column().sort);\n readonly name = computed(() => this.column().name);\n readonly width = computed(() => this.column().width);\n readonly columnStyle = computed(() => {\n const stickyLeft = `${this.stickyLeft()}px`;\n const left = this.column().sticky ? stickyLeft : 'auto';\n return ({\n width: `${this.width()}px`,\n minWidth: `${this.width()}px`,\n maxWidth: `${this.width()}px`,\n left,\n });\n });\n}\n\n@Directive({ standalone: true })\nexport abstract class NgAtomicColumnMolecule extends NgAtomicComponent implements OnInit, OnDestroy {\n readonly #store = inject(NgAtomicColumnMoleculeStore);\n readonly #table = inject(CdkTable, {optional: true});\n readonly #clipboard = inject(Clipboard);\n protected ss = inject(SpreadSheetService);\n\n\n readonly columnDef = viewChild.required(CdkColumnDef);\n readonly cell = viewChild.required(CdkCellDef);\n readonly headerCell = viewChild.required(CdkHeaderCellDef);\n\n constructor() {\n super();\n effect(() => {\n const name = this.#store.name();\n if (this.columnDef()) this.columnDef().name = name!;\n });\n\n effect(() => {\n const columnDef = this.columnDef();\n const name = this.#store.name();\n const cell = this.cell();\n const headerCell = this.headerCell();\n if (this.#table) {\n this.columnDef().name = name!;\n this.columnDef().cell = cell;\n this.columnDef().headerCell = headerCell;\n this.#table.addColumnDef(this.columnDef());\n }\n })\n }\n\n ngOnInit() {\n\n }\n\n ngOnDestroy() {\n if (this.#table) {\n this.#table.removeColumnDef(this.columnDef());\n }\n }\n\n protected copy(text: string, $event: Event) {\n if (!this.#store.clickCopy()) {\n $event.preventDefault();\n $event.stopPropagation();\n return;\n }\n this.#clipboard.copy(text);\n this.#store.tooltipText.set('コピーしました!');\n setTimeout(() => this.#store.tooltipText.set(null), 1000);\n }\n\n protected onResize(index: number, width: number) {\n this.dispatch({ id: ActionId.CHANGE_WIDTH, payload: { index, name: this.#store.name(), width } });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -29,7 +29,9 @@ function authorizationInterceptor(isAuthorizedRequest = req => req.url.startsWit
29
29
  return (req, next) => {
30
30
  if (!isAuthorizedRequest(req))
31
31
  return next(req);
32
- const getAuth = inject(AUTHORIZATION, { optional: true }) ?? null;
32
+ const getAuth = inject(AUTHORIZATION, { optional: true });
33
+ if (!getAuth)
34
+ return next(req);
33
35
  return from(getAuth()).pipe(take(1), mergeMap(token => next(token ? req.clone({ setHeaders: { Authorization: token } }) : req)));
34
36
  };
35
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-interceptors-authorization.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/interceptors/authorization/authorization.interceptor.ts","../../../../../packages/@ng-atomic/common/src/lib/interceptors/authorization/ng-atomic-common-interceptors-authorization.ts"],"sourcesContent":["import { Injectable, InjectionToken, Provider, inject } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpInterceptorFn } from '@angular/common/http';\nimport { from, Observable } from 'rxjs';\nimport { mergeMap, take } from 'rxjs/operators';\n\nexport type GetAuthorization = () => Promise<string | null> | Observable<string | null>;\nexport const AUTHORIZATION = new InjectionToken<GetAuthorization>('[@ng-atomic/common] AUTHORIZATION');\n\n/** @deprecated use `authorizationInterceptor` instead. */\n@Injectable()\nexport class AuthorizationInterceptor implements HttpInterceptor {\n\n private getAuth = inject(AUTHORIZATION, { optional: true });\n\n intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n if (!req.url.startsWith('/api') || !this.getAuth) return next.handle(req);\n\n return from(this.getAuth())\n .pipe(take(1))\n .pipe(mergeMap(idToken => next.handle(idToken ? this.getRequestWithToken(req, idToken) : req)));\n }\n\n private getRequestWithToken(req: HttpRequest<unknown>, token: string) {\n return req.clone({ setHeaders: {Authorization: token} });\n }\n}\n\nexport function authorizationInterceptor(\n isAuthorizedRequest: (req: HttpRequest<unknown>) => boolean = req => req.url.startsWith('/api')\n): HttpInterceptorFn {\n return (req, next) => {\n if (!isAuthorizedRequest(req)) return next(req);\n const getAuth = inject(AUTHORIZATION, { optional: true }) ?? null;\n return from(getAuth()).pipe(\n take(1),\n mergeMap(token => next(token ? req.clone({ setHeaders: {Authorization: token} }) : req)),\n );\n };\n}\n\nexport function provideAuthorization(useFactory: () => GetAuthorization): Provider {\n return { provide: AUTHORIZATION, useFactory };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAMa,aAAa,GAAG,IAAI,cAAc,CAAmB,mCAAmC;AAErG;MAEa,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;QAGU,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAa5D,IAAA;IAXC,SAAS,CAAC,GAAyB,EAAE,IAAiB,EAAA;AACpD,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAEzE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACnG;IAEQ,mBAAmB,CAAC,GAAyB,EAAE,KAAa,EAAA;AAClE,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC,EAAE,CAAC;IAC1D;8GAdW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;AAkBK,SAAU,wBAAwB,CACtC,mBAAA,GAA8D,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAA;AAE/F,IAAA,OAAO,CAAC,GAAG,EAAE,IAAI,KAAI;AACnB,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AAC/C,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI;QACjE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACzB,IAAI,CAAC,CAAC,CAAC,EACP,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CACzF;AACH,IAAA,CAAC;AACH;AAEM,SAAU,oBAAoB,CAAC,UAAkC,EAAA;AACrE,IAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE;AAC/C;;AC1CA;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-atomic-common-interceptors-authorization.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/interceptors/authorization/authorization.interceptor.ts","../../../../../packages/@ng-atomic/common/src/lib/interceptors/authorization/ng-atomic-common-interceptors-authorization.ts"],"sourcesContent":["import { Injectable, InjectionToken, Provider, inject } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpInterceptorFn } from '@angular/common/http';\nimport { from, Observable } from 'rxjs';\nimport { mergeMap, take } from 'rxjs/operators';\n\nexport type GetAuthorization = () => Promise<string | null> | Observable<string | null>;\nexport const AUTHORIZATION = new InjectionToken<GetAuthorization>('[@ng-atomic/common] AUTHORIZATION');\n\n/** @deprecated use `authorizationInterceptor` instead. */\n@Injectable()\nexport class AuthorizationInterceptor implements HttpInterceptor {\n\n private getAuth = inject(AUTHORIZATION, { optional: true });\n\n intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n if (!req.url.startsWith('/api') || !this.getAuth) return next.handle(req);\n\n return from(this.getAuth())\n .pipe(take(1))\n .pipe(mergeMap(idToken => next.handle(idToken ? this.getRequestWithToken(req, idToken) : req)));\n }\n\n private getRequestWithToken(req: HttpRequest<unknown>, token: string) {\n return req.clone({ setHeaders: {Authorization: token} });\n }\n}\n\nexport function authorizationInterceptor(\n isAuthorizedRequest: (req: HttpRequest<unknown>) => boolean = req => req.url.startsWith('/api')\n): HttpInterceptorFn {\n return (req, next) => {\n if (!isAuthorizedRequest(req)) return next(req);\n const getAuth = inject(AUTHORIZATION, { optional: true });\n if (!getAuth) return next(req);\n return from(getAuth()).pipe(\n take(1),\n mergeMap(token => next(token ? req.clone({ setHeaders: {Authorization: token} }) : req)),\n );\n };\n}\n\nexport function provideAuthorization(useFactory: () => GetAuthorization): Provider {\n return { provide: AUTHORIZATION, useFactory };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAMa,aAAa,GAAG,IAAI,cAAc,CAAmB,mCAAmC;AAErG;MAEa,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;QAGU,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAa5D,IAAA;IAXC,SAAS,CAAC,GAAyB,EAAE,IAAiB,EAAA;AACpD,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAEzE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACnG;IAEQ,mBAAmB,CAAC,GAAyB,EAAE,KAAa,EAAA;AAClE,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC,EAAE,CAAC;IAC1D;8GAdW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;AAkBK,SAAU,wBAAwB,CACtC,mBAAA,GAA8D,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAA;AAE/F,IAAA,OAAO,CAAC,GAAG,EAAE,IAAI,KAAI;AACnB,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AAC/C,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACzB,IAAI,CAAC,CAAC,CAAC,EACP,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CACzF;AACH,IAAA,CAAC;AACH;AAEM,SAAU,oBAAoB,CAAC,UAAkC,EAAA;AACrE,IAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE;AAC/C;;AC3CA;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-interceptors-throttle.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/interceptors/throttle/throttle.interceptor.ts","../../../../../packages/@ng-atomic/common/src/lib/interceptors/throttle/ng-atomic-common-interceptors-throttle.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { Observable, ReplaySubject, Subject, throwError } from 'rxjs';\nimport { catchError, finalize, tap} from 'rxjs/operators';\n\n\n@Injectable({\n providedIn: 'root'\n})\nclass IcedCacheService {\n cache = {};\n\n has(key: string): boolean {\n return !!this.cache?.[key];\n }\n\n get(key: string): Subject<HttpEvent<unknown>> {\n return this.cache[key];\n }\n\n set(key: string, value: Subject<HttpEvent<unknown>>): void {\n this.cache[key] = value;\n this.removeAfter(key, 10 * 1000);\n }\n\n removeAfter(key: string, ms = 1000) {\n setTimeout(() => this.remove(key), ms);\n }\n\n remove(key: string) {\n delete this.cache?.[key];\n }\n}\n\n@Injectable()\nexport class ThrottleInterceptor implements HttpInterceptor {\n\n constructor(private cache: IcedCacheService) { }\n\n intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n if (!this.test(req)) return next.handle(req);\n\n const key = this.buildKey(req);\n\n if (!this.cache.has(key)) {\n const subject = new ReplaySubject<HttpEvent<unknown>>(1);\n next.handle(req).pipe(\n tap(event => subject.next(event)),\n catchError((error) => (subject.error(error), throwError(error))),\n finalize(() => subject.complete()),\n ).subscribe(() => {});\n this.cache.set(key, subject);\n }\n\n return this.cache.get(key);\n }\n\n protected test(req: HttpRequest<unknown>): boolean {\n if (req.method !== 'GET') return false;\n return req.url.startsWith('/api');\n }\n\n private buildKey(req: HttpRequest<unknown>): string {\n return `${req.url}`;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-atomic-common-interceptors-throttle.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/interceptors/throttle/throttle.interceptor.ts","../../../../../packages/@ng-atomic/common/src/lib/interceptors/throttle/ng-atomic-common-interceptors-throttle.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { Observable, ReplaySubject, Subject, throwError } from 'rxjs';\nimport { catchError, finalize, tap} from 'rxjs/operators';\n\n\n@Injectable({\n providedIn: 'root'\n})\nclass IcedCacheService {\n cache: Record<string, Subject<HttpEvent<unknown>>> = {};\n\n has(key: string): boolean {\n return !!this.cache?.[key];\n }\n\n get(key: string): Subject<HttpEvent<unknown>> {\n return this.cache[key];\n }\n\n set(key: string, value: Subject<HttpEvent<unknown>>): void {\n this.cache[key] = value;\n this.removeAfter(key, 10 * 1000);\n }\n\n removeAfter(key: string, ms = 1000) {\n setTimeout(() => this.remove(key), ms);\n }\n\n remove(key: string) {\n delete this.cache?.[key];\n }\n}\n\n@Injectable()\nexport class ThrottleInterceptor implements HttpInterceptor {\n\n constructor(private cache: IcedCacheService) { }\n\n intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n if (!this.test(req)) return next.handle(req);\n\n const key = this.buildKey(req);\n\n if (!this.cache.has(key)) {\n const subject = new ReplaySubject<HttpEvent<unknown>>(1);\n next.handle(req).pipe(\n tap(event => subject.next(event)),\n catchError((error) => (subject.error(error), throwError(error))),\n finalize(() => subject.complete()),\n ).subscribe(() => {});\n this.cache.set(key, subject);\n }\n\n return this.cache.get(key);\n }\n\n protected test(req: HttpRequest<unknown>): boolean {\n if (req.method !== 'GET') return false;\n return req.url.startsWith('/api');\n }\n\n private buildKey(req: HttpRequest<unknown>): string {\n return `${req.url}`;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -67,8 +67,8 @@ function injectProps() {
67
67
  /** @deprecated */
68
68
  function injectModelName(injector) {
69
69
  if (injector)
70
- return injector.get(DOMAIN_MODEL_NAME, null) ?? signal(null);
71
- return inject(DOMAIN_MODEL_NAME, { optional: true }) ?? signal(null);
70
+ return (injector.get(DOMAIN_MODEL_NAME, null) ?? signal(null));
71
+ return (inject(DOMAIN_MODEL_NAME, { optional: true }) ?? signal(null));
72
72
  }
73
73
  /** @deprecated */
74
74
  function provideDomain(useFactory) {
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-pipes-domain.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/domain.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/ng-atomic-common-pipes-domain.ts"],"sourcesContent":["import { InjectionToken, Injector, Pipe, Signal, inject, signal, PipeTransform } from '@angular/core';\nimport { Entity, Type, getLangMap, getModelName, getProps } from '@nx-ddd/common/domain';\nimport { SignalOrValue, wrapFactory } from '@ng-atomic/common/pipes/signal';\nimport { DOMAIN_LANG_MAP, DomainLangMap, LanguageService } from '@ng-atomic/common/services/language';\n\nexport const DOMAIN_MODEL = new InjectionToken<Type<{id: string}>>('Domain Model');\nexport const DOMAIN_PROPS = new InjectionToken<Signal<string[]>>('Domain Props');\nexport const DOMAIN_MODEL_NAME = new InjectionToken<Signal<string>>('Domain Model Name');\n\n@Pipe({\n standalone: true,\n name: 'domain',\n pure: true,\n})\nexport class DomainPipe implements PipeTransform {\n readonly language = inject(LanguageService);\n\n transform(input: string, map?: DomainLangMap) {\n return this.language.transform(input, map);\n }\n}\n\nexport function injectParentLangMap(): DomainLangMap {\n return inject(DOMAIN_LANG_MAP, {skipSelf: true, optional: true}) ?? {};\n}\n\n/** @deprecated use `injectParentLangMap` instead */\nexport const injectParentDomainLangMap = injectParentLangMap;\n\nexport function provideLangMap(useFactory: () => DomainLangMap, {\n merge = true\n}: {\n merge?: boolean\n} = {}) {\n return {\n provide: DOMAIN_LANG_MAP,\n useFactory: () => {\n if (merge) return {...injectParentLangMap(), ...useFactory()};\n return useFactory();\n }\n };\n}\n\n/** @deprecated use `provideLangMap` instead */\nexport function provideDomainLang<E>(domain: Type<E>, mergeObj: DomainLangMap = {}) {\n return provideLangMap(() => getLangMap(domain, mergeObj));\n}\n\n/** @deprecated */\nexport function provideModel<E>(useFactory: () => Type<E>) {\n return { provide: DOMAIN_MODEL, useFactory};\n}\n\n/** @deprecated */\nexport function injectModel<E = Entity>(): Type<E> {\n return inject(DOMAIN_MODEL, {optional: true}) as Type<E> ?? null;\n}\n\n/** @deprecated */\nexport function provideProps(useFactory: () => SignalOrValue<string[]>) {\n return { provide: DOMAIN_PROPS, useFactory: wrapFactory(useFactory)}\n}\n\n/** @deprecated */\nexport function provideModelName(useFactory: () => SignalOrValue<string>) {\n return { provide: DOMAIN_MODEL_NAME, useFactory: wrapFactory(useFactory)}\n}\n\n/** @deprecated */\nexport function injectProps(): Signal<string[]> {\n return inject(DOMAIN_PROPS, {optional: true}) ?? signal([]);\n}\n\n/** @deprecated */\nexport function injectModelName(injector?: Injector): Signal<string> {\n if (injector) return injector.get(DOMAIN_MODEL_NAME, null) ?? signal(null);\n return inject(DOMAIN_MODEL_NAME, {optional: true}) ?? signal(null);\n}\n\n/** @deprecated */\nexport function provideDomain<E>(useFactory: () => Type<E>) {\n return [\n provideModel(useFactory),\n provideLangMap(() => getLangMap(useFactory())),\n provideProps(() => getProps(useFactory())),\n provideModelName(() => getModelName(useFactory()))\n ]\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-atomic-common-pipes-domain.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/domain.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/ng-atomic-common-pipes-domain.ts"],"sourcesContent":["import { InjectionToken, Injector, Pipe, Signal, inject, signal, PipeTransform } from '@angular/core';\nimport { Entity, Type, getLangMap, getModelName, getProps } from '@nx-ddd/common/domain';\nimport { SignalOrValue, wrapFactory } from '@ng-atomic/common/pipes/signal';\nimport { DOMAIN_LANG_MAP, DomainLangMap, LanguageService } from '@ng-atomic/common/services/language';\n\nexport const DOMAIN_MODEL = new InjectionToken<Type<{id: string}>>('Domain Model');\nexport const DOMAIN_PROPS = new InjectionToken<Signal<string[]>>('Domain Props');\nexport const DOMAIN_MODEL_NAME = new InjectionToken<Signal<string>>('Domain Model Name');\n\n@Pipe({\n standalone: true,\n name: 'domain',\n pure: true,\n})\nexport class DomainPipe implements PipeTransform {\n readonly language = inject(LanguageService);\n\n transform(input: string, map?: DomainLangMap) {\n return this.language.transform(input, map);\n }\n}\n\nexport function injectParentLangMap(): DomainLangMap {\n return inject(DOMAIN_LANG_MAP, {skipSelf: true, optional: true}) ?? {};\n}\n\n/** @deprecated use `injectParentLangMap` instead */\nexport const injectParentDomainLangMap = injectParentLangMap;\n\nexport function provideLangMap(useFactory: () => DomainLangMap, {\n merge = true\n}: {\n merge?: boolean\n} = {}) {\n return {\n provide: DOMAIN_LANG_MAP,\n useFactory: () => {\n if (merge) return {...injectParentLangMap(), ...useFactory()};\n return useFactory();\n }\n };\n}\n\n/** @deprecated use `provideLangMap` instead */\nexport function provideDomainLang<E>(domain: Type<E>, mergeObj: DomainLangMap = {}) {\n return provideLangMap(() => getLangMap(domain, mergeObj) as DomainLangMap);\n}\n\n/** @deprecated */\nexport function provideModel<E>(useFactory: () => Type<E>) {\n return { provide: DOMAIN_MODEL, useFactory};\n}\n\n/** @deprecated */\nexport function injectModel<E = Entity>(): Type<E> {\n return inject(DOMAIN_MODEL, {optional: true}) as Type<E> ?? null;\n}\n\n/** @deprecated */\nexport function provideProps(useFactory: () => SignalOrValue<string[]>) {\n return { provide: DOMAIN_PROPS, useFactory: wrapFactory(useFactory)}\n}\n\n/** @deprecated */\nexport function provideModelName(useFactory: () => SignalOrValue<string>) {\n return { provide: DOMAIN_MODEL_NAME, useFactory: wrapFactory(useFactory)}\n}\n\n/** @deprecated */\nexport function injectProps(): Signal<string[]> {\n return inject(DOMAIN_PROPS, {optional: true}) ?? signal([]);\n}\n\n/** @deprecated */\nexport function injectModelName(injector?: Injector): Signal<string> {\n if (injector) return (injector.get(DOMAIN_MODEL_NAME, null) ?? signal(null as unknown as string)) as Signal<string>;\n return (inject(DOMAIN_MODEL_NAME, {optional: true}) ?? signal(null as unknown as string)) as Signal<string>;\n}\n\n/** @deprecated */\nexport function provideDomain<E>(useFactory: () => Type<E>) {\n return [\n provideModel(useFactory),\n provideLangMap(() => getLangMap(useFactory()) as DomainLangMap),\n provideProps(() => getProps(useFactory())),\n provideModelName(() => getModelName(useFactory()))\n ]\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-pipes-pagination.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/pagination/pagination.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/pagination/ng-atomic-common-pipes-pagination.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { sortByTransformer } from '@ng-atomic/common/pipes/sort-by';\n\ninterface Page {\n start: number;\n end: number;\n key: string;\n order: 'asc' | 'desc';\n}\n\nexport const PAGINATION_TRANSFORMER = new InjectionToken('[@ng-atomic/pipes] Pagination Transformer');\nexport type PaginationTransformer<E> = (items: E[], page: Page) => E[];\nexport function paginationTransformer<E>(items: E[], page: Page): E[] {\n return sortByTransformer(items, page).slice(page.start, page.end) as E[];\n}\n\n@Injectable({ providedIn: 'root' })\n@Pipe({standalone: true, name: 'pagination', pure: true})\nexport class PaginationPipe<E> implements PipeTransform {\n\n constructor(\n @Optional()\n @Inject(PAGINATION_TRANSFORMER)\n private transformer: PaginationTransformer<E>,\n ) {\n this.transformer ??= paginationTransformer;\n }\n\n transform(items: E[], {\n sortKey = null, \n sortOrder = 'asc',\n start = 0,\n end = 0\n }: {sortKey?: string, sortOrder?: 'asc' | 'desc', start?: number, end?: number} = {}) {\n return this.transformer(items, { key: sortKey, order: sortOrder, start, end });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAUa,sBAAsB,GAAG,IAAI,cAAc,CAAC,2CAA2C;AAE9F,SAAU,qBAAqB,CAAI,KAAU,EAAE,IAAU,EAAA;AAC7D,IAAA,OAAO,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAQ;AAC1E;MAIa,cAAc,CAAA;AAEzB,IAAA,WAAA,CAGU,WAAqC,EAAA;QAArC,IAAA,CAAA,WAAW,GAAX,WAAW;AAEnB,QAAA,IAAI,CAAC,WAAW,KAAK,qBAAqB;IAC5C;IAEA,SAAS,CAAC,KAAU,EAAE,EACpB,OAAO,GAAG,IAAI,EACd,SAAS,GAAG,KAAK,EACjB,KAAK,GAAG,CAAC,EACT,GAAG,GAAG,CAAC,KACyE,EAAE,EAAA;QAClF,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAChF;AAjBW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,kBAIf,sBAAsB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAJrB,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFD,MAAM,EAAA,CAAA,CAAA;;2FAEnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAF1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;kBACjC,IAAI;mBAAC,EAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAC;;0BAInD;;0BACA,MAAM;2BAAC,sBAAsB;;;ACtBlC;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-atomic-common-pipes-pagination.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/pagination/pagination.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/pagination/ng-atomic-common-pipes-pagination.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { sortByTransformer } from '@ng-atomic/common/pipes/sort-by';\n\ninterface Page {\n start: number;\n end: number;\n key: string;\n order: 'asc' | 'desc';\n}\n\nexport const PAGINATION_TRANSFORMER = new InjectionToken('[@ng-atomic/pipes] Pagination Transformer');\nexport type PaginationTransformer<E> = (items: E[], page: Page) => E[];\nexport function paginationTransformer<E>(items: E[], page: Page): E[] {\n return sortByTransformer(items, page).slice(page.start, page.end) as E[];\n}\n\n@Injectable({ providedIn: 'root' })\n@Pipe({standalone: true, name: 'pagination', pure: true})\nexport class PaginationPipe<E> implements PipeTransform {\n\n constructor(\n @Optional()\n @Inject(PAGINATION_TRANSFORMER)\n private transformer: PaginationTransformer<E>,\n ) {\n this.transformer ??= paginationTransformer;\n }\n\n transform(items: E[], {\n sortKey = null as string | null,\n sortOrder = 'asc',\n start = 0,\n end = 0\n }: {sortKey?: string | null, sortOrder?: 'asc' | 'desc', start?: number, end?: number} = {}) {\n return this.transformer(items, { key: sortKey as string, order: sortOrder, start, end });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAUa,sBAAsB,GAAG,IAAI,cAAc,CAAC,2CAA2C;AAE9F,SAAU,qBAAqB,CAAI,KAAU,EAAE,IAAU,EAAA;AAC7D,IAAA,OAAO,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAQ;AAC1E;MAIa,cAAc,CAAA;AAEzB,IAAA,WAAA,CAGU,WAAqC,EAAA;QAArC,IAAA,CAAA,WAAW,GAAX,WAAW;AAEnB,QAAA,IAAI,CAAC,WAAW,KAAK,qBAAqB;IAC5C;IAEA,SAAS,CAAC,KAAU,EAAE,EACpB,OAAO,GAAG,IAAqB,EAC/B,SAAS,GAAG,KAAK,EACjB,KAAK,GAAG,CAAC,EACT,GAAG,GAAG,CAAC,KACgF,EAAE,EAAA;QACzF,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,OAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAC1F;AAjBW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,kBAIf,sBAAsB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAJrB,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFD,MAAM,EAAA,CAAA,CAAA;;2FAEnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAF1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;kBACjC,IAAI;mBAAC,EAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAC;;0BAInD;;0BACA,MAAM;2BAAC,sBAAsB;;;ACtBlC;;AAEG;;;;"}
@@ -27,7 +27,7 @@ class SmartFieldPipe {
27
27
  };
28
28
  }
29
29
  transform(key, map = this.map) {
30
- return get(map, key) ?? { type: 'text' };
30
+ return (get(map, key) ?? { type: 'text' });
31
31
  }
32
32
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: SmartFieldPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
33
33
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.6", ngImport: i0, type: SmartFieldPipe, isStandalone: true, name: "smartField" }); }
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-pipes-smart-field.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/smart-field/smart-field.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/smart-field/ng-atomic-common-pipes-smart-field.ts"],"sourcesContent":["import { InjectionToken, Pipe, PipeTransform, Signal, inject } from '@angular/core';\nimport { Action } from '@ng-atomic/core';\nimport { SignalOrValue } from '@ng-atomic/common/pipes/signal';\nimport { get } from 'lodash-es';\n\n\nexport interface Option<T> {\n name: string;\n value: T;\n}\n\ninterface BaseField {\n placeholder?: string;\n hint?: SignalOrValue<string>;\n actions?: Action[] | Signal<Action[]>;\n}\n\ninterface TextField extends BaseField {\n type: 'text';\n autoComplete?: SignalOrValue<string[]>;\n}\n\ninterface PasswordField extends BaseField {\n type: 'password';\n}\n\ninterface NumberField extends BaseField {\n type: 'number';\n}\n\ninterface TextareaField extends BaseField {\n type: 'textarea';\n rows?: number;\n}\n\ninterface DateInputField extends BaseField {\n type: 'date';\n}\n\ninterface DateRangeInputField extends BaseField {\n type: 'date-range';\n}\n\ninterface SelectField<T> extends BaseField {\n type: 'select';\n options: Option<T>[] | Signal<Option<T>[]>;\n multiple?: boolean;\n}\n\ninterface TimeRangeField extends BaseField {\n type: 'time-range';\n}\n\n//* @deprecated use multiple option */\ninterface MultiSelectField<T> extends BaseField {\n type: 'multi-select';\n options: Option<T>[] | Signal<Option<T>[]>;\n}\n\ninterface FileField extends BaseField {\n type: 'file';\n progress?: Signal<number | null>;\n}\n\ninterface ActionField extends BaseField {\n type: 'action';\n actions: Action[] | Signal<Action[]>;\n buttonType?: 'flat' | 'raised' | 'stroked' | 'icon';\n disabled?: boolean;\n}\n\ninterface AgreementField {\n type: 'agreement';\n labelTemp: null | any;\n}\n\ninterface SliderField extends BaseField {\n type: 'slider';\n slider: {\n min?: number;\n max?: number;\n step?: number;\n }\n}\n\ninterface HiddenField {\n type: 'hidden';\n}\n\ninterface PreviewField extends BaseField {\n type: 'preview';\n}\n\ninterface PreviewImageField extends BaseField {\n type: 'preview:image';\n}\n\nexport type FormField<V = any> = \n | TextField\n | PasswordField\n | TextareaField\n | DateInputField\n | DateRangeInputField\n | SelectField<V>\n | TimeRangeField\n | MultiSelectField<V>\n | FileField\n | ActionField\n | HiddenField\n | NumberField\n | PreviewField\n | AgreementField\n | SliderField\n | PreviewImageField;\n\nexport interface FormFieldMap {\n [key: string]: FormField<any> | FormFieldMap;\n}\n\n/** @deprecated */\nexport const FORM_FIELD_MAP = new InjectionToken<FormFieldMap>('[@ng-atomic] Smart Form Field');\n\n/** @deprecated use fieldMap input*/\nexport function provideFormFieldMap(useFactory: () => FormFieldMap) {\n return { provide: FORM_FIELD_MAP, useFactory };\n}\n\ntype Enum<T> = Record<string, T>;\n\nexport function buildOptions<T>(_enum: Enum<T> | any[]): Option<T>[] {\n if (Array.isArray(_enum)) {\n return _enum.map(value => ({value, name: value}) as Option<T>);\n }\n return Object.values(_enum).map(value => ({value, name: value}) as Option<T>);\n}\n\nexport function buildEnumOptions<T>(_enum: Enum<T>): Option<T>[] {\n return Object.entries(_enum).map(([key, value]) => ({value, name: key}) as Option<T>);\n}\n\n/** @deprecated */\n@Pipe({name: 'smartField', standalone: true, pure: true})\nexport class SmartFieldPipe implements PipeTransform {\n protected map = inject(FORM_FIELD_MAP, {optional: true}) ?? {\n createdAt: { type: 'date' },\n updatedAt: { type: 'date' },\n deletedAt: { type: 'date' },\n };\n\n transform(key: string, map: FormFieldMap = this.map): FormField<any> {\n return get(map, key) ?? {type: 'text'} as any;\n }\n}\n\nexport function resolveFormField(fieldMap: FormFieldMap, name: string) {\n if (get(fieldMap, name)) return get(fieldMap, name);\n for (const key of Object.keys(fieldMap ?? {})) {\n if (new RegExp(key).test(name)) return get(fieldMap, key);\n }\n return { type: 'text' } as FormField;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAuHA;MACa,cAAc,GAAG,IAAI,cAAc,CAAe,+BAA+B;AAE9F;AACM,SAAU,mBAAmB,CAAC,UAA8B,EAAA;AAChE,IAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE;AAChD;AAIM,SAAU,YAAY,CAAI,KAAsB,EAAA;AACpD,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,CAAc,CAAC;IAChE;IACA,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,CAAc,CAAC;AAC/E;AAEM,SAAU,gBAAgB,CAAI,KAAc,EAAA;AAChD,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAc,CAAC;AACvF;AAEA;MAEa,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;QAEY,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,cAAc,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI;AAC1D,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3B,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3B,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SAC5B;AAKF,IAAA;AAHC,IAAA,SAAS,CAAC,GAAW,EAAE,GAAA,GAAoB,IAAI,CAAC,GAAG,EAAA;AACjD,QAAA,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAC,IAAI,EAAE,MAAM,EAAQ;IAC/C;8GATW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;mBAAC,EAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC;;AAalD,SAAU,gBAAgB,CAAC,QAAsB,EAAE,IAAY,EAAA;AACnE,IAAA,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AAAE,QAAA,OAAO,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AACnD,IAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE;QAC7C,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC;IAC3D;AACA,IAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAe;AACtC;;AChKA;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-atomic-common-pipes-smart-field.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/smart-field/smart-field.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/smart-field/ng-atomic-common-pipes-smart-field.ts"],"sourcesContent":["import { InjectionToken, Pipe, PipeTransform, Signal, inject } from '@angular/core';\nimport { Action } from '@ng-atomic/core';\nimport { SignalOrValue } from '@ng-atomic/common/pipes/signal';\nimport { get } from 'lodash-es';\n\n\nexport interface Option<T> {\n name: string;\n value: T;\n}\n\ninterface BaseField {\n placeholder?: string;\n hint?: SignalOrValue<string>;\n actions?: Action[] | Signal<Action[]>;\n}\n\ninterface TextField extends BaseField {\n type: 'text';\n autoComplete?: SignalOrValue<string[]>;\n}\n\ninterface PasswordField extends BaseField {\n type: 'password';\n}\n\ninterface NumberField extends BaseField {\n type: 'number';\n}\n\ninterface TextareaField extends BaseField {\n type: 'textarea';\n rows?: number;\n}\n\ninterface DateInputField extends BaseField {\n type: 'date';\n}\n\ninterface DateRangeInputField extends BaseField {\n type: 'date-range';\n}\n\ninterface SelectField<T> extends BaseField {\n type: 'select';\n options: Option<T>[] | Signal<Option<T>[]>;\n multiple?: boolean;\n}\n\ninterface TimeRangeField extends BaseField {\n type: 'time-range';\n}\n\n//* @deprecated use multiple option */\ninterface MultiSelectField<T> extends BaseField {\n type: 'multi-select';\n options: Option<T>[] | Signal<Option<T>[]>;\n}\n\ninterface FileField extends BaseField {\n type: 'file';\n progress?: Signal<number | null>;\n}\n\ninterface ActionField extends BaseField {\n type: 'action';\n actions: Action[] | Signal<Action[]>;\n buttonType?: 'flat' | 'raised' | 'stroked' | 'icon';\n disabled?: boolean;\n}\n\ninterface AgreementField {\n type: 'agreement';\n labelTemp: null | any;\n}\n\ninterface SliderField extends BaseField {\n type: 'slider';\n slider: {\n min?: number;\n max?: number;\n step?: number;\n }\n}\n\ninterface HiddenField {\n type: 'hidden';\n}\n\ninterface PreviewField extends BaseField {\n type: 'preview';\n}\n\ninterface PreviewImageField extends BaseField {\n type: 'preview:image';\n}\n\nexport type FormField<V = any> = \n | TextField\n | PasswordField\n | TextareaField\n | DateInputField\n | DateRangeInputField\n | SelectField<V>\n | TimeRangeField\n | MultiSelectField<V>\n | FileField\n | ActionField\n | HiddenField\n | NumberField\n | PreviewField\n | AgreementField\n | SliderField\n | PreviewImageField;\n\nexport interface FormFieldMap {\n [key: string]: FormField<any> | FormFieldMap;\n}\n\n/** @deprecated */\nexport const FORM_FIELD_MAP = new InjectionToken<FormFieldMap>('[@ng-atomic] Smart Form Field');\n\n/** @deprecated use fieldMap input*/\nexport function provideFormFieldMap(useFactory: () => FormFieldMap) {\n return { provide: FORM_FIELD_MAP, useFactory };\n}\n\ntype Enum<T> = Record<string, T>;\n\nexport function buildOptions<T>(_enum: Enum<T> | any[]): Option<T>[] {\n if (Array.isArray(_enum)) {\n return _enum.map(value => ({value, name: value}) as Option<T>);\n }\n return Object.values(_enum).map(value => ({value, name: value}) as Option<T>);\n}\n\nexport function buildEnumOptions<T>(_enum: Enum<T>): Option<T>[] {\n return Object.entries(_enum).map(([key, value]) => ({value, name: key}) as Option<T>);\n}\n\n/** @deprecated */\n@Pipe({name: 'smartField', standalone: true, pure: true})\nexport class SmartFieldPipe implements PipeTransform {\n protected map = inject(FORM_FIELD_MAP, {optional: true}) ?? {\n createdAt: { type: 'date' },\n updatedAt: { type: 'date' },\n deletedAt: { type: 'date' },\n };\n\n transform(key: string, map: FormFieldMap = this.map): FormField<any> {\n return (get(map, key) ?? {type: 'text'}) as FormField<any>;\n }\n}\n\nexport function resolveFormField(fieldMap: FormFieldMap, name: string) {\n if (get(fieldMap, name)) return get(fieldMap, name);\n for (const key of Object.keys(fieldMap ?? {})) {\n if (new RegExp(key).test(name)) return get(fieldMap, key);\n }\n return { type: 'text' } as FormField;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAuHA;MACa,cAAc,GAAG,IAAI,cAAc,CAAe,+BAA+B;AAE9F;AACM,SAAU,mBAAmB,CAAC,UAA8B,EAAA;AAChE,IAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE;AAChD;AAIM,SAAU,YAAY,CAAI,KAAsB,EAAA;AACpD,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,CAAc,CAAC;IAChE;IACA,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,CAAc,CAAC;AAC/E;AAEM,SAAU,gBAAgB,CAAI,KAAc,EAAA;AAChD,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAc,CAAC;AACvF;AAEA;MAEa,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;QAEY,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,cAAc,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI;AAC1D,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3B,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3B,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SAC5B;AAKF,IAAA;AAHC,IAAA,SAAS,CAAC,GAAW,EAAE,GAAA,GAAoB,IAAI,CAAC,GAAG,EAAA;AACjD,QAAA,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAC,IAAI,EAAE,MAAM,EAAC;IACzC;8GATW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;mBAAC,EAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC;;AAalD,SAAU,gBAAgB,CAAC,QAAsB,EAAE,IAAY,EAAA;AACnE,IAAA,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AAAE,QAAA,OAAO,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AACnD,IAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE;QAC7C,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC;IAC3D;AACA,IAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAe;AACtC;;AChKA;;AAEG;;;;"}
@@ -9,12 +9,12 @@ function sortByTransformer(items, { key = '', order = 'asc' } = {}, dataAccessor
9
9
  return order === 'asc' ? sorted : sorted.reverse();
10
10
  }
11
11
  function sortByTransformerFactory(dataAccessor) {
12
- return (items, params) => sortByTransformer(items, params, dataAccessor);
12
+ return (items, params = {}) => sortByTransformer(items, params, dataAccessor);
13
13
  }
14
14
  const SMART_SORT_BY_TRANSFORMER = new InjectionToken('[@ng-atomic/common] Sort By Transformer');
15
15
  function injectSortByTransformer() {
16
16
  const dataAccessor = injectDataAccessor();
17
- return inject(SMART_SORT_BY_TRANSFORMER, { optional: true }) ?? sortByTransformerFactory(dataAccessor);
17
+ return (inject(SMART_SORT_BY_TRANSFORMER, { optional: true }) ?? sortByTransformerFactory(dataAccessor));
18
18
  }
19
19
  class SortByPipe {
20
20
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-pipes-sort-by.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/sort-by/sort-by.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/sort-by/ng-atomic-common-pipes-sort-by.ts"],"sourcesContent":["import { InjectionToken, Pipe, PipeTransform, inject } from '@angular/core';\nimport { Sort } from '@ng-atomic/common/models';\nimport { DataAccessor, defaultDataAccessor, injectDataAccessor } from '@ng-atomic/common/pipes/data-accessor';\nimport { sortBy } from 'lodash-es';\n\nexport function sortByTransformer<T>(\n items: T[], \n {key = '', order = 'asc'}: Partial<Sort> = {},\n dataAccessor: DataAccessor<T> = defaultDataAccessor\n): T[] {\n const entries = (items ?? []).map(item => ({item, value: dataAccessor(item, key)})); \n const sorted = (sortBy(entries, 'value') ?? []).map(({item}) => item);\n return order === 'asc' ? sorted : sorted.reverse();\n}\n\nexport function sortByTransformerFactory<T>(dataAccessor: DataAccessor<T>) {\n return (items, params) => sortByTransformer(items, params, dataAccessor);\n}\n\nexport const SMART_SORT_BY_TRANSFORMER = new InjectionToken<typeof sortByTransformer>('[@ng-atomic/common] Sort By Transformer');\n\nexport function injectSortByTransformer<T>(): typeof sortByTransformer<T> {\n const dataAccessor = injectDataAccessor<T>();\n return inject(SMART_SORT_BY_TRANSFORMER, {optional: true}) ?? sortByTransformerFactory(dataAccessor);\n}\n\n@Pipe({name: 'sortBy', standalone: true, pure: true})\nexport class SortByPipe<T> implements PipeTransform {\n protected transformer = injectSortByTransformer<T>();\n\n transform(items: T[], params: {key?: string, order?: 'asc' | 'desc'} = {}): T[] {\n return this.transformer(items, params);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;SAKgB,iBAAiB,CAC/B,KAAU,EACV,EAAC,GAAG,GAAG,EAAE,EAAE,KAAK,GAAG,KAAK,KAAmB,EAAE,EAC7C,eAAgC,mBAAmB,EAAA;AAEnD,IAAA,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,EAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,EAAC,CAAC,CAAC;IACnF,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,EAAC,IAAI,EAAC,KAAK,IAAI,CAAC;AACrE,IAAA,OAAO,KAAK,KAAK,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE;AACpD;AAEM,SAAU,wBAAwB,CAAI,YAA6B,EAAA;AACvE,IAAA,OAAO,CAAC,KAAK,EAAE,MAAM,KAAK,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC;AAC1E;MAEa,yBAAyB,GAAG,IAAI,cAAc,CAA2B,yCAAyC;SAE/G,uBAAuB,GAAA;AACrC,IAAA,MAAM,YAAY,GAAG,kBAAkB,EAAK;AAC5C,IAAA,OAAO,MAAM,CAAC,yBAAyB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,wBAAwB,CAAC,YAAY,CAAC;AACtG;MAGa,UAAU,CAAA;AADvB,IAAA,WAAA,GAAA;QAEY,IAAA,CAAA,WAAW,GAAG,uBAAuB,EAAK;AAKrD,IAAA;AAHC,IAAA,SAAS,CAAC,KAAU,EAAE,MAAA,GAAiD,EAAE,EAAA;QACvE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;IACxC;8GALW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,IAAI;mBAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC;;;AC1BpD;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-atomic-common-pipes-sort-by.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/sort-by/sort-by.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/sort-by/ng-atomic-common-pipes-sort-by.ts"],"sourcesContent":["import { InjectionToken, Pipe, PipeTransform, inject } from '@angular/core';\nimport { Sort } from '@ng-atomic/common/models';\nimport { DataAccessor, defaultDataAccessor, injectDataAccessor } from '@ng-atomic/common/pipes/data-accessor';\nimport { sortBy } from 'lodash-es';\n\nexport function sortByTransformer<T>(\n items: T[], \n {key = '', order = 'asc'}: Partial<Sort> = {},\n dataAccessor: DataAccessor<T> = defaultDataAccessor\n): T[] {\n const entries = (items ?? []).map(item => ({item, value: dataAccessor(item, key)})); \n const sorted = (sortBy(entries, 'value') ?? []).map(({item}) => item);\n return order === 'asc' ? sorted : sorted.reverse();\n}\n\nexport function sortByTransformerFactory<T>(dataAccessor: DataAccessor<T>): typeof sortByTransformer<T> {\n return (items: T[], params: Partial<Sort> = {}) => sortByTransformer(items, params, dataAccessor);\n}\n\nexport const SMART_SORT_BY_TRANSFORMER = new InjectionToken<typeof sortByTransformer>('[@ng-atomic/common] Sort By Transformer');\n\nexport function injectSortByTransformer<T>(): typeof sortByTransformer<T> {\n const dataAccessor = injectDataAccessor<T>();\n return (inject(SMART_SORT_BY_TRANSFORMER, {optional: true}) ?? sortByTransformerFactory(dataAccessor)) as typeof sortByTransformer<T>;\n}\n\n@Pipe({name: 'sortBy', standalone: true, pure: true})\nexport class SortByPipe<T> implements PipeTransform {\n protected transformer = injectSortByTransformer<T>();\n\n transform(items: T[], params: {key?: string, order?: 'asc' | 'desc'} = {}): T[] {\n return this.transformer(items, params);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;SAKgB,iBAAiB,CAC/B,KAAU,EACV,EAAC,GAAG,GAAG,EAAE,EAAE,KAAK,GAAG,KAAK,KAAmB,EAAE,EAC7C,eAAgC,mBAAmB,EAAA;AAEnD,IAAA,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,EAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,EAAC,CAAC,CAAC;IACnF,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,EAAC,IAAI,EAAC,KAAK,IAAI,CAAC;AACrE,IAAA,OAAO,KAAK,KAAK,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE;AACpD;AAEM,SAAU,wBAAwB,CAAI,YAA6B,EAAA;AACvE,IAAA,OAAO,CAAC,KAAU,EAAE,MAAA,GAAwB,EAAE,KAAK,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC;AACnG;MAEa,yBAAyB,GAAG,IAAI,cAAc,CAA2B,yCAAyC;SAE/G,uBAAuB,GAAA;AACrC,IAAA,MAAM,YAAY,GAAG,kBAAkB,EAAK;AAC5C,IAAA,QAAQ,MAAM,CAAC,yBAAyB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,wBAAwB,CAAC,YAAY,CAAC;AACvG;MAGa,UAAU,CAAA;AADvB,IAAA,WAAA,GAAA;QAEY,IAAA,CAAA,WAAW,GAAG,uBAAuB,EAAK;AAKrD,IAAA;AAHC,IAAA,SAAS,CAAC,KAAU,EAAE,MAAA,GAAiD,EAAE,EAAA;QACvE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;IACxC;8GALW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,IAAI;mBAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC;;;AC1BpD;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-services-auth.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/auth/auth.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/auth/ng-atomic-common-services-auth.ts"],"sourcesContent":["import { Injectable, Signal, inject } from '@angular/core';\nimport { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Auth, authState, signInWithCustomToken, GoogleAuthProvider, TwitterAuthProvider, signInWithPopup, signOut, UserCredential, signInWithEmailAndPassword, createUserWithEmailAndPassword, User, onAuthStateChanged } from '@angular/fire/auth';\nimport { get } from 'lodash-es';\nimport { Observable, distinctUntilChanged, map, of, shareReplay, switchMap } from 'rxjs';\n\nexport interface TwitterCredential {\n context: string;\n displayName: string;\n email: string;\n emailVerified: boolean;\n expiresIn: string;\n federatedId: string;\n fullName: string;\n idToken: string;\n kind: 'identitytoolkit#VerifyAssertionResponse';\n localId: string;\n oauthAccessToken: string;\n oauthTokenSecret: string;\n photoUrl: string;\n providerId: 'twitter.com';\n rawUserInfo: string;\n refreshToken: string;\n screenName: string;\n}\n\nexport type Result = UserCredential & {_tokenResponse: TwitterCredential};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n readonly #auth = inject(Auth);\n readonly auth$: Observable<User | null> = authState(this.#auth);\n readonly auth: Signal<User | null | undefined> = toSignal(this.auth$);\n readonly accessToken$ = this.auth$.pipe(\n switchMap(auth => auth ? auth.getIdToken() : of(null)),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n readonly accessToken = toSignal(this.accessToken$);\n\n userId$ = this.auth$.pipe(\n map(auth => auth?.uid ?? null),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n\n readonly customClaims$: Observable<Record<string, unknown>> = this.auth$.pipe(\n switchMap(auth => auth ? auth.getIdTokenResult() : of(null)),\n map(token => token?.claims ?? {}),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n\n signInWithTwitter(): Promise<Result> {\n const provider = new TwitterAuthProvider();\n return signInWithPopup(this.#auth, provider) as Promise<Result>\n }\n\n // signInWithGoogle() {\n // const provider = new GoogleAuthProvider();\n // return signInWithPopup(this.#auth, provider);\n // }\n\n async signInWithGoogle(scopes: string[] = []) {\n const provider = new GoogleAuthProvider();\n for (const scope of scopes) provider.addScope(scope);\n return signInWithPopup(this.#auth, provider).catch(async error => {\n if (error.code === 'auth/popup-closed-by-user') {\n const user = await this.#waitForAuthState();\n if (user) return { user } as UserCredential;\n }\n if (error.code === 'auth/account-exists-with-different-credential') {\n this.onFailedForAccountExistsWithDifferentCredential(error);\n }\n throw error;\n });\n }\n\n #waitForAuthState(timeoutMs = 3000): Promise<User | null> {\n return new Promise(resolve => {\n let skip = true;\n const timer = setTimeout(() => { unsub(); resolve(null); }, timeoutMs);\n const unsub = onAuthStateChanged(this.#auth, user => {\n if (skip) { skip = false; return; }\n clearTimeout(timer); unsub(); resolve(user);\n });\n });\n }\n\n signInWithEmailAndPassword(email: string, password: string) {\n return signInWithEmailAndPassword(this.#auth, email, password);\n }\n\n createUserWithEmailAndPassword(email: string, password: string) {\n return createUserWithEmailAndPassword(this.#auth, email, password);\n }\n\n signInWithCustomToken(customToken: string): Promise<Result> {\n return signInWithCustomToken(this.#auth, customToken) as Promise<Result>;\n }\n\n signOut() {\n return signOut(this.#auth);\n }\n\n private onFailedForAccountExistsWithDifferentCredential(error: any) {\n const credential = error.customData._tokenResponse;\n // const pending = FacebookAuthProvider.credential(credential.oauthAccessToken);\n const providerId = error.customData._tokenResponse.providerId;\n // this.pends.update(pends => [...pends, {\n // credential: pending,\n // providerId: providerId,\n // email: credential.email,\n // }]);\n }\n}\n\nexport function injectAuthState$(): Observable<User | null> {\n return inject(AuthService).auth$;\n}\n\nexport function injectAuthState(): Signal<User | null | undefined> {\n return toSignal(injectAuthState$());\n}\n\nexport function injectUserId$(): Observable<string | null> {\n return inject(AuthService).userId$.pipe(\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectUserId(): Signal<string | null> {\n return toSignal(injectUserId$());\n}\n\nexport function injectTwitterId$() {\n return inject(AuthService).auth$.pipe(\n map(auth => auth?.providerData?.[0]?.uid ?? null),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectClaim$<T = string>(claim: string): Observable<T> {\n return inject(AuthService).customClaims$.pipe(\n map(token => claim ? get(token, claim) : token),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n ) as any;\n}\n\nexport function injectClaim<T = string>(claim: string): Signal<T> {\n return toSignal(injectClaim$<T>(claim));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-atomic-common-services-auth.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/auth/auth.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/auth/ng-atomic-common-services-auth.ts"],"sourcesContent":["import { Injectable, Signal, inject } from '@angular/core';\nimport { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Auth, authState, signInWithCustomToken, GoogleAuthProvider, TwitterAuthProvider, signInWithPopup, signOut, UserCredential, signInWithEmailAndPassword, createUserWithEmailAndPassword, User, onAuthStateChanged } from '@angular/fire/auth';\nimport { get } from 'lodash-es';\nimport { Observable, distinctUntilChanged, map, of, shareReplay, switchMap } from 'rxjs';\n\nexport interface TwitterCredential {\n context: string;\n displayName: string;\n email: string;\n emailVerified: boolean;\n expiresIn: string;\n federatedId: string;\n fullName: string;\n idToken: string;\n kind: 'identitytoolkit#VerifyAssertionResponse';\n localId: string;\n oauthAccessToken: string;\n oauthTokenSecret: string;\n photoUrl: string;\n providerId: 'twitter.com';\n rawUserInfo: string;\n refreshToken: string;\n screenName: string;\n}\n\nexport type Result = UserCredential & {_tokenResponse: TwitterCredential};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n readonly #auth = inject(Auth);\n readonly auth$: Observable<User | null> = authState(this.#auth);\n readonly auth: Signal<User | null | undefined> = toSignal(this.auth$);\n readonly accessToken$ = this.auth$.pipe(\n switchMap(auth => auth ? auth.getIdToken() : of(null)),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n readonly accessToken = toSignal(this.accessToken$);\n\n userId$ = this.auth$.pipe(\n map(auth => auth?.uid ?? null),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n\n readonly customClaims$: Observable<Record<string, unknown>> = this.auth$.pipe(\n switchMap(auth => auth ? auth.getIdTokenResult() : of(null)),\n map(token => token?.claims ?? {}),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n\n signInWithTwitter(): Promise<Result> {\n const provider = new TwitterAuthProvider();\n return signInWithPopup(this.#auth, provider) as Promise<Result>\n }\n\n // signInWithGoogle() {\n // const provider = new GoogleAuthProvider();\n // return signInWithPopup(this.#auth, provider);\n // }\n\n async signInWithGoogle(scopes: string[] = []) {\n const provider = new GoogleAuthProvider();\n for (const scope of scopes) provider.addScope(scope);\n return signInWithPopup(this.#auth, provider).catch(async error => {\n if (error.code === 'auth/popup-closed-by-user') {\n const user = await this.#waitForAuthState();\n if (user) return { user } as UserCredential;\n }\n if (error.code === 'auth/account-exists-with-different-credential') {\n this.onFailedForAccountExistsWithDifferentCredential(error);\n }\n throw error;\n });\n }\n\n #waitForAuthState(timeoutMs = 3000): Promise<User | null> {\n return new Promise(resolve => {\n let skip = true;\n const timer = setTimeout(() => { unsub(); resolve(null); }, timeoutMs);\n const unsub = onAuthStateChanged(this.#auth, user => {\n if (skip) { skip = false; return; }\n clearTimeout(timer); unsub(); resolve(user);\n });\n });\n }\n\n signInWithEmailAndPassword(email: string, password: string) {\n return signInWithEmailAndPassword(this.#auth, email, password);\n }\n\n createUserWithEmailAndPassword(email: string, password: string) {\n return createUserWithEmailAndPassword(this.#auth, email, password);\n }\n\n signInWithCustomToken(customToken: string): Promise<Result> {\n return signInWithCustomToken(this.#auth, customToken) as Promise<Result>;\n }\n\n signOut() {\n return signOut(this.#auth);\n }\n\n private onFailedForAccountExistsWithDifferentCredential(error: any) {\n const credential = error.customData._tokenResponse;\n // const pending = FacebookAuthProvider.credential(credential.oauthAccessToken);\n const providerId = error.customData._tokenResponse.providerId;\n // this.pends.update(pends => [...pends, {\n // credential: pending,\n // providerId: providerId,\n // email: credential.email,\n // }]);\n }\n}\n\nexport function injectAuthState$(): Observable<User | null> {\n return inject(AuthService).auth$;\n}\n\nexport function injectAuthState(): Signal<User | null | undefined> {\n return toSignal(injectAuthState$());\n}\n\nexport function injectUserId$(): Observable<string | null> {\n return inject(AuthService).userId$.pipe(\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectUserId(): Signal<string | null> {\n return toSignal(injectUserId$()) as Signal<string | null>;\n}\n\nexport function injectTwitterId$() {\n return inject(AuthService).auth$.pipe(\n map(auth => auth?.providerData?.[0]?.uid ?? null),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectClaim$<T = string>(claim: string): Observable<T> {\n return inject(AuthService).customClaims$.pipe(\n map(token => claim ? get(token, claim) : token),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n ) as any;\n}\n\nexport function injectClaim<T = string>(claim: string): Signal<T> {\n return toSignal(injectClaim$<T>(claim)) as Signal<T>;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ class BreakpointService {
18
18
  web: this.breakpointObserver.observe(Breakpoints.Web),
19
19
  });
20
20
  this.breakpointMap = toSignal(this.breakpointMap$);
21
- this.breakpoint = computed(() => {
21
+ this.breakpoint = computed((() => {
22
22
  const map = this.breakpointMap();
23
23
  const test = {
24
24
  xSmall: map.xSmall.matches ?? this.breakpointObserver.isMatched(Breakpoints.XSmall),
@@ -46,7 +46,8 @@ class BreakpointService {
46
46
  return 'tablet';
47
47
  if (test.web)
48
48
  return 'web';
49
- }, ...(ngDevMode ? [{ debugName: "breakpoint" }] : []));
49
+ return 'web';
50
+ }), ...(ngDevMode ? [{ debugName: "breakpoint" }] : []));
50
51
  }
51
52
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BreakpointService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
52
53
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BreakpointService, providedIn: 'root' }); }
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-services-breakpoint.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/breakpoint/breakpoint.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/breakpoint/ng-atomic-common-services-breakpoint.ts"],"sourcesContent":["import { computed, inject, Injectable } from '@angular/core';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { combineLatest } from 'rxjs';\n\nexport type Breakpoint = 'xSmall' | 'small' | 'medium' | 'large' | 'xLarge' | 'handset' | 'tablet' | 'web';\n\n@Injectable({ providedIn: 'root' })\nexport class BreakpointService {\n protected readonly breakpointObserver = inject(BreakpointObserver);\n readonly breakpointMap$ = combineLatest({\n xSmall: this.breakpointObserver.observe(Breakpoints.XSmall),\n small: this.breakpointObserver.observe(Breakpoints.Small),\n medium: this.breakpointObserver.observe(Breakpoints.Medium),\n large: this.breakpointObserver.observe(Breakpoints.Large),\n xLarge: this.breakpointObserver.observe(Breakpoints.XLarge),\n handset: this.breakpointObserver.observe(Breakpoints.Handset),\n tablet: this.breakpointObserver.observe(Breakpoints.Tablet),\n web: this.breakpointObserver.observe(Breakpoints.Web),\n });\n readonly breakpointMap = toSignal(this.breakpointMap$);\n readonly breakpoint = computed<Breakpoint>(() => {\n const map = this.breakpointMap();\n const test = {\n xSmall: map.xSmall.matches ?? this.breakpointObserver.isMatched(Breakpoints.XSmall),\n small: map.small.matches ?? this.breakpointObserver.isMatched(Breakpoints.Small),\n medium: map.medium.matches ?? this.breakpointObserver.isMatched(Breakpoints.Medium),\n large: map.large.matches ?? this.breakpointObserver.isMatched(Breakpoints.Large),\n xLarge: map.xLarge.matches ?? this.breakpointObserver.isMatched(Breakpoints.XLarge),\n handset: map.handset.matches ?? this.breakpointObserver.isMatched(Breakpoints.Handset),\n tablet: map.tablet.matches ?? this.breakpointObserver.isMatched(Breakpoints.Tablet),\n web: map.web.matches ?? this.breakpointObserver.isMatched(Breakpoints.Web),\n };\n\n if (test.xSmall) return 'xSmall';\n if (test.small) return 'small';\n if (test.medium) return 'medium';\n if (test.large) return 'large';\n if (test.xLarge) return 'xLarge';\n if (test.handset) return 'handset';\n if (test.tablet) return 'tablet';\n if (test.web) return 'web';\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-atomic-common-services-breakpoint.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/breakpoint/breakpoint.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/breakpoint/ng-atomic-common-services-breakpoint.ts"],"sourcesContent":["import { computed, inject, Injectable } from '@angular/core';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { combineLatest } from 'rxjs';\n\nexport type Breakpoint = 'xSmall' | 'small' | 'medium' | 'large' | 'xLarge' | 'handset' | 'tablet' | 'web';\n\n@Injectable({ providedIn: 'root' })\nexport class BreakpointService {\n protected readonly breakpointObserver = inject(BreakpointObserver);\n readonly breakpointMap$ = combineLatest({\n xSmall: this.breakpointObserver.observe(Breakpoints.XSmall),\n small: this.breakpointObserver.observe(Breakpoints.Small),\n medium: this.breakpointObserver.observe(Breakpoints.Medium),\n large: this.breakpointObserver.observe(Breakpoints.Large),\n xLarge: this.breakpointObserver.observe(Breakpoints.XLarge),\n handset: this.breakpointObserver.observe(Breakpoints.Handset),\n tablet: this.breakpointObserver.observe(Breakpoints.Tablet),\n web: this.breakpointObserver.observe(Breakpoints.Web),\n });\n readonly breakpointMap = toSignal(this.breakpointMap$);\n readonly breakpoint = computed<Breakpoint>((() => {\n const map = this.breakpointMap()!;\n const test = {\n xSmall: map.xSmall.matches ?? this.breakpointObserver.isMatched(Breakpoints.XSmall),\n small: map.small.matches ?? this.breakpointObserver.isMatched(Breakpoints.Small),\n medium: map.medium.matches ?? this.breakpointObserver.isMatched(Breakpoints.Medium),\n large: map.large.matches ?? this.breakpointObserver.isMatched(Breakpoints.Large),\n xLarge: map.xLarge.matches ?? this.breakpointObserver.isMatched(Breakpoints.XLarge),\n handset: map.handset.matches ?? this.breakpointObserver.isMatched(Breakpoints.Handset),\n tablet: map.tablet.matches ?? this.breakpointObserver.isMatched(Breakpoints.Tablet),\n web: map.web.matches ?? this.breakpointObserver.isMatched(Breakpoints.Web),\n };\n\n if (test.xSmall) return 'xSmall';\n if (test.small) return 'small';\n if (test.medium) return 'medium';\n if (test.large) return 'large';\n if (test.xLarge) return 'xLarge';\n if (test.handset) return 'handset';\n if (test.tablet) return 'tablet';\n if (test.web) return 'web';\n return 'web';\n }) as () => Breakpoint);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAQa,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;QACzD,IAAA,CAAA,cAAc,GAAG,aAAa,CAAC;YACtC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;YAC3D,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;YACzD,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;YAC3D,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;YACzD,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;YAC3D,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;YAC7D,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;YAC3D,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC;AACtD,SAAA,CAAC;AACO,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;AAC7C,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,EAAc,MAAK;AAC/C,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAG;AACjC,YAAA,MAAM,IAAI,GAAG;AACX,gBAAA,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC;AACnF,gBAAA,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;AAChF,gBAAA,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC;AACnF,gBAAA,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;AAChF,gBAAA,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC;AACnF,gBAAA,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC;AACtF,gBAAA,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC;AACnF,gBAAA,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC;aAC3E;YAED,IAAI,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,QAAQ;YAChC,IAAI,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,OAAO;YAC9B,IAAI,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,QAAQ;YAChC,IAAI,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,OAAO;YAC9B,IAAI,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,QAAQ;YAChC,IAAI,IAAI,CAAC,OAAO;AAAE,gBAAA,OAAO,SAAS;YAClC,IAAI,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,QAAQ;YAChC,IAAI,IAAI,CAAC,GAAG;AAAE,gBAAA,OAAO,KAAK;AAC1B,YAAA,OAAO,KAAK;QACd,CAAC,uDAAsB;AACxB,IAAA;8GApCY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA,CAAA;;2FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACPlC;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-services-fab.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/fab/fab.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/fab/ng-atomic-common-services-fab.ts"],"sourcesContent":["import { computed, inject, Injectable, isSignal, Signal, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { Action } from '@ng-atomic/core';\nimport { computedAsync } from 'ngxtension/computed-async';\nimport { filter, map, Observable, switchMap, tap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FabService {\n readonly hidden = signal(false);\n protected readonly router = inject(Router);\n protected readonly route = inject(ActivatedRoute);\n readonly route$ = this.router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n map(() => this.findLastChild(this.route)),\n );\n\n readonly data = computedAsync(() => {\n return this.route$.pipe(\n switchMap((route) => route.data),\n );\n });\n\n readonly actions = computed(() => {\n return isSignal(this.data()?.fabActions)\n ? this.data().fabActions()\n : this.data()?.fabActions || [];\n });\n\n private findLastChild(route: ActivatedRoute): ActivatedRoute {\n let child = route;\n while (child.firstChild) {\n child = child.firstChild;\n }\n return child;\n }\n\n show() {\n this.hidden.set(false);\n }\n\n hide() {\n this.hidden.set(true);\n }\n\n toggle() {\n this.hidden.update(hidden => !hidden);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAUa,UAAU,CAAA;AAHvB,IAAA,WAAA,GAAA;AAIW,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;AACZ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AACxC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACvC,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAC1C;AAEQ,QAAA,IAAA,CAAA,IAAI,GAAG,aAAa,CAAC,MAAK;AACjC,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,SAAS,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CACjC;AACH,QAAA,CAAC,CAAC;AAEO,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;YAC/B,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU;AACrC,kBAAE,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU;kBACtB,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,IAAI,EAAE;AACnC,QAAA,CAAC,mDAAC;AAqBH,IAAA;AAnBS,IAAA,aAAa,CAAC,KAAqB,EAAA;QACzC,IAAI,KAAK,GAAG,KAAK;AACjB,QAAA,OAAO,KAAK,CAAC,UAAU,EAAE;AACvB,YAAA,KAAK,GAAG,KAAK,CAAC,UAAU;QAC1B;AACA,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC;IACvC;8GAvCW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACTD;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-atomic-common-services-fab.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/fab/fab.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/fab/ng-atomic-common-services-fab.ts"],"sourcesContent":["import { computed, inject, Injectable, isSignal, Signal, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { Action } from '@ng-atomic/core';\nimport { computedAsync } from 'ngxtension/computed-async';\nimport { filter, map, Observable, switchMap, tap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FabService {\n readonly hidden = signal(false);\n protected readonly router = inject(Router);\n protected readonly route = inject(ActivatedRoute);\n readonly route$ = this.router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n map(() => this.findLastChild(this.route)),\n );\n\n readonly data = computedAsync(() => {\n return this.route$.pipe(\n switchMap((route) => route.data),\n );\n });\n\n readonly actions = computed(() => {\n return isSignal(this.data()?.fabActions)\n ? this.data()!.fabActions()\n : this.data()?.fabActions || [];\n });\n\n private findLastChild(route: ActivatedRoute): ActivatedRoute {\n let child = route;\n while (child.firstChild) {\n child = child.firstChild;\n }\n return child;\n }\n\n show() {\n this.hidden.set(false);\n }\n\n hide() {\n this.hidden.set(true);\n }\n\n toggle() {\n this.hidden.update(hidden => !hidden);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAUa,UAAU,CAAA;AAHvB,IAAA,WAAA,GAAA;AAIW,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;AACZ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AACxC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACvC,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAC1C;AAEQ,QAAA,IAAA,CAAA,IAAI,GAAG,aAAa,CAAC,MAAK;AACjC,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,SAAS,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CACjC;AACH,QAAA,CAAC,CAAC;AAEO,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;YAC/B,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU;AACrC,kBAAE,IAAI,CAAC,IAAI,EAAG,CAAC,UAAU;kBACvB,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,IAAI,EAAE;AACnC,QAAA,CAAC,mDAAC;AAqBH,IAAA;AAnBS,IAAA,aAAa,CAAC,KAAqB,EAAA;QACzC,IAAI,KAAK,GAAG,KAAK;AACjB,QAAA,OAAO,KAAK,CAAC,UAAU,EAAE;AACvB,YAAA,KAAK,GAAG,KAAK,CAAC,UAAU;QAC1B;AACA,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC;IACvC;8GAvCW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACTD;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-services-form-columns.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/columns/columns.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/columns/ng-atomic-common-services-form-columns.ts"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\nimport { FormArray, FormBuilder, FormControl, FormGroup, FormRecord, Validators } from \"@angular/forms\";\nimport { Actions, wrapActions } from \"@ng-atomic/core\";\nimport { Column } from \"@ng-atomic/common/models\";\n\nexport type ActionsColumnForm = FormGroup<{\n type: FormControl<'actions'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n actions: FormControl<any>,\n sticky: FormControl<boolean>,\n stickyEnd: FormControl<boolean>,\n}>;\n\nexport type CheckboxColumnForm = FormGroup<{\n type: FormControl<'checkbox'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n sticky: FormControl<boolean>,\n stickyEnd: FormControl<boolean>,\n}>;\n\nexport type TextColumnForm = FormGroup<{\n type: FormControl<'text'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n sticky: FormControl<boolean>,\n stickyEnd: FormControl<boolean>,\n}>;\n\nexport type TreeColumnForm = FormGroup<{\n type: FormControl<'tree'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n sticky: FormControl<boolean>,\n stickyEnd: FormControl<boolean>,\n}>;\n\nexport type ColumnsForm = FormArray<FormRecord<ActionsColumnForm | CheckboxColumnForm | TextColumnForm | TreeColumnForm>>;\n\nexport interface ColumnsFormValue {\n ids: string[],\n map: { [key: string]: Column },\n}\n\n@Injectable({providedIn: 'root'})\nexport class ColumnsFormBuilder {\n protected readonly fb = inject(FormBuilder).nonNullable;\n\n build(columns: ColumnsFormValue = {\n ids: ['id', 'user'],\n map: {\n user: {\n type: 'text' as const,\n width: 80,\n visible: true,\n },\n id: {\n type: 'text',\n width: 80,\n visible: true,\n },\n },\n }) {\n return this.fb.group({\n ids: this.fb.control(columns.ids, Validators.required),\n map: this.fb.group(Object.entries(columns.map).reduce((obj, [key, value]) => ({\n ...obj,\n [key]: this.buildColumnForm(value),\n }), {})),\n });\n }\n\n protected buildColumnForm(column: Column) {\n switch (column.type) {\n case 'tree':\n return this.fb.group({\n type: this.fb.control({value: 'tree' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n sticky: this.fb.control(column.sticky),\n stickyEnd: this.fb.control(column.stickyEnd),\n }) as TreeColumnForm;\n case 'text': \n return this.fb.group({\n type: this.fb.control({value: 'text' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n sticky: this.fb.control(column.sticky),\n stickyEnd: this.fb.control(column.stickyEnd),\n }) as TextColumnForm;\n case 'checkbox':\n return this.fb.group({\n type: this.fb.control({value: 'checkbox' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n sticky: this.fb.control(column.sticky),\n stickyEnd: this.fb.control(column.stickyEnd),\n }) as CheckboxColumnForm;\n case 'actions':\n return this.fb.group({\n type: this.fb.control({value: 'actions' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n actions: this.fb.control(column.actions),\n sticky: this.fb.control(column.sticky),\n stickyEnd: this.fb.control(column.stickyEnd),\n }) as ActionsColumnForm;\n default:\n throw new Error(`Unknown column type: ${(column as any).type}`);\n }\n }\n}\n\nexport function injectColumnsForm() {\n return inject(ColumnsFormBuilder).build();\n}\n\nfunction buildColumn(nameOrAction: (string | Actions), i: number, sticky: boolean, stickyEnd: boolean): Column {\n if (typeof nameOrAction === 'string') {\n if (nameOrAction === '__actions') {\n return {\n type: 'actions',\n name: `actions_${i}`,\n visible: true,\n width: 40,\n sticky,\n stickyEnd,\n }\n } else if (nameOrAction === '__checkbox') {\n return {\n type: 'checkbox',\n name: 'checkbox',\n visible: true,\n width: 24,\n sticky,\n stickyEnd,\n }\n } else if (nameOrAction.startsWith('__tree')) {\n return {\n type: 'tree',\n name: nameOrAction.split('__tree_')?.[1] ?? '__tree',\n visible: true,\n width: 240,\n sticky,\n stickyEnd,\n }\n } else {\n return {\n type: 'text',\n name: nameOrAction,\n visible: true,\n width: 100,\n sticky,\n stickyEnd,\n };\n } \n } else {\n return {\n type: 'actions',\n name: `actions_${i}`,\n visible: true,\n width: 40,\n sticky,\n stickyEnd,\n actions: wrapActions(nameOrAction),\n };\n }\n}\n\nexport function buildColumns(columnIdOrActions: (string | Actions)[], {\n stickyStart = 0,\n stickyEnd = 0,\n}: {\n stickyStart?: number,\n stickyEnd?: number,\n} = {}): {ids: string[], map: {[key: string]: Column}} {\n const columns = columnIdOrActions.map((columnIdOrAction, i) => {\n return buildColumn(columnIdOrAction, i, i < stickyStart, i >= columnIdOrActions.length - stickyEnd);\n });\n return {\n ids: columns.map((column) => column.name),\n map: columns.reduce((obj, column) => ({...obj, [column.name]: column}), {}),\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-atomic-common-services-form-columns.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/columns/columns.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/columns/ng-atomic-common-services-form-columns.ts"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\nimport { FormArray, FormBuilder, FormControl, FormGroup, FormRecord, Validators } from \"@angular/forms\";\nimport { Actions, wrapActions } from \"@ng-atomic/core\";\nimport { Column } from \"@ng-atomic/common/models\";\n\nexport type ActionsColumnForm = FormGroup<{\n type: FormControl<'actions'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n actions: FormControl<any>,\n sticky: FormControl<boolean>,\n stickyEnd: FormControl<boolean>,\n}>;\n\nexport type CheckboxColumnForm = FormGroup<{\n type: FormControl<'checkbox'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n sticky: FormControl<boolean>,\n stickyEnd: FormControl<boolean>,\n}>;\n\nexport type TextColumnForm = FormGroup<{\n type: FormControl<'text'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n sticky: FormControl<boolean>,\n stickyEnd: FormControl<boolean>,\n}>;\n\nexport type TreeColumnForm = FormGroup<{\n type: FormControl<'tree'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n sticky: FormControl<boolean>,\n stickyEnd: FormControl<boolean>,\n}>;\n\nexport type ColumnsForm = FormArray<FormRecord<ActionsColumnForm | CheckboxColumnForm | TextColumnForm | TreeColumnForm>>;\n\nexport interface ColumnsFormValue {\n ids: string[],\n map: { [key: string]: Column },\n}\n\n@Injectable({providedIn: 'root'})\nexport class ColumnsFormBuilder {\n protected readonly fb = inject(FormBuilder).nonNullable;\n\n build(columns: ColumnsFormValue = {\n ids: ['id', 'user'],\n map: {\n user: {\n type: 'text' as const,\n width: 80,\n visible: true,\n },\n id: {\n type: 'text',\n width: 80,\n visible: true,\n },\n },\n }) {\n return this.fb.group({\n ids: this.fb.control(columns.ids, Validators.required),\n map: this.fb.group(Object.entries(columns.map).reduce((obj, [key, value]) => ({\n ...obj,\n [key]: this.buildColumnForm(value),\n }), {})),\n });\n }\n\n protected buildColumnForm(column: Column) {\n switch (column.type) {\n case 'tree':\n return this.fb.group({\n type: this.fb.control({value: 'tree' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n sticky: this.fb.control(column.sticky),\n stickyEnd: this.fb.control(column.stickyEnd),\n }) as TreeColumnForm;\n case 'text': \n return this.fb.group({\n type: this.fb.control({value: 'text' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n sticky: this.fb.control(column.sticky),\n stickyEnd: this.fb.control(column.stickyEnd),\n }) as TextColumnForm;\n case 'checkbox':\n return this.fb.group({\n type: this.fb.control({value: 'checkbox' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n sticky: this.fb.control(column.sticky),\n stickyEnd: this.fb.control(column.stickyEnd),\n }) as CheckboxColumnForm;\n case 'actions':\n return this.fb.group({\n type: this.fb.control({value: 'actions' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n actions: this.fb.control(column.actions),\n sticky: this.fb.control(column.sticky),\n stickyEnd: this.fb.control(column.stickyEnd),\n }) as ActionsColumnForm;\n default:\n throw new Error(`Unknown column type: ${(column as any).type}`);\n }\n }\n}\n\nexport function injectColumnsForm() {\n return inject(ColumnsFormBuilder).build();\n}\n\nfunction buildColumn(nameOrAction: (string | Actions), i: number, sticky: boolean, stickyEnd: boolean): Column {\n if (typeof nameOrAction === 'string') {\n if (nameOrAction === '__actions') {\n return {\n type: 'actions',\n name: `actions_${i}`,\n visible: true,\n width: 40,\n sticky,\n stickyEnd,\n }\n } else if (nameOrAction === '__checkbox') {\n return {\n type: 'checkbox',\n name: 'checkbox',\n visible: true,\n width: 24,\n sticky,\n stickyEnd,\n }\n } else if (nameOrAction.startsWith('__tree')) {\n return {\n type: 'tree',\n name: nameOrAction.split('__tree_')?.[1] ?? '__tree',\n visible: true,\n width: 240,\n sticky,\n stickyEnd,\n }\n } else {\n return {\n type: 'text',\n name: nameOrAction,\n visible: true,\n width: 100,\n sticky,\n stickyEnd,\n };\n } \n } else {\n return {\n type: 'actions',\n name: `actions_${i}`,\n visible: true,\n width: 40,\n sticky,\n stickyEnd,\n actions: wrapActions(nameOrAction),\n };\n }\n}\n\nexport function buildColumns(columnIdOrActions: (string | Actions)[], {\n stickyStart = 0,\n stickyEnd = 0,\n}: {\n stickyStart?: number,\n stickyEnd?: number,\n} = {}): {ids: string[], map: {[key: string]: Column}} {\n const columns = columnIdOrActions.map((columnIdOrAction, i) => {\n return buildColumn(columnIdOrAction, i, i < stickyStart, i >= columnIdOrActions.length - stickyEnd);\n });\n return {\n ids: columns.map((column) => column.name!) as string[],\n map: columns.reduce((obj, column) => ({...obj, [column.name!]: column}), {}),\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -212,7 +212,7 @@ class JsonSchemaFormUtils {
212
212
  case 'number':
213
213
  return fb.control(value ?? property.default ?? 0, { nonNullable: !property.nullable, validators });
214
214
  case 'object':
215
- return this.buildFormGroupByJsonSchema(property, { fb, value });
215
+ return this.buildFormGroupByJsonSchema(property, { fb, value: value });
216
216
  case 'array': {
217
217
  // プリミティブ型配列の場合は FormControl で配列値を保持
218
218
  const itemType = property.items?.type;