@arsedizioni/ars-utils 22.6.86 → 22.6.89

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 (79) hide show
  1. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +3158 -3344
  2. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
  3. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +7616 -4772
  4. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
  5. package/fesm2022/arsedizioni-ars-utils-core.date.mjs +321 -702
  6. package/fesm2022/arsedizioni-ars-utils-core.date.mjs.map +1 -1
  7. package/fesm2022/arsedizioni-ars-utils-core.markdown.mjs +445 -590
  8. package/fesm2022/arsedizioni-ars-utils-core.markdown.mjs.map +1 -1
  9. package/fesm2022/arsedizioni-ars-utils-core.mjs +1735 -2370
  10. package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
  11. package/fesm2022/arsedizioni-ars-utils-core.validators.mjs +1280 -1470
  12. package/fesm2022/arsedizioni-ars-utils-core.validators.mjs.map +1 -1
  13. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs +1097 -1528
  14. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs.map +1 -1
  15. package/fesm2022/arsedizioni-ars-utils-support.common.mjs +198 -294
  16. package/fesm2022/arsedizioni-ars-utils-support.common.mjs.map +1 -1
  17. package/fesm2022/arsedizioni-ars-utils-ui.controls.date.mjs +115 -117
  18. package/fesm2022/arsedizioni-ars-utils-ui.controls.date.mjs.map +1 -1
  19. package/fesm2022/arsedizioni-ars-utils-ui.controls.mjs +1607 -613
  20. package/fesm2022/arsedizioni-ars-utils-ui.controls.mjs.map +1 -1
  21. package/fesm2022/arsedizioni-ars-utils-ui.controls.tree.mjs +840 -367
  22. package/fesm2022/arsedizioni-ars-utils-ui.controls.tree.mjs.map +1 -1
  23. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.auth.mjs +1634 -651
  24. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.auth.mjs.map +1 -1
  25. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.mjs +1255 -792
  26. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.mjs.map +1 -1
  27. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.prompt.mjs +1410 -357
  28. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.prompt.mjs.map +1 -1
  29. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.select.mjs +2401 -944
  30. package/fesm2022/arsedizioni-ars-utils-ui.dialogs.select.mjs.map +1 -1
  31. package/fesm2022/arsedizioni-ars-utils-ui.files.mjs +1553 -741
  32. package/fesm2022/arsedizioni-ars-utils-ui.files.mjs.map +1 -1
  33. package/fesm2022/arsedizioni-ars-utils-ui.filters.mjs +901 -430
  34. package/fesm2022/arsedizioni-ars-utils-ui.filters.mjs.map +1 -1
  35. package/fesm2022/arsedizioni-ars-utils-ui.help.mjs +737 -530
  36. package/fesm2022/arsedizioni-ars-utils-ui.help.mjs.map +1 -1
  37. package/fesm2022/arsedizioni-ars-utils-ui.mjs +6638 -1755
  38. package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
  39. package/fesm2022/arsedizioni-ars-utils-ui.navigation.mjs +1479 -1207
  40. package/fesm2022/arsedizioni-ars-utils-ui.navigation.mjs.map +1 -1
  41. package/fesm2022/arsedizioni-ars-utils-ui.notifications.mjs +1003 -270
  42. package/fesm2022/arsedizioni-ars-utils-ui.notifications.mjs.map +1 -1
  43. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +497 -278
  44. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs.map +1 -1
  45. package/fesm2022/arsedizioni-ars-utils-ui.paginator.mjs +48 -52
  46. package/fesm2022/arsedizioni-ars-utils-ui.paginator.mjs.map +1 -1
  47. package/fesm2022/arsedizioni-ars-utils-ui.shell.mjs +464 -704
  48. package/fesm2022/arsedizioni-ars-utils-ui.shell.mjs.map +1 -1
  49. package/fesm2022/arsedizioni-ars-utils-ui.tinymce.mjs +724 -657
  50. package/fesm2022/arsedizioni-ars-utils-ui.tinymce.mjs.map +1 -1
  51. package/fesm2022/arsedizioni-ars-utils.mjs +3 -19
  52. package/fesm2022/arsedizioni-ars-utils.mjs.map +1 -1
  53. package/package.json +1 -1
  54. package/types/arsedizioni-ars-utils-clipper.common.d.ts +1151 -1163
  55. package/types/arsedizioni-ars-utils-clipper.ui.d.ts +1588 -1426
  56. package/types/arsedizioni-ars-utils-core.d.ts +1169 -1172
  57. package/types/arsedizioni-ars-utils-core.date.d.ts +204 -208
  58. package/types/arsedizioni-ars-utils-core.markdown.d.ts +128 -126
  59. package/types/arsedizioni-ars-utils-core.validators.d.ts +270 -236
  60. package/types/arsedizioni-ars-utils-evolution.common.d.ts +1054 -1067
  61. package/types/arsedizioni-ars-utils-support.common.d.ts +225 -234
  62. package/types/arsedizioni-ars-utils-ui.controls.d.ts +440 -278
  63. package/types/arsedizioni-ars-utils-ui.controls.date.d.ts +24 -28
  64. package/types/arsedizioni-ars-utils-ui.controls.tree.d.ts +172 -136
  65. package/types/arsedizioni-ars-utils-ui.d.ts +2035 -821
  66. package/types/arsedizioni-ars-utils-ui.dialogs.auth.d.ts +327 -322
  67. package/types/arsedizioni-ars-utils-ui.dialogs.d.ts +343 -347
  68. package/types/arsedizioni-ars-utils-ui.dialogs.prompt.d.ts +167 -167
  69. package/types/arsedizioni-ars-utils-ui.dialogs.select.d.ts +373 -367
  70. package/types/arsedizioni-ars-utils-ui.files.d.ts +335 -283
  71. package/types/arsedizioni-ars-utils-ui.filters.d.ts +232 -160
  72. package/types/arsedizioni-ars-utils-ui.help.d.ts +204 -211
  73. package/types/arsedizioni-ars-utils-ui.navigation.d.ts +811 -646
  74. package/types/arsedizioni-ars-utils-ui.notifications.d.ts +74 -78
  75. package/types/arsedizioni-ars-utils-ui.oauth.d.ts +102 -62
  76. package/types/arsedizioni-ars-utils-ui.paginator.d.ts +19 -22
  77. package/types/arsedizioni-ars-utils-ui.shell.d.ts +376 -382
  78. package/types/arsedizioni-ars-utils-ui.tinymce.d.ts +244 -231
  79. package/types/arsedizioni-ars-utils.d.ts +1 -3
@@ -1,531 +1,738 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable, viewChild, inject, DestroyRef, signal, computed, afterNextRender, ChangeDetectionStrategy, ViewEncapsulation, Component, Service } from '@angular/core';
3
- import { DialogService } from '@arsedizioni/ars-utils/ui.dialogs';
4
- import { HttpClient } from '@angular/common/http';
5
- import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
6
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
- import * as i2 from '@angular/material/button';
8
- import { MatButtonModule } from '@angular/material/button';
9
- import { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent } from '@angular/material/dialog';
10
- import * as i4 from '@angular/material/icon';
11
- import { MatIconModule } from '@angular/material/icon';
12
- import * as i5 from '@angular/material/progress-bar';
13
- import { MatProgressBarModule } from '@angular/material/progress-bar';
14
- import * as i6 from '@angular/material/sidenav';
15
- import { MatSidenavModule } from '@angular/material/sidenav';
16
- import * as i3 from '@angular/material/tooltip';
17
- import { MatTooltipModule } from '@angular/material/tooltip';
18
- import * as i7 from '@angular/material/tree';
19
- import { MatTree, MatTreeModule } from '@angular/material/tree';
20
- import { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';
21
- import * as i1 from '@arsedizioni/ars-utils/ui';
22
- import { FlexLayoutModule } from '@arsedizioni/ars-utils/ui';
23
- import { BehaviorSubject } from 'rxjs';
24
-
25
- class IndexInfo {
26
- }
27
- class IndexNode extends IndexInfo {
28
- constructor(item, level) {
29
- super();
30
- // Flattened implementation
31
- this.expandable = !!item.children && item.children.length > 0;
32
- this.level = level;
33
- // Data
34
- this.id = item.id;
35
- this.name = item.name;
36
- this.itemsCount = item.itemsCount;
37
- this.parent = item.parent;
38
- }
39
- }
40
- class IndexTreeDataSource {
41
- constructor() {
42
- this.dataChange = new BehaviorSubject([]);
43
- }
44
- get data() {
45
- return this.dataChange.value;
46
- }
47
- ngOnDestroy() {
48
- this.dataChange.unsubscribe();
49
- }
50
- /**
51
- * Initialises the data source with a flat list of root nodes.
52
- * @param data - Array of root `IndexInfo` items to display in the tree.
53
- */
54
- initialize(data) {
55
- this.dataChange.next(data);
56
- }
57
- /**
58
- * Recursively searches the tree for a node with the given id.
59
- * @param node - The node to start from, or `null`/`undefined` to search from the root.
60
- * @param id - The id of the node to find.
61
- * @returns The matching `IndexInfo`, or `undefined` if not found.
62
- */
63
- findNode(node, id) {
64
- let children;
65
- if (node && node.id === id)
66
- return node;
67
- if (node)
68
- children = node.children;
69
- else
70
- children = this.data;
71
- if (children) {
72
- let _n;
73
- children.some(n => {
74
- n.parent = node ?? undefined;
75
- _n = this.findNode(n, id);
76
- if (_n)
77
- return true;
78
- return false;
79
- });
80
- return _n;
81
- }
82
- return undefined;
83
- }
84
- /**
85
- * Removes the node with the given id from the tree.
86
- * @param id - The id of the node to remove.
87
- */
88
- removeNode(id) {
89
- const n = this.findNode(null, id);
90
- if (!n)
91
- return;
92
- if (n.parent) {
93
- const siblings = n.parent.children;
94
- if (siblings) {
95
- const p = siblings.findIndex(c => c.id === id);
96
- if (p !== -1) {
97
- siblings.splice(p, 1);
98
- if (n.parent.itemsCount !== undefined) {
99
- n.parent.itemsCount--;
100
- }
101
- }
102
- }
103
- }
104
- else {
105
- const p = this.data.findIndex(c => c.id === id);
106
- if (p !== -1) {
107
- this.data.splice(p, 1);
108
- }
109
- }
110
- this.dataChange.next(this.data);
111
- }
112
- /**
113
- * Inserts a new node at the beginning of its parent's children, or at the root.
114
- * @param node - The `IndexInfo` node to insert.
115
- */
116
- insertNode(node) {
117
- if (node.parent) {
118
- node.parent.children ??= [];
119
- node.parent.children.unshift(node);
120
- node.parent.itemsCount = (node.parent.itemsCount ?? 0) + 1;
121
- }
122
- else {
123
- this.data.unshift(node);
124
- }
125
- this.dataChange.next(this.data);
126
- }
127
- /**
128
- * Renames a node in the tree.
129
- * @param id - The id of the node to rename.
130
- * @param name - The new display name.
131
- */
132
- renameNode(id, name) {
133
- const n = this.findNode(null, id);
134
- if (n) {
135
- n.name = name;
136
- this.dataChange.next(this.data);
137
- }
138
- }
139
- /**
140
- * Re-emits the current data to all subscribers, triggering a tree refresh.
141
- */
142
- update() {
143
- this.dataChange.next(this.data);
144
- }
145
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IndexTreeDataSource, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
146
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IndexTreeDataSource }); }
147
- }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IndexTreeDataSource, decorators: [{
149
- type: Injectable
150
- }] });
151
- class HelpViewerComponent {
152
- constructor() {
153
- this.indexPane = viewChild.required('indexPane', /* @ts-ignore */
154
- ...(ngDevMode ? [{ debugName: "indexPane" }] : /* istanbul ignore next */ []));
155
- this.destroyRef = inject(DestroyRef);
156
- this.dialogRef = inject((MatDialogRef));
157
- this.dialogData = inject(MAT_DIALOG_DATA) ?? { id: '1' };
158
- this.dialogService = inject(DialogService);
159
- this.helpService = inject(HelpService);
160
- this.breakpointObserver = inject(BreakpointObserver);
161
- this.busy = signal(false, /* @ts-ignore */
162
- ...(ngDevMode ? [{ debugName: "busy" }] : /* istanbul ignore next */ []));
163
- this.page = signal(null, /* @ts-ignore */
164
- ...(ngDevMode ? [{ debugName: "page" }] : /* istanbul ignore next */ []));
165
- this.indexPaneClosed = false;
166
- this.history = signal([], /* @ts-ignore */
167
- ...(ngDevMode ? [{ debugName: "history" }] : /* istanbul ignore next */ []));
168
- this.canGoBack = computed(() => this.history().length > 1, /* @ts-ignore */
169
- ...(ngDevMode ? [{ debugName: "canGoBack" }] : /* istanbul ignore next */ []));
170
- this.tree = inject(IndexTreeDataSource);
171
- this.matTree = viewChild(MatTree, /* @ts-ignore */
172
- ...(ngDevMode ? [{ debugName: "matTree" }] : /* istanbul ignore next */ []));
173
- /** Provides the level of a flat node to the tree component. */
174
- this.levelAccessor = (node) => node.level;
175
- /** Flat list of all tree nodes used as the tree data source. */
176
- this.flatNodes = signal([], /* @ts-ignore */
177
- ...(ngDevMode ? [{ debugName: "flatNodes" }] : /* istanbul ignore next */ []));
178
- this.hasChild = (_, _node) => _node.expandable;
179
- // Subscribe data change
180
- this.tree.dataChange
181
- .pipe(takeUntilDestroyed(this.destroyRef))
182
- .subscribe(data => this.flatNodes.set(this.flattenNodes(data)));
183
- this.getToc();
184
- this.indexId = this.dialogData.id;
185
- if (this.indexId) {
186
- this.getChapter(this.indexId);
187
- }
188
- afterNextRender(() => {
189
- // Observe layout changes — must run after view init so indexPane is available
190
- this.breakpointObserver
191
- .observe([
192
- Breakpoints.XSmall,
193
- Breakpoints.Small,
194
- Breakpoints.Medium,
195
- Breakpoints.Large,
196
- Breakpoints.XLarge,
197
- ])
198
- .pipe(takeUntilDestroyed(this.destroyRef))
199
- .subscribe(() => this.handleFilterPaneVisibility());
200
- this.indexPaneClosed = !this.indexPane().opened;
201
- });
202
- }
203
- /**
204
- * Handle filter pane visibility
205
- */
206
- handleFilterPaneVisibility() {
207
- const indexPane = this.indexPane();
208
- if (indexPane) {
209
- if (this.breakpointObserver.isMatched(Breakpoints.XSmall) ||
210
- this.breakpointObserver.isMatched(Breakpoints.Small) ||
211
- this.breakpointObserver.isMatched(Breakpoints.Medium)) {
212
- if (indexPane.opened) {
213
- indexPane.close();
214
- }
215
- }
216
- else {
217
- if (!indexPane.opened && !this.indexPaneClosed) {
218
- indexPane.open();
219
- }
220
- }
221
- }
222
- }
223
- /**
224
- * Shows or hides the index pane when the user clicks the toggle button.
225
- * Also tracks the user's explicit intent so the pane is not auto-reopened.
226
- */
227
- toggleIndexPane() {
228
- this.indexPaneClosed = !this.indexPaneClosed;
229
- this.indexPane()?.toggle();
230
- }
231
- /**
232
- * Closes the help viewer dialog.
233
- */
234
- close() {
235
- this.dialogRef.close();
236
- }
237
- /**
238
- * Loads the table of contents from the help service and populates the tree.
239
- */
240
- getToc() {
241
- this.busy.set(true);
242
- this.helpService
243
- .getToc()
244
- .subscribe({
245
- next: r => {
246
- if (!r.success) {
247
- this.dialogService.error(r.message);
248
- }
249
- else {
250
- this.folders = r.value.children;
251
- if (this.folders.length > 0) {
252
- this.tree.initialize(this.folders);
253
- this.indexNode = this.folders[0];
254
- this.expandCurrentFolder();
255
- }
256
- }
257
- },
258
- complete: () => {
259
- this.busy.set(false);
260
- }
261
- });
262
- }
263
- /**
264
- * Intercepts anchor clicks inside the help page and navigates to the referenced chapter.
265
- * @param e - The click `MouseEvent` from the page content area.
266
- * @returns `false` to prevent default browser navigation.
267
- */
268
- gotoChapter(e) {
269
- const el = e.target;
270
- if (el?.nodeName !== 'A')
271
- return false;
272
- const tag = el.outerHTML;
273
- let id = '';
274
- let p = tag.indexOf('help-target="');
275
- if (p !== -1) {
276
- p += 13;
277
- while (p < tag.length && tag[p] !== '"') {
278
- id += tag[p];
279
- p++;
280
- }
281
- }
282
- if (id)
283
- this.getChapter(id);
284
- return false;
285
- }
286
- /**
287
- * Searches the folder list for a node matching the given id.
288
- * @param id - The id of the folder to locate.
289
- * @returns The matching `IndexInfo`, or `undefined` if not found.
290
- */
291
- findFolder(id) {
292
- let node = undefined;
293
- if (this.folders) {
294
- this.folders.some(n => {
295
- node = this.tree.findNode(n, id);
296
- if (node)
297
- return true;
298
- return false;
299
- });
300
- }
301
- return node;
302
- }
303
- /**
304
- * Expands the tree node that corresponds to the currently selected chapter,
305
- * and all its ancestor nodes.
306
- */
307
- expandCurrentFolder() {
308
- if (this.indexNode) {
309
- const current = this.flatNodes().find(n => n.id === this.indexNode.id);
310
- if (current) {
311
- this.matTree()?.expand(current);
312
- }
313
- if (this.indexNode.parent) {
314
- // Expand all ancestors
315
- let n = this.indexNode.parent;
316
- while (n) {
317
- const ancestor = this.flatNodes().find(x => x.id === n.id);
318
- if (ancestor)
319
- this.matTree()?.expand(ancestor);
320
- n = n.parent;
321
- }
322
- }
323
- }
324
- }
325
- /**
326
- * Recursively flattens a nested IndexInfo tree into a depth-first ordered array of IndexNodes.
327
- * @param items - Root-level nodes to flatten.
328
- * @param level - Current depth level.
329
- */
330
- flattenNodes(items, level = 0) {
331
- const result = [];
332
- for (const node of items) {
333
- result.push(new IndexNode(node, level));
334
- if (node.children?.length) {
335
- result.push(...this.flattenNodes(node.children, level + 1));
336
- }
337
- }
338
- return result;
339
- }
340
- /**
341
- * Retrieves and displays a help chapter by id.
342
- * Optionally scrolls to an anchor or pixel offset after loading.
343
- * @param id - Chapter id, optionally followed by an anchor (`id#anchor`).
344
- * @param position - Pixel scroll offset to restore (default `0`, meaning top).
345
- */
346
- getChapter(id, position = 0) {
347
- // Detect anchor if exists
348
- let anchor;
349
- const p = id.indexOf('#');
350
- if (p !== -1) {
351
- anchor = id.substring(p + 1);
352
- id = id.substring(0, p);
353
- }
354
- if (id !== '.') {
355
- this.busy.set(true);
356
- this.helpService.getChapter(id)
357
- .subscribe({
358
- next: r => {
359
- let found = false;
360
- if (!r.success) {
361
- this.dialogService.error("Capitolo non trovato.");
362
- }
363
- else {
364
- if (!position)
365
- this.history.update(h => [...h, { id: this.indexId ?? '', position: this.getPosition() }]);
366
- this.indexId = id;
367
- this.page.set(r.value.data);
368
- found = (r.value.chapter?.name?.length ?? 0) > 0;
369
- if (found) {
370
- // Update folder
371
- this.indexNode = this.findFolder(id);
372
- this.expandCurrentFolder();
373
- // Handle positioning
374
- this.gotoPosition(anchor, position);
375
- }
376
- }
377
- if (!found) {
378
- this.getChapter("1");
379
- }
380
- },
381
- complete: () => {
382
- this.busy.set(false);
383
- }
384
- });
385
- }
386
- else {
387
- if (!position)
388
- this.history.update(h => [...h, { id: this.indexId ?? '', position: this.getPosition() }]);
389
- // Move on the same chapter
390
- this.gotoPosition(anchor, position);
391
- }
392
- }
393
- /**
394
- * Scrolls the help content to a named anchor or a numeric pixel offset.
395
- * @param anchor - Named anchor (`<a name="…">`) to scroll to, if any.
396
- * @param position - Fallback pixel offset (default `0`).
397
- */
398
- gotoPosition(anchor, position = 0) {
399
- setTimeout(() => {
400
- if (anchor) {
401
- const elms = document.getElementsByName(anchor.toUpperCase());
402
- if (elms && elms.length > 0)
403
- position = elms[0].offsetTop;
404
- }
405
- this.setPosition(position > 0 ? position - 1 : 0);
406
- }, 50);
407
- }
408
- /**
409
- * Returns the current vertical scroll offset of the help content scroller.
410
- * @returns The `scrollTop` value in pixels, or `0` if the element is not found.
411
- */
412
- getPosition() {
413
- let elem = document.getElementById('helpviewer-scroller');
414
- if (elem) {
415
- return elem.scrollTop;
416
- }
417
- return 0;
418
- }
419
- /**
420
- * Scrolls the help content scroller to the specified pixel offset.
421
- * @param position - The vertical pixel offset to scroll to.
422
- */
423
- setPosition(position) {
424
- let elem = document.getElementById('helpviewer-scroller');
425
- if (elem) {
426
- elem.scrollTo(0, position);
427
- }
428
- }
429
- /**
430
- * Navigates back to the previous chapter in the browsing history.
431
- */
432
- back() {
433
- const entries = this.history();
434
- if (entries.length === 0)
435
- return;
436
- const n = entries[entries.length - 1];
437
- this.history.update(h => h.slice(0, -1));
438
- this.getChapter(n.id, n.position + 1);
439
- }
440
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: HelpViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
441
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: HelpViewerComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "Bind": SystemUtils.generateUUID() } }, providers: [IndexTreeDataSource], viewQueries: [{ propertyName: "indexPane", first: true, predicate: ["indexPane"], descendants: true, isSignal: true }, { propertyName: "matTree", first: true, predicate: MatTree, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"helpviewer-fixed\">\r\n <div style=\"height:6px\">\r\n @if (busy()) {\r\n <mat-progress-bar z-index=\"11\" mode=\"indeterminate\"></mat-progress-bar>\r\n }\r\n </div>\r\n <div class=\"dialog-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n <div class=\"dialog-menu\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Mostra menu\" [attr.aria-label]=\"'Mostra indice'\"\r\n (click)=\"toggleIndexPane()\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\">\r\n <div mat-dialog-title>Guida</div>\r\n </div>\r\n <div fxFlex=\"100px\" fxLayoutAlign=\"end\" class=\"dialog-close\">\r\n @if (canGoBack()) {\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Indietro\" (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n<mat-dialog-content id=\"helpviewer-scrollable\">\r\n <mat-drawer-container class=\"fill\">\r\n <mat-drawer #indexPane mode=\"side\" [autoFocus]=\"false\" class=\"drawer-small drawer-transparent\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\">\r\n <mat-tree [dataSource]=\"flatNodes()\" [levelAccessor]=\"levelAccessor\" class=\"tree \" style=\"max-width:310px\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple tree-node-style\"\r\n (click)=\"getChapter(node.id);\" [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\"\r\n [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node #treeNodeRef=\"matTreeNode\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\" (click)=\"getChapter(node.id)\"\r\n [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Apri/chiudi ' + node.name\" class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeNodeRef.isExpanded ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n </mat-drawer>\r\n <mat-drawer-content id=\"helpviewer-scroller\">\r\n <div style=\"padding: 0 24px;\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div class=\"fill\" (click)=\"gotoChapter($event)\" [innerHtml]=\"(page() ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-drawer-content>\r\n </mat-drawer-container>\r\n</mat-dialog-content>", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-menu{margin-top:4px!important}.tree{overflow-x:hidden}.tree-node{min-height:36px!important;padding-right:12px;margin-right:0}.tree-node .small-icon-button{width:2rem!important;height:2rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.tree-node .small-icon-button .mat-mdc-button-touch-target{width:2rem!important;height:2rem!important}.tree-node:hover{cursor:pointer;background-color:var(--mat-menu-item-hover-state-layer-color, transparent);border-radius:24px}.tree-node-simple,.tree-node-simple>div{min-height:32px!important}.tree-node-activated,.tree-node-activated>div{font-weight:700!important;color:var(--ars-color-accent, #7894ae)!important}a.help-link,.help-link>a{text-decoration:none;color:#2a91e0}.help-title-2,.help-title-1{font-weight:600!important}.help-word-hit{font-size:inherit;background-color:var(--ars-word-hit-background-color, yellow);padding:0 4px}.help-hint{margin:10px;padding:5px 20px;background-color:var(--ars-help-hint-background-color, lightgoldenrodyellow);border-radius:12px}.help-summary{margin:10px;padding:5px 20px;background-color:var(--ars-help-summary-background-color, lavender);border-radius:12px}.help-img{display:flex;align-items:center;justify-content:center;margin:10px}.help-img-200,.help-img-300,.help-img-400,.help-img-500,.help-img-700,.help-img-800{width:100%}.help-img-200{max-width:200px}.help-img-300{max-width:300px}.help-img-400{max-width:400px}.help-img-500{max-width:500px}.help-img-600{max-width:600px}.help-img-700{max-width:700px}.help-img-800{max-width:800px}.help-filter-box{background-color:var(--ars-filterbox-filtered-background-color, #f9fbe7);border-radius:12px;padding:6px;display:inline-block;margin:0 0 8px 10px}.mat-mdc-dialog-content{max-height:unset!important;padding:0!important}\n"], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.FxLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg] ", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.FxFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg] ", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i1.FxLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg] ", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FxLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg] ", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.FxFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg] ", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.FxFlexFillDirective, selector: " [fxFlexFill], [fxFill], [fxFlexFill.xs], [fxFlexFill.sm], [fxFlexFill.md], [fxFlexFill.lg], [fxFlexFill.xl], [fxFlexFill.lt-sm], [fxFlexFill.lt-md], [fxFlexFill.lt-lg], [fxFlexFill.lt-xl], [fxFlexFill.gt-xs], [fxFlexFill.gt-sm], [fxFlexFill.gt-md], [fxFlexFill.gt-lg] ", inputs: ["fxFlexFill", "fxFill", "fxFlexFill.xs", "fxFlexFill.sm", "fxFlexFill.md", "fxFlexFill.lg", "fxFlexFill.xl", "fxFlexFill.lt-sm", "fxFlexFill.lt-md", "fxFlexFill.lt-lg", "fxFlexFill.lt-xl", "fxFlexFill.gt-xs", "fxFlexFill.gt-sm", "fxFlexFill.gt-md", "fxFlexFill.gt-lg"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i6.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i6.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i6.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i7.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i7.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i7.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i7.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i7.MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
442
- }
443
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: HelpViewerComponent, decorators: [{
444
- type: Component,
445
- args: [{ host: { 'Bind': SystemUtils.generateUUID() }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [IndexTreeDataSource], standalone: true, imports: [FlexLayoutModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressBarModule, MatDialogTitle, MatDialogContent,
446
- MatSidenavModule, MatTreeModule, SafeHtmlPipe], template: "<div class=\"helpviewer-fixed\">\r\n <div style=\"height:6px\">\r\n @if (busy()) {\r\n <mat-progress-bar z-index=\"11\" mode=\"indeterminate\"></mat-progress-bar>\r\n }\r\n </div>\r\n <div class=\"dialog-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n <div class=\"dialog-menu\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Mostra menu\" [attr.aria-label]=\"'Mostra indice'\"\r\n (click)=\"toggleIndexPane()\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\">\r\n <div mat-dialog-title>Guida</div>\r\n </div>\r\n <div fxFlex=\"100px\" fxLayoutAlign=\"end\" class=\"dialog-close\">\r\n @if (canGoBack()) {\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Indietro\" (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n<mat-dialog-content id=\"helpviewer-scrollable\">\r\n <mat-drawer-container class=\"fill\">\r\n <mat-drawer #indexPane mode=\"side\" [autoFocus]=\"false\" class=\"drawer-small drawer-transparent\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\">\r\n <mat-tree [dataSource]=\"flatNodes()\" [levelAccessor]=\"levelAccessor\" class=\"tree \" style=\"max-width:310px\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple tree-node-style\"\r\n (click)=\"getChapter(node.id);\" [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\"\r\n [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node #treeNodeRef=\"matTreeNode\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\" (click)=\"getChapter(node.id)\"\r\n [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Apri/chiudi ' + node.name\" class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeNodeRef.isExpanded ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n </mat-drawer>\r\n <mat-drawer-content id=\"helpviewer-scroller\">\r\n <div style=\"padding: 0 24px;\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div class=\"fill\" (click)=\"gotoChapter($event)\" [innerHtml]=\"(page() ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-drawer-content>\r\n </mat-drawer-container>\r\n</mat-dialog-content>", styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-menu{margin-top:4px!important}.tree{overflow-x:hidden}.tree-node{min-height:36px!important;padding-right:12px;margin-right:0}.tree-node .small-icon-button{width:2rem!important;height:2rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.tree-node .small-icon-button .mat-mdc-button-touch-target{width:2rem!important;height:2rem!important}.tree-node:hover{cursor:pointer;background-color:var(--mat-menu-item-hover-state-layer-color, transparent);border-radius:24px}.tree-node-simple,.tree-node-simple>div{min-height:32px!important}.tree-node-activated,.tree-node-activated>div{font-weight:700!important;color:var(--ars-color-accent, #7894ae)!important}a.help-link,.help-link>a{text-decoration:none;color:#2a91e0}.help-title-2,.help-title-1{font-weight:600!important}.help-word-hit{font-size:inherit;background-color:var(--ars-word-hit-background-color, yellow);padding:0 4px}.help-hint{margin:10px;padding:5px 20px;background-color:var(--ars-help-hint-background-color, lightgoldenrodyellow);border-radius:12px}.help-summary{margin:10px;padding:5px 20px;background-color:var(--ars-help-summary-background-color, lavender);border-radius:12px}.help-img{display:flex;align-items:center;justify-content:center;margin:10px}.help-img-200,.help-img-300,.help-img-400,.help-img-500,.help-img-700,.help-img-800{width:100%}.help-img-200{max-width:200px}.help-img-300{max-width:300px}.help-img-400{max-width:400px}.help-img-500{max-width:500px}.help-img-600{max-width:600px}.help-img-700{max-width:700px}.help-img-800{max-width:800px}.help-filter-box{background-color:var(--ars-filterbox-filtered-background-color, #f9fbe7);border-radius:12px;padding:6px;display:inline-block;margin:0 0 8px 10px}.mat-mdc-dialog-content{max-height:unset!important;padding:0!important}\n"] }]
447
- }], ctorParameters: () => [], propDecorators: { indexPane: [{ type: i0.ViewChild, args: ['indexPane', { isSignal: true }] }], matTree: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MatTree), { isSignal: true }] }] } });
448
-
449
- class HelpService {
450
- constructor() {
451
- this.httpClient = inject(HttpClient);
452
- this.dialogService = inject(DialogService);
453
- }
454
- /**
455
- * Initialises the service with the back-end base URI.
456
- * Must be called once during application bootstrap before any other method.
457
- * @param serviceUri - Base URL of the help service (e.g. `'https://api.example.com'`).
458
- */
459
- initialize(serviceUri) {
460
- this.serviceUri = serviceUri;
461
- }
462
- /**
463
- * Retrieves the HTML content and metadata of a help chapter.
464
- * @param id - The chapter id.
465
- * @param query - Optional search query to highlight within the chapter content.
466
- * @returns An observable that emits `ApiResult<ChapterBag>`.
467
- */
468
- getChapter(id, query = undefined) {
469
- return this.httpClient.get(this.serviceUri +
470
- '/help/chapter/' +
471
- id +
472
- '/?query=' +
473
- (query ?? ''));
474
- }
475
- /**
476
- * Retrieves metadata (title, path, etc.) for a help chapter without its content.
477
- * @param id - The chapter id.
478
- * @returns An observable that emits `ApiResult<Chapter>`.
479
- */
480
- getChapterInfo(id) {
481
- return this.httpClient.get(this.serviceUri + '/help/chapter/info/' + id);
482
- }
483
- /**
484
- * Retrieves a raw repository file by id.
485
- * @param id - The repository file id.
486
- * @returns An observable that emits `ApiResult<unknown>`.
487
- */
488
- getRepo(id) {
489
- return this.httpClient.get(this.serviceUri + '/help/repo/' + id);
490
- }
491
- /**
492
- * Retrieves the table of contents as a hierarchical `IndexInfo` tree.
493
- * @returns An observable that emits `ApiResult<IndexInfo>`.
494
- */
495
- getToc() {
496
- return this.httpClient.get(this.serviceUri + '/help/toc');
497
- }
498
- /**
499
- * Opens the help viewer dialog, optionally pre-navigated to a specific chapter.
500
- * @param id - The chapter id to open (default: `'1'`, the root chapter).
501
- */
502
- show(id = '1') {
503
- this.dialogService.open(HelpViewerComponent, {
504
- ariaLabel: 'guida',
505
- autoFocus: 'dialog',
506
- restoreFocus: false,
507
- disableClose: true,
508
- data: { id },
509
- minWidth: '375px',
510
- maxWidth: '1200px',
511
- width: '100%',
512
- height: '100%'
513
- });
514
- }
515
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: HelpService, deps: [], target: i0.ɵɵFactoryTarget.Service }); }
516
- static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.7", ngImport: i0, type: HelpService }); }
517
- }
518
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: HelpService, decorators: [{
519
- type: Service
520
- }] });
521
-
522
- /*
523
- * Public API Surface of @arsedizioni/ars-utils/ui.help
524
- */
525
-
526
- /**
527
- * Generated bundle index. Do not edit.
528
- */
529
-
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, DestroyRef, Injectable, Service, ViewEncapsulation, afterNextRender, computed, inject, signal, viewChild } from "@angular/core";
3
+ import { DialogService } from "@arsedizioni/ars-utils/ui.dialogs";
4
+ import { HttpClient } from "@angular/common/http";
5
+ import { BreakpointObserver, Breakpoints } from "@angular/cdk/layout";
6
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
7
+ import * as i2 from "@angular/material/button";
8
+ import { MatButtonModule } from "@angular/material/button";
9
+ import { MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle } from "@angular/material/dialog";
10
+ import * as i4 from "@angular/material/icon";
11
+ import { MatIconModule } from "@angular/material/icon";
12
+ import * as i5 from "@angular/material/progress-bar";
13
+ import { MatProgressBarModule } from "@angular/material/progress-bar";
14
+ import * as i6 from "@angular/material/sidenav";
15
+ import { MatSidenavModule } from "@angular/material/sidenav";
16
+ import * as i3 from "@angular/material/tooltip";
17
+ import { MatTooltipModule } from "@angular/material/tooltip";
18
+ import * as i7 from "@angular/material/tree";
19
+ import { MatTree, MatTreeModule } from "@angular/material/tree";
20
+ import { SafeHtmlPipe, SystemUtils } from "@arsedizioni/ars-utils/core";
21
+ import * as i1 from "@arsedizioni/ars-utils/ui";
22
+ import { FlexLayoutModule } from "@arsedizioni/ars-utils/ui";
23
+ import { BehaviorSubject } from "rxjs";
24
+ var IndexInfo = class {};
25
+ var IndexNode = class extends IndexInfo {
26
+ constructor(item, level) {
27
+ super();
28
+ this.expandable = !!item.children && item.children.length > 0;
29
+ this.level = level;
30
+ this.id = item.id;
31
+ this.name = item.name;
32
+ this.itemsCount = item.itemsCount;
33
+ this.parent = item.parent;
34
+ }
35
+ };
36
+ var IndexTreeDataSource = class IndexTreeDataSource {
37
+ constructor() {
38
+ this.dataChange = new BehaviorSubject([]);
39
+ }
40
+ get data() {
41
+ return this.dataChange.value;
42
+ }
43
+ ngOnDestroy() {
44
+ this.dataChange.unsubscribe();
45
+ }
46
+ initialize(data) {
47
+ this.dataChange.next(data);
48
+ }
49
+ findNode(node, id) {
50
+ let children;
51
+ if (node && node.id === id) return node;
52
+ if (node) children = node.children;
53
+ else children = this.data;
54
+ if (children) {
55
+ let _n;
56
+ children.some((n) => {
57
+ n.parent = node ?? void 0;
58
+ _n = this.findNode(n, id);
59
+ if (_n) return true;
60
+ return false;
61
+ });
62
+ return _n;
63
+ }
64
+ }
65
+ removeNode(id) {
66
+ const n = this.findNode(null, id);
67
+ if (!n) return;
68
+ if (n.parent) {
69
+ const siblings = n.parent.children;
70
+ if (siblings) {
71
+ const p = siblings.findIndex((c) => c.id === id);
72
+ if (p !== -1) {
73
+ siblings.splice(p, 1);
74
+ if (n.parent.itemsCount !== void 0) n.parent.itemsCount--;
75
+ }
76
+ }
77
+ } else {
78
+ const p = this.data.findIndex((c) => c.id === id);
79
+ if (p !== -1) this.data.splice(p, 1);
80
+ }
81
+ this.dataChange.next(this.data);
82
+ }
83
+ insertNode(node) {
84
+ if (node.parent) {
85
+ node.parent.children ??= [];
86
+ node.parent.children.unshift(node);
87
+ node.parent.itemsCount = (node.parent.itemsCount ?? 0) + 1;
88
+ } else this.data.unshift(node);
89
+ this.dataChange.next(this.data);
90
+ }
91
+ renameNode(id, name) {
92
+ const n = this.findNode(null, id);
93
+ if (n) {
94
+ n.name = name;
95
+ this.dataChange.next(this.data);
96
+ }
97
+ }
98
+ update() {
99
+ this.dataChange.next(this.data);
100
+ }
101
+ static {
102
+ this.ɵfac = i0.ɵɵngDeclareFactory({
103
+ minVersion: "12.0.0",
104
+ version: "22.2.1",
105
+ ngImport: i0,
106
+ type: IndexTreeDataSource,
107
+ deps: [],
108
+ target: i0.ɵɵFactoryTarget.Injectable
109
+ });
110
+ }
111
+ static {
112
+ this.ɵprov = i0.ɵɵngDeclareInjectable({
113
+ minVersion: "12.0.0",
114
+ version: "22.2.1",
115
+ ngImport: i0,
116
+ type: IndexTreeDataSource
117
+ });
118
+ }
119
+ };
120
+ i0.ɵɵngDeclareClassMetadata({
121
+ minVersion: "12.0.0",
122
+ version: "22.2.1",
123
+ ngImport: i0,
124
+ type: IndexTreeDataSource,
125
+ decorators: [{ type: Injectable }]
126
+ });
127
+ var HelpViewerComponent = class HelpViewerComponent {
128
+ constructor() {
129
+ this.indexPane = viewChild.required("indexPane", ...ngDevMode ? [{ debugName: "indexPane" }] : /* istanbul ignore next */ []);
130
+ this.destroyRef = inject(DestroyRef);
131
+ this.dialogRef = inject(MatDialogRef);
132
+ this.dialogData = inject(MAT_DIALOG_DATA) ?? { id: "1" };
133
+ this.dialogService = inject(DialogService);
134
+ this.helpService = inject(HelpService);
135
+ this.breakpointObserver = inject(BreakpointObserver);
136
+ this.busy = signal(false, ...ngDevMode ? [{ debugName: "busy" }] : /* istanbul ignore next */ []);
137
+ this.page = signal(null, ...ngDevMode ? [{ debugName: "page" }] : /* istanbul ignore next */ []);
138
+ this.indexPaneClosed = false;
139
+ this.history = signal([], ...ngDevMode ? [{ debugName: "history" }] : /* istanbul ignore next */ []);
140
+ this.canGoBack = computed(() => this.history().length > 1, ...ngDevMode ? [{ debugName: "canGoBack" }] : /* istanbul ignore next */ []);
141
+ this.tree = inject(IndexTreeDataSource);
142
+ this.matTree = viewChild(MatTree, ...ngDevMode ? [{ debugName: "matTree" }] : /* istanbul ignore next */ []);
143
+ this.levelAccessor = (node) => node.level;
144
+ this.flatNodes = signal([], ...ngDevMode ? [{ debugName: "flatNodes" }] : /* istanbul ignore next */ []);
145
+ this.hasChild = (_, _node) => _node.expandable;
146
+ this.tree.dataChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data) => this.flatNodes.set(this.flattenNodes(data)));
147
+ this.getToc();
148
+ this.indexId = this.dialogData.id;
149
+ if (this.indexId) this.getChapter(this.indexId);
150
+ afterNextRender(() => {
151
+ this.breakpointObserver.observe([
152
+ Breakpoints.XSmall,
153
+ Breakpoints.Small,
154
+ Breakpoints.Medium,
155
+ Breakpoints.Large,
156
+ Breakpoints.XLarge
157
+ ]).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.handleFilterPaneVisibility());
158
+ this.indexPaneClosed = !this.indexPane().opened;
159
+ });
160
+ }
161
+ handleFilterPaneVisibility() {
162
+ const indexPane = this.indexPane();
163
+ if (indexPane) {
164
+ if (this.breakpointObserver.isMatched(Breakpoints.XSmall) || this.breakpointObserver.isMatched(Breakpoints.Small) || this.breakpointObserver.isMatched(Breakpoints.Medium)) {
165
+ if (indexPane.opened) indexPane.close();
166
+ } else if (!indexPane.opened && !this.indexPaneClosed) indexPane.open();
167
+ }
168
+ }
169
+ toggleIndexPane() {
170
+ this.indexPaneClosed = !this.indexPaneClosed;
171
+ this.indexPane()?.toggle();
172
+ }
173
+ close() {
174
+ this.dialogRef.close();
175
+ }
176
+ getToc() {
177
+ this.busy.set(true);
178
+ this.helpService.getToc().subscribe({
179
+ next: (r) => {
180
+ if (!r.success) this.dialogService.error(r.message);
181
+ else {
182
+ this.folders = r.value.children;
183
+ if (this.folders.length > 0) {
184
+ this.tree.initialize(this.folders);
185
+ this.indexNode = this.folders[0];
186
+ this.expandCurrentFolder();
187
+ }
188
+ }
189
+ },
190
+ complete: () => {
191
+ this.busy.set(false);
192
+ }
193
+ });
194
+ }
195
+ gotoChapter(e) {
196
+ const el = e.target;
197
+ if (el?.nodeName !== "A") return false;
198
+ const tag = el.outerHTML;
199
+ let id = "";
200
+ let p = tag.indexOf("help-target=\"");
201
+ if (p !== -1) {
202
+ p += 13;
203
+ while (p < tag.length && tag[p] !== "\"") {
204
+ id += tag[p];
205
+ p++;
206
+ }
207
+ }
208
+ if (id) this.getChapter(id);
209
+ return false;
210
+ }
211
+ findFolder(id) {
212
+ let node = void 0;
213
+ if (this.folders) this.folders.some((n) => {
214
+ node = this.tree.findNode(n, id);
215
+ if (node) return true;
216
+ return false;
217
+ });
218
+ return node;
219
+ }
220
+ expandCurrentFolder() {
221
+ if (this.indexNode) {
222
+ const current = this.flatNodes().find((n) => n.id === this.indexNode.id);
223
+ if (current) this.matTree()?.expand(current);
224
+ if (this.indexNode.parent) {
225
+ let n = this.indexNode.parent;
226
+ while (n) {
227
+ const ancestor = this.flatNodes().find((x) => x.id === n.id);
228
+ if (ancestor) this.matTree()?.expand(ancestor);
229
+ n = n.parent;
230
+ }
231
+ }
232
+ }
233
+ }
234
+ flattenNodes(items, level = 0) {
235
+ const result = [];
236
+ for (const node of items) {
237
+ result.push(new IndexNode(node, level));
238
+ if (node.children?.length) result.push(...this.flattenNodes(node.children, level + 1));
239
+ }
240
+ return result;
241
+ }
242
+ getChapter(id, position = 0) {
243
+ let anchor;
244
+ const p = id.indexOf("#");
245
+ if (p !== -1) {
246
+ anchor = id.substring(p + 1);
247
+ id = id.substring(0, p);
248
+ }
249
+ if (id !== ".") {
250
+ this.busy.set(true);
251
+ this.helpService.getChapter(id).subscribe({
252
+ next: (r) => {
253
+ let found = false;
254
+ if (!r.success) this.dialogService.error("Capitolo non trovato.");
255
+ else {
256
+ if (!position) this.history.update((h) => [...h, {
257
+ id: this.indexId ?? "",
258
+ position: this.getPosition()
259
+ }]);
260
+ this.indexId = id;
261
+ this.page.set(r.value.data);
262
+ found = (r.value.chapter?.name?.length ?? 0) > 0;
263
+ if (found) {
264
+ this.indexNode = this.findFolder(id);
265
+ this.expandCurrentFolder();
266
+ this.gotoPosition(anchor, position);
267
+ }
268
+ }
269
+ if (!found) this.getChapter("1");
270
+ },
271
+ complete: () => {
272
+ this.busy.set(false);
273
+ }
274
+ });
275
+ } else {
276
+ if (!position) this.history.update((h) => [...h, {
277
+ id: this.indexId ?? "",
278
+ position: this.getPosition()
279
+ }]);
280
+ this.gotoPosition(anchor, position);
281
+ }
282
+ }
283
+ gotoPosition(anchor, position = 0) {
284
+ setTimeout(() => {
285
+ if (anchor) {
286
+ const elms = document.getElementsByName(anchor.toUpperCase());
287
+ if (elms && elms.length > 0) position = elms[0].offsetTop;
288
+ }
289
+ this.setPosition(position > 0 ? position - 1 : 0);
290
+ }, 50);
291
+ }
292
+ getPosition() {
293
+ let elem = document.getElementById("helpviewer-scroller");
294
+ if (elem) return elem.scrollTop;
295
+ return 0;
296
+ }
297
+ setPosition(position) {
298
+ let elem = document.getElementById("helpviewer-scroller");
299
+ if (elem) elem.scrollTo(0, position);
300
+ }
301
+ back() {
302
+ const entries = this.history();
303
+ if (entries.length === 0) return;
304
+ const n = entries[entries.length - 1];
305
+ this.history.update((h) => h.slice(0, -1));
306
+ this.getChapter(n.id, n.position + 1);
307
+ }
308
+ static {
309
+ this.ɵfac = i0.ɵɵngDeclareFactory({
310
+ minVersion: "12.0.0",
311
+ version: "22.2.1",
312
+ ngImport: i0,
313
+ type: HelpViewerComponent,
314
+ deps: [],
315
+ target: i0.ɵɵFactoryTarget.Component
316
+ });
317
+ }
318
+ static {
319
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
320
+ minVersion: "17.0.0",
321
+ version: "22.2.1",
322
+ type: HelpViewerComponent,
323
+ isStandalone: true,
324
+ selector: "ng-component",
325
+ host: { attributes: { "Bind": SystemUtils.generateUUID() } },
326
+ providers: [IndexTreeDataSource],
327
+ viewQueries: [{
328
+ propertyName: "indexPane",
329
+ first: true,
330
+ predicate: ["indexPane"],
331
+ descendants: true,
332
+ isSignal: true
333
+ }, {
334
+ propertyName: "matTree",
335
+ first: true,
336
+ predicate: MatTree,
337
+ descendants: true,
338
+ isSignal: true
339
+ }],
340
+ ngImport: i0,
341
+ template: "<div class=\"helpviewer-fixed\">\r\n <div style=\"height:6px\">\r\n @if (busy()) {\r\n <mat-progress-bar z-index=\"11\" mode=\"indeterminate\"></mat-progress-bar>\r\n }\r\n </div>\r\n <div class=\"dialog-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n <div class=\"dialog-menu\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Mostra menu\" [attr.aria-label]=\"'Mostra indice'\"\r\n (click)=\"toggleIndexPane()\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\">\r\n <div mat-dialog-title>Guida</div>\r\n </div>\r\n <div fxFlex=\"100px\" fxLayoutAlign=\"end\" class=\"dialog-close\">\r\n @if (canGoBack()) {\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Indietro\" (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n<mat-dialog-content id=\"helpviewer-scrollable\">\r\n <mat-drawer-container class=\"fill\">\r\n <mat-drawer #indexPane mode=\"side\" [autoFocus]=\"false\" class=\"drawer-small drawer-transparent\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\">\r\n <mat-tree [dataSource]=\"flatNodes()\" [levelAccessor]=\"levelAccessor\" class=\"tree \" style=\"max-width:310px\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple tree-node-style\"\r\n (click)=\"getChapter(node.id);\" [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\"\r\n [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node #treeNodeRef=\"matTreeNode\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\" (click)=\"getChapter(node.id)\"\r\n [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Apri/chiudi ' + node.name\" class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeNodeRef.isExpanded ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n </mat-drawer>\r\n <mat-drawer-content id=\"helpviewer-scroller\">\r\n <div style=\"padding: 0 24px;\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div class=\"fill\" (click)=\"gotoChapter($event)\" [innerHtml]=\"(page() ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-drawer-content>\r\n </mat-drawer-container>\r\n</mat-dialog-content>",
342
+ styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-menu{margin-top:4px!important}.tree{overflow-x:hidden}.tree-node{min-height:36px!important;padding-right:12px;margin-right:0}.tree-node .small-icon-button{width:2rem!important;height:2rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.tree-node .small-icon-button .mat-mdc-button-touch-target{width:2rem!important;height:2rem!important}.tree-node:hover{cursor:pointer;background-color:var(--mat-menu-item-hover-state-layer-color, transparent);border-radius:24px}.tree-node-simple,.tree-node-simple>div{min-height:32px!important}.tree-node-activated,.tree-node-activated>div{font-weight:700!important;color:var(--ars-color-accent, #7894ae)!important}a.help-link,.help-link>a{text-decoration:none;color:#2a91e0}.help-title-2,.help-title-1{font-weight:600!important}.help-word-hit{font-size:inherit;background-color:var(--ars-word-hit-background-color, yellow);padding:0 4px}.help-hint{margin:10px;padding:5px 20px;background-color:var(--ars-help-hint-background-color, lightgoldenrodyellow);border-radius:12px}.help-summary{margin:10px;padding:5px 20px;background-color:var(--ars-help-summary-background-color, lavender);border-radius:12px}.help-img{display:flex;align-items:center;justify-content:center;margin:10px}.help-img-200,.help-img-300,.help-img-400,.help-img-500,.help-img-700,.help-img-800{width:100%}.help-img-200{max-width:200px}.help-img-300{max-width:300px}.help-img-400{max-width:400px}.help-img-500{max-width:500px}.help-img-600{max-width:600px}.help-img-700{max-width:700px}.help-img-800{max-width:800px}.help-filter-box{background-color:var(--ars-filterbox-filtered-background-color, #f9fbe7);border-radius:12px;padding:6px;display:inline-block;margin:0 0 8px 10px}.mat-mdc-dialog-content{max-height:unset!important;padding:0!important}\n"],
343
+ dependencies: [
344
+ {
345
+ kind: "ngmodule",
346
+ type: FlexLayoutModule
347
+ },
348
+ {
349
+ kind: "directive",
350
+ type: i1.FxLayoutDirective,
351
+ selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg] ",
352
+ inputs: [
353
+ "fxLayout",
354
+ "fxLayout.xs",
355
+ "fxLayout.sm",
356
+ "fxLayout.md",
357
+ "fxLayout.lg",
358
+ "fxLayout.xl",
359
+ "fxLayout.lt-sm",
360
+ "fxLayout.lt-md",
361
+ "fxLayout.lt-lg",
362
+ "fxLayout.lt-xl",
363
+ "fxLayout.gt-xs",
364
+ "fxLayout.gt-sm",
365
+ "fxLayout.gt-md",
366
+ "fxLayout.gt-lg"
367
+ ]
368
+ },
369
+ {
370
+ kind: "directive",
371
+ type: i1.FxFlexDirective,
372
+ selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg] ",
373
+ inputs: [
374
+ "fxFlex",
375
+ "fxFlex.xs",
376
+ "fxFlex.sm",
377
+ "fxFlex.md",
378
+ "fxFlex.lg",
379
+ "fxFlex.xl",
380
+ "fxFlex.lt-sm",
381
+ "fxFlex.lt-md",
382
+ "fxFlex.lt-lg",
383
+ "fxFlex.lt-xl",
384
+ "fxFlex.gt-xs",
385
+ "fxFlex.gt-sm",
386
+ "fxFlex.gt-md",
387
+ "fxFlex.gt-lg"
388
+ ]
389
+ },
390
+ {
391
+ kind: "directive",
392
+ type: i1.FxLayoutAlignDirective,
393
+ selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg] ",
394
+ inputs: [
395
+ "fxLayoutAlign",
396
+ "fxLayoutAlign.xs",
397
+ "fxLayoutAlign.sm",
398
+ "fxLayoutAlign.md",
399
+ "fxLayoutAlign.lg",
400
+ "fxLayoutAlign.xl",
401
+ "fxLayoutAlign.lt-sm",
402
+ "fxLayoutAlign.lt-md",
403
+ "fxLayoutAlign.lt-lg",
404
+ "fxLayoutAlign.lt-xl",
405
+ "fxLayoutAlign.gt-xs",
406
+ "fxLayoutAlign.gt-sm",
407
+ "fxLayoutAlign.gt-md",
408
+ "fxLayoutAlign.gt-lg"
409
+ ]
410
+ },
411
+ {
412
+ kind: "directive",
413
+ type: i1.FxLayoutGapDirective,
414
+ selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg] ",
415
+ inputs: [
416
+ "fxLayoutGap",
417
+ "fxLayoutGap.xs",
418
+ "fxLayoutGap.sm",
419
+ "fxLayoutGap.md",
420
+ "fxLayoutGap.lg",
421
+ "fxLayoutGap.xl",
422
+ "fxLayoutGap.lt-sm",
423
+ "fxLayoutGap.lt-md",
424
+ "fxLayoutGap.lt-lg",
425
+ "fxLayoutGap.lt-xl",
426
+ "fxLayoutGap.gt-xs",
427
+ "fxLayoutGap.gt-sm",
428
+ "fxLayoutGap.gt-md",
429
+ "fxLayoutGap.gt-lg"
430
+ ]
431
+ },
432
+ {
433
+ kind: "directive",
434
+ type: i1.FxFlexAlignDirective,
435
+ selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg] ",
436
+ inputs: [
437
+ "fxFlexAlign",
438
+ "fxFlexAlign.xs",
439
+ "fxFlexAlign.sm",
440
+ "fxFlexAlign.md",
441
+ "fxFlexAlign.lg",
442
+ "fxFlexAlign.xl",
443
+ "fxFlexAlign.lt-sm",
444
+ "fxFlexAlign.lt-md",
445
+ "fxFlexAlign.lt-lg",
446
+ "fxFlexAlign.lt-xl",
447
+ "fxFlexAlign.gt-xs",
448
+ "fxFlexAlign.gt-sm",
449
+ "fxFlexAlign.gt-md",
450
+ "fxFlexAlign.gt-lg"
451
+ ]
452
+ },
453
+ {
454
+ kind: "directive",
455
+ type: i1.FxFlexFillDirective,
456
+ selector: " [fxFlexFill], [fxFill], [fxFlexFill.xs], [fxFlexFill.sm], [fxFlexFill.md], [fxFlexFill.lg], [fxFlexFill.xl], [fxFlexFill.lt-sm], [fxFlexFill.lt-md], [fxFlexFill.lt-lg], [fxFlexFill.lt-xl], [fxFlexFill.gt-xs], [fxFlexFill.gt-sm], [fxFlexFill.gt-md], [fxFlexFill.gt-lg] ",
457
+ inputs: [
458
+ "fxFlexFill",
459
+ "fxFill",
460
+ "fxFlexFill.xs",
461
+ "fxFlexFill.sm",
462
+ "fxFlexFill.md",
463
+ "fxFlexFill.lg",
464
+ "fxFlexFill.xl",
465
+ "fxFlexFill.lt-sm",
466
+ "fxFlexFill.lt-md",
467
+ "fxFlexFill.lt-lg",
468
+ "fxFlexFill.lt-xl",
469
+ "fxFlexFill.gt-xs",
470
+ "fxFlexFill.gt-sm",
471
+ "fxFlexFill.gt-md",
472
+ "fxFlexFill.gt-lg"
473
+ ]
474
+ },
475
+ {
476
+ kind: "ngmodule",
477
+ type: MatButtonModule
478
+ },
479
+ {
480
+ kind: "component",
481
+ type: i2.MatIconButton,
482
+ selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]",
483
+ exportAs: ["matButton", "matAnchor"]
484
+ },
485
+ {
486
+ kind: "ngmodule",
487
+ type: MatTooltipModule
488
+ },
489
+ {
490
+ kind: "directive",
491
+ type: i3.MatTooltip,
492
+ selector: "[matTooltip]",
493
+ inputs: [
494
+ "matTooltipPosition",
495
+ "matTooltipPositionAtOrigin",
496
+ "matTooltipDisabled",
497
+ "matTooltipShowDelay",
498
+ "matTooltipHideDelay",
499
+ "matTooltipTouchGestures",
500
+ "matTooltip",
501
+ "matTooltipClass"
502
+ ],
503
+ exportAs: ["matTooltip"]
504
+ },
505
+ {
506
+ kind: "ngmodule",
507
+ type: MatIconModule
508
+ },
509
+ {
510
+ kind: "component",
511
+ type: i4.MatIcon,
512
+ selector: "mat-icon",
513
+ inputs: [
514
+ "color",
515
+ "inline",
516
+ "svgIcon",
517
+ "fontSet",
518
+ "fontIcon"
519
+ ],
520
+ exportAs: ["matIcon"]
521
+ },
522
+ {
523
+ kind: "ngmodule",
524
+ type: MatProgressBarModule
525
+ },
526
+ {
527
+ kind: "component",
528
+ type: i5.MatProgressBar,
529
+ selector: "mat-progress-bar",
530
+ inputs: [
531
+ "color",
532
+ "value",
533
+ "bufferValue",
534
+ "mode"
535
+ ],
536
+ outputs: ["animationEnd"],
537
+ exportAs: ["matProgressBar"]
538
+ },
539
+ {
540
+ kind: "directive",
541
+ type: MatDialogTitle,
542
+ selector: "[mat-dialog-title], [matDialogTitle]",
543
+ inputs: ["id"],
544
+ exportAs: ["matDialogTitle"]
545
+ },
546
+ {
547
+ kind: "directive",
548
+ type: MatDialogContent,
549
+ selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]"
550
+ },
551
+ {
552
+ kind: "ngmodule",
553
+ type: MatSidenavModule
554
+ },
555
+ {
556
+ kind: "component",
557
+ type: i6.MatDrawer,
558
+ selector: "mat-drawer",
559
+ inputs: [
560
+ "position",
561
+ "mode",
562
+ "disableClose",
563
+ "autoFocus",
564
+ "opened"
565
+ ],
566
+ outputs: [
567
+ "openedChange",
568
+ "opened",
569
+ "openedStart",
570
+ "closed",
571
+ "closedStart",
572
+ "positionChanged"
573
+ ],
574
+ exportAs: ["matDrawer"]
575
+ },
576
+ {
577
+ kind: "component",
578
+ type: i6.MatDrawerContainer,
579
+ selector: "mat-drawer-container",
580
+ inputs: ["autosize", "hasBackdrop"],
581
+ outputs: ["backdropClick"],
582
+ exportAs: ["matDrawerContainer"]
583
+ },
584
+ {
585
+ kind: "component",
586
+ type: i6.MatDrawerContent,
587
+ selector: "mat-drawer-content"
588
+ },
589
+ {
590
+ kind: "ngmodule",
591
+ type: MatTreeModule
592
+ },
593
+ {
594
+ kind: "directive",
595
+ type: i7.MatTreeNodeDef,
596
+ selector: "[matTreeNodeDef]",
597
+ inputs: ["matTreeNodeDefWhen", "matTreeNode"]
598
+ },
599
+ {
600
+ kind: "directive",
601
+ type: i7.MatTreeNodePadding,
602
+ selector: "[matTreeNodePadding]",
603
+ inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"]
604
+ },
605
+ {
606
+ kind: "directive",
607
+ type: i7.MatTreeNodeToggle,
608
+ selector: "[matTreeNodeToggle]",
609
+ inputs: ["matTreeNodeToggleRecursive"]
610
+ },
611
+ {
612
+ kind: "component",
613
+ type: i7.MatTree,
614
+ selector: "mat-tree",
615
+ exportAs: ["matTree"]
616
+ },
617
+ {
618
+ kind: "directive",
619
+ type: i7.MatTreeNode,
620
+ selector: "mat-tree-node",
621
+ inputs: ["tabIndex", "disabled"],
622
+ outputs: ["activation", "expandedChange"],
623
+ exportAs: ["matTreeNode"]
624
+ },
625
+ {
626
+ kind: "pipe",
627
+ type: SafeHtmlPipe,
628
+ name: "safeHtml"
629
+ }
630
+ ],
631
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
632
+ encapsulation: i0.ViewEncapsulation.None
633
+ });
634
+ }
635
+ };
636
+ i0.ɵɵngDeclareClassMetadata({
637
+ minVersion: "12.0.0",
638
+ version: "22.2.1",
639
+ ngImport: i0,
640
+ type: HelpViewerComponent,
641
+ decorators: [{
642
+ type: Component,
643
+ args: [{
644
+ host: { "Bind": SystemUtils.generateUUID() },
645
+ encapsulation: ViewEncapsulation.None,
646
+ changeDetection: ChangeDetectionStrategy.OnPush,
647
+ providers: [IndexTreeDataSource],
648
+ standalone: true,
649
+ imports: [
650
+ FlexLayoutModule,
651
+ MatButtonModule,
652
+ MatTooltipModule,
653
+ MatIconModule,
654
+ MatProgressBarModule,
655
+ MatDialogTitle,
656
+ MatDialogContent,
657
+ MatSidenavModule,
658
+ MatTreeModule,
659
+ SafeHtmlPipe
660
+ ],
661
+ template: "<div class=\"helpviewer-fixed\">\r\n <div style=\"height:6px\">\r\n @if (busy()) {\r\n <mat-progress-bar z-index=\"11\" mode=\"indeterminate\"></mat-progress-bar>\r\n }\r\n </div>\r\n <div class=\"dialog-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n <div class=\"dialog-menu\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Mostra menu\" [attr.aria-label]=\"'Mostra indice'\"\r\n (click)=\"toggleIndexPane()\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\">\r\n <div mat-dialog-title>Guida</div>\r\n </div>\r\n <div fxFlex=\"100px\" fxLayoutAlign=\"end\" class=\"dialog-close\">\r\n @if (canGoBack()) {\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Indietro\" (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n<mat-dialog-content id=\"helpviewer-scrollable\">\r\n <mat-drawer-container class=\"fill\">\r\n <mat-drawer #indexPane mode=\"side\" [autoFocus]=\"false\" class=\"drawer-small drawer-transparent\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\">\r\n <mat-tree [dataSource]=\"flatNodes()\" [levelAccessor]=\"levelAccessor\" class=\"tree \" style=\"max-width:310px\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple tree-node-style\"\r\n (click)=\"getChapter(node.id);\" [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\"\r\n [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node #treeNodeRef=\"matTreeNode\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [class.tree-node-activated]=\"indexNode && indexNode.id === node.id\" (click)=\"getChapter(node.id)\"\r\n [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Apri/chiudi ' + node.name\" class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeNodeRef.isExpanded ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n </mat-drawer>\r\n <mat-drawer-content id=\"helpviewer-scroller\">\r\n <div style=\"padding: 0 24px;\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div class=\"fill\" (click)=\"gotoChapter($event)\" [innerHtml]=\"(page() ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-drawer-content>\r\n </mat-drawer-container>\r\n</mat-dialog-content>",
662
+ styles: [".fill,.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-toolbar{padding:0 5px 0 24px;height:48px;min-height:48px}.dialog-close{margin-right:5px;margin-top:0}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.fill{min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important;line-height:1.2!important}.smaller{font-size:smaller!important;line-height:1.2!important}.small{font-size:small!important;line-height:1.2!important}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:1.2!important}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.text{color:var(--ars-color-text, #191c1b)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer .title-container-with-loader,.drawer-small .title-container,.drawer-small .title-container-with-loader{padding-right:5px;padding-bottom:20px;padding-left:0}.drawer .title-container,.drawer-small .title-container{padding-top:20px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding-top:14px}.drawer .title,.drawer-small .title{font-size:19.2px!important;font-weight:600;padding-left:15px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width:0px)and (max-width:430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width:431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}.bright{filter:brightness(.7)!important}@media(prefers-color-scheme:dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b,.bold{font-weight:600}.bright{filter:brightness(1.5)!important}}.dialog-menu{margin-top:4px!important}.tree{overflow-x:hidden}.tree-node{min-height:36px!important;padding-right:12px;margin-right:0}.tree-node .small-icon-button{width:2rem!important;height:2rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.tree-node .small-icon-button .mat-mdc-button-touch-target{width:2rem!important;height:2rem!important}.tree-node:hover{cursor:pointer;background-color:var(--mat-menu-item-hover-state-layer-color, transparent);border-radius:24px}.tree-node-simple,.tree-node-simple>div{min-height:32px!important}.tree-node-activated,.tree-node-activated>div{font-weight:700!important;color:var(--ars-color-accent, #7894ae)!important}a.help-link,.help-link>a{text-decoration:none;color:#2a91e0}.help-title-2,.help-title-1{font-weight:600!important}.help-word-hit{font-size:inherit;background-color:var(--ars-word-hit-background-color, yellow);padding:0 4px}.help-hint{margin:10px;padding:5px 20px;background-color:var(--ars-help-hint-background-color, lightgoldenrodyellow);border-radius:12px}.help-summary{margin:10px;padding:5px 20px;background-color:var(--ars-help-summary-background-color, lavender);border-radius:12px}.help-img{display:flex;align-items:center;justify-content:center;margin:10px}.help-img-200,.help-img-300,.help-img-400,.help-img-500,.help-img-700,.help-img-800{width:100%}.help-img-200{max-width:200px}.help-img-300{max-width:300px}.help-img-400{max-width:400px}.help-img-500{max-width:500px}.help-img-600{max-width:600px}.help-img-700{max-width:700px}.help-img-800{max-width:800px}.help-filter-box{background-color:var(--ars-filterbox-filtered-background-color, #f9fbe7);border-radius:12px;padding:6px;display:inline-block;margin:0 0 8px 10px}.mat-mdc-dialog-content{max-height:unset!important;padding:0!important}\n"]
663
+ }]
664
+ }],
665
+ ctorParameters: () => [],
666
+ propDecorators: {
667
+ indexPane: [{
668
+ type: i0.ViewChild,
669
+ args: ["indexPane", { isSignal: true }]
670
+ }],
671
+ matTree: [{
672
+ type: i0.ViewChild,
673
+ args: [i0.forwardRef(() => MatTree), { isSignal: true }]
674
+ }]
675
+ }
676
+ });
677
+ var HelpService = class HelpService {
678
+ constructor() {
679
+ this.httpClient = inject(HttpClient);
680
+ this.dialogService = inject(DialogService);
681
+ }
682
+ initialize(serviceUri) {
683
+ this.serviceUri = serviceUri;
684
+ }
685
+ getChapter(id, query = void 0) {
686
+ return this.httpClient.get(this.serviceUri + "/help/chapter/" + id + "/?query=" + (query ?? ""));
687
+ }
688
+ getChapterInfo(id) {
689
+ return this.httpClient.get(this.serviceUri + "/help/chapter/info/" + id);
690
+ }
691
+ getRepo(id) {
692
+ return this.httpClient.get(this.serviceUri + "/help/repo/" + id);
693
+ }
694
+ getToc() {
695
+ return this.httpClient.get(this.serviceUri + "/help/toc");
696
+ }
697
+ show(id = "1") {
698
+ this.dialogService.open(HelpViewerComponent, {
699
+ ariaLabel: "guida",
700
+ autoFocus: "dialog",
701
+ restoreFocus: false,
702
+ disableClose: true,
703
+ data: { id },
704
+ minWidth: "375px",
705
+ maxWidth: "1200px",
706
+ width: "100%",
707
+ height: "100%"
708
+ });
709
+ }
710
+ static {
711
+ this.ɵfac = i0.ɵɵngDeclareFactory({
712
+ minVersion: "12.0.0",
713
+ version: "22.2.1",
714
+ ngImport: i0,
715
+ type: HelpService,
716
+ deps: [],
717
+ target: i0.ɵɵFactoryTarget.Service
718
+ });
719
+ }
720
+ static {
721
+ this.ɵprov = i0.ɵɵngDeclareService({
722
+ minVersion: "22.0.0",
723
+ version: "22.2.1",
724
+ ngImport: i0,
725
+ type: HelpService
726
+ });
727
+ }
728
+ };
729
+ i0.ɵɵngDeclareClassMetadata({
730
+ minVersion: "12.0.0",
731
+ version: "22.2.1",
732
+ ngImport: i0,
733
+ type: HelpService,
734
+ decorators: [{ type: Service }]
735
+ });
530
736
  export { HelpService, HelpViewerComponent, IndexInfo, IndexNode, IndexTreeDataSource };
531
- //# sourceMappingURL=arsedizioni-ars-utils-ui.help.mjs.map
737
+
738
+ //# sourceMappingURL=arsedizioni-ars-utils-ui.help.mjs.map