@ng-doc/ui-kit 22.0.0-beta.1 → 22.0.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 (210) hide show
  1. package/README.md +20 -29
  2. package/fesm2022/ng-doc-ui-kit-cdk-combobox-host.mjs +43 -22
  3. package/fesm2022/ng-doc-ui-kit-cdk-combobox-host.mjs.map +1 -1
  4. package/fesm2022/ng-doc-ui-kit-classes-base-input.mjs +24 -13
  5. package/fesm2022/ng-doc-ui-kit-classes-base-input.mjs.map +1 -1
  6. package/fesm2022/ng-doc-ui-kit-classes-overlay-ref.mjs +62 -22
  7. package/fesm2022/ng-doc-ui-kit-classes-overlay-ref.mjs.map +1 -1
  8. package/fesm2022/ng-doc-ui-kit-components-blockquote.mjs +39 -14
  9. package/fesm2022/ng-doc-ui-kit-components-blockquote.mjs.map +1 -1
  10. package/fesm2022/ng-doc-ui-kit-components-button-icon.mjs +30 -18
  11. package/fesm2022/ng-doc-ui-kit-components-button-icon.mjs.map +1 -1
  12. package/fesm2022/ng-doc-ui-kit-components-button-toggle.mjs +12 -9
  13. package/fesm2022/ng-doc-ui-kit-components-button-toggle.mjs.map +1 -1
  14. package/fesm2022/ng-doc-ui-kit-components-button.mjs +15 -24
  15. package/fesm2022/ng-doc-ui-kit-components-button.mjs.map +1 -1
  16. package/fesm2022/ng-doc-ui-kit-components-checkbox.mjs +13 -13
  17. package/fesm2022/ng-doc-ui-kit-components-checkbox.mjs.map +1 -1
  18. package/fesm2022/ng-doc-ui-kit-components-clear-control.mjs +14 -9
  19. package/fesm2022/ng-doc-ui-kit-components-clear-control.mjs.map +1 -1
  20. package/fesm2022/ng-doc-ui-kit-components-combobox.mjs +30 -26
  21. package/fesm2022/ng-doc-ui-kit-components-combobox.mjs.map +1 -1
  22. package/fesm2022/ng-doc-ui-kit-components-data-list-group.mjs +37 -38
  23. package/fesm2022/ng-doc-ui-kit-components-data-list-group.mjs.map +1 -1
  24. package/fesm2022/ng-doc-ui-kit-components-data-list.mjs +32 -39
  25. package/fesm2022/ng-doc-ui-kit-components-data-list.mjs.map +1 -1
  26. package/fesm2022/ng-doc-ui-kit-components-dialog-outlet.mjs +23 -20
  27. package/fesm2022/ng-doc-ui-kit-components-dialog-outlet.mjs.map +1 -1
  28. package/fesm2022/ng-doc-ui-kit-components-dot.mjs +20 -16
  29. package/fesm2022/ng-doc-ui-kit-components-dot.mjs.map +1 -1
  30. package/fesm2022/ng-doc-ui-kit-components-dropdown.mjs +120 -125
  31. package/fesm2022/ng-doc-ui-kit-components-dropdown.mjs.map +1 -1
  32. package/fesm2022/ng-doc-ui-kit-components-expander.mjs +17 -17
  33. package/fesm2022/ng-doc-ui-kit-components-expander.mjs.map +1 -1
  34. package/fesm2022/ng-doc-ui-kit-components-floated-border.mjs +4 -4
  35. package/fesm2022/ng-doc-ui-kit-components-floated-border.mjs.map +1 -1
  36. package/fesm2022/ng-doc-ui-kit-components-floated-content.mjs +16 -17
  37. package/fesm2022/ng-doc-ui-kit-components-floated-content.mjs.map +1 -1
  38. package/fesm2022/ng-doc-ui-kit-components-focus-control.mjs +20 -12
  39. package/fesm2022/ng-doc-ui-kit-components-focus-control.mjs.map +1 -1
  40. package/fesm2022/ng-doc-ui-kit-components-icon.mjs +175 -54
  41. package/fesm2022/ng-doc-ui-kit-components-icon.mjs.map +1 -1
  42. package/fesm2022/ng-doc-ui-kit-components-input-wrapper.mjs +43 -46
  43. package/fesm2022/ng-doc-ui-kit-components-input-wrapper.mjs.map +1 -1
  44. package/fesm2022/ng-doc-ui-kit-components-label.mjs +14 -16
  45. package/fesm2022/ng-doc-ui-kit-components-label.mjs.map +1 -1
  46. package/fesm2022/ng-doc-ui-kit-components-line.mjs +7 -4
  47. package/fesm2022/ng-doc-ui-kit-components-line.mjs.map +1 -1
  48. package/fesm2022/ng-doc-ui-kit-components-list.mjs +24 -8
  49. package/fesm2022/ng-doc-ui-kit-components-list.mjs.map +1 -1
  50. package/fesm2022/ng-doc-ui-kit-components-magnifier-controller.mjs +9 -4
  51. package/fesm2022/ng-doc-ui-kit-components-magnifier-controller.mjs.map +1 -1
  52. package/fesm2022/ng-doc-ui-kit-components-magnifier.mjs +39 -18
  53. package/fesm2022/ng-doc-ui-kit-components-magnifier.mjs.map +1 -1
  54. package/fesm2022/ng-doc-ui-kit-components-option-group.mjs +22 -27
  55. package/fesm2022/ng-doc-ui-kit-components-option-group.mjs.map +1 -1
  56. package/fesm2022/ng-doc-ui-kit-components-option.mjs +28 -22
  57. package/fesm2022/ng-doc-ui-kit-components-option.mjs.map +1 -1
  58. package/fesm2022/ng-doc-ui-kit-components-overlay-container.mjs +56 -52
  59. package/fesm2022/ng-doc-ui-kit-components-overlay-container.mjs.map +1 -1
  60. package/fesm2022/ng-doc-ui-kit-components-overlay-pointer.mjs +19 -21
  61. package/fesm2022/ng-doc-ui-kit-components-overlay-pointer.mjs.map +1 -1
  62. package/fesm2022/ng-doc-ui-kit-components-pane.mjs +91 -69
  63. package/fesm2022/ng-doc-ui-kit-components-pane.mjs.map +1 -1
  64. package/fesm2022/ng-doc-ui-kit-components-selection.mjs +173 -76
  65. package/fesm2022/ng-doc-ui-kit-components-selection.mjs.map +1 -1
  66. package/fesm2022/ng-doc-ui-kit-components-sidenav.mjs +23 -22
  67. package/fesm2022/ng-doc-ui-kit-components-sidenav.mjs.map +1 -1
  68. package/fesm2022/ng-doc-ui-kit-components-spinner.mjs +14 -12
  69. package/fesm2022/ng-doc-ui-kit-components-spinner.mjs.map +1 -1
  70. package/fesm2022/ng-doc-ui-kit-components-tab-group.mjs +86 -61
  71. package/fesm2022/ng-doc-ui-kit-components-tab-group.mjs.map +1 -1
  72. package/fesm2022/ng-doc-ui-kit-components-tab-routes-group.mjs +16 -13
  73. package/fesm2022/ng-doc-ui-kit-components-tab-routes-group.mjs.map +1 -1
  74. package/fesm2022/ng-doc-ui-kit-components-tag.mjs +23 -24
  75. package/fesm2022/ng-doc-ui-kit-components-tag.mjs.map +1 -1
  76. package/fesm2022/ng-doc-ui-kit-components-text.mjs +37 -52
  77. package/fesm2022/ng-doc-ui-kit-components-text.mjs.map +1 -1
  78. package/fesm2022/ng-doc-ui-kit-components-toggle.mjs +82 -57
  79. package/fesm2022/ng-doc-ui-kit-components-toggle.mjs.map +1 -1
  80. package/fesm2022/ng-doc-ui-kit-components-wrapper.mjs +7 -4
  81. package/fesm2022/ng-doc-ui-kit-components-wrapper.mjs.map +1 -1
  82. package/fesm2022/ng-doc-ui-kit-directives-autofocus.mjs +13 -10
  83. package/fesm2022/ng-doc-ui-kit-directives-autofocus.mjs.map +1 -1
  84. package/fesm2022/ng-doc-ui-kit-directives-checked-change.mjs +30 -26
  85. package/fesm2022/ng-doc-ui-kit-directives-checked-change.mjs.map +1 -1
  86. package/fesm2022/ng-doc-ui-kit-directives-data.mjs +8 -5
  87. package/fesm2022/ng-doc-ui-kit-directives-data.mjs.map +1 -1
  88. package/fesm2022/ng-doc-ui-kit-directives-dropdown-handler.mjs +19 -18
  89. package/fesm2022/ng-doc-ui-kit-directives-dropdown-handler.mjs.map +1 -1
  90. package/fesm2022/ng-doc-ui-kit-directives-dropdown-origin.mjs +7 -9
  91. package/fesm2022/ng-doc-ui-kit-directives-dropdown-origin.mjs.map +1 -1
  92. package/fesm2022/ng-doc-ui-kit-directives-event-switcher.mjs +22 -19
  93. package/fesm2022/ng-doc-ui-kit-directives-event-switcher.mjs.map +1 -1
  94. package/fesm2022/ng-doc-ui-kit-directives-focus-catcher.mjs +30 -25
  95. package/fesm2022/ng-doc-ui-kit-directives-focus-catcher.mjs.map +1 -1
  96. package/fesm2022/ng-doc-ui-kit-directives-focusable.mjs +13 -16
  97. package/fesm2022/ng-doc-ui-kit-directives-focusable.mjs.map +1 -1
  98. package/fesm2022/ng-doc-ui-kit-directives-fullscreen.mjs +90 -0
  99. package/fesm2022/ng-doc-ui-kit-directives-fullscreen.mjs.map +1 -0
  100. package/fesm2022/ng-doc-ui-kit-directives-hotkey.mjs +34 -28
  101. package/fesm2022/ng-doc-ui-kit-directives-hotkey.mjs.map +1 -1
  102. package/fesm2022/ng-doc-ui-kit-directives-input-number.mjs +10 -12
  103. package/fesm2022/ng-doc-ui-kit-directives-input-number.mjs.map +1 -1
  104. package/fesm2022/ng-doc-ui-kit-directives-input-string.mjs +9 -12
  105. package/fesm2022/ng-doc-ui-kit-directives-input-string.mjs.map +1 -1
  106. package/fesm2022/ng-doc-ui-kit-directives-radio-group.mjs +7 -4
  107. package/fesm2022/ng-doc-ui-kit-directives-radio-group.mjs.map +1 -1
  108. package/fesm2022/ng-doc-ui-kit-directives-rotator.mjs +16 -22
  109. package/fesm2022/ng-doc-ui-kit-directives-rotator.mjs.map +1 -1
  110. package/fesm2022/ng-doc-ui-kit-directives-tooltip.mjs +105 -101
  111. package/fesm2022/ng-doc-ui-kit-directives-tooltip.mjs.map +1 -1
  112. package/fesm2022/ng-doc-ui-kit-directives.mjs +1 -1
  113. package/fesm2022/ng-doc-ui-kit-interceptors.mjs +24 -21
  114. package/fesm2022/ng-doc-ui-kit-interceptors.mjs.map +1 -1
  115. package/fesm2022/ng-doc-ui-kit-observables.mjs +2 -58
  116. package/fesm2022/ng-doc-ui-kit-observables.mjs.map +1 -1
  117. package/fesm2022/ng-doc-ui-kit-pipes-as-array.mjs +3 -4
  118. package/fesm2022/ng-doc-ui-kit-pipes-as-array.mjs.map +1 -1
  119. package/fesm2022/ng-doc-ui-kit-pipes-bind.mjs +3 -4
  120. package/fesm2022/ng-doc-ui-kit-pipes-bind.mjs.map +1 -1
  121. package/fesm2022/ng-doc-ui-kit-pipes-execute.mjs +3 -4
  122. package/fesm2022/ng-doc-ui-kit-pipes-execute.mjs.map +1 -1
  123. package/fesm2022/ng-doc-ui-kit-pipes-highlighter.mjs +3 -4
  124. package/fesm2022/ng-doc-ui-kit-pipes-highlighter.mjs.map +1 -1
  125. package/fesm2022/ng-doc-ui-kit-services-dialog.mjs +14 -8
  126. package/fesm2022/ng-doc-ui-kit-services-dialog.mjs.map +1 -1
  127. package/fesm2022/ng-doc-ui-kit-services-notify.mjs +13 -8
  128. package/fesm2022/ng-doc-ui-kit-services-notify.mjs.map +1 -1
  129. package/fesm2022/ng-doc-ui-kit-services-overlay-strategy.mjs +15 -11
  130. package/fesm2022/ng-doc-ui-kit-services-overlay-strategy.mjs.map +1 -1
  131. package/fesm2022/ng-doc-ui-kit-services-overlay.mjs +20 -9
  132. package/fesm2022/ng-doc-ui-kit-services-overlay.mjs.map +1 -1
  133. package/fesm2022/ng-doc-ui-kit-services-scroll.mjs +11 -13
  134. package/fesm2022/ng-doc-ui-kit-services-scroll.mjs.map +1 -1
  135. package/fesm2022/ng-doc-ui-kit-tokens.mjs +29 -3
  136. package/fesm2022/ng-doc-ui-kit-tokens.mjs.map +1 -1
  137. package/fesm2022/ng-doc-ui-kit-types.mjs +0 -1
  138. package/fesm2022/ng-doc-ui-kit-types.mjs.map +1 -1
  139. package/package.json +31 -33
  140. package/styles/main.css +275 -38
  141. package/types/ng-doc-ui-kit-cdk-combobox-host.d.ts +16 -8
  142. package/types/ng-doc-ui-kit-classes-base-input.d.ts +12 -1
  143. package/types/ng-doc-ui-kit-classes-overlay-ref.d.ts +27 -4
  144. package/types/ng-doc-ui-kit-components-blockquote.d.ts +22 -5
  145. package/types/ng-doc-ui-kit-components-button-icon.d.ts +23 -5
  146. package/types/ng-doc-ui-kit-components-button-toggle.d.ts +5 -1
  147. package/types/ng-doc-ui-kit-components-button.d.ts +6 -6
  148. package/types/ng-doc-ui-kit-components-checkbox.d.ts +5 -3
  149. package/types/ng-doc-ui-kit-components-clear-control.d.ts +7 -0
  150. package/types/ng-doc-ui-kit-components-combobox.d.ts +19 -9
  151. package/types/ng-doc-ui-kit-components-data-list-group.d.ts +16 -11
  152. package/types/ng-doc-ui-kit-components-data-list.d.ts +21 -11
  153. package/types/ng-doc-ui-kit-components-dialog-outlet.d.ts +11 -6
  154. package/types/ng-doc-ui-kit-components-dot.d.ts +10 -5
  155. package/types/ng-doc-ui-kit-components-dropdown.d.ts +39 -27
  156. package/types/ng-doc-ui-kit-components-expander.d.ts +9 -7
  157. package/types/ng-doc-ui-kit-components-floated-content.d.ts +8 -6
  158. package/types/ng-doc-ui-kit-components-focus-control.d.ts +10 -4
  159. package/types/ng-doc-ui-kit-components-icon.d.ts +49 -14
  160. package/types/ng-doc-ui-kit-components-input-wrapper.d.ts +31 -17
  161. package/types/ng-doc-ui-kit-components-label.d.ts +8 -5
  162. package/types/ng-doc-ui-kit-components-line.d.ts +3 -0
  163. package/types/ng-doc-ui-kit-components-list.d.ts +14 -3
  164. package/types/ng-doc-ui-kit-components-magnifier-controller.d.ts +5 -1
  165. package/types/ng-doc-ui-kit-components-magnifier.d.ts +19 -4
  166. package/types/ng-doc-ui-kit-components-option-group.d.ts +12 -8
  167. package/types/ng-doc-ui-kit-components-option.d.ts +9 -2
  168. package/types/ng-doc-ui-kit-components-overlay-container.d.ts +18 -15
  169. package/types/ng-doc-ui-kit-components-overlay-pointer.d.ts +10 -6
  170. package/types/ng-doc-ui-kit-components-pane.d.ts +25 -9
  171. package/types/ng-doc-ui-kit-components-selection.d.ts +59 -21
  172. package/types/ng-doc-ui-kit-components-sidenav.d.ts +17 -8
  173. package/types/ng-doc-ui-kit-components-spinner.d.ts +7 -3
  174. package/types/ng-doc-ui-kit-components-tab-group.d.ts +43 -22
  175. package/types/ng-doc-ui-kit-components-tab-routes-group.d.ts +4 -2
  176. package/types/ng-doc-ui-kit-components-tag.d.ts +13 -6
  177. package/types/ng-doc-ui-kit-components-text.d.ts +21 -19
  178. package/types/ng-doc-ui-kit-components-toggle.d.ts +13 -7
  179. package/types/ng-doc-ui-kit-components-wrapper.d.ts +3 -0
  180. package/types/ng-doc-ui-kit-directives-autofocus.d.ts +7 -5
  181. package/types/ng-doc-ui-kit-directives-checked-change.d.ts +15 -11
  182. package/types/ng-doc-ui-kit-directives-data.d.ts +6 -4
  183. package/types/ng-doc-ui-kit-directives-dropdown-handler.d.ts +5 -3
  184. package/types/ng-doc-ui-kit-directives-dropdown-origin.d.ts +0 -2
  185. package/types/ng-doc-ui-kit-directives-event-switcher.d.ts +11 -6
  186. package/types/ng-doc-ui-kit-directives-focus-catcher.d.ts +11 -8
  187. package/types/ng-doc-ui-kit-directives-focusable.d.ts +6 -3
  188. package/types/ng-doc-ui-kit-directives-fullscreen.d.ts +39 -0
  189. package/types/ng-doc-ui-kit-directives-hotkey.d.ts +14 -7
  190. package/types/ng-doc-ui-kit-directives-input-number.d.ts +3 -2
  191. package/types/ng-doc-ui-kit-directives-input-string.d.ts +2 -2
  192. package/types/ng-doc-ui-kit-directives-radio-group.d.ts +4 -0
  193. package/types/ng-doc-ui-kit-directives-rotator.d.ts +8 -8
  194. package/types/ng-doc-ui-kit-directives-tooltip.d.ts +35 -23
  195. package/types/ng-doc-ui-kit-directives.d.ts +1 -1
  196. package/types/ng-doc-ui-kit-interceptors.d.ts +18 -2
  197. package/types/ng-doc-ui-kit-interfaces.d.ts +20 -4
  198. package/types/ng-doc-ui-kit-observables.d.ts +2 -19
  199. package/types/ng-doc-ui-kit-services-dialog.d.ts +10 -1
  200. package/types/ng-doc-ui-kit-services-notify.d.ts +9 -1
  201. package/types/ng-doc-ui-kit-services-overlay-strategy.d.ts +5 -3
  202. package/types/ng-doc-ui-kit-services-overlay.d.ts +14 -3
  203. package/types/ng-doc-ui-kit-services-scroll.d.ts +4 -5
  204. package/types/ng-doc-ui-kit-types.d.ts +2 -2
  205. package/fesm2022/ng-doc-ui-kit-decorators.mjs +0 -53
  206. package/fesm2022/ng-doc-ui-kit-decorators.mjs.map +0 -1
  207. package/fesm2022/ng-doc-ui-kit-directives-let.mjs +0 -43
  208. package/fesm2022/ng-doc-ui-kit-directives-let.mjs.map +0 -1
  209. package/types/ng-doc-ui-kit-decorators.d.ts +0 -12
  210. package/types/ng-doc-ui-kit-directives-let.d.ts +0 -22
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-ui-kit-components-overlay-container.mjs","sources":["../../../../libs/ui-kit/components/overlay-container/overlay-container.component.ts","../../../../libs/ui-kit/components/overlay-container/overlay-container.component.html","../../../../libs/ui-kit/components/overlay-container/ng-doc-ui-kit-components-overlay-container.ts"],"sourcesContent":["import {\n ConnectedOverlayPositionChange,\n FlexibleConnectedPositionStrategy,\n} from '@angular/cdk/overlay';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DOCUMENT,\n ElementRef,\n HostBinding,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n ViewChild,\n} from '@angular/core';\nimport { NgDocFocusControlComponent } from '@ng-doc/ui-kit/components/focus-control';\nimport { NgDocOverlayPointerComponent } from '@ng-doc/ui-kit/components/overlay-pointer';\nimport { NgDocEventSwitcherDirective } from '@ng-doc/ui-kit/directives/event-switcher';\nimport { NgDocFocusCatcherDirective } from '@ng-doc/ui-kit/directives/focus-catcher';\nimport { toElement } from '@ng-doc/ui-kit/helpers';\nimport { NgDocOverlayConfig, NgDocOverlayContainer } from '@ng-doc/ui-kit/interfaces';\nimport { ngDocZoneOptimize } from '@ng-doc/ui-kit/observables';\nimport {\n NgDocContent,\n NgDocHorizontalAlign,\n NgDocOverlayAnimationEvent,\n NgDocOverlayPosition,\n NgDocOverlayRelativePosition,\n NgDocVerticalAlign,\n} from '@ng-doc/ui-kit/types';\nimport { NgDocFocusUtils, NgDocOverlayUtils } from '@ng-doc/ui-kit/utils';\nimport { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Component({\n selector: 'ng-doc-overlay-container',\n templateUrl: './overlay-container.component.html',\n styleUrls: ['./overlay-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgDocOverlayPointerComponent,\n NgDocEventSwitcherDirective,\n NgDocFocusControlComponent,\n NgDocFocusCatcherDirective,\n PolymorpheusOutlet,\n ],\n})\nexport class NgDocOverlayContainerComponent\n implements NgDocOverlayContainer, OnInit, AfterViewInit, OnDestroy\n{\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private documentRef = inject<Document>(DOCUMENT);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n private platformId = inject(PLATFORM_ID);\n\n @Input()\n content: NgDocContent = '';\n\n @Input()\n config?: NgDocOverlayConfig;\n\n @ViewChild('contentContainer', { read: ElementRef, static: true })\n contentContainer?: ElementRef<HTMLElement>;\n\n @ViewChild(NgDocFocusCatcherDirective)\n focusCatcher?: NgDocFocusCatcherDirective;\n\n @ViewChild(PolymorpheusOutlet, { static: true })\n outlet?: PolymorpheusOutlet<object>;\n\n @HostBinding('attr.data-ng-doc-overlay-position')\n relativePosition: NgDocOverlayRelativePosition | null = null;\n\n private currentPosition?: NgDocOverlayPosition;\n private animationEvent$: Subject<NgDocOverlayAnimationEvent> =\n new Subject<NgDocOverlayAnimationEvent>();\n private isOpened: boolean = true;\n\n constructor() {}\n\n ngOnInit(): void {\n if (this.config?.positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n this.config.positionStrategy.positionChanges\n .pipe(\n distinctUntilChanged(\n (a: ConnectedOverlayPositionChange, b: ConnectedOverlayPositionChange) =>\n a.connectionPair === b.connectionPair,\n ),\n ngDocZoneOptimize(this.ngZone),\n )\n .subscribe((change: ConnectedOverlayPositionChange) => {\n this.currentPosition = NgDocOverlayUtils.getOverlayPosition(change.connectionPair);\n this.relativePosition = NgDocOverlayUtils.getRelativePosition(this.currentPosition);\n this.changeDetectorRef.markForCheck();\n });\n }\n }\n\n ngAfterViewInit(): void {\n const [keyframes, options] = this.config?.openAnimation || [];\n this.runAnimation(keyframes ?? [], options);\n }\n\n @HostBinding('attr.data-ng-doc-overlay-with-contact-border')\n get contactBorder(): boolean {\n return !!this.config?.contactBorder;\n }\n\n get isFocused(): boolean {\n return !!this.focusCatcher?.focused;\n }\n\n get animationEvent(): Observable<NgDocOverlayAnimationEvent> {\n return this.animationEvent$.asObservable();\n }\n\n get overlayAlign(): NgDocHorizontalAlign | NgDocVerticalAlign | null {\n return this.currentPosition\n ? NgDocOverlayUtils.getPositionAlign(\n NgDocOverlayUtils.toConnectedPosition(this.currentPosition),\n )\n : null;\n }\n\n close(): void {\n if (this.isOpened) {\n const [keyframes, options] = this.config?.closeAnimation || [];\n this.runAnimation(keyframes ?? [], options, true);\n this.isOpened = false;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n focus(): void {\n if (this.contentContainer) {\n NgDocFocusUtils.focusClosestElement(\n toElement(this.contentContainer),\n toElement(this.contentContainer),\n );\n }\n }\n\n markForCheck(): void {\n this.changeDetectorRef.markForCheck();\n }\n\n private runAnimation(\n keyframes: Keyframe[] | PropertyIndexedKeyframes,\n options?: KeyframeAnimationOptions,\n close: boolean = false,\n ): void {\n this.animationEvent$.next(close ? 'beforeClose' : 'beforeOpen');\n\n if (!isPlatformBrowser(this.platformId)) {\n this.animationEvent$.next(close ? 'afterClose' : 'afterOpen');\n return;\n }\n\n this.elementRef.nativeElement\n .animate(keyframes, options)\n .finished.then(() => this.animationEvent$.next(close ? 'afterClose' : 'afterOpen'));\n }\n\n ngOnDestroy(): void {\n if (this.isFocused && this.config && this.config.viewContainerRef) {\n NgDocFocusUtils.focusClosestElement(\n this.config.viewContainerRef.element.nativeElement,\n this.documentRef.body,\n false,\n );\n }\n }\n}\n","<ng-doc-overlay-pointer\n\t[overlayPosition]=\"relativePosition\"\n\t[overlayAlign]=\"overlayAlign\"\n\t[withPointer]=\"!!config?.withPointer\"\n\t[ngDocEventSwitcher]=\"config?.viewContainerRef?.element?.nativeElement ?? null\"\n\t[events]=\"['focusin', 'focusout', 'keydown', 'scroll']\">\n\t<ng-doc-focus-control\n\t\t[focusHost]=\"this.config?.viewContainerRef?.element?.nativeElement ?? null\"\n\t\tngDocFocusCatcher>\n\t\t<div class=\"ng-doc-overlay-content\" [tabIndex]=\"-1\" #contentContainer>\n\t\t\t<ng-container *polymorpheusOutlet=\"content as text\">{{ text }}</ng-container>\n\t\t</div>\n\t</ng-doc-focus-control>\n</ng-doc-overlay-pointer>\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-doc-ui-kit-components-overlay-container.mjs","sources":["../../../../libs/ui-kit/components/overlay-container/overlay-container.component.ts","../../../../libs/ui-kit/components/overlay-container/overlay-container.component.html","../../../../libs/ui-kit/components/overlay-container/ng-doc-ui-kit-components-overlay-container.ts"],"sourcesContent":["import {\n ConnectedOverlayPositionChange,\n FlexibleConnectedPositionStrategy,\n} from '@angular/cdk/overlay';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n DOCUMENT,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n signal,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgDocFocusControlComponent } from '@ng-doc/ui-kit/components/focus-control';\nimport { NgDocOverlayPointerComponent } from '@ng-doc/ui-kit/components/overlay-pointer';\nimport { NgDocEventSwitcherDirective } from '@ng-doc/ui-kit/directives/event-switcher';\nimport { NgDocFocusCatcherDirective } from '@ng-doc/ui-kit/directives/focus-catcher';\nimport { toElement } from '@ng-doc/ui-kit/helpers';\nimport { NgDocOverlayConfig, NgDocOverlayContainer } from '@ng-doc/ui-kit/interfaces';\nimport {\n NgDocContent,\n NgDocHorizontalAlign,\n NgDocOverlayAnimationEvent,\n NgDocOverlayPosition,\n NgDocOverlayRelativePosition,\n NgDocVerticalAlign,\n} from '@ng-doc/ui-kit/types';\nimport { NgDocFocusUtils, NgDocOverlayUtils } from '@ng-doc/ui-kit/utils';\nimport { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n/** The default overlay container: renders the content with the pointer and the open animation. */\n@Component({\n selector: 'ng-doc-overlay-container',\n templateUrl: './overlay-container.component.html',\n styleUrls: ['./overlay-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgDocOverlayPointerComponent,\n NgDocEventSwitcherDirective,\n NgDocFocusControlComponent,\n NgDocFocusCatcherDirective,\n PolymorpheusOutlet,\n ],\n host: {\n '[attr.data-ng-doc-overlay-position]': 'relativePosition()',\n '[attr.data-ng-doc-overlay-with-contact-border]': 'contactBorder()',\n },\n})\nexport class NgDocOverlayContainerComponent\n implements NgDocOverlayContainer, OnInit, AfterViewInit, OnDestroy\n{\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private documentRef = inject<Document>(DOCUMENT);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private platformId = inject(PLATFORM_ID);\n private destroyRef = inject(DestroyRef);\n\n /** What the overlay renders: a string, a template or a component. */\n readonly content = input<NgDocContent>('');\n\n /** The configuration the overlay was opened with. */\n readonly config = input<NgDocOverlayConfig>();\n\n readonly contentContainer = viewChild('contentContainer', { read: ElementRef });\n\n readonly focusCatcher = viewChild(NgDocFocusCatcherDirective);\n\n readonly outlet = viewChild(PolymorpheusOutlet);\n\n private readonly currentPosition = signal<NgDocOverlayPosition | null>(null);\n\n /** The side of the origin the overlay is on, once the position strategy has placed it. */\n protected readonly relativePosition = computed<NgDocOverlayRelativePosition | null>(() => {\n const position: NgDocOverlayPosition | null = this.currentPosition();\n\n return position ? NgDocOverlayUtils.getRelativePosition(position) : null;\n });\n\n protected readonly overlayAlign = computed<NgDocHorizontalAlign | NgDocVerticalAlign | null>(\n () => {\n const position: NgDocOverlayPosition | null = this.currentPosition();\n\n return position\n ? NgDocOverlayUtils.getPositionAlign(NgDocOverlayUtils.toConnectedPosition(position))\n : null;\n },\n );\n\n protected readonly contactBorder = computed<boolean>(() => !!this.config()?.contactBorder);\n\n private animationEvent$: Subject<NgDocOverlayAnimationEvent> =\n new Subject<NgDocOverlayAnimationEvent>();\n private isOpened: boolean = true;\n\n ngOnInit(): void {\n const positionStrategy = this.config()?.positionStrategy;\n\n if (positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n // The strategy may report a position outside the Angular zone; writing a signal schedules\n // change detection with and without zone.js.\n positionStrategy.positionChanges\n .pipe(\n distinctUntilChanged(\n (a: ConnectedOverlayPositionChange, b: ConnectedOverlayPositionChange) =>\n a.connectionPair === b.connectionPair,\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((change: ConnectedOverlayPositionChange) =>\n this.currentPosition.set(NgDocOverlayUtils.getOverlayPosition(change.connectionPair)),\n );\n }\n }\n\n ngAfterViewInit(): void {\n const [keyframes, options] = this.config()?.openAnimation || [];\n this.runAnimation(keyframes ?? [], options);\n }\n\n get isFocused(): boolean {\n return !!this.focusCatcher()?.focused;\n }\n\n get animationEvent(): Observable<NgDocOverlayAnimationEvent> {\n return this.animationEvent$.asObservable();\n }\n\n close(): void {\n if (this.isOpened) {\n const [keyframes, options] = this.config()?.closeAnimation || [];\n this.runAnimation(keyframes ?? [], options, true);\n this.isOpened = false;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n focus(): void {\n const contentContainer: ElementRef<HTMLElement> | undefined = this.contentContainer();\n\n if (contentContainer) {\n NgDocFocusUtils.focusClosestElement(toElement(contentContainer), toElement(contentContainer));\n }\n }\n\n markForCheck(): void {\n this.changeDetectorRef.markForCheck();\n }\n\n private runAnimation(\n keyframes: Keyframe[] | PropertyIndexedKeyframes,\n options?: KeyframeAnimationOptions,\n close: boolean = false,\n ): void {\n this.animationEvent$.next(close ? 'beforeClose' : 'beforeOpen');\n\n if (!isPlatformBrowser(this.platformId)) {\n this.animationEvent$.next(close ? 'afterClose' : 'afterOpen');\n return;\n }\n\n this.elementRef.nativeElement\n .animate(keyframes, options)\n .finished.then(() => this.animationEvent$.next(close ? 'afterClose' : 'afterOpen'));\n }\n\n ngOnDestroy(): void {\n const config: NgDocOverlayConfig | undefined = this.config();\n\n if (this.isFocused && config && config.viewContainerRef) {\n NgDocFocusUtils.focusClosestElement(\n config.viewContainerRef.element.nativeElement,\n this.documentRef.body,\n false,\n );\n }\n }\n}\n","<ng-doc-overlay-pointer\n [overlayPosition]=\"relativePosition()\"\n [overlayAlign]=\"overlayAlign()\"\n [withPointer]=\"!!config()?.withPointer\"\n [ngDocEventSwitcher]=\"config()?.viewContainerRef?.element?.nativeElement ?? null\"\n [events]=\"['focusin', 'focusout', 'keydown', 'scroll']\">\n <ng-doc-focus-control\n [focusHost]=\"config()?.viewContainerRef?.element?.nativeElement ?? null\"\n ngDocFocusCatcher>\n <div class=\"ng-doc-overlay-content\" [tabIndex]=\"-1\" #contentContainer>\n <ng-container *polymorpheusOutlet=\"content() as text\">{{ text }}</ng-container>\n </div>\n </ng-doc-focus-control>\n</ng-doc-overlay-pointer>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,31 +1,29 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Input, HostBinding, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { input, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
 
4
+ /** Frames overlay content and draws the arrow that points at the origin. */
4
5
  class NgDocOverlayPointerComponent {
5
6
  constructor() {
6
- this.overlayPosition = null;
7
- this.overlayAlign = null;
8
- this.withPointer = true;
7
+ /** The side of the origin the overlay is on. */
8
+ this.overlayPosition = input(null, /* @ts-ignore */
9
+ ...(ngDevMode ? [{ debugName: "overlayPosition" }] : /* istanbul ignore next */ []));
10
+ /** How the overlay is aligned along that side. */
11
+ this.overlayAlign = input(null, /* @ts-ignore */
12
+ ...(ngDevMode ? [{ debugName: "overlayAlign" }] : /* istanbul ignore next */ []));
13
+ /** Draws the arrow. */
14
+ this.withPointer = input(true, /* @ts-ignore */
15
+ ...(ngDevMode ? [{ debugName: "withPointer" }] : /* istanbul ignore next */ []));
9
16
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: NgDocOverlayPointerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: NgDocOverlayPointerComponent, isStandalone: true, selector: "ng-doc-overlay-pointer", inputs: { overlayPosition: "overlayPosition", overlayAlign: "overlayAlign", withPointer: "withPointer" }, host: { properties: { "attr.data-ng-doc-overlay-position": "this.overlayPosition", "attr.data-ng-doc-overlay-align": "this.overlayAlign" } }, ngImport: i0, template: "<div class=\"ng-doc-overlay-pointer-wrapper\">\n @if (withPointer) {\n <div class=\"ng-doc-overlay-pointer\">\n <div class=\"ng-doc-pointer\"></div>\n </div>\n }\n <div class=\"ng-doc-overlay-pointer-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{display:block;height:100%}.ng-doc-overlay-pointer-wrapper{display:flex;flex-direction:column;height:100%}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer{display:flex}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer{position:relative}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer:before{position:relative;display:block;content:\"\";width:0;height:0;border:8px solid transparent}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer:after{position:absolute;display:block;content:\"\";width:0;height:0;border:7px solid transparent}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer-content{display:flex;flex:1;height:100%}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer-wrapper,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer-wrapper{min-width:calc(var(--ng-doc-base-gutter) * 4)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer{justify-content:center}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer{top:1px}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer:before,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer:before{border-bottom:8px solid;border-bottom-color:var(--ng-doc-overlay-border)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer:after,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer:after{top:2px;right:1px;border-bottom:7px solid;border-bottom-color:var(--ng-doc-overlay-background)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer-wrapper{flex-direction:column-reverse}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer{transform:rotate(180deg) scaleX(-1)}:host[data-ng-doc-overlay-align=left] .ng-doc-overlay-pointer{justify-content:flex-start}:host[data-ng-doc-overlay-align=left] .ng-doc-overlay-pointer .ng-doc-pointer{margin-left:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-align=right] .ng-doc-overlay-pointer{justify-content:flex-end}:host[data-ng-doc-overlay-align=right] .ng-doc-overlay-pointer .ng-doc-pointer{margin-right:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer-wrapper,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer-wrapper{flex-direction:row;min-height:calc(var(--ng-doc-base-gutter) * 4)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer{align-items:center}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer{left:1px}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer:before,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer:before{border-right:8px solid var(--ng-doc-overlay-border)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer:after,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer:after{top:1px;right:0;border-right:7px solid var(--ng-doc-overlay-background)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer-wrapper{flex-direction:row-reverse}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer{transform:rotate(180deg) scaleY(-1)}:host[data-ng-doc-overlay-align=top] .ng-doc-overlay-pointer{align-items:flex-start}:host[data-ng-doc-overlay-align=top] .ng-doc-overlay-pointer .ng-doc-pointer{margin-top:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-align=bottom] .ng-doc-overlay-pointer{align-items:flex-end}:host[data-ng-doc-overlay-align=bottom] .ng-doc-overlay-pointer .ng-doc-pointer{margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocOverlayPointerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.2.1", type: NgDocOverlayPointerComponent, isStandalone: true, selector: "ng-doc-overlay-pointer", inputs: { overlayPosition: { classPropertyName: "overlayPosition", publicName: "overlayPosition", isSignal: true, isRequired: false, transformFunction: null }, overlayAlign: { classPropertyName: "overlayAlign", publicName: "overlayAlign", isSignal: true, isRequired: false, transformFunction: null }, withPointer: { classPropertyName: "withPointer", publicName: "withPointer", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-ng-doc-overlay-position": "overlayPosition()", "attr.data-ng-doc-overlay-align": "overlayAlign()" } }, ngImport: i0, template: "<div class=\"ng-doc-overlay-pointer-wrapper\">\n @if (withPointer()) {\n <div class=\"ng-doc-overlay-pointer\">\n <div class=\"ng-doc-pointer\"></div>\n </div>\n }\n <div class=\"ng-doc-overlay-pointer-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{display:block;height:100%}.ng-doc-overlay-pointer-wrapper{display:flex;flex-direction:column;height:100%}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer{display:flex}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer{position:relative}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer:before{position:relative;display:block;content:\"\";width:0;height:0;border:8px solid transparent}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer:after{position:absolute;display:block;content:\"\";width:0;height:0;border:7px solid transparent}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer-content{display:flex;flex:1;height:100%}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer-wrapper,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer-wrapper{min-width:calc(var(--ng-doc-base-gutter) * 4)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer{justify-content:center}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer{top:1px}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer:before,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer:before{border-bottom:8px solid;border-bottom-color:var(--ng-doc-overlay-border)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer:after,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer:after{top:2px;right:1px;border-bottom:7px solid;border-bottom-color:var(--ng-doc-overlay-background)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer-wrapper{flex-direction:column-reverse}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer{transform:rotate(180deg) scaleX(-1)}:host[data-ng-doc-overlay-align=left] .ng-doc-overlay-pointer{justify-content:flex-start}:host[data-ng-doc-overlay-align=left] .ng-doc-overlay-pointer .ng-doc-pointer{margin-left:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-align=right] .ng-doc-overlay-pointer{justify-content:flex-end}:host[data-ng-doc-overlay-align=right] .ng-doc-overlay-pointer .ng-doc-pointer{margin-right:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer-wrapper,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer-wrapper{flex-direction:row;min-height:calc(var(--ng-doc-base-gutter) * 4)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer{align-items:center}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer{left:1px}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer:before,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer:before{border-right:8px solid var(--ng-doc-overlay-border)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer:after,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer:after{top:1px;right:0;border-right:7px solid var(--ng-doc-overlay-background)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer-wrapper{flex-direction:row-reverse}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer{transform:rotate(180deg) scaleY(-1)}:host[data-ng-doc-overlay-align=top] .ng-doc-overlay-pointer{align-items:flex-start}:host[data-ng-doc-overlay-align=top] .ng-doc-overlay-pointer .ng-doc-pointer{margin-top:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-align=bottom] .ng-doc-overlay-pointer{align-items:flex-end}:host[data-ng-doc-overlay-align=bottom] .ng-doc-overlay-pointer .ng-doc-pointer{margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12
19
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: NgDocOverlayPointerComponent, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocOverlayPointerComponent, decorators: [{
14
21
  type: Component,
15
- args: [{ selector: 'ng-doc-overlay-pointer', changeDetection: ChangeDetectionStrategy.OnPush, imports: [], template: "<div class=\"ng-doc-overlay-pointer-wrapper\">\n @if (withPointer) {\n <div class=\"ng-doc-overlay-pointer\">\n <div class=\"ng-doc-pointer\"></div>\n </div>\n }\n <div class=\"ng-doc-overlay-pointer-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{display:block;height:100%}.ng-doc-overlay-pointer-wrapper{display:flex;flex-direction:column;height:100%}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer{display:flex}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer{position:relative}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer:before{position:relative;display:block;content:\"\";width:0;height:0;border:8px solid transparent}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer:after{position:absolute;display:block;content:\"\";width:0;height:0;border:7px solid transparent}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer-content{display:flex;flex:1;height:100%}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer-wrapper,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer-wrapper{min-width:calc(var(--ng-doc-base-gutter) * 4)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer{justify-content:center}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer{top:1px}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer:before,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer:before{border-bottom:8px solid;border-bottom-color:var(--ng-doc-overlay-border)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer:after,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer:after{top:2px;right:1px;border-bottom:7px solid;border-bottom-color:var(--ng-doc-overlay-background)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer-wrapper{flex-direction:column-reverse}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer{transform:rotate(180deg) scaleX(-1)}:host[data-ng-doc-overlay-align=left] .ng-doc-overlay-pointer{justify-content:flex-start}:host[data-ng-doc-overlay-align=left] .ng-doc-overlay-pointer .ng-doc-pointer{margin-left:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-align=right] .ng-doc-overlay-pointer{justify-content:flex-end}:host[data-ng-doc-overlay-align=right] .ng-doc-overlay-pointer .ng-doc-pointer{margin-right:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer-wrapper,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer-wrapper{flex-direction:row;min-height:calc(var(--ng-doc-base-gutter) * 4)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer{align-items:center}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer{left:1px}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer:before,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer:before{border-right:8px solid var(--ng-doc-overlay-border)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer:after,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer:after{top:1px;right:0;border-right:7px solid var(--ng-doc-overlay-background)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer-wrapper{flex-direction:row-reverse}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer{transform:rotate(180deg) scaleY(-1)}:host[data-ng-doc-overlay-align=top] .ng-doc-overlay-pointer{align-items:flex-start}:host[data-ng-doc-overlay-align=top] .ng-doc-overlay-pointer .ng-doc-pointer{margin-top:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-align=bottom] .ng-doc-overlay-pointer{align-items:flex-end}:host[data-ng-doc-overlay-align=bottom] .ng-doc-overlay-pointer .ng-doc-pointer{margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}\n"] }]
16
- }], propDecorators: { overlayPosition: [{
17
- type: Input
18
- }, {
19
- type: HostBinding,
20
- args: ['attr.data-ng-doc-overlay-position']
21
- }], overlayAlign: [{
22
- type: Input
23
- }, {
24
- type: HostBinding,
25
- args: ['attr.data-ng-doc-overlay-align']
26
- }], withPointer: [{
27
- type: Input
28
- }] } });
22
+ args: [{ selector: 'ng-doc-overlay-pointer', changeDetection: ChangeDetectionStrategy.OnPush, imports: [], host: {
23
+ '[attr.data-ng-doc-overlay-position]': 'overlayPosition()',
24
+ '[attr.data-ng-doc-overlay-align]': 'overlayAlign()',
25
+ }, template: "<div class=\"ng-doc-overlay-pointer-wrapper\">\n @if (withPointer()) {\n <div class=\"ng-doc-overlay-pointer\">\n <div class=\"ng-doc-pointer\"></div>\n </div>\n }\n <div class=\"ng-doc-overlay-pointer-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{display:block;height:100%}.ng-doc-overlay-pointer-wrapper{display:flex;flex-direction:column;height:100%}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer{display:flex}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer{position:relative}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer:before{position:relative;display:block;content:\"\";width:0;height:0;border:8px solid transparent}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer:after{position:absolute;display:block;content:\"\";width:0;height:0;border:7px solid transparent}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer-content{display:flex;flex:1;height:100%}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer-wrapper,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer-wrapper{min-width:calc(var(--ng-doc-base-gutter) * 4)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer{justify-content:center}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer{top:1px}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer:before,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer:before{border-bottom:8px solid;border-bottom-color:var(--ng-doc-overlay-border)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer:after,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer:after{top:2px;right:1px;border-bottom:7px solid;border-bottom-color:var(--ng-doc-overlay-background)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer-wrapper{flex-direction:column-reverse}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer{transform:rotate(180deg) scaleX(-1)}:host[data-ng-doc-overlay-align=left] .ng-doc-overlay-pointer{justify-content:flex-start}:host[data-ng-doc-overlay-align=left] .ng-doc-overlay-pointer .ng-doc-pointer{margin-left:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-align=right] .ng-doc-overlay-pointer{justify-content:flex-end}:host[data-ng-doc-overlay-align=right] .ng-doc-overlay-pointer .ng-doc-pointer{margin-right:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer-wrapper,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer-wrapper{flex-direction:row;min-height:calc(var(--ng-doc-base-gutter) * 4)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer{align-items:center}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer{left:1px}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer:before,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer:before{border-right:8px solid var(--ng-doc-overlay-border)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer:after,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer:after{top:1px;right:0;border-right:7px solid var(--ng-doc-overlay-background)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer-wrapper{flex-direction:row-reverse}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer{transform:rotate(180deg) scaleY(-1)}:host[data-ng-doc-overlay-align=top] .ng-doc-overlay-pointer{align-items:flex-start}:host[data-ng-doc-overlay-align=top] .ng-doc-overlay-pointer .ng-doc-pointer{margin-top:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-align=bottom] .ng-doc-overlay-pointer{align-items:flex-end}:host[data-ng-doc-overlay-align=bottom] .ng-doc-overlay-pointer .ng-doc-pointer{margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}\n"] }]
26
+ }], propDecorators: { overlayPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "overlayPosition", required: false }] }], overlayAlign: [{ type: i0.Input, args: [{ isSignal: true, alias: "overlayAlign", required: false }] }], withPointer: [{ type: i0.Input, args: [{ isSignal: true, alias: "withPointer", required: false }] }] } });
29
27
 
30
28
  /**
31
29
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-ui-kit-components-overlay-pointer.mjs","sources":["../../../../libs/ui-kit/components/overlay-pointer/overlay-pointer.component.ts","../../../../libs/ui-kit/components/overlay-pointer/overlay-pointer.component.html","../../../../libs/ui-kit/components/overlay-pointer/ng-doc-ui-kit-components-overlay-pointer.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport {\n NgDocHorizontalAlign,\n NgDocOverlayRelativePosition,\n NgDocVerticalAlign,\n} from '@ng-doc/ui-kit/types';\n\n@Component({\n selector: 'ng-doc-overlay-pointer',\n templateUrl: './overlay-pointer.component.html',\n styleUrls: ['./overlay-pointer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class NgDocOverlayPointerComponent {\n @Input()\n @HostBinding('attr.data-ng-doc-overlay-position')\n overlayPosition: NgDocOverlayRelativePosition | null = null;\n\n @Input()\n @HostBinding('attr.data-ng-doc-overlay-align')\n overlayAlign: NgDocHorizontalAlign | NgDocVerticalAlign | null = null;\n\n @Input()\n withPointer: boolean = true;\n}\n","<div class=\"ng-doc-overlay-pointer-wrapper\">\n @if (withPointer) {\n <div class=\"ng-doc-overlay-pointer\">\n <div class=\"ng-doc-pointer\"></div>\n </div>\n }\n <div class=\"ng-doc-overlay-pointer-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAca,4BAA4B,CAAA;AAPzC,IAAA,WAAA,GAAA;QAUE,IAAA,CAAA,eAAe,GAAwC,IAAI;QAI3D,IAAA,CAAA,YAAY,GAAqD,IAAI;QAGrE,IAAA,CAAA,WAAW,GAAY,IAAI;AAC5B,IAAA;8GAXY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,0UCdzC,qRAUA,EAAA,MAAA,EAAA,CAAA,+6HAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDIa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,eAAA,EAGjB,uBAAuB,CAAC,MAAM,WACtC,EAAE,EAAA,QAAA,EAAA,qRAAA,EAAA,MAAA,EAAA,CAAA,+6HAAA,CAAA,EAAA;;sBAGV;;sBACA,WAAW;uBAAC,mCAAmC;;sBAG/C;;sBACA,WAAW;uBAAC,gCAAgC;;sBAG5C;;;AEvBH;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-doc-ui-kit-components-overlay-pointer.mjs","sources":["../../../../libs/ui-kit/components/overlay-pointer/overlay-pointer.component.ts","../../../../libs/ui-kit/components/overlay-pointer/overlay-pointer.component.html","../../../../libs/ui-kit/components/overlay-pointer/ng-doc-ui-kit-components-overlay-pointer.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport {\n NgDocHorizontalAlign,\n NgDocOverlayRelativePosition,\n NgDocVerticalAlign,\n} from '@ng-doc/ui-kit/types';\n\n/** Frames overlay content and draws the arrow that points at the origin. */\n@Component({\n selector: 'ng-doc-overlay-pointer',\n templateUrl: './overlay-pointer.component.html',\n styleUrls: ['./overlay-pointer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n host: {\n '[attr.data-ng-doc-overlay-position]': 'overlayPosition()',\n '[attr.data-ng-doc-overlay-align]': 'overlayAlign()',\n },\n})\nexport class NgDocOverlayPointerComponent {\n /** The side of the origin the overlay is on. */\n readonly overlayPosition = input<NgDocOverlayRelativePosition | null>(null);\n\n /** How the overlay is aligned along that side. */\n readonly overlayAlign = input<NgDocHorizontalAlign | NgDocVerticalAlign | null>(null);\n\n /** Draws the arrow. */\n readonly withPointer = input<boolean>(true);\n}\n","<div class=\"ng-doc-overlay-pointer-wrapper\">\n @if (withPointer()) {\n <div class=\"ng-doc-overlay-pointer\">\n <div class=\"ng-doc-pointer\"></div>\n </div>\n }\n <div class=\"ng-doc-overlay-pointer-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAOA;MAYa,4BAA4B,CAAA;AAXzC,IAAA,WAAA,GAAA;;QAaW,IAAA,CAAA,eAAe,GAAG,KAAK,CAAsC,IAAI;4FAAC;;QAGlE,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmD,IAAI;yFAAC;;QAG5E,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,IAAI;wFAAC;AAC5C,IAAA;8GATY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,mpBCnBzC,uRAUA,EAAA,MAAA,EAAA,CAAA,+6HAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDSa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAXxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,mBAGjB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,EAAE,EAAA,IAAA,EACL;AACJ,wBAAA,qCAAqC,EAAE,mBAAmB;AAC1D,wBAAA,kCAAkC,EAAE,gBAAgB;AACrD,qBAAA,EAAA,QAAA,EAAA,uRAAA,EAAA,MAAA,EAAA,CAAA,+6HAAA,CAAA,EAAA;;;AEjBH;;AAEG;;;;"}
@@ -1,109 +1,131 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, inject, DOCUMENT, ChangeDetectorRef, ElementRef, NgZone, DestroyRef, afterNextRender, HostBinding, ViewChild, Input, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { Directive, inject, DOCUMENT, ElementRef, NgZone, input, viewChild, signal, DestroyRef, afterRenderEffect, untracked, afterNextRender, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
- import { ngDocZoneOptimize } from '@ng-doc/ui-kit/observables';
5
4
  import { fromEvent, merge } from 'rxjs';
6
5
  import { tap, map, pairwise, switchMap, takeUntil, take, filter, debounceTime } from 'rxjs/operators';
7
6
 
7
+ /** Marks the content in front of an `ng-doc-pane` (the right side). */
8
8
  class NgDocPaneFrontDirective {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: NgDocPaneFrontDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.6", type: NgDocPaneFrontDirective, isStandalone: true, selector: "[ngDocPaneFront]", ngImport: i0 }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocPaneFrontDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.2.1", type: NgDocPaneFrontDirective, isStandalone: true, selector: "[ngDocPaneFront]", ngImport: i0 }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: NgDocPaneFrontDirective, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocPaneFrontDirective, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: '[ngDocPaneFront]',
16
- standalone: true,
17
16
  }]
18
17
  }] });
