@mxtommy/kip 3.9.0-beta.2 → 3.9.0-beta.21

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 (178) hide show
  1. package/.github/copilot-instructions.md +1 -1
  2. package/.github/instructions/angular.instructions.md +46 -0
  3. package/README.md +49 -12
  4. package/package.json +2 -4
  5. package/public/3rdpartylicenses.txt +77 -77
  6. package/public/app-help.component.css.map +7 -0
  7. package/public/app.component.css.map +7 -0
  8. package/public/assets/help-docs/configuration.md +4 -4
  9. package/public/assets/help-docs/dashboards.md +4 -2
  10. package/public/assets/svg/icons.svg +1 -1
  11. package/public/boolean-control-config.component.css.map +7 -0
  12. package/public/boolean-multicontrol-options.component.css.map +7 -0
  13. package/public/chunk-3EWIS24B.js +5237 -0
  14. package/public/chunk-3EWIS24B.js.map +1 -0
  15. package/public/chunk-3VR3EA35.js +1022 -0
  16. package/public/chunk-3VR3EA35.js.map +1 -0
  17. package/public/chunk-63ILPRXC.js +2091 -0
  18. package/public/chunk-63ILPRXC.js.map +1 -0
  19. package/public/chunk-65ZWQBS6.js +3102 -0
  20. package/public/chunk-65ZWQBS6.js.map +1 -0
  21. package/public/chunk-B3LKEWZP.js +4950 -0
  22. package/public/chunk-B3LKEWZP.js.map +1 -0
  23. package/public/chunk-BIBIW64D.js +16773 -0
  24. package/public/chunk-BIBIW64D.js.map +1 -0
  25. package/public/chunk-BM53SC5N.js +77 -0
  26. package/public/chunk-BM53SC5N.js.map +7 -0
  27. package/public/chunk-D7ILNFDM.js +3059 -0
  28. package/public/chunk-D7ILNFDM.js.map +1 -0
  29. package/public/chunk-E24UNLSJ.js +2228 -0
  30. package/public/chunk-E24UNLSJ.js.map +1 -0
  31. package/public/chunk-J42S2ELC.js +5927 -0
  32. package/public/chunk-J42S2ELC.js.map +1 -0
  33. package/public/chunk-KC22A6VH.js +17 -0
  34. package/public/chunk-KC22A6VH.js.map +7 -0
  35. package/public/chunk-MCEJWZB2.js +116 -0
  36. package/public/chunk-MCEJWZB2.js.map +1 -0
  37. package/public/chunk-NBF6SE6O.js +89 -0
  38. package/public/chunk-NBF6SE6O.js.map +7 -0
  39. package/public/chunk-QC7VGVAR.js +343 -0
  40. package/public/chunk-QC7VGVAR.js.map +7 -0
  41. package/public/chunk-SDOP6T56.js +42377 -0
  42. package/public/chunk-SDOP6T56.js.map +1 -0
  43. package/public/chunk-U2DCSTRY.js +159 -0
  44. package/public/chunk-U2DCSTRY.js.map +7 -0
  45. package/public/chunk-UHVNAEXC.js +4752 -0
  46. package/public/chunk-UHVNAEXC.js.map +1 -0
  47. package/public/chunk-UQYTD5AC.js +2723 -0
  48. package/public/chunk-UQYTD5AC.js.map +1 -0
  49. package/public/chunk-XSABJ5NZ.js +272 -0
  50. package/public/chunk-XSABJ5NZ.js.map +7 -0
  51. package/public/chunk-Y6N6O2IP.js +19852 -0
  52. package/public/chunk-Y6N6O2IP.js.map +1 -0
  53. package/public/chunk-YGJLBLOX.js +2708 -0
  54. package/public/chunk-YGJLBLOX.js.map +1 -0
  55. package/public/chunk-YT33DHC3.js +591 -0
  56. package/public/chunk-YT33DHC3.js.map +7 -0
  57. package/public/chunk-YZXYVP72.js +4934 -0
  58. package/public/chunk-YZXYVP72.js.map +1 -0
  59. package/public/chunk-ZEHRDSTB.js +13727 -0
  60. package/public/chunk-ZEHRDSTB.js.map +1 -0
  61. package/public/config.component.css.map +7 -0
  62. package/public/dashboard-scroller.component.css.map +7 -0
  63. package/public/dashboard.component.css.map +7 -0
  64. package/public/dashboards-editor.component.css.map +7 -0
  65. package/public/data-inspector-row.component.css.map +7 -0
  66. package/public/data-inspector.component.css.map +7 -0
  67. package/public/dataset-chart-options.component.css.map +7 -0
  68. package/public/datasets.component.css.map +7 -0
  69. package/public/dialog-confirmation.component.css.map +7 -0
  70. package/public/dialog-dashboard-page-editor.component.css.map +7 -0
  71. package/public/dialog-frame.component.css.map +7 -0
  72. package/public/dialog-name.component.css.map +7 -0
  73. package/public/display-chart-options.component.css.map +7 -0
  74. package/public/display.component.css.map +7 -0
  75. package/public/gauge-steel.component.css.map +7 -0
  76. package/public/home.component.css.map +7 -0
  77. package/public/index.html +19 -17
  78. package/public/main.js +36423 -0
  79. package/public/main.js.map +1 -0
  80. package/public/menu-actions.component.css.map +7 -0
  81. package/public/menu-notifications.component.css.map +7 -0
  82. package/public/minichart.component.css.map +7 -0
  83. package/public/modal-user-credential.component.css.map +7 -0
  84. package/public/modal-widget-config.component.css.map +7 -0
  85. package/public/notification-badge.component.css.map +7 -0
  86. package/public/page-header.component.css.map +7 -0
  87. package/public/path-control-config.component.css.map +7 -0
  88. package/public/paths-options.component.css.map +7 -0
  89. package/public/polyfills.js +4422 -0
  90. package/public/polyfills.js.map +1 -0
  91. package/public/select-autopilot.component.css.map +7 -0
  92. package/public/select-icon.component.css.map +7 -0
  93. package/public/settings.component.css.map +7 -0
  94. package/public/signalk.component.css.map +7 -0
  95. package/public/styles.css +1651 -0
  96. package/public/styles.css.map +7 -0
  97. package/public/svg-autopilot.component.css.map +7 -0
  98. package/public/svg-racesteer.component.css.map +7 -0
  99. package/public/svg-simple-linear-gauge.component.css.map +7 -0
  100. package/public/svg-windsteer.component.css.map +7 -0
  101. package/public/tile-large-icon.component.css.map +7 -0
  102. package/public/units.component.css.map +7 -0
  103. package/public/upgrade-config.component.css.map +7 -0
  104. package/public/widget-autopilot.component.css.map +7 -0
  105. package/public/widget-boolean-switch.component.css.map +7 -0
  106. package/public/widget-datetime.component.css.map +7 -0
  107. package/public/widget-freeboardsk.component.css.map +7 -0
  108. package/public/widget-gauge-ng-compass.component.css.map +7 -0
  109. package/public/widget-gauge-ng-linear.component.css.map +7 -0
  110. package/public/widget-gauge-ng-radial.component.css.map +7 -0
  111. package/public/widget-gauge-steel.component.css.map +7 -0
  112. package/public/widget-horizon.component.css.map +7 -0
  113. package/public/widget-host.component.css.map +7 -0
  114. package/public/widget-iframe.component.css.map +7 -0
  115. package/public/widget-label.component.css.map +7 -0
  116. package/public/widget-list-card.component.css.map +7 -0
  117. package/public/widget-numeric.component.css.map +7 -0
  118. package/public/widget-position.component.css.map +7 -0
  119. package/public/widget-race-timer.component.css.map +7 -0
  120. package/public/widget-racer-line.component.css.map +7 -0
  121. package/public/widget-racer-timer.component.css.map +7 -0
  122. package/public/widget-simple-linear.component.css.map +7 -0
  123. package/public/widget-slider.component.css.map +7 -0
  124. package/public/widget-text.component.css.map +7 -0
  125. package/public/widget-title.component.css.map +7 -0
  126. package/public/widget-tutorial.component.css.map +7 -0
  127. package/public/widgets-list.component.css.map +7 -0
  128. package/public/assets/hammer.min.js +0 -7
  129. package/public/chunk-2YVW3TBK.js +0 -2
  130. package/public/chunk-35L7BBBD.js +0 -15
  131. package/public/chunk-3LEMFOCV.js +0 -3
  132. package/public/chunk-3LJAKLLW.js +0 -1
  133. package/public/chunk-4JJLPUET.js +0 -60
  134. package/public/chunk-CBUY7NMR.js +0 -2
  135. package/public/chunk-CQXWGD3T.js +0 -2
  136. package/public/chunk-EUFDL4TJ.js +0 -6
  137. package/public/chunk-FBFTGVZ6.js +0 -1
  138. package/public/chunk-HCXH72CD.js +0 -5
  139. package/public/chunk-JY3WVS7C.js +0 -2
  140. package/public/chunk-KTDDP73O.js +0 -2
  141. package/public/chunk-NMEZOCU2.js +0 -1
  142. package/public/chunk-NS2FPVWM.js +0 -4
  143. package/public/chunk-OSYHJB4F.js +0 -11
  144. package/public/chunk-PKNLASTF.js +0 -4
  145. package/public/chunk-Q2Y75POI.js +0 -1
  146. package/public/chunk-RRTCHHRC.js +0 -3
  147. package/public/chunk-TA4GACKT.js +0 -4
  148. package/public/chunk-TXPLRBW5.js +0 -2
  149. package/public/chunk-VHFBF47T.js +0 -1
  150. package/public/chunk-VYUMZVH2.js +0 -2
  151. package/public/chunk-XRGAX4LS.js +0 -2
  152. package/public/chunk-YNJRIFUM.js +0 -1
  153. package/public/chunk-ZBCOJLI4.js +0 -6
  154. package/public/main-XM5EHMUE.js +0 -50
  155. package/public/polyfills-KH22MU6U.js +0 -2
  156. package/public/styles-RECKN66R.css +0 -1
  157. /package/public/media/{KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP-ILKS6RVC.woff2 → KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2} +0 -0
  158. /package/public/media/{KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ-MJ3CERJ6.woff2 → KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2} +0 -0
  159. /package/public/media/{KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP-UW3XWY7P.woff2 → KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2} +0 -0
  160. /package/public/media/{KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP-U3JTBV4H.woff2 → KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2} +0 -0
  161. /package/public/media/{KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP-36ULTGLY.woff2 → KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2} +0 -0
  162. /package/public/media/{KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP-5NJLO2HW.woff2 → KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2} +0 -0
  163. /package/public/media/{KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP-2EL65J2O.woff2 → KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2} +0 -0
  164. /package/public/media/{KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP-XWLWMQVU.woff2 → KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2} +0 -0
  165. /package/public/media/{KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ-PWGJWDFE.woff2 → KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2} +0 -0
  166. /package/public/media/{KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP-ITB7NUJC.woff2 → KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2} +0 -0
  167. /package/public/media/{KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP-32PLHKPQ.woff2 → KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2} +0 -0
  168. /package/public/media/{KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP-QPSNQEDD.woff2 → KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2} +0 -0
  169. /package/public/media/{KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP-JKBSJZY3.woff2 → KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2} +0 -0
  170. /package/public/media/{KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP-OG5AHRIX.woff2 → KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2} +0 -0
  171. /package/public/media/{KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz-PPTELUJT.woff2 → KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2} +0 -0
  172. /package/public/media/{KFOmCnqEu92Fr1Mu4mxKKTU1Kg-SNGEW7FX.woff2 → KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2} +0 -0
  173. /package/public/media/{KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz-DRL4U32S.woff2 → KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2} +0 -0
  174. /package/public/media/{KFOmCnqEu92Fr1Mu72xKKTU1Kvnz-PRJ7OQMU.woff2 → KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2} +0 -0
  175. /package/public/media/{KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz-HW6RMPJ3.woff2 → KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2} +0 -0
  176. /package/public/media/{KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz-KZD6JQRT.woff2 → KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2} +0 -0
  177. /package/public/media/{KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz-Z72STTMG.woff2 → KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2} +0 -0
  178. /package/public/media/{flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ-CN2J7AYH.woff2 → flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2} +0 -0
