@ojiepermana/angular 22.1.13 → 22.2.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 (252) hide show
  1. package/README.md +8 -6
  2. package/SUPPORT.md +3 -3
  3. package/chart/README.md +1 -1
  4. package/component/README.md +2 -2
  5. package/component/calendar/README.md +3 -15
  6. package/component/drawer/README.md +1 -2
  7. package/fesm2022/ojiepermana-angular-chart-area.mjs +352 -137
  8. package/fesm2022/ojiepermana-angular-chart-bar.mjs +744 -524
  9. package/fesm2022/ojiepermana-angular-chart-core.mjs +1140 -1344
  10. package/fesm2022/ojiepermana-angular-chart-line.mjs +393 -147
  11. package/fesm2022/ojiepermana-angular-chart-pie.mjs +408 -179
  12. package/fesm2022/ojiepermana-angular-chart-primitives.mjs +1262 -920
  13. package/fesm2022/ojiepermana-angular-chart-radar.mjs +473 -205
  14. package/fesm2022/ojiepermana-angular-chart-radial.mjs +425 -182
  15. package/fesm2022/ojiepermana-angular-chart-scatter.mjs +386 -210
  16. package/fesm2022/ojiepermana-angular-chart.mjs +3 -19
  17. package/fesm2022/ojiepermana-angular-component-accordion.mjs +485 -243
  18. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +963 -325
  19. package/fesm2022/ojiepermana-angular-component-alert.mjs +266 -103
  20. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +80 -35
  21. package/fesm2022/ojiepermana-angular-component-avatar.mjs +402 -135
  22. package/fesm2022/ojiepermana-angular-component-badge.mjs +109 -59
  23. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +410 -142
  24. package/fesm2022/ojiepermana-angular-component-button-group.mjs +249 -96
  25. package/fesm2022/ojiepermana-angular-component-button.mjs +153 -75
  26. package/fesm2022/ojiepermana-angular-component-calendar.mjs +531 -418
  27. package/fesm2022/ojiepermana-angular-component-card.mjs +457 -171
  28. package/fesm2022/ojiepermana-angular-component-carousel.mjs +642 -272
  29. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +312 -108
  30. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +299 -115
  31. package/fesm2022/ojiepermana-angular-component-combobox.mjs +396 -183
  32. package/fesm2022/ojiepermana-angular-component-command.mjs +807 -347
  33. package/fesm2022/ojiepermana-angular-component-composer.mjs +807 -330
  34. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +196 -161
  35. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +650 -338
  36. package/fesm2022/ojiepermana-angular-component-dialog.mjs +710 -316
  37. package/fesm2022/ojiepermana-angular-component-drawer.mjs +2 -5
  38. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +1212 -646
  39. package/fesm2022/ojiepermana-angular-component-editor.mjs +987 -502
  40. package/fesm2022/ojiepermana-angular-component-empty.mjs +350 -137
  41. package/fesm2022/ojiepermana-angular-component-form.mjs +813 -434
  42. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +486 -277
  43. package/fesm2022/ojiepermana-angular-component-icon.mjs +241 -140
  44. package/fesm2022/ojiepermana-angular-component-input-group.mjs +449 -176
  45. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +891 -488
  46. package/fesm2022/ojiepermana-angular-component-input.mjs +86 -55
  47. package/fesm2022/ojiepermana-angular-component-item.mjs +713 -261
  48. package/fesm2022/ojiepermana-angular-component-kanban.mjs +714 -216
  49. package/fesm2022/ojiepermana-angular-component-kbd.mjs +124 -52
  50. package/fesm2022/ojiepermana-angular-component-label.mjs +82 -31
  51. package/fesm2022/ojiepermana-angular-component-menubar.mjs +479 -329
  52. package/fesm2022/ojiepermana-angular-component-native-select.mjs +167 -65
  53. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +683 -380
  54. package/fesm2022/ojiepermana-angular-component-pagination.mjs +277 -94
  55. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +1283 -607
  56. package/fesm2022/ojiepermana-angular-component-popover.mjs +291 -204
  57. package/fesm2022/ojiepermana-angular-component-progress.mjs +176 -53
  58. package/fesm2022/ojiepermana-angular-component-radio.mjs +449 -142
  59. package/fesm2022/ojiepermana-angular-component-resizable.mjs +659 -453
  60. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +117 -39
  61. package/fesm2022/ojiepermana-angular-component-segmented-control.mjs +351 -172
  62. package/fesm2022/ojiepermana-angular-component-select.mjs +475 -345
  63. package/fesm2022/ojiepermana-angular-component-separator.mjs +102 -35
  64. package/fesm2022/ojiepermana-angular-component-sheet.mjs +797 -347
  65. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +62 -29
  66. package/fesm2022/ojiepermana-angular-component-slider.mjs +592 -376
  67. package/fesm2022/ojiepermana-angular-component-spinner.mjs +135 -38
  68. package/fesm2022/ojiepermana-angular-component-switch.mjs +315 -103
  69. package/fesm2022/ojiepermana-angular-component-table.mjs +440 -153
  70. package/fesm2022/ojiepermana-angular-component-tabs.mjs +590 -317
  71. package/fesm2022/ojiepermana-angular-component-textarea.mjs +85 -50
  72. package/fesm2022/ojiepermana-angular-component-timeline.mjs +609 -231
  73. package/fesm2022/ojiepermana-angular-component-toast.mjs +229 -243
  74. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +573 -288
  75. package/fesm2022/ojiepermana-angular-component-toggle.mjs +187 -78
  76. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +798 -517
  77. package/fesm2022/ojiepermana-angular-component-utils-core.mjs +159 -292
  78. package/fesm2022/ojiepermana-angular-component-utils-overlay.mjs +46 -58
  79. package/fesm2022/ojiepermana-angular-component-utils-scale.mjs +76 -38
  80. package/fesm2022/ojiepermana-angular-component-utils.mjs +2 -8
  81. package/fesm2022/ojiepermana-angular-component.mjs +0 -10
  82. package/fesm2022/ojiepermana-angular-navigation-core.mjs +13 -23
  83. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +35 -24
  84. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-BKCeWzml.mjs +129 -0
  85. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-DFEJK2jD.mjs +811 -0
  86. package/fesm2022/{ojiepermana-angular-navigation-navigation-entry-grid.component-Cd-jh6tg.mjs → ojiepermana-angular-navigation-navigation-entry-grid.component-mpK9Ar08.mjs} +387 -183
  87. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-BPgH7FJk.mjs +650 -0
  88. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-DMpYcD9t.mjs +662 -0
  89. package/fesm2022/ojiepermana-angular-navigation-navigation-item.component-Basp5SIk.mjs +1228 -0
  90. package/fesm2022/ojiepermana-angular-navigation-navigation-list.component-YUzHI9Pj.mjs +311 -0
  91. package/fesm2022/ojiepermana-angular-navigation-service.mjs +542 -724
  92. package/fesm2022/ojiepermana-angular-navigation-types.mjs +27 -56
  93. package/fesm2022/ojiepermana-angular-navigation.mjs +3052 -4
  94. package/fesm2022/ojiepermana-angular-sdk.mjs +91 -201
  95. package/fesm2022/ojiepermana-angular-theme-component-settings.mjs +1115 -737
  96. package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +245 -328
  97. package/fesm2022/ojiepermana-angular-theme-layout-types.mjs +35 -38
  98. package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +1719 -552
  99. package/fesm2022/ojiepermana-angular-theme-layout.mjs +847 -491
  100. package/fesm2022/ojiepermana-angular-theme-page-core.mjs +288 -358
  101. package/fesm2022/ojiepermana-angular-theme-page-filter.mjs +362 -224
  102. package/fesm2022/ojiepermana-angular-theme-page-overview.mjs +88 -0
  103. package/fesm2022/ojiepermana-angular-theme-page-root.mjs +576 -254
  104. package/fesm2022/ojiepermana-angular-theme-page-side.mjs +317 -177
  105. package/fesm2022/ojiepermana-angular-theme-page-slots.mjs +256 -112
  106. package/fesm2022/ojiepermana-angular-theme-page.mjs +7 -12
  107. package/fesm2022/ojiepermana-angular-theme-shell-services.mjs +215 -326
  108. package/fesm2022/ojiepermana-angular-theme-shell-types.mjs +68 -129
  109. package/fesm2022/ojiepermana-angular-theme-shell.mjs +907 -378
  110. package/fesm2022/ojiepermana-angular-theme-styles.mjs +521 -720
  111. package/fesm2022/ojiepermana-angular-theme.mjs +0 -10
  112. package/fesm2022/ojiepermana-angular.mjs +5 -24
  113. package/navigation/README.md +1 -1
  114. package/package.json +16 -12
  115. package/sdk/README.md +1 -1
  116. package/sdk/src/writer/index.js +2 -2
  117. package/theme/README.md +1 -1
  118. package/theme/layout/README.md +2 -4
  119. package/theme/page/README.md +50 -0
  120. package/theme/styles/README.md +10 -10
  121. package/theme/styles/css/base/prefers-dark.css +1 -1
  122. package/theme/styles/css/base/status.css +1 -1
  123. package/theme/styles/css/color/amber.css +1 -1
  124. package/theme/styles/css/color/blue.css +1 -1
  125. package/theme/styles/css/color/cyan.css +1 -1
  126. package/theme/styles/css/color/emerald.css +1 -1
  127. package/theme/styles/css/color/fuchsia.css +1 -1
  128. package/theme/styles/css/color/green.css +1 -1
  129. package/theme/styles/css/color/indigo.css +1 -1
  130. package/theme/styles/css/color/lime.css +1 -1
  131. package/theme/styles/css/color/orange.css +1 -1
  132. package/theme/styles/css/color/pink.css +1 -1
  133. package/theme/styles/css/color/purple.css +1 -1
  134. package/theme/styles/css/color/red.css +1 -1
  135. package/theme/styles/css/color/rose.css +1 -1
  136. package/theme/styles/css/color/sky.css +1 -1
  137. package/theme/styles/css/color/teal.css +1 -1
  138. package/theme/styles/css/color/violet.css +1 -1
  139. package/theme/styles/css/color/yellow.css +1 -1
  140. package/theme/styles/css/neutral/gray.css +1 -1
  141. package/theme/styles/css/neutral/mauve.css +1 -1
  142. package/theme/styles/css/neutral/mist.css +1 -1
  143. package/theme/styles/css/neutral/neutral.css +1 -1
  144. package/theme/styles/css/neutral/olive.css +1 -1
  145. package/theme/styles/css/neutral/slate.css +1 -1
  146. package/theme/styles/css/neutral/stone.css +1 -1
  147. package/theme/styles/css/neutral/taupe.css +1 -1
  148. package/theme/styles/css/neutral/zinc.css +1 -1
  149. package/types/ojiepermana-angular-chart-area.d.ts +126 -63
  150. package/types/ojiepermana-angular-chart-bar.d.ts +244 -154
  151. package/types/ojiepermana-angular-chart-core.d.ts +409 -398
  152. package/types/ojiepermana-angular-chart-line.d.ts +141 -68
  153. package/types/ojiepermana-angular-chart-pie.d.ts +192 -121
  154. package/types/ojiepermana-angular-chart-primitives.d.ts +283 -214
  155. package/types/ojiepermana-angular-chart-radar.d.ts +189 -108
  156. package/types/ojiepermana-angular-chart-radial.d.ts +177 -106
  157. package/types/ojiepermana-angular-chart-scatter.d.ts +166 -110
  158. package/types/ojiepermana-angular-chart.d.ts +3 -2
  159. package/types/ojiepermana-angular-component-accordion.d.ts +135 -81
  160. package/types/ojiepermana-angular-component-alert-dialog.d.ts +271 -123
  161. package/types/ojiepermana-angular-component-alert.d.ts +69 -39
  162. package/types/ojiepermana-angular-component-aspect-ratio.d.ts +20 -12
  163. package/types/ojiepermana-angular-component-avatar.d.ts +103 -49
  164. package/types/ojiepermana-angular-component-badge.d.ts +36 -24
  165. package/types/ojiepermana-angular-component-breadcrumb.d.ts +79 -40
  166. package/types/ojiepermana-angular-component-button-group.d.ts +48 -24
  167. package/types/ojiepermana-angular-component-button.d.ts +44 -27
  168. package/types/ojiepermana-angular-component-calendar.d.ts +145 -107
  169. package/types/ojiepermana-angular-component-card.d.ts +112 -63
  170. package/types/ojiepermana-angular-component-carousel.d.ts +150 -81
  171. package/types/ojiepermana-angular-component-checkbox.d.ts +96 -38
  172. package/types/ojiepermana-angular-component-collapsible.d.ts +65 -39
  173. package/types/ojiepermana-angular-component-combobox.d.ts +100 -55
  174. package/types/ojiepermana-angular-component-command.d.ts +206 -121
  175. package/types/ojiepermana-angular-component-composer.d.ts +184 -84
  176. package/types/ojiepermana-angular-component-context-menu.d.ts +51 -41
  177. package/types/ojiepermana-angular-component-date-picker.d.ts +199 -109
  178. package/types/ojiepermana-angular-component-dialog.d.ts +200 -105
  179. package/types/ojiepermana-angular-component-drawer.d.ts +2 -1
  180. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +324 -202
  181. package/types/ojiepermana-angular-component-editor.d.ts +215 -117
  182. package/types/ojiepermana-angular-component-empty.d.ts +80 -45
  183. package/types/ojiepermana-angular-component-form.d.ts +185 -121
  184. package/types/ojiepermana-angular-component-hover-card.d.ts +130 -72
  185. package/types/ojiepermana-angular-component-icon.d.ts +87 -57
  186. package/types/ojiepermana-angular-component-input-group.d.ts +93 -46
  187. package/types/ojiepermana-angular-component-input-otp.d.ts +243 -150
  188. package/types/ojiepermana-angular-component-input.d.ts +27 -17
  189. package/types/ojiepermana-angular-component-item.d.ts +160 -84
  190. package/types/ojiepermana-angular-component-kanban.d.ts +157 -62
  191. package/types/ojiepermana-angular-component-kbd.d.ts +24 -15
  192. package/types/ojiepermana-angular-component-label.d.ts +19 -11
  193. package/types/ojiepermana-angular-component-menubar.d.ts +120 -90
  194. package/types/ojiepermana-angular-component-native-select.d.ts +37 -24
  195. package/types/ojiepermana-angular-component-navigation-menu.d.ts +157 -98
  196. package/types/ojiepermana-angular-component-pagination.d.ts +78 -28
  197. package/types/ojiepermana-angular-component-pillbox.d.ts +361 -204
  198. package/types/ojiepermana-angular-component-popover.d.ts +94 -64
  199. package/types/ojiepermana-angular-component-progress.d.ts +45 -17
  200. package/types/ojiepermana-angular-component-radio.d.ts +129 -53
  201. package/types/ojiepermana-angular-component-resizable.d.ts +160 -112
  202. package/types/ojiepermana-angular-component-scroll-area.d.ts +33 -15
  203. package/types/ojiepermana-angular-component-segmented-control.d.ts +94 -50
  204. package/types/ojiepermana-angular-component-select.d.ts +94 -77
  205. package/types/ojiepermana-angular-component-separator.d.ts +26 -14
  206. package/types/ojiepermana-angular-component-sheet.d.ts +226 -116
  207. package/types/ojiepermana-angular-component-skeleton.d.ts +13 -10
  208. package/types/ojiepermana-angular-component-slider.d.ts +140 -75
  209. package/types/ojiepermana-angular-component-spinner.d.ts +31 -13
  210. package/types/ojiepermana-angular-component-switch.d.ts +97 -40
  211. package/types/ojiepermana-angular-component-table.d.ts +102 -50
  212. package/types/ojiepermana-angular-component-tabs.d.ts +174 -115
  213. package/types/ojiepermana-angular-component-textarea.d.ts +27 -17
  214. package/types/ojiepermana-angular-component-timeline.d.ts +141 -59
  215. package/types/ojiepermana-angular-component-toast.d.ts +51 -55
  216. package/types/ojiepermana-angular-component-toggle-group.d.ts +159 -88
  217. package/types/ojiepermana-angular-component-toggle.d.ts +47 -25
  218. package/types/ojiepermana-angular-component-tooltip.d.ts +222 -132
  219. package/types/ojiepermana-angular-component-utils-core.d.ts +81 -90
  220. package/types/ojiepermana-angular-component-utils-overlay.d.ts +7 -11
  221. package/types/ojiepermana-angular-component-utils-scale.d.ts +20 -12
  222. package/types/ojiepermana-angular-component-utils.d.ts +2 -2
  223. package/types/ojiepermana-angular-component.d.ts +1 -2
  224. package/types/ojiepermana-angular-navigation-core.d.ts +46 -50
  225. package/types/ojiepermana-angular-navigation-icon.d.ts +9 -12
  226. package/types/ojiepermana-angular-navigation-service.d.ts +112 -115
  227. package/types/ojiepermana-angular-navigation-types.d.ts +121 -125
  228. package/types/ojiepermana-angular-navigation.d.ts +663 -374
  229. package/types/ojiepermana-angular-sdk.d.ts +69 -71
  230. package/types/ojiepermana-angular-theme-component-settings.d.ts +115 -83
  231. package/types/ojiepermana-angular-theme-layout-services.d.ts +119 -124
  232. package/types/ojiepermana-angular-theme-layout-types.d.ts +27 -31
  233. package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +399 -187
  234. package/types/ojiepermana-angular-theme-layout.d.ts +201 -112
  235. package/types/ojiepermana-angular-theme-page-core.d.ts +136 -142
  236. package/types/ojiepermana-angular-theme-page-filter.d.ts +112 -62
  237. package/types/ojiepermana-angular-theme-page-overview.d.ts +28 -0
  238. package/types/ojiepermana-angular-theme-page-root.d.ts +172 -88
  239. package/types/ojiepermana-angular-theme-page-side.d.ts +89 -49
  240. package/types/ojiepermana-angular-theme-page-slots.d.ts +58 -37
  241. package/types/ojiepermana-angular-theme-page.d.ts +7 -5
  242. package/types/ojiepermana-angular-theme-shell-services.d.ts +119 -125
  243. package/types/ojiepermana-angular-theme-shell-types.d.ts +38 -41
  244. package/types/ojiepermana-angular-theme-shell.d.ts +139 -61
  245. package/types/ojiepermana-angular-theme-styles.d.ts +184 -196
  246. package/types/ojiepermana-angular-theme.d.ts +1 -2
  247. package/types/ojiepermana-angular.d.ts +5 -5
  248. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-CDBxQ8rk.mjs +0 -91
  249. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-DBQHdvGa.mjs +0 -512
  250. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-BCGvhoYj.mjs +0 -404
  251. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-Dk_03e-6.mjs +0 -466
  252. package/fesm2022/ojiepermana-angular-navigation-ojiepermana-angular-navigation-DNKU6viC.mjs +0 -2642
@@ -1,335 +1,252 @@
1
- import { isPlatformBrowser } from '@angular/common';
2
- import * as i0 from '@angular/core';
3
- import { inject, PLATFORM_ID, signal, computed, Service, DestroyRef } from '@angular/core';
4
- import { globalLocalStorage } from '@ojiepermana/angular/component/utils/core';
5
- import { LAYOUT_LOCKED_WIDTH, LAYOUT_SURFACE_STORAGE_KEY, isUiLayoutSurface, LAYOUT_TYPE_STORAGE_KEY, isUiLayoutType, LAYOUT_WIDTH_STORAGE_KEY, isUiLayoutWidth, LAYOUT_APPEARANCE_STORAGE_KEY, LAYOUT_DEFAULT_SURFACE, LAYOUT_DEFAULT_TYPE, LAYOUT_DEFAULT_APPEARANCE, LAYOUT_DEFAULT_WIDTH, isUiLayoutAppearance } from '@ojiepermana/angular/theme/layout/types';
6
- import { ShellService } from '@ojiepermana/angular/theme/shell/services';
7
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
8
- import { Router, NavigationStart, NavigationEnd, NavigationCancel, NavigationError, NavigationSkipped } from '@angular/router';
9
- import { HttpContextToken } from '@angular/common/http';
10
- import { finalize } from 'rxjs';
11
-
12
- class LayoutService {
13
- platformId = inject(PLATFORM_ID);
14
- storage = globalLocalStorage(isPlatformBrowser(this.platformId));
15
- shell = inject(ShellService);
16
- surfaceState = signal(this.getStoredSurface(), /* @ts-ignore */
17
- ...(ngDevMode ? [{ debugName: "surfaceState" }] : /* istanbul ignore next */ []));
18
- typeState = signal(this.getStoredType(), /* @ts-ignore */
19
- ...(ngDevMode ? [{ debugName: "typeState" }] : /* istanbul ignore next */ []));
20
- appearanceState = signal(this.getStoredAppearance(), /* @ts-ignore */
21
- ...(ngDevMode ? [{ debugName: "appearanceState" }] : /* istanbul ignore next */ []));
22
- widthState = signal(this.getStoredWidth(), /* @ts-ignore */
23
- ...(ngDevMode ? [{ debugName: "widthState" }] : /* istanbul ignore next */ []));
24
- surface = this.surfaceState.asReadonly();
25
- type = this.typeState.asReadonly();
26
- appearance = this.appearanceState.asReadonly();
27
- /**
28
- * `true` on every shell mode but `web`. An app that owns its whole surface has
29
- * no page to be inset within, so the width axis is not the user's to choose
30
- * there — see {@link LAYOUT_LOCKED_WIDTH}.
31
- */
32
- widthLocked = computed(() => this.shell.mode() !== 'web', /* @ts-ignore */
33
- ...(ngDevMode ? [{ debugName: "widthLocked" }] : /* istanbul ignore next */ []));
34
- /**
35
- * The width in effect. While `widthLocked()`, this reports the locked width and
36
- * `widthState` keeps the user's own choice aside, so returning to `web` restores
37
- * it instead of silently flattening it to `full`.
38
- */
39
- width = computed(() => this.widthLocked() ? LAYOUT_LOCKED_WIDTH : this.widthState(), /* @ts-ignore */
40
- ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
41
- /** The stored preference, ignoring the lock. */
42
- preferredWidth = this.widthState.asReadonly();
43
- /**
44
- * Seed several axes at once. See {@link registerSurface} for what "register"
45
- * means here — an omitted axis is left exactly as it was.
46
- */
47
- registerDefaults(defaults) {
48
- if (defaults.surface !== undefined) {
49
- this.registerSurface(defaults.surface);
50
- }
51
- if (defaults.appearance !== undefined) {
52
- this.registerAppearance(defaults.appearance);
53
- }
54
- if (defaults.type !== undefined) {
55
- this.registerType(defaults.type);
56
- }
57
- if (defaults.width !== undefined) {
58
- this.registerWidth(defaults.width);
59
- }
60
- return this;
61
- }
62
- /**
63
- * Seed the axis with a default, unless the user already stored a choice of
64
- * their own — that one always wins.
65
- *
66
- * Registering deliberately does NOT persist. Storage is the record of what the
67
- * USER picked, and writing a seeded default into it would make the two
68
- * indistinguishable: a bare `<Layout>` would record a library default nobody
69
- * asked for, and neither the library nor the consumer could ever change their
70
- * own default again for anyone who had merely rendered the component once.
71
- * Only {@link setSurface} and its siblings — the settings UI — write.
72
- */
73
- registerSurface(surface) {
74
- const storedSurface = this.storage.read(LAYOUT_SURFACE_STORAGE_KEY);
75
- const resolved = isUiLayoutSurface(storedSurface) ? storedSurface : surface;
76
- this.setSurface(resolved, { persist: false });
77
- }
78
- /** Seeds the axis without persisting — see {@link registerSurface}. */
79
- registerType(type) {
80
- const storedType = this.storage.read(LAYOUT_TYPE_STORAGE_KEY);
81
- const resolved = isUiLayoutType(storedType) ? storedType : type;
82
- this.setType(resolved, { persist: false });
83
- }
84
- /** Seeds the axis without persisting — see {@link registerSurface}. */
85
- registerAppearance(appearance) {
86
- this.setAppearance(this.getStoredAppearanceOrDefault(appearance), { persist: false });
87
- }
88
- /** Seeds the axis without persisting — see {@link registerSurface}. */
89
- registerWidth(width) {
90
- const storedWidth = this.storage.read(LAYOUT_WIDTH_STORAGE_KEY);
91
- const resolved = isUiLayoutWidth(storedWidth) ? storedWidth : width;
92
- this.setWidth(resolved, { persist: false });
93
- }
94
- setSurface(surface, options = {}) {
95
- this.surfaceState.set(surface);
96
- if (options.persist === false) {
97
- return;
98
- }
99
- this.storage.write(LAYOUT_SURFACE_STORAGE_KEY, surface);
100
- }
101
- setType(type, options = {}) {
102
- this.typeState.set(type);
103
- if (options.persist === false) {
104
- return;
105
- }
106
- this.storage.write(LAYOUT_TYPE_STORAGE_KEY, type);
107
- }
108
- setAppearance(appearance, options = {}) {
109
- this.appearanceState.set(appearance);
110
- if (options.persist === false) {
111
- return;
112
- }
113
- this.storage.write(LAYOUT_APPEARANCE_STORAGE_KEY, appearance);
114
- }
115
- setWidth(width, options = {}) {
116
- this.widthState.set(width);
117
- if (options.persist === false) {
118
- return;
119
- }
120
- this.storage.write(LAYOUT_WIDTH_STORAGE_KEY, width);
121
- }
122
- getStoredSurface() {
123
- const value = this.storage.read(LAYOUT_SURFACE_STORAGE_KEY);
124
- return isUiLayoutSurface(value) ? value : LAYOUT_DEFAULT_SURFACE;
125
- }
126
- getStoredType() {
127
- const value = this.storage.read(LAYOUT_TYPE_STORAGE_KEY);
128
- return isUiLayoutType(value) ? value : LAYOUT_DEFAULT_TYPE;
129
- }
130
- getStoredAppearance() {
131
- const value = this.readStoredAppearance();
132
- return value ?? LAYOUT_DEFAULT_APPEARANCE;
133
- }
134
- getStoredWidth() {
135
- const value = this.storage.read(LAYOUT_WIDTH_STORAGE_KEY);
136
- return isUiLayoutWidth(value) ? value : LAYOUT_DEFAULT_WIDTH;
137
- }
138
- readStoredAppearance() {
139
- const appearance = this.storage.read(LAYOUT_APPEARANCE_STORAGE_KEY);
140
- return isUiLayoutAppearance(appearance) ? appearance : null;
141
- }
142
- getStoredAppearanceOrDefault(fallback) {
143
- return this.readStoredAppearance() ?? fallback;
144
- }
145
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Service });
146
- static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.4", ngImport: i0, type: LayoutService });
147
- }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LayoutService, decorators: [{
149
- type: Service
150
- }] });
151
-
152
- /** Progress the bar starts at, so the line is visibly moving the moment it appears. */
1
+ import { isPlatformBrowser } from "@angular/common";
2
+ import * as i0 from "@angular/core";
3
+ import { DestroyRef, PLATFORM_ID, Service, computed, inject, signal } from "@angular/core";
4
+ import { globalLocalStorage } from "@ojiepermana/angular/component/utils/core";
5
+ import { LAYOUT_APPEARANCE_STORAGE_KEY, LAYOUT_DEFAULT_APPEARANCE, LAYOUT_DEFAULT_SURFACE, LAYOUT_DEFAULT_TYPE, LAYOUT_DEFAULT_WIDTH, LAYOUT_LOCKED_WIDTH, LAYOUT_SURFACE_STORAGE_KEY, LAYOUT_TYPE_STORAGE_KEY, LAYOUT_WIDTH_STORAGE_KEY, isUiLayoutAppearance, isUiLayoutSurface, isUiLayoutType, isUiLayoutWidth } from "@ojiepermana/angular/theme/layout/types";
6
+ import { ShellService } from "@ojiepermana/angular/theme/shell/services";
7
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
8
+ import { NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, Router } from "@angular/router";
9
+ import { HttpContextToken } from "@angular/common/http";
10
+ import { finalize } from "rxjs";
11
+ var LayoutService = class LayoutService {
12
+ platformId = inject(PLATFORM_ID);
13
+ storage = globalLocalStorage(isPlatformBrowser(this.platformId));
14
+ shell = inject(ShellService);
15
+ surfaceState = signal(this.getStoredSurface(), ...ngDevMode ? [{ debugName: "surfaceState" }] : /* istanbul ignore next */ []);
16
+ typeState = signal(this.getStoredType(), ...ngDevMode ? [{ debugName: "typeState" }] : /* istanbul ignore next */ []);
17
+ appearanceState = signal(this.getStoredAppearance(), ...ngDevMode ? [{ debugName: "appearanceState" }] : /* istanbul ignore next */ []);
18
+ widthState = signal(this.getStoredWidth(), ...ngDevMode ? [{ debugName: "widthState" }] : /* istanbul ignore next */ []);
19
+ surface = this.surfaceState.asReadonly();
20
+ type = this.typeState.asReadonly();
21
+ appearance = this.appearanceState.asReadonly();
22
+ widthLocked = computed(() => this.shell.mode() !== "web", ...ngDevMode ? [{ debugName: "widthLocked" }] : /* istanbul ignore next */ []);
23
+ width = computed(() => this.widthLocked() ? LAYOUT_LOCKED_WIDTH : this.widthState(), ...ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []);
24
+ preferredWidth = this.widthState.asReadonly();
25
+ registerDefaults(defaults) {
26
+ if (defaults.surface !== void 0) this.registerSurface(defaults.surface);
27
+ if (defaults.appearance !== void 0) this.registerAppearance(defaults.appearance);
28
+ if (defaults.type !== void 0) this.registerType(defaults.type);
29
+ if (defaults.width !== void 0) this.registerWidth(defaults.width);
30
+ return this;
31
+ }
32
+ registerSurface(surface) {
33
+ const storedSurface = this.storage.read(LAYOUT_SURFACE_STORAGE_KEY);
34
+ const resolved = isUiLayoutSurface(storedSurface) ? storedSurface : surface;
35
+ this.setSurface(resolved, { persist: false });
36
+ }
37
+ registerType(type) {
38
+ const storedType = this.storage.read(LAYOUT_TYPE_STORAGE_KEY);
39
+ const resolved = isUiLayoutType(storedType) ? storedType : type;
40
+ this.setType(resolved, { persist: false });
41
+ }
42
+ registerAppearance(appearance) {
43
+ this.setAppearance(this.getStoredAppearanceOrDefault(appearance), { persist: false });
44
+ }
45
+ registerWidth(width) {
46
+ const storedWidth = this.storage.read(LAYOUT_WIDTH_STORAGE_KEY);
47
+ const resolved = isUiLayoutWidth(storedWidth) ? storedWidth : width;
48
+ this.setWidth(resolved, { persist: false });
49
+ }
50
+ setSurface(surface, options = {}) {
51
+ this.surfaceState.set(surface);
52
+ if (options.persist === false) return;
53
+ this.storage.write(LAYOUT_SURFACE_STORAGE_KEY, surface);
54
+ }
55
+ setType(type, options = {}) {
56
+ this.typeState.set(type);
57
+ if (options.persist === false) return;
58
+ this.storage.write(LAYOUT_TYPE_STORAGE_KEY, type);
59
+ }
60
+ setAppearance(appearance, options = {}) {
61
+ this.appearanceState.set(appearance);
62
+ if (options.persist === false) return;
63
+ this.storage.write(LAYOUT_APPEARANCE_STORAGE_KEY, appearance);
64
+ }
65
+ setWidth(width, options = {}) {
66
+ this.widthState.set(width);
67
+ if (options.persist === false) return;
68
+ this.storage.write(LAYOUT_WIDTH_STORAGE_KEY, width);
69
+ }
70
+ getStoredSurface() {
71
+ const value = this.storage.read(LAYOUT_SURFACE_STORAGE_KEY);
72
+ return isUiLayoutSurface(value) ? value : LAYOUT_DEFAULT_SURFACE;
73
+ }
74
+ getStoredType() {
75
+ const value = this.storage.read(LAYOUT_TYPE_STORAGE_KEY);
76
+ return isUiLayoutType(value) ? value : LAYOUT_DEFAULT_TYPE;
77
+ }
78
+ getStoredAppearance() {
79
+ return this.readStoredAppearance() ?? LAYOUT_DEFAULT_APPEARANCE;
80
+ }
81
+ getStoredWidth() {
82
+ const value = this.storage.read(LAYOUT_WIDTH_STORAGE_KEY);
83
+ return isUiLayoutWidth(value) ? value : LAYOUT_DEFAULT_WIDTH;
84
+ }
85
+ readStoredAppearance() {
86
+ const appearance = this.storage.read(LAYOUT_APPEARANCE_STORAGE_KEY);
87
+ return isUiLayoutAppearance(appearance) ? appearance : null;
88
+ }
89
+ getStoredAppearanceOrDefault(fallback) {
90
+ return this.readStoredAppearance() ?? fallback;
91
+ }
92
+ static ɵfac = i0.ɵɵngDeclareFactory({
93
+ minVersion: "12.0.0",
94
+ version: "22.2.0",
95
+ ngImport: i0,
96
+ type: LayoutService,
97
+ deps: [],
98
+ target: i0.ɵɵFactoryTarget.Service
99
+ });
100
+ static ɵprov = i0.ɵɵngDeclareService({
101
+ minVersion: "22.0.0",
102
+ version: "22.2.0",
103
+ ngImport: i0,
104
+ type: LayoutService
105
+ });
106
+ };
107
+ i0.ɵɵngDeclareClassMetadata({
108
+ minVersion: "12.0.0",
109
+ version: "22.2.0",
110
+ ngImport: i0,
111
+ type: LayoutService,
112
+ decorators: [{ type: Service }]
113
+ });
153
114
  const LAYOUT_LOADING_INITIAL_PROGRESS = 8;
154
- /** Batas atas progres trickle; sisanya menunggu seluruh pekerjaan selesai. */
155
115
  const LAYOUT_LOADING_TRICKLE_CEILING = 90;
156
- /** How often the trickle raises progress while work is still outstanding. */
157
116
  const LAYOUT_LOADING_TRICKLE_INTERVAL_MS = 250;
158
- /** Delay after progress reaches 100% before the bar is hidden, so the finish reads. */
159
117
  const LAYOUT_LOADING_HIDE_DELAY_MS = 200;
160
- /**
161
- * Global loading tracker behind the progress line at the top of the viewport.
162
- *
163
- * It turns on by itself when the router starts a navigation and while an HTTP
164
- * request runs through `layoutLoadingInterceptor`. Any other source — a manual
165
- * data load, say — can join in through the ref-counted `start()`/`done()` pair.
166
- */
167
- class LayoutLoadingService {
168
- platformId = inject(PLATFORM_ID);
169
- router = inject(Router, { optional: true });
170
- pendingCount = signal(0, /* @ts-ignore */
171
- ...(ngDevMode ? [{ debugName: "pendingCount" }] : /* istanbul ignore next */ []));
172
- activeState = signal(false, /* @ts-ignore */
173
- ...(ngDevMode ? [{ debugName: "activeState" }] : /* istanbul ignore next */ []));
174
- progressState = signal(0, /* @ts-ignore */
175
- ...(ngDevMode ? [{ debugName: "progressState" }] : /* istanbul ignore next */ []));
176
- /** The bar is on screen, including the short finish to 100%. */
177
- active = this.activeState.asReadonly();
178
- /** Progres garis 0–100. */
179
- progress = this.progressState.asReadonly();
180
- /** Work (a navigation, a request, a data load) is still outstanding. */
181
- pending = computed(() => this.pendingCount() > 0, /* @ts-ignore */
182
- ...(ngDevMode ? [{ debugName: "pending" }] : /* istanbul ignore next */ []));
183
- hostRegistry = signal([], /* @ts-ignore */
184
- ...(ngDevMode ? [{ debugName: "hostRegistry" }] : /* istanbul ignore next */ []));
185
- /**
186
- * The earliest registered `LayoutLoading` host, which is the one that draws the
187
- * bar. Every other instance — the one inside `Layout` when the app root also
188
- * mounts `LayoutLoading` — goes inert, so the line is never drawn twice.
189
- */
190
- primaryHostId = computed(() => this.hostRegistry()[0] ?? null, /* @ts-ignore */
191
- ...(ngDevMode ? [{ debugName: "primaryHostId" }] : /* istanbul ignore next */ []));
192
- trickleTimer = null;
193
- hideTimer = null;
194
- navigationPending = false;
195
- nextHostId = 0;
196
- constructor() {
197
- this.observeRouterNavigation();
198
- inject(DestroyRef).onDestroy(() => {
199
- this.stopTrickle();
200
- this.cancelScheduledHide();
201
- });
202
- }
203
- /** Mark one unit of work started; the bar appears with the first one. */
204
- start() {
205
- this.pendingCount.update((count) => count + 1);
206
- if (this.pendingCount() === 1) {
207
- this.show();
208
- }
209
- }
210
- /** Mark one unit of work finished; the bar completes when the count returns to zero. */
211
- done() {
212
- if (this.pendingCount() === 0) {
213
- return;
214
- }
215
- this.pendingCount.update((count) => count - 1);
216
- if (this.pendingCount() === 0) {
217
- this.finish();
218
- }
219
- }
220
- /** Register one `LayoutLoading` host; returns the id used to unregister it. */
221
- registerHost() {
222
- const hostId = this.nextHostId++;
223
- this.hostRegistry.update((hosts) => [...hosts, hostId]);
224
- return hostId;
225
- }
226
- /** Release a host; the next registered one becomes primary on its own. */
227
- unregisterHost(hostId) {
228
- this.hostRegistry.update((hosts) => hosts.filter((registered) => registered !== hostId));
229
- }
230
- /** Force the progress value (0–100) while the bar is active, e.g. for a large upload. */
231
- setProgress(value) {
232
- if (!this.activeState()) {
233
- return;
234
- }
235
- this.progressState.set(Math.min(100, Math.max(0, value)));
236
- }
237
- observeRouterNavigation() {
238
- if (!this.router) {
239
- return;
240
- }
241
- this.router.events.pipe(takeUntilDestroyed()).subscribe((event) => {
242
- if (event instanceof NavigationStart) {
243
- if (!this.navigationPending) {
244
- this.navigationPending = true;
245
- this.start();
246
- }
247
- return;
248
- }
249
- const navigationSettled = event instanceof NavigationEnd ||
250
- event instanceof NavigationCancel ||
251
- event instanceof NavigationError ||
252
- event instanceof NavigationSkipped;
253
- if (navigationSettled && this.navigationPending) {
254
- this.navigationPending = false;
255
- this.done();
256
- }
257
- });
258
- }
259
- show() {
260
- this.cancelScheduledHide();
261
- this.activeState.set(true);
262
- this.progressState.set(LAYOUT_LOADING_INITIAL_PROGRESS);
263
- this.startTrickle();
264
- }
265
- finish() {
266
- this.stopTrickle();
267
- this.progressState.set(100);
268
- if (!this.isBrowser()) {
269
- this.hide();
270
- return;
271
- }
272
- this.hideTimer = setTimeout(() => {
273
- this.hideTimer = null;
274
- this.hide();
275
- }, LAYOUT_LOADING_HIDE_DELAY_MS);
276
- }
277
- hide() {
278
- this.activeState.set(false);
279
- this.progressState.set(0);
280
- }
281
- startTrickle() {
282
- if (!this.isBrowser() || this.trickleTimer !== null) {
283
- return;
284
- }
285
- this.trickleTimer = setInterval(() => {
286
- const current = this.progressState();
287
- const next = current + (LAYOUT_LOADING_TRICKLE_CEILING - current) * 0.15;
288
- this.progressState.set(Math.min(LAYOUT_LOADING_TRICKLE_CEILING, next));
289
- }, LAYOUT_LOADING_TRICKLE_INTERVAL_MS);
290
- }
291
- stopTrickle() {
292
- if (this.trickleTimer !== null) {
293
- clearInterval(this.trickleTimer);
294
- this.trickleTimer = null;
295
- }
296
- }
297
- cancelScheduledHide() {
298
- if (this.hideTimer !== null) {
299
- clearTimeout(this.hideTimer);
300
- this.hideTimer = null;
301
- }
302
- }
303
- isBrowser() {
304
- return isPlatformBrowser(this.platformId);
305
- }
306
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LayoutLoadingService, deps: [], target: i0.ɵɵFactoryTarget.Service });
307
- static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.4", ngImport: i0, type: LayoutLoadingService });
308
- }
309
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LayoutLoadingService, decorators: [{
310
- type: Service
311
- }], ctorParameters: () => [] });
312
-
313
- /**
314
- * Set `true` on a request's `HttpContext` to keep it out of the progress line —
315
- * a poll or a heartbeat that must not raise a loading indicator.
316
- */
118
+ var LayoutLoadingService = class LayoutLoadingService {
119
+ platformId = inject(PLATFORM_ID);
120
+ router = inject(Router, { optional: true });
121
+ pendingCount = signal(0, ...ngDevMode ? [{ debugName: "pendingCount" }] : /* istanbul ignore next */ []);
122
+ activeState = signal(false, ...ngDevMode ? [{ debugName: "activeState" }] : /* istanbul ignore next */ []);
123
+ progressState = signal(0, ...ngDevMode ? [{ debugName: "progressState" }] : /* istanbul ignore next */ []);
124
+ active = this.activeState.asReadonly();
125
+ progress = this.progressState.asReadonly();
126
+ pending = computed(() => this.pendingCount() > 0, ...ngDevMode ? [{ debugName: "pending" }] : /* istanbul ignore next */ []);
127
+ hostRegistry = signal([], ...ngDevMode ? [{ debugName: "hostRegistry" }] : /* istanbul ignore next */ []);
128
+ primaryHostId = computed(() => this.hostRegistry()[0] ?? null, ...ngDevMode ? [{ debugName: "primaryHostId" }] : /* istanbul ignore next */ []);
129
+ trickleTimer = null;
130
+ hideTimer = null;
131
+ navigationPending = false;
132
+ nextHostId = 0;
133
+ constructor() {
134
+ this.observeRouterNavigation();
135
+ inject(DestroyRef).onDestroy(() => {
136
+ this.stopTrickle();
137
+ this.cancelScheduledHide();
138
+ });
139
+ }
140
+ start() {
141
+ this.pendingCount.update((count) => count + 1);
142
+ if (this.pendingCount() === 1) this.show();
143
+ }
144
+ done() {
145
+ if (this.pendingCount() === 0) return;
146
+ this.pendingCount.update((count) => count - 1);
147
+ if (this.pendingCount() === 0) this.finish();
148
+ }
149
+ registerHost() {
150
+ const hostId = this.nextHostId++;
151
+ this.hostRegistry.update((hosts) => [...hosts, hostId]);
152
+ return hostId;
153
+ }
154
+ unregisterHost(hostId) {
155
+ this.hostRegistry.update((hosts) => hosts.filter((registered) => registered !== hostId));
156
+ }
157
+ setProgress(value) {
158
+ if (!this.activeState()) return;
159
+ this.progressState.set(Math.min(100, Math.max(0, value)));
160
+ }
161
+ observeRouterNavigation() {
162
+ if (!this.router) return;
163
+ this.router.events.pipe(takeUntilDestroyed()).subscribe((event) => {
164
+ if (event instanceof NavigationStart) {
165
+ if (!this.navigationPending) {
166
+ this.navigationPending = true;
167
+ this.start();
168
+ }
169
+ return;
170
+ }
171
+ if ((event instanceof NavigationEnd || event instanceof NavigationCancel || event instanceof NavigationError || event instanceof NavigationSkipped) && this.navigationPending) {
172
+ this.navigationPending = false;
173
+ this.done();
174
+ }
175
+ });
176
+ }
177
+ show() {
178
+ this.cancelScheduledHide();
179
+ this.activeState.set(true);
180
+ this.progressState.set(8);
181
+ this.startTrickle();
182
+ }
183
+ finish() {
184
+ this.stopTrickle();
185
+ this.progressState.set(100);
186
+ if (!this.isBrowser()) {
187
+ this.hide();
188
+ return;
189
+ }
190
+ this.hideTimer = setTimeout(() => {
191
+ this.hideTimer = null;
192
+ this.hide();
193
+ }, 200);
194
+ }
195
+ hide() {
196
+ this.activeState.set(false);
197
+ this.progressState.set(0);
198
+ }
199
+ startTrickle() {
200
+ if (!this.isBrowser() || this.trickleTimer !== null) return;
201
+ this.trickleTimer = setInterval(() => {
202
+ const current = this.progressState();
203
+ const next = current + (90 - current) * .15;
204
+ this.progressState.set(Math.min(90, next));
205
+ }, 250);
206
+ }
207
+ stopTrickle() {
208
+ if (this.trickleTimer !== null) {
209
+ clearInterval(this.trickleTimer);
210
+ this.trickleTimer = null;
211
+ }
212
+ }
213
+ cancelScheduledHide() {
214
+ if (this.hideTimer !== null) {
215
+ clearTimeout(this.hideTimer);
216
+ this.hideTimer = null;
217
+ }
218
+ }
219
+ isBrowser() {
220
+ return isPlatformBrowser(this.platformId);
221
+ }
222
+ static ɵfac = i0.ɵɵngDeclareFactory({
223
+ minVersion: "12.0.0",
224
+ version: "22.2.0",
225
+ ngImport: i0,
226
+ type: LayoutLoadingService,
227
+ deps: [],
228
+ target: i0.ɵɵFactoryTarget.Service
229
+ });
230
+ static ɵprov = i0.ɵɵngDeclareService({
231
+ minVersion: "22.0.0",
232
+ version: "22.2.0",
233
+ ngImport: i0,
234
+ type: LayoutLoadingService
235
+ });
236
+ };
237
+ i0.ɵɵngDeclareClassMetadata({
238
+ minVersion: "12.0.0",
239
+ version: "22.2.0",
240
+ ngImport: i0,
241
+ type: LayoutLoadingService,
242
+ decorators: [{ type: Service }],
243
+ ctorParameters: () => []
244
+ });
317
245
  const LAYOUT_LOADING_SKIP = new HttpContextToken(() => false);
318
- /**
319
- * Interceptor that lights the `LayoutLoading` progress line while an HTTP
320
- * request is in flight. Register it through `withInterceptors([...])`.
321
- */
322
246
  const layoutLoadingInterceptor = (request, next) => {
323
- if (request.context.get(LAYOUT_LOADING_SKIP)) {
324
- return next(request);
325
- }
326
- const loading = inject(LayoutLoadingService);
327
- loading.start();
328
- return next(request).pipe(finalize(() => loading.done()));
247
+ if (request.context.get(LAYOUT_LOADING_SKIP)) return next(request);
248
+ const loading = inject(LayoutLoadingService);
249
+ loading.start();
250
+ return next(request).pipe(finalize(() => loading.done()));
329
251
  };
330
-
331
- /**
332
- * Generated bundle index. Do not edit.
333
- */
334
-
335
- export { LAYOUT_LOADING_HIDE_DELAY_MS, LAYOUT_LOADING_INITIAL_PROGRESS, LAYOUT_LOADING_SKIP, LAYOUT_LOADING_TRICKLE_CEILING, LAYOUT_LOADING_TRICKLE_INTERVAL_MS, LayoutLoadingService, LayoutService, layoutLoadingInterceptor };
252
+ export { LAYOUT_LOADING_HIDE_DELAY_MS, LAYOUT_LOADING_INITIAL_PROGRESS, LAYOUT_LOADING_SKIP, LAYOUT_LOADING_TRICKLE_CEILING, LAYOUT_LOADING_TRICKLE_INTERVAL_MS, LayoutLoadingService, LayoutService, layoutLoadingInterceptor };