18
+ /** Marks the content behind an `ng-doc-pane` (the left side, revealed by dragging). */
19
19
  class NgDocPaneBackDirective {
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: NgDocPaneBackDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
21
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.6", type: NgDocPaneBackDirective, isStandalone: true, selector: "[ngDocPaneBack]", ngImport: i0 }); }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocPaneBackDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
21
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.2.1", type: NgDocPaneBackDirective, isStandalone: true, selector: "[ngDocPaneBack]", ngImport: i0 }); }
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: NgDocPaneBackDirective, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocPaneBackDirective, decorators: [{
24
24
  type: Directive,
25
25
  args: [{
26
26
  selector: '[ngDocPaneBack]',
27
- standalone: true,
28
27
  }]
29
28
  }] });
29
+ /** The share of the pane a keyboard step moves the resizer by. */
30
+ const KEYBOARD_STEP = 0.1;
31
+ /**
32
+ * Two panes side by side with a resizer between them. Drag the resizer, click it or use the
33
+ * arrow keys on it to reveal the back pane; Enter or Space toggles it.
34
+ */
30
35
  class NgDocPaneComponent {
31
36
  constructor() {
32
37
  this.document = inject(DOCUMENT);
33
- this.changeDetectorRef = inject(ChangeDetectorRef);
34
38
  this.elementRef = inject(ElementRef);
35
39
  this.ngZone = inject(NgZone);
36
- this.expanded = false;
37
- this.width = '0%';
38
- this.dragging = false;
40
+ /** Whether the back pane is revealed. */
41
+ this.expanded = input(false, /* @ts-ignore */
42
+ ...(ngDevMode ? [{ debugName: "expanded" }] : /* istanbul ignore next */ []));
43
+ /** The resizer between the panes. */
44
+ this.resizer = viewChild.required('resizer', /* @ts-ignore */
45
+ ...(ngDevMode ? [{ debugName: "resizer" }] : /* istanbul ignore next */ []));
46
+ /** Width of the back pane, as a CSS length. */
47
+ this.width = signal('0px', /* @ts-ignore */
48
+ ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
49
+ /** Share of the pane the back pane takes, in percent, for assistive technology. */
50
+ this.valueNow = signal(0, /* @ts-ignore */
51
+ ...(ngDevMode ? [{ debugName: "valueNow" }] : /* istanbul ignore next */ []));
52
+ /** Whether the resizer is being dragged. */
53
+ this.dragging = signal(false, /* @ts-ignore */
54
+ ...(ngDevMode ? [{ debugName: "dragging" }] : /* istanbul ignore next */ []));
39
55
  const destroyRef = inject(DestroyRef);
40
- afterNextRender(() => {
41
- if (this.resizer) {
42
- const mouseDown$ = fromEvent(this.resizer.nativeElement, 'mousedown').pipe(tap(() => {
43
- this.dragging = true;
44
- this.changeDetectorRef.markForCheck();
45
- }));
46
- const mouseUp$ = fromEvent(this.document, 'mouseup').pipe(tap(() => {
47
- this.dragging = false;
48
- this.changeDetectorRef.markForCheck();
49
- }));
50
- const mouseMove$ = fromEvent(this.document, 'mousemove').pipe(map((event) => event.clientX), pairwise(), map(([prev, next]) => next - prev));
51
- mouseDown$
52
- .pipe(switchMap(() => {
53
- const dragEvent$ = mouseMove$.pipe(takeUntil(mouseUp$));
54
- const clickEvent$ = mouseUp$.pipe(map(() => null), takeUntil(mouseMove$), take(1));
55
- return merge(dragEvent$, clickEvent$);
56
- }), filter((delta) => delta !== 0), ngDocZoneOptimize(this.ngZone), takeUntilDestroyed(destroyRef))
57
- .subscribe((delta) => {
58
- delta === null ? this.toggle() : this.addDelta(delta);
56
+ // Opens or closes the back pane when `expanded` changes; it measures, so it runs after render.
57
+ afterRenderEffect({
58
+ write: () => {
59
+ const expanded = this.expanded();
60
+ untracked(() => {
61
+ const width = this.elementRef.nativeElement.offsetWidth;
62
+ this.addDelta(expanded ? width : -width);
59
63
  });
60
- }
61
- fromEvent(window, 'resize')
62
- .pipe(debounceTime(100), ngDocZoneOptimize(this.ngZone), takeUntilDestroyed(destroyRef))
64
+ },
65
+ });
66
+ // Pointer and resize events arrive often; they are handled outside the Angular zone, and the
67
+ // signals they write schedule the render.
68
+ afterNextRender(() => this.ngZone.runOutsideAngular(() => {
69
+ const resizer = this.resizer().nativeElement;
70
+ const mouseDown$ = fromEvent(resizer, 'mousedown').pipe(tap(() => this.dragging.set(true)));
71
+ const mouseUp$ = fromEvent(this.document, 'mouseup').pipe(tap(() => this.dragging.set(false)));
72
+ const mouseMove$ = fromEvent(this.document, 'mousemove').pipe(map((event) => event.clientX), pairwise(), map(([prev, next]) => next - prev));
73
+ mouseDown$
74
+ .pipe(switchMap(() => merge(mouseMove$.pipe(takeUntil(mouseUp$)), mouseUp$.pipe(map(() => null), takeUntil(mouseMove$), take(1)))), filter((delta) => delta !== 0), takeUntilDestroyed(destroyRef))
75
+ .subscribe((delta) => delta === null ? this.toggle() : this.addDelta(delta));
76
+ fromEvent(this.document.defaultView ?? window, 'resize')
77
+ .pipe(debounceTime(100), takeUntilDestroyed(destroyRef))
63
78
  .subscribe(() => this.addDelta(0));
79
+ }));
80
+ }
81
+ /** Reveals the back pane when it is mostly hidden, and hides it otherwise. */
82
+ toggle() {
83
+ untracked(() => {
84
+ const width = this.elementRef.nativeElement.offsetWidth;
85
+ this.addDelta(this.resizer().nativeElement.offsetLeft < width / 2 ? width : -width);
64
86
  });
65
- this.addDelta(0);
66
87
  }
67
- ngOnChanges({ expanded }) {
68
- if (expanded) {
69
- expanded.currentValue
70
- ? this.addDelta(this.elementRef.nativeElement.offsetWidth)
71
- : this.addDelta(-this.elementRef.nativeElement.offsetWidth);
88
+ /**
89
+ * Moves the resizer with the keyboard.
90
+ * @param event - The key press on the resizer.
91
+ */
92
+ onKeydown(event) {
93
+ const step = this.elementRef.nativeElement.offsetWidth * KEYBOARD_STEP;
94
+ const width = this.elementRef.nativeElement.offsetWidth;
95
+ const delta = {
96
+ ArrowRight: step,
97
+ ArrowLeft: -step,
98
+ Home: -width,
99
+ End: width,
100
+ }[event.key];
101
+ if (delta !== undefined) {
102
+ event.preventDefault();
103
+ this.addDelta(delta);
72
104
  }
73
- }
74
- toggle() {
75
- if (this.resizer) {
76
- const middle = this.elementRef.nativeElement.offsetWidth / 2;
77
- if (this.resizer.nativeElement.offsetLeft < middle) {
78
- this.addDelta(this.elementRef.nativeElement.offsetWidth);
79
- }
80
- else {
81
- this.addDelta(-this.elementRef.nativeElement.offsetWidth);
82
- }
105
+ else if (event.key === 'Enter' || event.key === ' ') {
106
+ event.preventDefault();
107
+ this.toggle();
83
108
  }
84
109
  }
85
110
  addDelta(delta) {
86
- if (this.resizer) {
87
- const maxWidth = this.elementRef.nativeElement.offsetWidth - this.resizer.nativeElement.offsetWidth;
88
- this.width = `${Math.min(maxWidth, Math.max(0, this.resizer.nativeElement.offsetLeft + delta))}px`;
89
- this.changeDetectorRef.detectChanges();
111
+ const host = this.elementRef.nativeElement;
112
+ const resizer = this.resizer()?.nativeElement;
113
+ if (resizer) {
114
+ const maxWidth = host.offsetWidth - resizer.offsetWidth;
115
+ const width = Math.min(maxWidth, Math.max(0, resizer.offsetLeft + delta));
116
+ this.width.set(`${width}px`);
117
+ this.valueNow.set(maxWidth > 0 ? Math.round((width / maxWidth) * 100) : 0);
90
118
  }
91
119
  }
92
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: NgDocPaneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: NgDocPaneComponent, isStandalone: true, selector: "ng-doc-pane", inputs: { expanded: "expanded" }, host: { properties: { "attr.data-ng-doc-dragging": "this.dragging" } }, viewQueries: [{ propertyName: "resizer", first: true, predicate: ["resizer"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"ng-doc-pane-back\" [style.width]=\"width\">\n\t<div class=\"ng-doc-pane-content\">\n\t\t<ng-content select=\"[ngDocPaneBack]\"></ng-content>\n\t</div>\n</div>\n<div class=\"ng-doc-pane-resizer\" #resizer></div>\n<div class=\"ng-doc-pane-front\">\n\t<div class=\"ng-doc-pane-content\">\n\t\t<ng-content select=\"[ngDocPaneFront]\"></ng-content>\n\t</div>\n</div>\n", styles: [":host{position:relative;display:flex;width:100%;border-radius:var(--ng-doc-pane-border-radius, var(--ng-doc-base-gutter));border:var(--ng-doc-pane-border, 1px solid var(--ng-doc-border-color));overflow:hidden}:host[data-ng-doc-dragging=false] .ng-doc-pane-back{transition:var(--ng-doc-transition) width}:host .ng-doc-pane-front{position:relative;display:flex;width:100%;background-color:var(--ng-doc-pane-front-background, var(--ng-doc-pane-background, var(--ng-doc-base-1)));overflow:hidden;border-top-right-radius:var(--ng-doc-base-gutter);border-bottom-right-radius:var(--ng-doc-base-gutter);border:var(--ng-doc-pane-front-border, var(--ng-doc-pane-border))}:host .ng-doc-pane-back{position:relative;display:flex;flex-shrink:0;width:100%;background-color:var(--ng-doc-pane-back-background, var(--ng-doc-pane-background, var(--ng-doc-base-1)));overflow:hidden;border-top-left-radius:var(--ng-doc-base-gutter);border-bottom-left-radius:var(--ng-doc-base-gutter);border:var(--ng-doc-pane-back-border, var(--ng-doc-pane-border))}:host .ng-doc-pane-resizer{position:relative;flex-shrink:0;transform:translateZ(0);background-color:var(--ng-doc-base-3);width:16px;display:block;cursor:ew-resize}:host .ng-doc-pane-resizer:after{content:\"\";display:flex;background:var(--ng-doc-base-10);border-radius:50px;position:absolute;width:4px;height:20%;top:50%;left:50%;transform:translateY(-50%) translate(-50%);opacity:1;transition:var(--ng-doc-transition) height}:host .ng-doc-pane-content{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:100%;height:100%;min-width:var(--ng-doc-pane-content-min-width, 200px)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocPaneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.2.1", type: NgDocPaneComponent, isStandalone: true, selector: "ng-doc-pane", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-ng-doc-dragging": "dragging()" } }, viewQueries: [{ propertyName: "resizer", first: true, predicate: ["resizer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ng-doc-pane-back\" [style.width]=\"width()\">\n <div class=\"ng-doc-pane-content\">\n <ng-content select=\"[ngDocPaneBack]\"></ng-content>\n </div>\n</div>\n<div\n class=\"ng-doc-pane-resizer\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize the panes\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"valueNow()\"\n tabindex=\"0\"\n (keydown)=\"onKeydown($event)\"\n #resizer></div>\n<div class=\"ng-doc-pane-front\">\n <div class=\"ng-doc-pane-content\">\n <ng-content select=\"[ngDocPaneFront]\"></ng-content>\n </div>\n</div>\n", styles: [":host{position:relative;display:flex;width:100%;border-radius:var(--ng-doc-pane-border-radius, var(--ng-doc-base-gutter));border:var(--ng-doc-pane-border, 1px solid var(--ng-doc-border-color));overflow:hidden}:host[data-ng-doc-dragging=false] .ng-doc-pane-back{transition:var(--ng-doc-transition) width}:host .ng-doc-pane-front{position:relative;display:flex;width:100%;background-color:var(--ng-doc-pane-front-background, var(--ng-doc-pane-background, var(--ng-doc-base-1)));overflow:hidden;border-top-right-radius:var(--ng-doc-base-gutter);border-bottom-right-radius:var(--ng-doc-base-gutter);border:var(--ng-doc-pane-front-border, var(--ng-doc-pane-border))}:host .ng-doc-pane-back{position:relative;display:flex;flex-shrink:0;width:100%;background-color:var(--ng-doc-pane-back-background, var(--ng-doc-pane-background, var(--ng-doc-base-1)));overflow:hidden;border-top-left-radius:var(--ng-doc-base-gutter);border-bottom-left-radius:var(--ng-doc-base-gutter);border:var(--ng-doc-pane-back-border, var(--ng-doc-pane-border))}:host .ng-doc-pane-resizer{position:relative;flex-shrink:0;transform:translateZ(0);background-color:var(--ng-doc-base-3);width:16px;display:block;cursor:ew-resize}:host .ng-doc-pane-resizer:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--ng-doc-focus-ring-color)}:host .ng-doc-pane-resizer:after{content:\"\";display:flex;background:var(--ng-doc-base-10);border-radius:50px;position:absolute;width:4px;height:20%;top:50%;left:50%;transform:translateY(-50%) translate(-50%);opacity:1;transition:var(--ng-doc-transition) height}:host .ng-doc-pane-content{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:100%;height:100%;min-width:var(--ng-doc-pane-content-min-width, 200px)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
94
122
  }
95
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: NgDocPaneComponent, decorators: [{
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocPaneComponent, decorators: [{
96
124
  type: Component,
97
- args: [{ selector: 'ng-doc-pane', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"ng-doc-pane-back\" [style.width]=\"width\">\n\t<div class=\"ng-doc-pane-content\">\n\t\t<ng-content select=\"[ngDocPaneBack]\"></ng-content>\n\t</div>\n</div>\n<div class=\"ng-doc-pane-resizer\" #resizer></div>\n<div class=\"ng-doc-pane-front\">\n\t<div class=\"ng-doc-pane-content\">\n\t\t<ng-content select=\"[ngDocPaneFront]\"></ng-content>\n\t</div>\n</div>\n", styles: [":host{position:relative;display:flex;width:100%;border-radius:var(--ng-doc-pane-border-radius, var(--ng-doc-base-gutter));border:var(--ng-doc-pane-border, 1px solid var(--ng-doc-border-color));overflow:hidden}:host[data-ng-doc-dragging=false] .ng-doc-pane-back{transition:var(--ng-doc-transition) width}:host .ng-doc-pane-front{position:relative;display:flex;width:100%;background-color:var(--ng-doc-pane-front-background, var(--ng-doc-pane-background, var(--ng-doc-base-1)));overflow:hidden;border-top-right-radius:var(--ng-doc-base-gutter);border-bottom-right-radius:var(--ng-doc-base-gutter);border:var(--ng-doc-pane-front-border, var(--ng-doc-pane-border))}:host .ng-doc-pane-back{position:relative;display:flex;flex-shrink:0;width:100%;background-color:var(--ng-doc-pane-back-background, var(--ng-doc-pane-background, var(--ng-doc-base-1)));overflow:hidden;border-top-left-radius:var(--ng-doc-base-gutter);border-bottom-left-radius:var(--ng-doc-base-gutter);border:var(--ng-doc-pane-back-border, var(--ng-doc-pane-border))}:host .ng-doc-pane-resizer{position:relative;flex-shrink:0;transform:translateZ(0);background-color:var(--ng-doc-base-3);width:16px;display:block;cursor:ew-resize}:host .ng-doc-pane-resizer:after{content:\"\";display:flex;background:var(--ng-doc-base-10);border-radius:50px;position:absolute;width:4px;height:20%;top:50%;left:50%;transform:translateY(-50%) translate(-50%);opacity:1;transition:var(--ng-doc-transition) height}:host .ng-doc-pane-content{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:100%;height:100%;min-width:var(--ng-doc-pane-content-min-width, 200px)}\n"] }]
98
- }], ctorParameters: () => [], propDecorators: { expanded: [{
99
- type: Input
100
- }], resizer: [{
101
- type: ViewChild,
102
- args: ['resizer', { static: true }]
103
- }], dragging: [{
104
- type: HostBinding,
105
- args: ['attr.data-ng-doc-dragging']
106
- }] } });
125
+ args: [{ selector: 'ng-doc-pane', changeDetection: ChangeDetectionStrategy.OnPush, host: {
126
+ '[attr.data-ng-doc-dragging]': 'dragging()',
127
+ }, template: "<div class=\"ng-doc-pane-back\" [style.width]=\"width()\">\n <div class=\"ng-doc-pane-content\">\n <ng-content select=\"[ngDocPaneBack]\"></ng-content>\n </div>\n</div>\n<div\n class=\"ng-doc-pane-resizer\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize the panes\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"valueNow()\"\n tabindex=\"0\"\n (keydown)=\"onKeydown($event)\"\n #resizer></div>\n<div class=\"ng-doc-pane-front\">\n <div class=\"ng-doc-pane-content\">\n <ng-content select=\"[ngDocPaneFront]\"></ng-content>\n </div>\n</div>\n", styles: [":host{position:relative;display:flex;width:100%;border-radius:var(--ng-doc-pane-border-radius, var(--ng-doc-base-gutter));border:var(--ng-doc-pane-border, 1px solid var(--ng-doc-border-color));overflow:hidden}:host[data-ng-doc-dragging=false] .ng-doc-pane-back{transition:var(--ng-doc-transition) width}:host .ng-doc-pane-front{position:relative;display:flex;width:100%;background-color:var(--ng-doc-pane-front-background, var(--ng-doc-pane-background, var(--ng-doc-base-1)));overflow:hidden;border-top-right-radius:var(--ng-doc-base-gutter);border-bottom-right-radius:var(--ng-doc-base-gutter);border:var(--ng-doc-pane-front-border, var(--ng-doc-pane-border))}:host .ng-doc-pane-back{position:relative;display:flex;flex-shrink:0;width:100%;background-color:var(--ng-doc-pane-back-background, var(--ng-doc-pane-background, var(--ng-doc-base-1)));overflow:hidden;border-top-left-radius:var(--ng-doc-base-gutter);border-bottom-left-radius:var(--ng-doc-base-gutter);border:var(--ng-doc-pane-back-border, var(--ng-doc-pane-border))}:host .ng-doc-pane-resizer{position:relative;flex-shrink:0;transform:translateZ(0);background-color:var(--ng-doc-base-3);width:16px;display:block;cursor:ew-resize}:host .ng-doc-pane-resizer:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--ng-doc-focus-ring-color)}:host .ng-doc-pane-resizer:after{content:\"\";display:flex;background:var(--ng-doc-base-10);border-radius:50px;position:absolute;width:4px;height:20%;top:50%;left:50%;transform:translateY(-50%) translate(-50%);opacity:1;transition:var(--ng-doc-transition) height}:host .ng-doc-pane-content{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:100%;height:100%;min-width:var(--ng-doc-pane-content-min-width, 200px)}\n"] }]
128
+ }], ctorParameters: () => [], propDecorators: { expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }], resizer: [{ type: i0.ViewChild, args: ['resizer', { isSignal: true }] }] } });
107
129
 
108
130
  /**
109
131
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-ui-kit-components-pane.mjs","sources":["../../../../libs/ui-kit/components/pane/pane.component.ts","../../../../libs/ui-kit/components/pane/pane.component.html","../../../../libs/ui-kit/components/pane/ng-doc-ui-kit-components-pane.ts"],"sourcesContent":["import {\n afterNextRender,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n Directive,\n DOCUMENT,\n ElementRef,\n HostBinding,\n inject,\n Input,\n NgZone,\n OnChanges,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ngDocZoneOptimize } from '@ng-doc/ui-kit/observables';\nimport { fromEvent, merge, Observable } from 'rxjs';\nimport {\n debounceTime,\n filter,\n map,\n pairwise,\n switchMap,\n take,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\n@Directive({\n selector: '[ngDocPaneFront]',\n standalone: true,\n})\nexport class NgDocPaneFrontDirective {}\n\n@Directive({\n selector: '[ngDocPaneBack]',\n standalone: true,\n})\nexport class NgDocPaneBackDirective {}\n\n@Component({\n selector: 'ng-doc-pane',\n templateUrl: './pane.component.html',\n styleUrls: ['./pane.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class NgDocPaneComponent implements OnChanges {\n private readonly document = inject<Document>(DOCUMENT);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly ngZone = inject(NgZone);\n\n @Input()\n expanded: boolean = false;\n\n @ViewChild('resizer', { static: true })\n resizer?: ElementRef<HTMLElement>;\n\n width: string = '0%';\n\n @HostBinding('attr.data-ng-doc-dragging')\n dragging: boolean = false;\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n if (this.resizer) {\n const mouseDown$ = fromEvent(this.resizer.nativeElement, 'mousedown').pipe(\n tap(() => {\n this.dragging = true;\n this.changeDetectorRef.markForCheck();\n }),\n );\n\n const mouseUp$ = fromEvent(this.document, 'mouseup').pipe(\n tap(() => {\n this.dragging = false;\n this.changeDetectorRef.markForCheck();\n }),\n );\n\n const mouseMove$ = (fromEvent(this.document, 'mousemove') as Observable<MouseEvent>).pipe(\n map((event: MouseEvent) => event.clientX),\n pairwise(),\n map(([prev, next]: [number, number]) => next - prev),\n );\n\n mouseDown$\n .pipe(\n switchMap(() => {\n const dragEvent$ = mouseMove$.pipe(takeUntil(mouseUp$));\n\n const clickEvent$ = mouseUp$.pipe(\n map(() => null),\n takeUntil(mouseMove$),\n take(1),\n );\n\n return merge(dragEvent$, clickEvent$);\n }),\n filter((delta: number | null) => delta !== 0),\n ngDocZoneOptimize(this.ngZone),\n takeUntilDestroyed(destroyRef),\n )\n .subscribe((delta: number | null) => {\n delta === null ? this.toggle() : this.addDelta(delta);\n });\n }\n\n fromEvent(window, 'resize')\n .pipe(debounceTime(100), ngDocZoneOptimize(this.ngZone), takeUntilDestroyed(destroyRef))\n .subscribe(() => this.addDelta(0));\n });\n\n this.addDelta(0);\n }\n\n ngOnChanges({ expanded }: SimpleChanges): void {\n if (expanded) {\n expanded.currentValue\n ? this.addDelta(this.elementRef.nativeElement.offsetWidth)\n : this.addDelta(-this.elementRef.nativeElement.offsetWidth);\n }\n }\n\n toggle(): void {\n if (this.resizer) {\n const middle = this.elementRef.nativeElement.offsetWidth / 2;\n\n if (this.resizer.nativeElement.offsetLeft < middle) {\n this.addDelta(this.elementRef.nativeElement.offsetWidth);\n } else {\n this.addDelta(-this.elementRef.nativeElement.offsetWidth);\n }\n }\n }\n\n private addDelta(delta: number): void {\n if (this.resizer) {\n const maxWidth =\n this.elementRef.nativeElement.offsetWidth - this.resizer.nativeElement.offsetWidth;\n\n this.width = `${Math.min(\n maxWidth,\n Math.max(0, this.resizer.nativeElement.offsetLeft + delta),\n )}px`;\n\n this.changeDetectorRef.detectChanges();\n }\n }\n}\n","<div class=\"ng-doc-pane-back\" [style.width]=\"width\">\n\t<div class=\"ng-doc-pane-content\">\n\t\t<ng-content select=\"[ngDocPaneBack]\"></ng-content>\n\t</div>\n</div>\n<div class=\"ng-doc-pane-resizer\" #resizer></div>\n<div class=\"ng-doc-pane-front\">\n\t<div class=\"ng-doc-pane-content\">\n\t\t<ng-content select=\"[ngDocPaneFront]\"></ng-content>\n\t</div>\n</div>\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-doc-ui-kit-components-pane.mjs","sources":["../../../../libs/ui-kit/components/pane/pane.component.ts","../../../../libs/ui-kit/components/pane/pane.component.html","../../../../libs/ui-kit/components/pane/ng-doc-ui-kit-components-pane.ts"],"sourcesContent":["import {\n afterNextRender,\n afterRenderEffect,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Directive,\n DOCUMENT,\n ElementRef,\n inject,\n input,\n NgZone,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, merge, Observable } from 'rxjs';\nimport {\n debounceTime,\n filter,\n map,\n pairwise,\n switchMap,\n take,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\n/** Marks the content in front of an `ng-doc-pane` (the right side). */\n@Directive({\n selector: '[ngDocPaneFront]',\n})\nexport class NgDocPaneFrontDirective {}\n\n/** Marks the content behind an `ng-doc-pane` (the left side, revealed by dragging). */\n@Directive({\n selector: '[ngDocPaneBack]',\n})\nexport class NgDocPaneBackDirective {}\n\n/** The share of the pane a keyboard step moves the resizer by. */\nconst KEYBOARD_STEP = 0.1;\n\n/**\n * Two panes side by side with a resizer between them. Drag the resizer, click it or use the\n * arrow keys on it to reveal the back pane; Enter or Space toggles it.\n */\n@Component({\n selector: 'ng-doc-pane',\n templateUrl: './pane.component.html',\n styleUrls: ['./pane.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-ng-doc-dragging]': 'dragging()',\n },\n})\nexport class NgDocPaneComponent {\n private readonly document = inject<Document>(DOCUMENT);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly ngZone = inject(NgZone);\n\n /** Whether the back pane is revealed. */\n readonly expanded = input<boolean>(false);\n\n /** The resizer between the panes. */\n readonly resizer = viewChild.required<ElementRef<HTMLElement>>('resizer');\n\n /** Width of the back pane, as a CSS length. */\n readonly width = signal<string>('0px');\n\n /** Share of the pane the back pane takes, in percent, for assistive technology. */\n protected readonly valueNow = signal<number>(0);\n\n /** Whether the resizer is being dragged. */\n protected readonly dragging = signal<boolean>(false);\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n // Opens or closes the back pane when `expanded` changes; it measures, so it runs after render.\n afterRenderEffect({\n write: () => {\n const expanded: boolean = this.expanded();\n\n untracked(() => {\n const width: number = this.elementRef.nativeElement.offsetWidth;\n\n this.addDelta(expanded ? width : -width);\n });\n },\n });\n\n // Pointer and resize events arrive often; they are handled outside the Angular zone, and the\n // signals they write schedule the render.\n afterNextRender(() =>\n this.ngZone.runOutsideAngular(() => {\n const resizer: HTMLElement = this.resizer().nativeElement;\n const mouseDown$ = fromEvent(resizer, 'mousedown').pipe(tap(() => this.dragging.set(true)));\n const mouseUp$ = fromEvent(this.document, 'mouseup').pipe(\n tap(() => this.dragging.set(false)),\n );\n const mouseMove$ = (fromEvent(this.document, 'mousemove') as Observable<MouseEvent>).pipe(\n map((event: MouseEvent) => event.clientX),\n pairwise(),\n map(([prev, next]: [number, number]) => next - prev),\n );\n\n mouseDown$\n .pipe(\n switchMap(() =>\n merge(\n mouseMove$.pipe(takeUntil(mouseUp$)),\n mouseUp$.pipe(\n map(() => null),\n takeUntil(mouseMove$),\n take(1),\n ),\n ),\n ),\n filter((delta: number | null) => delta !== 0),\n takeUntilDestroyed(destroyRef),\n )\n .subscribe((delta: number | null) =>\n delta === null ? this.toggle() : this.addDelta(delta),\n );\n\n fromEvent(this.document.defaultView ?? window, 'resize')\n .pipe(debounceTime(100), takeUntilDestroyed(destroyRef))\n .subscribe(() => this.addDelta(0));\n }),\n );\n }\n\n /** Reveals the back pane when it is mostly hidden, and hides it otherwise. */\n toggle(): void {\n untracked(() => {\n const width: number = this.elementRef.nativeElement.offsetWidth;\n\n this.addDelta(this.resizer().nativeElement.offsetLeft < width / 2 ? width : -width);\n });\n }\n\n /**\n * Moves the resizer with the keyboard.\n * @param event - The key press on the resizer.\n */\n protected onKeydown(event: KeyboardEvent): void {\n const step: number = this.elementRef.nativeElement.offsetWidth * KEYBOARD_STEP;\n const width: number = this.elementRef.nativeElement.offsetWidth;\n const delta: number | undefined = {\n ArrowRight: step,\n ArrowLeft: -step,\n Home: -width,\n End: width,\n }[event.key];\n\n if (delta !== undefined) {\n event.preventDefault();\n this.addDelta(delta);\n } else if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.toggle();\n }\n }\n\n private addDelta(delta: number): void {\n const host: HTMLElement = this.elementRef.nativeElement;\n const resizer: HTMLElement | undefined = this.resizer()?.nativeElement;\n\n if (resizer) {\n const maxWidth: number = host.offsetWidth - resizer.offsetWidth;\n const width: number = Math.min(maxWidth, Math.max(0, resizer.offsetLeft + delta));\n\n this.width.set(`${width}px`);\n this.valueNow.set(maxWidth > 0 ? Math.round((width / maxWidth) * 100) : 0);\n }\n }\n}\n","<div class=\"ng-doc-pane-back\" [style.width]=\"width()\">\n <div class=\"ng-doc-pane-content\">\n <ng-content select=\"[ngDocPaneBack]\"></ng-content>\n </div>\n</div>\n<div\n class=\"ng-doc-pane-resizer\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize the panes\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"valueNow()\"\n tabindex=\"0\"\n (keydown)=\"onKeydown($event)\"\n #resizer></div>\n<div class=\"ng-doc-pane-front\">\n <div class=\"ng-doc-pane-content\">\n <ng-content select=\"[ngDocPaneFront]\"></ng-content>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}