@@ -0,0 +1,272 @@
1
+ import {
2
+ MarkdownComponent,
3
+ MatMenu,
4
+ MatMenuContent,
5
+ MatMenuItem,
6
+ MatMenuModule,
7
+ MatMenuTrigger
8
+ } from "./chunk-YZXYVP72.js";
9
+ import {
10
+ Router
11
+ } from "./chunk-J42S2ELC.js";
12
+ import {
13
+ MatIcon,
14
+ MatIconModule
15
+ } from "./chunk-UQYTD5AC.js";
16
+ import {
17
+ MatDivider,
18
+ MatDividerModule
19
+ } from "./chunk-MCEJWZB2.js";
20
+ import {
21
+ Component,
22
+ MatButton,
23
+ MatButtonModule,
24
+ MatIconButton,
25
+ computed,
26
+ effect,
27
+ httpResource,
28
+ inject,
29
+ setClassMetadata,
30
+ signal,
31
+ ɵsetClassDebugInfo,
32
+ ɵɵadvance,
33
+ ɵɵconditional,
34
+ ɵɵconditionalCreate,
35
+ ɵɵdefineComponent,
36
+ ɵɵelement,
37
+ ɵɵelementEnd,
38
+ ɵɵelementStart,
39
+ ɵɵgetCurrentView,
40
+ ɵɵlistener,
41
+ ɵɵnextContext,
42
+ ɵɵproperty,
43
+ ɵɵreference,
44
+ ɵɵrepeater,
45
+ ɵɵrepeaterCreate,
46
+ ɵɵresetView,
47
+ ɵɵrestoreView,
48
+ ɵɵtemplate,
49
+ ɵɵtext,
50
+ ɵɵtextInterpolate,
51
+ ɵɵtextInterpolate1
52
+ } from "./chunk-SDOP6T56.js";
53
+
54
+ // src/app/core/components/app-help/app-help.component.ts
55
+ var _forTrack0 = ($index, $item) => $item.file;
56
+ function AppHelpComponent_Conditional_4_Template(rf, ctx) {
57
+ if (rf & 1) {
58
+ \u0275\u0275text(0, " Loading... ");
59
+ }
60
+ }
61
+ function AppHelpComponent_Conditional_5_Template(rf, ctx) {
62
+ if (rf & 1) {
63
+ \u0275\u0275text(0, " Table of Content ");
64
+ }
65
+ }
66
+ function AppHelpComponent_ng_template_8_Conditional_0_Template(rf, ctx) {
67
+ if (rf & 1) {
68
+ \u0275\u0275elementStart(0, "button", 9);
69
+ \u0275\u0275text(1, "Error loading menu");
70
+ \u0275\u0275elementEnd();
71
+ }
72
+ }
73
+ function AppHelpComponent_ng_template_8_Conditional_1_Template(rf, ctx) {
74
+ if (rf & 1) {
75
+ \u0275\u0275elementStart(0, "button", 9);
76
+ \u0275\u0275text(1, "No help entries");
77
+ \u0275\u0275elementEnd();
78
+ }
79
+ }
80
+ function AppHelpComponent_ng_template_8_Conditional_2_For_1_Template(rf, ctx) {
81
+ if (rf & 1) {
82
+ const _r2 = \u0275\u0275getCurrentView();
83
+ \u0275\u0275elementStart(0, "button", 11);
84
+ \u0275\u0275listener("click", function AppHelpComponent_ng_template_8_Conditional_2_For_1_Template_button_click_0_listener() {
85
+ const file_r3 = \u0275\u0275restoreView(_r2).$implicit;
86
+ const ctx_r3 = \u0275\u0275nextContext(3);
87
+ return \u0275\u0275resetView(ctx_r3.selectFile(file_r3.file));
88
+ });
89
+ \u0275\u0275text(1);
90
+ \u0275\u0275elementEnd();
91
+ }
92
+ if (rf & 2) {
93
+ const file_r3 = ctx.$implicit;
94
+ const ctx_r3 = \u0275\u0275nextContext(3);
95
+ \u0275\u0275property("disabled", ctx_r3.selectedFile() === file_r3.file);
96
+ \u0275\u0275advance();
97
+ \u0275\u0275textInterpolate1(" ", file_r3.title, " ");
98
+ }
99
+ }
100
+ function AppHelpComponent_ng_template_8_Conditional_2_Template(rf, ctx) {
101
+ if (rf & 1) {
102
+ \u0275\u0275repeaterCreate(0, AppHelpComponent_ng_template_8_Conditional_2_For_1_Template, 2, 2, "button", 10, _forTrack0);
103
+ }
104
+ if (rf & 2) {
105
+ const ctx_r3 = \u0275\u0275nextContext(2);
106
+ \u0275\u0275repeater(ctx_r3.helpFiles());
107
+ }
108
+ }
109
+ function AppHelpComponent_ng_template_8_Template(rf, ctx) {
110
+ if (rf & 1) {
111
+ \u0275\u0275conditionalCreate(0, AppHelpComponent_ng_template_8_Conditional_0_Template, 2, 0, "button", 9)(1, AppHelpComponent_ng_template_8_Conditional_1_Template, 2, 0, "button", 9)(2, AppHelpComponent_ng_template_8_Conditional_2_Template, 2, 0);
112
+ }
113
+ if (rf & 2) {
114
+ const ctx_r3 = \u0275\u0275nextContext();
115
+ \u0275\u0275conditional(ctx_r3.hasError() ? 0 : !ctx_r3.isLoading() && ctx_r3.helpFiles().length === 0 ? 1 : 2);
116
+ }
117
+ }
118
+ function AppHelpComponent_Conditional_17_Template(rf, ctx) {
119
+ if (rf & 1) {
120
+ \u0275\u0275elementStart(0, "div", 7);
121
+ \u0275\u0275text(1, "Unable to load help content.");
122
+ \u0275\u0275elementEnd();
123
+ }
124
+ }
125
+ function AppHelpComponent_Conditional_18_Template(rf, ctx) {
126
+ if (rf & 1) {
127
+ \u0275\u0275elementStart(0, "div", 7);
128
+ \u0275\u0275text(1, "Loading help...");
129
+ \u0275\u0275elementEnd();
130
+ }
131
+ }
132
+ function AppHelpComponent_Conditional_19_Template(rf, ctx) {
133
+ if (rf & 1) {
134
+ \u0275\u0275element(0, "markdown", 8);
135
+ }
136
+ if (rf & 2) {
137
+ const ctx_r3 = \u0275\u0275nextContext();
138
+ \u0275\u0275property("src", "assets/help-docs/" + ctx_r3.selectedFile());
139
+ }
140
+ }
141
+ var AppHelpComponent = class _AppHelpComponent {
142
+ pageTitle = "Help";
143
+ _router = inject(Router);
144
+ // Resource for the help menu JSON (reactive & eagerly fetched)
145
+ _helpMenuRes = httpResource(() => "assets/help-docs/menu.json");
146
+ // Raw list (filtered) as a signal
147
+ helpFiles = computed(() => {
148
+ if (this._helpMenuRes.hasValue()) {
149
+ return (this._helpMenuRes.value() ?? []).filter((item) => item.file.endsWith(".md"));
150
+ }
151
+ return [];
152
+ }, ...ngDevMode ? [{ debugName: "helpFiles" }] : []);
153
+ // Selected file signal (empty until helpFiles first populated)
154
+ selectedFile = signal("", ...ngDevMode ? [{ debugName: "selectedFile" }] : []);
155
+ // Initialize default selection reactively when data arrives first time
156
+ _initSelectionOnce = signal(false, ...ngDevMode ? [{ debugName: "_initSelectionOnce" }] : []);
157
+ _syncEffect = effect(() => {
158
+ const files = this.helpFiles();
159
+ if (!this._initSelectionOnce() && files.length > 0) {
160
+ this.selectedFile.set(files[0].file);
161
+ this._initSelectionOnce.set(true);
162
+ }
163
+ }, ...ngDevMode ? [{ debugName: "_syncEffect" }] : []);
164
+ hasError = computed(() => this._helpMenuRes.error() != null, ...ngDevMode ? [{ debugName: "hasError" }] : []);
165
+ isLoading = computed(() => this._helpMenuRes.isLoading(), ...ngDevMode ? [{ debugName: "isLoading" }] : []);
166
+ selectFile(file) {
167
+ this.selectedFile.set(file);
168
+ }
169
+ backPage() {
170
+ this._router.navigate(["/home"]);
171
+ }
172
+ closePage() {
173
+ this._router.navigate(["/dashboard"]);
174
+ }
175
+ static \u0275fac = function AppHelpComponent_Factory(__ngFactoryType__) {
176
+ return new (__ngFactoryType__ || _AppHelpComponent)();
177
+ };
178
+ static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _AppHelpComponent, selectors: [["app-help"]], decls: 20, vars: 5, consts: [["helpMenu", "matMenu"], [1, "fullpage-header"], [1, "fullpage-header-title"], ["mat-flat-button", "", 3, "matMenuTriggerFor", "disabled"], ["matMenuContent", ""], [1, "dialog-close-icon"], ["mat-icon-button", "", 3, "click"], [1, "markdown-content"], [1, "markdown-content", 3, "src"], ["mat-menu-item", "", "disabled", ""], ["mat-menu-item", "", 3, "disabled"], ["mat-menu-item", "", 3, "click", "disabled"]], template: function AppHelpComponent_Template(rf, ctx) {
179
+ if (rf & 1) {
180
+ const _r1 = \u0275\u0275getCurrentView();
181
+ \u0275\u0275elementStart(0, "div", 1)(1, "h6", 2);
182
+ \u0275\u0275text(2);
183
+ \u0275\u0275elementEnd();
184
+ \u0275\u0275elementStart(3, "button", 3);
185
+ \u0275\u0275conditionalCreate(4, AppHelpComponent_Conditional_4_Template, 1, 0)(5, AppHelpComponent_Conditional_5_Template, 1, 0);
186
+ \u0275\u0275elementEnd();
187
+ \u0275\u0275elementStart(6, "mat-menu", null, 0);
188
+ \u0275\u0275template(8, AppHelpComponent_ng_template_8_Template, 3, 1, "ng-template", 4);
189
+ \u0275\u0275elementEnd();
190
+ \u0275\u0275elementStart(9, "div", 5)(10, "button", 6);
191
+ \u0275\u0275listener("click", function AppHelpComponent_Template_button_click_10_listener() {
192
+ \u0275\u0275restoreView(_r1);
193
+ return \u0275\u0275resetView(ctx.backPage());
194
+ });
195
+ \u0275\u0275elementStart(11, "mat-icon");
196
+ \u0275\u0275text(12, "arrow_back_ios");
197
+ \u0275\u0275elementEnd()();
198
+ \u0275\u0275elementStart(13, "button", 6);
199
+ \u0275\u0275listener("click", function AppHelpComponent_Template_button_click_13_listener() {
200
+ \u0275\u0275restoreView(_r1);
201
+ return \u0275\u0275resetView(ctx.closePage());
202
+ });
203
+ \u0275\u0275elementStart(14, "mat-icon");
204
+ \u0275\u0275text(15, "close");
205
+ \u0275\u0275elementEnd()()()();
206
+ \u0275\u0275element(16, "mat-divider");
207
+ \u0275\u0275conditionalCreate(17, AppHelpComponent_Conditional_17_Template, 2, 0, "div", 7)(18, AppHelpComponent_Conditional_18_Template, 2, 0, "div", 7)(19, AppHelpComponent_Conditional_19_Template, 1, 1, "markdown", 8);
208
+ }
209
+ if (rf & 2) {
210
+ const helpMenu_r5 = \u0275\u0275reference(7);
211
+ \u0275\u0275advance(2);
212
+ \u0275\u0275textInterpolate(ctx.pageTitle);
213
+ \u0275\u0275advance();
214
+ \u0275\u0275property("matMenuTriggerFor", helpMenu_r5)("disabled", ctx.isLoading() || ctx.hasError() || ctx.helpFiles().length === 0);
215
+ \u0275\u0275advance();
216
+ \u0275\u0275conditional(ctx.isLoading() ? 4 : 5);
217
+ \u0275\u0275advance(13);
218
+ \u0275\u0275conditional(ctx.hasError() ? 17 : ctx.isLoading() && ctx.helpFiles().length === 0 ? 18 : ctx.selectedFile() ? 19 : -1);
219
+ }
220
+ }, dependencies: [MarkdownComponent, MatButtonModule, MatButton, MatIconButton, MatMenuModule, MatMenu, MatMenuItem, MatMenuContent, MatMenuTrigger, MatDividerModule, MatDivider, MatIconModule, MatIcon], styles: ["\n\n.fullpage-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.fullpage-header-title[_ngcontent-%COMP%] {\n margin-block-start: 0px;\n margin-block-end: 0px;\n padding: 18px 24px 13px 24px;\n color: var(--mat-dialog-subhead-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));\n font-family: var(--mat-dialog-subhead-font, var(--mat-sys-headline-small-font, inherit));\n line-height: var(--mat-dialog-subhead-line-height, var(--mat-sys-headline-small-line-height, 1.5rem));\n font-size: var(--mat-dialog-subhead-size, var(--mat-sys-headline-small-size, 1rem));\n font-weight: var(--mat-dialog-subhead-weight, var(--mat-sys-headline-small-weight, 400));\n letter-spacing: var(--mat-dialog-subhead-tracking, var(--mat-sys-headline-small-tracking, 0.03125em));\n}\n.mat-mdc-dialog-content[_ngcontent-%COMP%] {\n max-height: max-content;\n}\n.markdown-content[_ngcontent-%COMP%] {\n display: block;\n height: calc(100% - 75px);\n width: 100%;\n overflow-x: scroll;\n padding: 25px;\n}\n.dialog-close-icon[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n gap: 5px;\n padding-right: 15px;\n}\n/*# sourceMappingURL=app-help.component.css.map */"] });
221
+ };
222
+ (() => {
223
+ (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(AppHelpComponent, [{
224
+ type: Component,
225
+ args: [{ selector: "app-help", standalone: true, imports: [MarkdownComponent, MatButtonModule, MatMenuModule, MatDividerModule, MatIconModule], template: `<div class="fullpage-header">
226
+ <h6 class="fullpage-header-title">{{ pageTitle }}</h6>
227
+ <button mat-flat-button [matMenuTriggerFor]="helpMenu" [disabled]="isLoading() || hasError() || helpFiles().length === 0">
228
+ @if (isLoading()) { Loading... } @else { Table of Content }
229
+ </button>
230
+ <mat-menu #helpMenu="matMenu">
231
+ <ng-template matMenuContent>
232
+ @if (hasError()) {
233
+ <button mat-menu-item disabled>Error loading menu</button>
234
+ } @else if (!isLoading() && helpFiles().length === 0) {
235
+ <button mat-menu-item disabled>No help entries</button>
236
+ } @else {
237
+ @for (file of helpFiles(); track file.file) {
238
+ <button mat-menu-item (click)="selectFile(file.file)" [disabled]="selectedFile() === file.file">
239
+ {{ file.title }}
240
+ </button>
241
+ }
242
+ }
243
+ </ng-template>
244
+ </mat-menu>
245
+ <div class="dialog-close-icon">
246
+ <button mat-icon-button (click)="backPage()">
247
+ <mat-icon>arrow_back_ios</mat-icon>
248
+ </button>
249
+ <button mat-icon-button (click)="closePage()">
250
+ <mat-icon>close</mat-icon>
251
+ </button>
252
+ </div>
253
+ </div>
254
+ <mat-divider></mat-divider>
255
+
256
+ @if (hasError()) {
257
+ <div class="markdown-content">Unable to load help content.</div>
258
+ } @else if (isLoading() && helpFiles().length === 0) {
259
+ <div class="markdown-content">Loading help...</div>
260
+ } @else if (selectedFile()) {
261
+ <markdown class="markdown-content" [src]="'assets/help-docs/' + selectedFile()"></markdown>
262
+ }
263
+ `, styles: ["/* src/app/core/components/app-help/app-help.component.scss */\n.fullpage-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.fullpage-header-title {\n margin-block-start: 0px;\n margin-block-end: 0px;\n padding: 18px 24px 13px 24px;\n color: var(--mat-dialog-subhead-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));\n font-family: var(--mat-dialog-subhead-font, var(--mat-sys-headline-small-font, inherit));\n line-height: var(--mat-dialog-subhead-line-height, var(--mat-sys-headline-small-line-height, 1.5rem));\n font-size: var(--mat-dialog-subhead-size, var(--mat-sys-headline-small-size, 1rem));\n font-weight: var(--mat-dialog-subhead-weight, var(--mat-sys-headline-small-weight, 400));\n letter-spacing: var(--mat-dialog-subhead-tracking, var(--mat-sys-headline-small-tracking, 0.03125em));\n}\n.mat-mdc-dialog-content {\n max-height: max-content;\n}\n.markdown-content {\n display: block;\n height: calc(100% - 75px);\n width: 100%;\n overflow-x: scroll;\n padding: 25px;\n}\n.dialog-close-icon {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n gap: 5px;\n padding-right: 15px;\n}\n/*# sourceMappingURL=app-help.component.css.map */\n"] }]
264
+ }], null, null);
265
+ })();
266
+ (() => {
267
+ (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(AppHelpComponent, { className: "AppHelpComponent", filePath: "src/app/core/components/app-help/app-help.component.ts", lineNumber: 17 });
268
+ })();
269
+ export {
270
+ AppHelpComponent
271
+ };
272
+ //# sourceMappingURL=chunk-XSABJ5NZ.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["src/app/core/components/app-help/app-help.component.ts", "src/app/core/components/app-help/app-help.component.html"],
4
+ "sourcesContent": ["import { Component, inject, effect, signal, computed } from '@angular/core';\nimport { MarkdownComponent } from 'ngx-markdown';\nimport { httpResource } from '@angular/common/http';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { Router } from '@angular/router';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'app-help',\n standalone: true,\n imports: [MarkdownComponent, MatButtonModule, MatMenuModule, MatDividerModule, MatIconModule],\n templateUrl: './app-help.component.html',\n styleUrl: './app-help.component.scss'\n})\nexport class AppHelpComponent {\n protected readonly pageTitle = 'Help';\n private readonly _router = inject(Router);\n\n // Resource for the help menu JSON (reactive & eagerly fetched)\n private readonly _helpMenuRes = httpResource<{ title: string; file: string }[]>(() => 'assets/help-docs/menu.json');\n\n // Raw list (filtered) as a signal\n protected readonly helpFiles = computed(() => {\n if (this._helpMenuRes.hasValue()) {\n return (this._helpMenuRes.value() ?? []).filter(item => item.file.endsWith('.md'));\n }\n return [] as { title: string; file: string }[];\n });\n\n // Selected file signal (empty until helpFiles first populated)\n protected selectedFile = signal<string>('');\n\n // Initialize default selection reactively when data arrives first time\n private _initSelectionOnce = signal<boolean>(false);\n private _syncEffect = effect(() => {\n const files = this.helpFiles();\n if (!this._initSelectionOnce() && files.length > 0) {\n this.selectedFile.set(files[0].file);\n this._initSelectionOnce.set(true);\n }\n });\n\n protected hasError = computed(() => this._helpMenuRes.error() != null);\n protected isLoading = computed(() => this._helpMenuRes.isLoading());\n\n protected selectFile(file: string): void {\n this.selectedFile.set(file);\n }\n\n protected backPage() {\n this._router.navigate(['/home']);\n }\n\n protected closePage(): void {\n this._router.navigate(['/dashboard']);\n }\n}\n", "<div class=\"fullpage-header\">\n <h6 class=\"fullpage-header-title\">{{ pageTitle }}</h6>\n <button mat-flat-button [matMenuTriggerFor]=\"helpMenu\" [disabled]=\"isLoading() || hasError() || helpFiles().length === 0\">\n @if (isLoading()) { Loading... } @else { Table of Content }\n </button>\n <mat-menu #helpMenu=\"matMenu\">\n <ng-template matMenuContent>\n @if (hasError()) {\n <button mat-menu-item disabled>Error loading menu</button>\n } @else if (!isLoading() && helpFiles().length === 0) {\n <button mat-menu-item disabled>No help entries</button>\n } @else {\n @for (file of helpFiles(); track file.file) {\n <button mat-menu-item (click)=\"selectFile(file.file)\" [disabled]=\"selectedFile() === file.file\">\n {{ file.title }}\n </button>\n }\n }\n </ng-template>\n </mat-menu>\n <div class=\"dialog-close-icon\">\n <button mat-icon-button (click)=\"backPage()\">\n <mat-icon>arrow_back_ios</mat-icon>\n </button>\n <button mat-icon-button (click)=\"closePage()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n</div>\n<mat-divider></mat-divider>\n\n@if (hasError()) {\n <div class=\"markdown-content\">Unable to load help content.</div>\n} @else if (isLoading() && helpFiles().length === 0) {\n <div class=\"markdown-content\">Loading help...</div>\n} @else if (selectedFile()) {\n <markdown class=\"markdown-content\" [src]=\"'assets/help-docs/' + selectedFile()\"></markdown>\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }