@ng-doc/app 22.1.0 → 22.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/fesm2022/ng-doc-app-classes-content-controller.mjs +22 -4
- package/fesm2022/ng-doc-app-classes-content-controller.mjs.map +1 -1
- package/fesm2022/ng-doc-app-classes-default-search-engine.mjs +36 -12
- package/fesm2022/ng-doc-app-classes-default-search-engine.mjs.map +1 -1
- package/fesm2022/ng-doc-app-classes-root-page.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-api-list.mjs +7 -5
- package/fesm2022/ng-doc-app-components-api-list.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-breadcrumb.mjs +5 -3
- package/fesm2022/ng-doc-app-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-code.mjs +6 -4
- package/fesm2022/ng-doc-app-components-code.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-command-palette.mjs +35 -27
- package/fesm2022/ng-doc-app-components-command-palette.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-copy-button.mjs +6 -4
- package/fesm2022/ng-doc-app-components-copy-button.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-demo-displayer.mjs +19 -4
- package/fesm2022/ng-doc-app-components-demo-displayer.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-demo-frame.mjs +195 -12
- package/fesm2022/ng-doc-app-components-demo-frame.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-demo-pane.mjs +2 -2
- package/fesm2022/ng-doc-app-components-demo-pane.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-demo.mjs +49 -12
- package/fesm2022/ng-doc-app-components-demo.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-fullscreen-button.mjs +5 -3
- package/fesm2022/ng-doc-app-components-fullscreen-button.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-fullscreen-toggle.mjs +4 -2
- package/fesm2022/ng-doc-app-components-fullscreen-toggle.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-heading-anchor.mjs +5 -3
- package/fesm2022/ng-doc-app-components-heading-anchor.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-image-viewer.mjs +5 -3
- package/fesm2022/ng-doc-app-components-image-viewer.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-navbar.mjs +4 -2
- package/fesm2022/ng-doc-app-components-navbar.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-page-navigation.mjs +5 -3
- package/fesm2022/ng-doc-app-components-page-navigation.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-page-wrapper.mjs +2 -2
- package/fesm2022/ng-doc-app-components-page-wrapper.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-page.mjs +83 -16
- package/fesm2022/ng-doc-app-components-page.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-playground.mjs +743 -108
- package/fesm2022/ng-doc-app-components-playground.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-root.mjs +51 -4
- package/fesm2022/ng-doc-app-components-root.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-search-result.mjs +8 -6
- package/fesm2022/ng-doc-app-components-search-result.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-search.mjs +7 -5
- package/fesm2022/ng-doc-app-components-search.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-sidebar.mjs +4 -3
- package/fesm2022/ng-doc-app-components-sidebar.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-theme-toggle.mjs +7 -5
- package/fesm2022/ng-doc-app-components-theme-toggle.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-toc.mjs +4 -2
- package/fesm2022/ng-doc-app-components-toc.mjs.map +1 -1
- package/fesm2022/ng-doc-app-constants.mjs +11 -1
- package/fesm2022/ng-doc-app-constants.mjs.map +1 -1
- package/fesm2022/ng-doc-app-demo-app.mjs +618 -15
- package/fesm2022/ng-doc-app-demo-app.mjs.map +1 -1
- package/fesm2022/ng-doc-app-helpers.mjs +125 -6
- package/fesm2022/ng-doc-app-helpers.mjs.map +1 -1
- package/fesm2022/ng-doc-app-providers-ng-doc-app.mjs +29 -18
- package/fesm2022/ng-doc-app-providers-ng-doc-app.mjs.map +1 -1
- package/fesm2022/ng-doc-app-providers-texts.mjs +53 -0
- package/fesm2022/ng-doc-app-providers-texts.mjs.map +1 -0
- package/fesm2022/ng-doc-app-providers.mjs +1 -0
- package/fesm2022/ng-doc-app-providers.mjs.map +1 -1
- package/fesm2022/ng-doc-app-services-content-scroll-intent.mjs +27 -2
- package/fesm2022/ng-doc-app-services-content-scroll-intent.mjs.map +1 -1
- package/fesm2022/ng-doc-app-services-highlighter.mjs +8 -5
- package/fesm2022/ng-doc-app-services-highlighter.mjs.map +1 -1
- package/fesm2022/ng-doc-app-services-shortcuts.mjs +38 -4
- package/fesm2022/ng-doc-app-services-shortcuts.mjs.map +1 -1
- package/fesm2022/ng-doc-app-texts-ar.mjs +238 -0
- package/fesm2022/ng-doc-app-texts-ar.mjs.map +1 -0
- package/fesm2022/ng-doc-app-texts-de.mjs +205 -0
- package/fesm2022/ng-doc-app-texts-de.mjs.map +1 -0
- package/fesm2022/ng-doc-app-texts-es.mjs +205 -0
- package/fesm2022/ng-doc-app-texts-es.mjs.map +1 -0
- package/fesm2022/ng-doc-app-texts-fr.mjs +205 -0
- package/fesm2022/ng-doc-app-texts-fr.mjs.map +1 -0
- package/fesm2022/ng-doc-app-texts-hi.mjs +219 -0
- package/fesm2022/ng-doc-app-texts-hi.mjs.map +1 -0
- package/fesm2022/ng-doc-app-texts-ja.mjs +205 -0
- package/fesm2022/ng-doc-app-texts-ja.mjs.map +1 -0
- package/fesm2022/ng-doc-app-texts-ko.mjs +205 -0
- package/fesm2022/ng-doc-app-texts-ko.mjs.map +1 -0
- package/fesm2022/ng-doc-app-texts-pt-br.mjs +205 -0
- package/fesm2022/ng-doc-app-texts-pt-br.mjs.map +1 -0
- package/fesm2022/ng-doc-app-texts-ru.mjs +231 -0
- package/fesm2022/ng-doc-app-texts-ru.mjs.map +1 -0
- package/fesm2022/ng-doc-app-texts-uk.mjs +231 -0
- package/fesm2022/ng-doc-app-texts-uk.mjs.map +1 -0
- package/fesm2022/ng-doc-app-texts-zh.mjs +205 -0
- package/fesm2022/ng-doc-app-texts-zh.mjs.map +1 -0
- package/fesm2022/ng-doc-app-tokens.mjs +214 -1
- package/fesm2022/ng-doc-app-tokens.mjs.map +1 -1
- package/fesm2022/ng-doc-app-type-controls-json-control.mjs +90 -0
- package/fesm2022/ng-doc-app-type-controls-json-control.mjs.map +1 -0
- package/fesm2022/ng-doc-app-type-controls-list-control.mjs +792 -0
- package/fesm2022/ng-doc-app-type-controls-list-control.mjs.map +1 -0
- package/fesm2022/ng-doc-app-type-controls-type-alias-control.mjs +5 -3
- package/fesm2022/ng-doc-app-type-controls-type-alias-control.mjs.map +1 -1
- package/fesm2022/ng-doc-app-type-controls.mjs +2 -0
- package/fesm2022/ng-doc-app-type-controls.mjs.map +1 -1
- package/package.json +59 -3
- package/styles/global.css +1 -0
- package/styles/main.css +1 -0
- package/types/ng-doc-app-classes-default-search-engine.d.ts +11 -0
- package/types/ng-doc-app-classes-root-page.d.ts +5 -0
- package/types/ng-doc-app-components-api-list.d.ts +3 -1
- package/types/ng-doc-app-components-breadcrumb.d.ts +2 -1
- package/types/ng-doc-app-components-code.d.ts +2 -0
- package/types/ng-doc-app-components-command-palette.d.ts +3 -1
- package/types/ng-doc-app-components-copy-button.d.ts +3 -1
- package/types/ng-doc-app-components-demo-displayer.d.ts +13 -1
- package/types/ng-doc-app-components-demo-frame.d.ts +62 -3
- package/types/ng-doc-app-components-demo.d.ts +27 -8
- package/types/ng-doc-app-components-fullscreen-button.d.ts +2 -0
- package/types/ng-doc-app-components-fullscreen-toggle.d.ts +2 -0
- package/types/ng-doc-app-components-heading-anchor.d.ts +2 -0
- package/types/ng-doc-app-components-image-viewer.d.ts +2 -0
- package/types/ng-doc-app-components-navbar.d.ts +2 -0
- package/types/ng-doc-app-components-page-navigation.d.ts +2 -1
- package/types/ng-doc-app-components-page.d.ts +10 -1
- package/types/ng-doc-app-components-playground.d.ts +241 -44
- package/types/ng-doc-app-components-root.d.ts +18 -0
- package/types/ng-doc-app-components-search-result.d.ts +2 -0
- package/types/ng-doc-app-components-search.d.ts +2 -0
- package/types/ng-doc-app-components-sidebar.d.ts +2 -1
- package/types/ng-doc-app-components-theme-toggle.d.ts +4 -1
- package/types/ng-doc-app-components-toc.d.ts +2 -1
- package/types/ng-doc-app-constants.d.ts +11 -1
- package/types/ng-doc-app-demo-app.d.ts +211 -3
- package/types/ng-doc-app-helpers.d.ts +56 -3
- package/types/ng-doc-app-interfaces.d.ts +621 -3
- package/types/ng-doc-app-providers-ng-doc-app.d.ts +6 -0
- package/types/ng-doc-app-providers-texts.d.ts +28 -0
- package/types/ng-doc-app-providers.d.ts +1 -0
- package/types/ng-doc-app-services-content-scroll-intent.d.ts +11 -1
- package/types/ng-doc-app-services-highlighter.d.ts +3 -1
- package/types/ng-doc-app-services-shortcuts.d.ts +16 -0
- package/types/ng-doc-app-texts-ar.d.ts +13 -0
- package/types/ng-doc-app-texts-de.d.ts +12 -0
- package/types/ng-doc-app-texts-es.d.ts +12 -0
- package/types/ng-doc-app-texts-fr.d.ts +12 -0
- package/types/ng-doc-app-texts-hi.d.ts +12 -0
- package/types/ng-doc-app-texts-ja.d.ts +12 -0
- package/types/ng-doc-app-texts-ko.d.ts +12 -0
- package/types/ng-doc-app-texts-pt-br.d.ts +12 -0
- package/types/ng-doc-app-texts-ru.d.ts +12 -0
- package/types/ng-doc-app-texts-uk.d.ts +12 -0
- package/types/ng-doc-app-texts-zh.d.ts +12 -0
- package/types/ng-doc-app-tokens.d.ts +21 -2
- package/types/ng-doc-app-type-controls-json-control.d.ts +38 -0
- package/types/ng-doc-app-type-controls-list-control.d.ts +313 -0
- package/types/ng-doc-app-type-controls-type-alias-control.d.ts +2 -1
- package/types/ng-doc-app-type-controls.d.ts +2 -0
|
@@ -8,16 +8,18 @@ import { NgDocSearchEngine } from '@ng-doc/app/classes/search-engine';
|
|
|
8
8
|
import { NgDocKindIconComponent } from '@ng-doc/app/components/kind-icon';
|
|
9
9
|
import { NgDocApiListIndexService } from '@ng-doc/app/services';
|
|
10
10
|
import { NgDocShortcutsService } from '@ng-doc/app/services/shortcuts';
|
|
11
|
+
import { NG_DOC_TEXTS } from '@ng-doc/app/tokens';
|
|
11
12
|
import { NG_DOC_DIALOG_DATA, NgDocSelectionComponent, NgDocSelectionHostDirective, NgDocSelectionOriginDirective, NgDocSpinnerComponent } from '@ng-doc/ui-kit';
|
|
12
13
|
import { NgDocOverlayRef } from '@ng-doc/ui-kit/classes';
|
|
13
14
|
import { timer, of } from 'rxjs';
|
|
14
15
|
import { switchMap } from 'rxjs/operators';
|
|
15
16
|
|
|
17
|
+
/** The scopes in the order of their tabs, with the text of their label. */
|
|
16
18
|
const SCOPES = [
|
|
17
|
-
{ id: 'all',
|
|
18
|
-
{ id: 'guides',
|
|
19
|
-
{ id: 'api',
|
|
20
|
-
{ id: 'actions',
|
|
19
|
+
{ id: 'all', text: 'scopeAll' },
|
|
20
|
+
{ id: 'guides', text: 'scopeGuides' },
|
|
21
|
+
{ id: 'api', text: 'scopeApi' },
|
|
22
|
+
{ id: 'actions', text: 'scopeActions' },
|
|
21
23
|
];
|
|
22
24
|
/**
|
|
23
25
|
* How many declarations whose name starts with the query rank above the guides, and the shortest
|
|
@@ -35,7 +37,8 @@ const SEARCH_DEBOUNCE = 120;
|
|
|
35
37
|
*/
|
|
36
38
|
class NgDocCommandPaletteComponent {
|
|
37
39
|
constructor() {
|
|
38
|
-
this.
|
|
40
|
+
this.texts = inject(NG_DOC_TEXTS).searchPalette;
|
|
41
|
+
this.scopes = SCOPES.map(({ id, text }) => ({ id, label: this.texts[text] }));
|
|
39
42
|
this.shortcuts = inject(NgDocShortcutsService);
|
|
40
43
|
this.data = inject(NG_DOC_DIALOG_DATA, {
|
|
41
44
|
optional: true,
|
|
@@ -74,20 +77,20 @@ class NgDocCommandPaletteComponent {
|
|
|
74
77
|
...(ngDevMode ? [{ debugName: "symbolsByRoute" }] : /* istanbul ignore next */ []));
|
|
75
78
|
this.actions = [
|
|
76
79
|
{
|
|
77
|
-
name: () =>
|
|
78
|
-
keywords:
|
|
80
|
+
name: () => this.texts.actionToggleTheme,
|
|
81
|
+
keywords: this.texts.actionToggleThemeKeywords,
|
|
79
82
|
keys: ['T'],
|
|
80
83
|
run: () => this.shortcuts.run('t'),
|
|
81
84
|
},
|
|
82
85
|
{
|
|
83
|
-
name: () =>
|
|
84
|
-
keywords:
|
|
86
|
+
name: () => this.texts.actionCopyLink,
|
|
87
|
+
keywords: this.texts.actionCopyLinkKeywords,
|
|
85
88
|
keys: ['L'],
|
|
86
89
|
run: () => this.shortcuts.run('l'),
|
|
87
90
|
},
|
|
88
91
|
{
|
|
89
|
-
name: () => this.shortcuts.enabled() ?
|
|
90
|
-
keywords:
|
|
92
|
+
name: () => this.shortcuts.enabled() ? this.texts.actionShortcutsOff : this.texts.actionShortcutsOn,
|
|
93
|
+
keywords: this.texts.actionShortcutsKeywords,
|
|
91
94
|
keys: [],
|
|
92
95
|
keepOpen: true,
|
|
93
96
|
run: () => this.shortcuts.toggle(),
|
|
@@ -104,24 +107,29 @@ class NgDocCommandPaletteComponent {
|
|
|
104
107
|
if (scope === 'all' && query) {
|
|
105
108
|
const pinned = apiRows.filter((row) => row.pinned).slice(0, PINNED_LIMIT);
|
|
106
109
|
apiRows = apiRows.filter((row) => !pinned.includes(row));
|
|
107
|
-
sections.push({
|
|
110
|
+
sections.push({
|
|
111
|
+
key: 'top',
|
|
112
|
+
type: 'api',
|
|
113
|
+
title: this.texts.sectionTopMatches,
|
|
114
|
+
rows: pinned,
|
|
115
|
+
});
|
|
108
116
|
}
|
|
109
117
|
if ((scope === 'all' || scope === 'guides') && query) {
|
|
110
118
|
sections.push({
|
|
111
119
|
key: 'guide',
|
|
112
120
|
type: 'guide',
|
|
113
|
-
title:
|
|
121
|
+
title: this.texts.sectionGuides,
|
|
114
122
|
rows: this.guideRows(query, scope === 'guides'),
|
|
115
123
|
});
|
|
116
124
|
}
|
|
117
125
|
if (apiRows.length) {
|
|
118
|
-
sections.push({ key: 'api', type: 'api', title:
|
|
126
|
+
sections.push({ key: 'api', type: 'api', title: this.texts.sectionApi, rows: apiRows });
|
|
119
127
|
}
|
|
120
128
|
if (scope === 'all' || scope === 'actions') {
|
|
121
129
|
sections.push({
|
|
122
130
|
key: 'action',
|
|
123
131
|
type: 'action',
|
|
124
|
-
title:
|
|
132
|
+
title: this.texts.sectionActions,
|
|
125
133
|
rows: this.actionRows(query),
|
|
126
134
|
});
|
|
127
135
|
}
|
|
@@ -158,31 +166,31 @@ class NgDocCommandPaletteComponent {
|
|
|
158
166
|
this.emptyMessage = computed(() => {
|
|
159
167
|
const query = this.query();
|
|
160
168
|
if (query) {
|
|
161
|
-
return
|
|
169
|
+
return this.texts.noResults({ query });
|
|
162
170
|
}
|
|
163
171
|
return this.scope() === 'api'
|
|
164
|
-
?
|
|
172
|
+
? this.texts.typeToSearchApi
|
|
165
173
|
: this.scope() === 'guides'
|
|
166
|
-
?
|
|
167
|
-
:
|
|
174
|
+
? this.texts.typeToSearchGuides
|
|
175
|
+
: this.texts.typeToSearch;
|
|
168
176
|
}, /* @ts-ignore */
|
|
169
177
|
...(ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []));
|
|
170
178
|
/** What the status region announces: the scope, a running search, no results or a failure. */
|
|
171
179
|
this.status = computed(() => {
|
|
172
|
-
const scope =
|
|
180
|
+
const scope = this.scopes.find(({ id }) => id === this.scope())?.label ?? '';
|
|
173
181
|
const count = this.rows().filter((row) => row.type !== 'action').length;
|
|
174
182
|
if (this.failed()) {
|
|
175
|
-
return
|
|
183
|
+
return this.texts.failedStatus;
|
|
176
184
|
}
|
|
177
185
|
if (this.searching()) {
|
|
178
|
-
return
|
|
186
|
+
return this.texts.searching;
|
|
179
187
|
}
|
|
180
188
|
if (!this.query()) {
|
|
181
|
-
return
|
|
189
|
+
return this.texts.statusScope({ scope });
|
|
182
190
|
}
|
|
183
191
|
return count
|
|
184
|
-
?
|
|
185
|
-
:
|
|
192
|
+
? this.texts.statusResults({ scope, count })
|
|
193
|
+
: this.texts.statusNoResults({ scope, query: this.query() });
|
|
186
194
|
}, /* @ts-ignore */
|
|
187
195
|
...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
|
|
188
196
|
// Increments when the selection moves by keyboard, so only those moves scroll the list.
|
|
@@ -434,7 +442,7 @@ class NgDocCommandPaletteComponent {
|
|
|
434
442
|
return (page.find((index) => index.signature !== undefined || !!index.kind) ?? page[0]);
|
|
435
443
|
}
|
|
436
444
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocCommandPaletteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
437
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.2.1", type: NgDocCommandPaletteComponent, isStandalone: true, selector: "ng-doc-command-palette", host: { attributes: { "animate.enter": "ng-doc-command-palette-enter" } }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, isSignal: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true, isSignal: true }], ngImport: i0, template: "@let current = selected();\n<div\n class=\"ng-doc-command-palette\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Search\"\n (keydown)=\"onTrapKeydown($event)\">\n <div class=\"ng-doc-command-palette-input\">\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m20 20-3.5-3.5\" />\n </svg>\n <input\n #input\n type=\"text\"\n role=\"combobox\"\n aria-label=\"Search the documentation\"\n aria-autocomplete=\"list\"\n aria-expanded=\"true\"\n aria-controls=\"ng-doc-command-palette-list\"\n [attr.aria-activedescendant]=\"current?.id ?? null\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n placeholder=\"Search guides, API and actions\u2026\"\n [formField]=\"searchForm.query\"\n (keydown)=\"onKeydown($event)\" />\n <div\n class=\"ng-doc-command-palette-scopes ng-doc-command-palette-segments\"\n role=\"tablist\"\n aria-label=\"Search scope\"\n ngDocSelectionHost>\n <ng-doc-selection [align]=\"null\" />\n @for (item of scopes; track item.id) {\n <button\n type=\"button\"\n role=\"tab\"\n aria-controls=\"ng-doc-command-palette-list\"\n [attr.tabindex]=\"scope() === item.id ? 0 : -1\"\n [attr.aria-selected]=\"scope() === item.id\"\n [ngDocSelectionOrigin]=\"scope() === item.id\"\n (mousedown)=\"$event.preventDefault()\"\n (keydown)=\"onScopeKeydown($event)\"\n (click)=\"selectScope(item.id)\">\n {{ item.label }}\n </button>\n }\n </div>\n <kbd class=\"ng-doc-command-palette-kbd\">Esc</kbd>\n </div>\n\n <div class=\"ng-doc-command-palette-body\">\n <div\n #list\n class=\"ng-doc-command-palette-list\"\n id=\"ng-doc-command-palette-list\"\n role=\"listbox\"\n aria-label=\"Results\">\n @for (section of sections(); track section.key) {\n <div class=\"ng-doc-command-palette-group\" role=\"group\" [attr.aria-label]=\"section.title\">\n <div class=\"ng-doc-command-palette-section\" aria-hidden=\"true\">\n <span>{{ section.title }}</span>\n <span class=\"ng-doc-command-palette-count\">{{ section.rows.length }}</span>\n </div>\n @for (row of section.rows; track row.id) {\n <div\n class=\"ng-doc-command-palette-row\"\n role=\"option\"\n [id]=\"row.id\"\n [attr.data-ng-doc-type]=\"row.type\"\n [attr.data-ng-doc-url]=\"row.url ?? null\"\n [attr.aria-selected]=\"row.id === current?.id\"\n (mousedown)=\"$event.preventDefault()\"\n (mousemove)=\"hover(rows().indexOf(row))\"\n (click)=\"activate(row)\">\n <span class=\"ng-doc-command-palette-icon\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"icon\"\n [ngTemplateOutletContext]=\"{ $implicit: row.icon }\"></ng-container>\n </span>\n <span class=\"ng-doc-command-palette-name\" [class.ng-doc-command-palette-mono]=\"row.type === 'api'\">\n <span class=\"ng-doc-command-palette-label\">\n @for (segment of row.label; track $index) {\n @if (segment.match) {\n <mark>{{ segment.text }}</mark>\n } @else {\n <span>{{ segment.text }}</span>\n }\n }\n </span>\n @if (row.meta) {\n <small>{{ row.meta }}</small>\n }\n </span>\n <span class=\"ng-doc-command-palette-end\">\n @if (row.kind) {\n <ng-doc-kind-icon [kind]=\"row.kind\"></ng-doc-kind-icon>\n } @else if (row.type === 'api') {\n <span class=\"ng-doc-command-palette-type\" data-ng-doc-page-type=\"api\">API</span>\n }\n @if (row.keys?.length && shortcuts.enabled()) {\n @for (key of row.keys; track key) {\n <kbd class=\"ng-doc-command-palette-kbd\">{{ key }}</kbd>\n }\n }\n <svg\n class=\"ng-doc-command-palette-return\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\">\n <path d=\"M20 5v7a3 3 0 0 1-3 3H5\" />\n <path d=\"m9 11-4 4 4 4\" />\n </svg>\n </span>\n </div>\n }\n </div>\n } @empty {\n <div class=\"ng-doc-command-palette-empty\" role=\"presentation\">\n @if (searching()) {\n <ng-doc-spinner size=\"small\"></ng-doc-spinner>\n Searching\u2026\n } @else if (failed()) {\n Search failed. Try again.\n } @else {\n {{ emptyMessage() }}\n }\n </div>\n }\n </div>\n\n <div class=\"ng-doc-command-palette-preview\">\n @if (current) {\n <div class=\"ng-doc-command-palette-preview-top\">\n @switch (current.type) {\n @case ('api') {\n @if (current.kind) {\n <ng-doc-kind-icon [kind]=\"current.kind\"></ng-doc-kind-icon>\n } @else {\n <span class=\"ng-doc-command-palette-type\" data-ng-doc-page-type=\"api\">API</span>\n }\n <span>{{ current.scope }}</span>\n }\n @case ('guide') {\n <span class=\"ng-doc-command-palette-type\" data-ng-doc-page-type=\"guide\">Guide</span>\n <span>{{ current.meta }}</span>\n }\n @default {\n <ng-container\n [ngTemplateOutlet]=\"icon\"\n [ngTemplateOutletContext]=\"{ $implicit: 'action' }\"></ng-container>\n <span>Action</span>\n }\n }\n </div>\n <h2\n class=\"ng-doc-command-palette-preview-title\"\n [class.ng-doc-command-palette-mono]=\"current.type === 'api'\">\n {{ current.title }}\n </h2>\n @if (current.type === 'action') {\n <p class=\"ng-doc-command-palette-muted\">\n {{ current.action?.keepOpen ? 'Changes the setting and keeps the search open.' : 'Runs immediately.' }}\n </p>\n @if (current.keys?.length && shortcuts.enabled()) {\n <div class=\"ng-doc-command-palette-hint\">\n Shortcut\n @for (key of current.keys; track key) {\n <kbd class=\"ng-doc-command-palette-kbd\">{{ key }}</kbd>\n }\n </div>\n }\n } @else {\n @if (current.text) {\n <p class=\"ng-doc-command-palette-text\">{{ current.text }}</p>\n }\n @if (current.signature) {\n <pre class=\"ng-doc-command-palette-signature\"><code>{{ current.signature }}</code></pre>\n }\n <div class=\"ng-doc-command-palette-hint\">\n <kbd class=\"ng-doc-command-palette-kbd\">\u21B5</kbd>\n {{ current.type === 'api' ? 'open symbol page' : 'open' }}\n </div>\n }\n }\n </div>\n </div>\n\n <div class=\"ng-doc-command-palette-announcer\" role=\"status\">{{ status() }}</div>\n\n <div class=\"ng-doc-command-palette-footer\">\n <span>\n <kbd class=\"ng-doc-command-palette-kbd\">\u2191</kbd>\n <kbd class=\"ng-doc-command-palette-kbd\">\u2193</kbd>\n navigate\n </span>\n <span class=\"ng-doc-command-palette-wide\"><kbd class=\"ng-doc-command-palette-kbd\">\u21B5</kbd> open</span>\n <span class=\"ng-doc-command-palette-wide\"\n ><kbd class=\"ng-doc-command-palette-kbd\">Tab</kbd> scopes and settings</span\n >\n @if (shortcuts.enabled()) {\n <span class=\"ng-doc-command-palette-wide\"\n ><kbd class=\"ng-doc-command-palette-kbd\">/</kbd> also opens search</span\n >\n }\n <button\n class=\"ng-doc-command-palette-switch\"\n type=\"button\"\n role=\"switch\"\n [attr.aria-checked]=\"shortcuts.enabled()\"\n title=\"Single-character shortcuts: / [ ] F L T\"\n (click)=\"shortcuts.toggle()\">\n Single-key shortcuts\n <span class=\"ng-doc-command-palette-track\" aria-hidden=\"true\"></span>\n </button>\n </div>\n</div>\n\n<ng-template #icon let-name>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\">\n @switch (name) {\n @case ('symbol') {\n <path d=\"m21 16-9 5-9-5V8l9-5 9 5z\" />\n <path d=\"m3.3 7.5 8.7 5 8.7-5M12 22V12.5\" />\n }\n @case ('section') {\n <path d=\"M4 9h16M4 15h16M10 3 8 21M16 3l-2 18\" />\n }\n @case ('action') {\n <path d=\"M13 2 3 14h9l-1 8 10-12h-9z\" />\n }\n @default {\n <path d=\"M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z\" />\n <path d=\"M14 3v5h5M9 13h6M9 17h6\" />\n }\n }\n </svg>\n</ng-template>\n", styles: [".ng-doc-command-palette-backdrop{background:rgb(var(--ng-doc-base-rgb)/.32)}:root[data-theme=dark] .ng-doc-command-palette-backdrop{background:#0000008c}@media(prefers-color-scheme:dark){:root[data-theme=auto] .ng-doc-command-palette-backdrop{background:#0000008c}}ng-doc-command-palette{display:block;width:min(var(--ng-doc-search-dialog-width),100vw - 32px);font-family:var(--ng-doc-font-family);color:var(--ng-doc-text)}ng-doc-command-palette.ng-doc-command-palette-enter{animation:ng-doc-command-palette-enter .15s var(--ng-doc-easing, ease-out)}@media(max-width:640px){ng-doc-command-palette{width:calc(100vw - 16px)}}@keyframes ng-doc-command-palette-enter{0%{opacity:0;transform:scale(.98)}}.ng-doc-command-palette{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);max-height:min(600px,82vh);overflow:hidden;background:var(--ng-doc-background);border:1px solid var(--ng-doc-border-color);border-radius:var(--ng-doc-search-border-radius, var(--ng-doc-radius-xl));box-shadow:var(--ng-doc-shadow-lg)}@media(max-width:640px){.ng-doc-command-palette{max-height:calc(100vh - 16px)}}.ng-doc-command-palette-announcer{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.ng-doc-command-palette-kbd{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;font:500 12px/1 var(--ng-doc-font-family);color:var(--ng-doc-text-muted);background:var(--ng-doc-kbd-background);border:1px solid var(--ng-doc-kbd-border-color);border-radius:var(--ng-doc-radius-xs)}.ng-doc-command-palette-mono{font-family:var(--ng-doc-code-font)}.ng-doc-command-palette-muted{color:var(--ng-doc-text-muted)}.ng-doc-command-palette-input{display:flex;align-items:center;gap:var(--ng-doc-space-3);height:56px;padding:0 var(--ng-doc-space-3) 0 var(--ng-doc-space-4);border-bottom:1px solid var(--ng-doc-border-color);color:var(--ng-doc-text-muted)}.ng-doc-command-palette-input svg{flex:none}.ng-doc-command-palette-input input{flex:1;min-width:0;height:100%;padding:0;border:0;outline:0;background:none;font:400 16px/24px var(--ng-doc-font-family);color:var(--ng-doc-heading-color)}.ng-doc-command-palette-input input::placeholder{color:var(--ng-doc-text-muted);opacity:1}.ng-doc-command-palette-segments{position:relative;display:inline-flex;flex:none;gap:2px;padding:3px;border-radius:var(--ng-doc-radius-md);background:var(--ng-doc-base-2)}.ng-doc-command-palette-segments ng-doc-selection{border-radius:var(--ng-doc-radius-sm);background:var(--ng-doc-background);box-shadow:var(--ng-doc-shadow-xs)}.ng-doc-command-palette-segments button{position:relative;display:inline-flex;align-items:center;height:24px;padding:0 8px;border:0;border-radius:var(--ng-doc-radius-sm);background:none;font:500 12px/1 var(--ng-doc-font-family);color:var(--ng-doc-text-muted);cursor:pointer;white-space:nowrap}.ng-doc-command-palette-segments button:hover,.ng-doc-command-palette-segments button[aria-selected=true]{color:var(--ng-doc-heading-color)}.ng-doc-command-palette-segments button:focus-visible{outline:none;box-shadow:var(--ng-doc-focus-ring)}:root[data-theme=dark] .ng-doc-command-palette-segments ng-doc-selection{box-shadow:var(--ng-doc-shadow-xs),inset 0 0 0 1px var(--ng-doc-base-4)}@media(prefers-color-scheme:dark){:root[data-theme=auto] .ng-doc-command-palette-segments ng-doc-selection{box-shadow:var(--ng-doc-shadow-xs),inset 0 0 0 1px var(--ng-doc-base-4)}}.ng-doc-command-palette-body{display:grid;grid-template-columns:minmax(0,1fr) var(--ng-doc-search-preview-width);min-height:0}.ng-doc-command-palette-list{min-height:120px;padding:var(--ng-doc-space-2);overflow:auto;overscroll-behavior:contain;container:ng-doc-command-palette-list/inline-size}.ng-doc-command-palette-empty{display:flex;align-items:center;justify-content:center;gap:var(--ng-doc-space-2);font-size:14px;line-height:20px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-empty{padding:var(--ng-doc-space-8) var(--ng-doc-space-3)}.ng-doc-command-palette-section{display:flex;justify-content:space-between;margin:var(--ng-doc-space-4) var(--ng-doc-space-3) var(--ng-doc-space-2);font:600 11px/16px var(--ng-doc-font-family);letter-spacing:.05em;text-transform:uppercase;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-section .ng-doc-command-palette-count{font-weight:400;letter-spacing:0;font-variant-numeric:tabular-nums}.ng-doc-command-palette-group:first-child .ng-doc-command-palette-section{margin-top:var(--ng-doc-space-2)}.ng-doc-command-palette-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;column-gap:var(--ng-doc-space-3);min-height:40px;padding:4px var(--ng-doc-space-3);border-radius:var(--ng-doc-radius-md);font-size:14px;line-height:20px;color:var(--ng-doc-text);cursor:pointer}.ng-doc-command-palette-row:hover{background:var(--ng-doc-row-hover-background)}.ng-doc-command-palette-row[aria-selected=true]{background:var(--ng-doc-row-selected-background);box-shadow:inset 0 0 0 1px var(--ng-doc-row-selected-border)}.ng-doc-command-palette-row[aria-selected=true] .ng-doc-command-palette-return{display:block}.ng-doc-command-palette-row mark{background:none;color:var(--ng-doc-primary-strong);text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px}.ng-doc-command-palette-icon{display:grid;place-items:center;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-name{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--ng-doc-search-result-header-color, var(--ng-doc-heading-color))}.ng-doc-command-palette-name.ng-doc-command-palette-mono{font-size:13px;font-weight:500}.ng-doc-command-palette-name small{margin-left:var(--ng-doc-space-2);font:400 12px var(--ng-doc-font-family);color:var(--ng-doc-text-muted)}.ng-doc-command-palette-end{display:inline-flex;align-items:center;gap:6px;justify-self:end}.ng-doc-command-palette-return{display:none;color:var(--ng-doc-primary-strong)}@container ng-doc-command-palette-list (max-width: 420px){.ng-doc-command-palette-row{column-gap:var(--ng-doc-space-2);padding:4px var(--ng-doc-space-2)}.ng-doc-command-palette-name small{display:none}}.ng-doc-command-palette-preview{padding:var(--ng-doc-space-4);overflow:auto;border-left:1px solid var(--ng-doc-border-color);background:var(--ng-doc-base-1);font-size:13px;line-height:20px}.ng-doc-command-palette-preview p{margin:0 0 var(--ng-doc-space-3)}.ng-doc-command-palette-preview-top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ng-doc-space-2);font-size:12px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-preview-title{margin:var(--ng-doc-space-2) 0 var(--ng-doc-space-1);padding:0;border:0;font:600 15px/22px var(--ng-doc-font-family);letter-spacing:0;color:var(--ng-doc-heading-color);overflow-wrap:anywhere}.ng-doc-command-palette-preview-title.ng-doc-command-palette-mono{font-family:var(--ng-doc-code-font)}.ng-doc-command-palette-text{display:-webkit-box;-webkit-line-clamp:8;-webkit-box-orient:vertical;overflow:hidden;color:var(--ng-doc-search-result-color)}.ng-doc-command-palette-type{display:inline-flex;align-items:center;height:18px;padding:0 5px;border-radius:var(--ng-doc-radius-sm);font:600 10.5px/1 var(--ng-doc-font-family);white-space:nowrap}.ng-doc-command-palette-type[data-ng-doc-page-type=api]{color:var(--ng-doc-api-tag-color);background:var(--ng-doc-api-tag-background)}.ng-doc-command-palette-type[data-ng-doc-page-type=guide]{color:var(--ng-doc-guide-tag-color);background:var(--ng-doc-guide-tag-background)}.ng-doc-command-palette-signature{margin:0 0 var(--ng-doc-space-3);padding:var(--ng-doc-space-2) var(--ng-doc-space-3);border:1px solid var(--ng-doc-border-color);border-radius:var(--ng-doc-radius-md);background:var(--ng-doc-background);font:400 13px/20px var(--ng-doc-code-font);white-space:pre-wrap;overflow-wrap:anywhere}.ng-doc-command-palette-hint{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-footer{display:flex;align-items:center;gap:var(--ng-doc-space-4);min-height:44px;padding:0 var(--ng-doc-space-3) 0 var(--ng-doc-space-4);border-top:1px solid var(--ng-doc-border-color);background:var(--ng-doc-base-1);font-size:12px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-footer>span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.ng-doc-command-palette-switch{display:inline-flex;align-items:center;gap:8px;margin:-4px -4px -4px auto;padding:4px;border:0;border-radius:var(--ng-doc-radius-sm);background:none;font:400 12px/1 var(--ng-doc-font-family);color:var(--ng-doc-text);cursor:pointer;white-space:nowrap}.ng-doc-command-palette-switch:focus-visible{outline:none;box-shadow:var(--ng-doc-focus-ring)}.ng-doc-command-palette-switch .ng-doc-command-palette-track{position:relative;width:28px;height:16px;border-radius:var(--ng-doc-radius-full);background:var(--ng-doc-base-7);transition:background var(--ng-doc-transition)}.ng-doc-command-palette-switch .ng-doc-command-palette-track:after{content:\"\";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--ng-doc-background);box-shadow:var(--ng-doc-shadow-xs);transition:transform var(--ng-doc-transition) var(--ng-doc-easing, ease)}.ng-doc-command-palette-switch[aria-checked=true] .ng-doc-command-palette-track{background:var(--ng-doc-primary)}.ng-doc-command-palette-switch[aria-checked=true] .ng-doc-command-palette-track:after{transform:translate(12px)}:root[data-theme=dark] .ng-doc-command-palette-switch:not([aria-checked=true]) .ng-doc-command-palette-track{background:var(--ng-doc-base-8)}@media(prefers-color-scheme:dark){:root[data-theme=auto] .ng-doc-command-palette-switch:not([aria-checked=true]) .ng-doc-command-palette-track{background:var(--ng-doc-base-8)}}@media(max-width:640px){.ng-doc-command-palette-body{grid-template-columns:minmax(0,1fr)}.ng-doc-command-palette-preview,.ng-doc-command-palette-wide{display:none!important}.ng-doc-command-palette-input{flex-wrap:wrap;row-gap:0;height:auto;padding-bottom:var(--ng-doc-space-2)}.ng-doc-command-palette-input input{height:48px}.ng-doc-command-palette-scopes{order:1;flex:1 1 100%}.ng-doc-command-palette-scopes button{flex:1;justify-content:center}.ng-doc-command-palette-footer{gap:var(--ng-doc-space-3);padding-left:var(--ng-doc-space-3)}}@media(prefers-reduced-motion:reduce){ng-doc-command-palette.ng-doc-command-palette-enter{animation:none}.ng-doc-command-palette-switch .ng-doc-command-palette-track,.ng-doc-command-palette-switch .ng-doc-command-palette-track:after{transition:none}}\n"], dependencies: [{ kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgDocKindIconComponent, selector: "ng-doc-kind-icon", inputs: ["kind", "type", "size"] }, { kind: "component", type: NgDocSelectionComponent, selector: "ng-doc-selection", inputs: ["align"] }, { kind: "directive", type: NgDocSelectionHostDirective, selector: "[ngDocSelectionHost]" }, { kind: "directive", type: NgDocSelectionOriginDirective, selector: "[ngDocSelectionOrigin]", inputs: ["ngDocSelectionOrigin"] }, { kind: "component", type: NgDocSpinnerComponent, selector: "ng-doc-spinner", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
445
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.2.1", type: NgDocCommandPaletteComponent, isStandalone: true, selector: "ng-doc-command-palette", host: { attributes: { "animate.enter": "ng-doc-command-palette-enter" } }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, isSignal: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"ng-doc-command-palette\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"texts.dialogLabel\"\n (keydown)=\"onTrapKeydown($event)\">\n <div class=\"ng-doc-command-palette-input\">\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m20 20-3.5-3.5\" />\n </svg>\n <input\n #input\n type=\"text\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded=\"true\"\n aria-controls=\"ng-doc-command-palette-list\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [attr.aria-label]=\"texts.inputLabel\"\n [attr.placeholder]=\"texts.inputPlaceholder\"\n [attr.aria-activedescendant]=\"selected()?.id ?? null\"\n [formField]=\"searchForm.query\"\n (keydown)=\"onKeydown($event)\" />\n <div\n class=\"ng-doc-command-palette-scopes ng-doc-command-palette-segments\"\n role=\"tablist\"\n [attr.aria-label]=\"texts.scopesLabel\"\n ngDocSelectionHost>\n <ng-doc-selection [align]=\"null\" />\n @for (item of scopes; track item.id) {\n <button\n type=\"button\"\n role=\"tab\"\n aria-controls=\"ng-doc-command-palette-list\"\n [attr.tabindex]=\"scope() === item.id ? 0 : -1\"\n [attr.aria-selected]=\"scope() === item.id\"\n [ngDocSelectionOrigin]=\"scope() === item.id\"\n (mousedown)=\"$event.preventDefault()\"\n (keydown)=\"onScopeKeydown($event)\"\n (click)=\"selectScope(item.id)\">\n {{ item.label }}\n </button>\n }\n </div>\n <kbd class=\"ng-doc-command-palette-kbd\">{{ texts.keyEscape }}</kbd>\n </div>\n\n <div class=\"ng-doc-command-palette-body\">\n <div\n #list\n class=\"ng-doc-command-palette-list\"\n id=\"ng-doc-command-palette-list\"\n role=\"listbox\"\n [attr.aria-label]=\"texts.resultsLabel\">\n @for (section of sections(); track section.key) {\n <div class=\"ng-doc-command-palette-group\" role=\"group\" [attr.aria-label]=\"section.title\">\n <div class=\"ng-doc-command-palette-section\" aria-hidden=\"true\">\n <span>{{ section.title }}</span>\n <span class=\"ng-doc-command-palette-count\">{{ section.rows.length }}</span>\n </div>\n @for (row of section.rows; track row.id) {\n <div\n class=\"ng-doc-command-palette-row\"\n role=\"option\"\n [id]=\"row.id\"\n [attr.data-ng-doc-type]=\"row.type\"\n [attr.data-ng-doc-url]=\"row.url ?? null\"\n [attr.aria-selected]=\"row.id === selected()?.id\"\n (mousedown)=\"$event.preventDefault()\"\n (mousemove)=\"hover(rows().indexOf(row))\"\n (click)=\"activate(row)\">\n <span class=\"ng-doc-command-palette-icon\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"icon\"\n [ngTemplateOutletContext]=\"{ $implicit: row.icon }\"></ng-container>\n </span>\n <span\n class=\"ng-doc-command-palette-name\"\n [class.ng-doc-command-palette-mono]=\"row.type === 'api'\">\n <span class=\"ng-doc-command-palette-label\">\n @for (segment of row.label; track $index) {\n @if (segment.match) {\n <mark>{{ segment.text }}</mark>\n } @else {\n <span>{{ segment.text }}</span>\n }\n }\n </span>\n @if (row.meta) {\n <small>{{ row.meta }}</small>\n }\n </span>\n <span class=\"ng-doc-command-palette-end\">\n @if (row.kind) {\n <ng-doc-kind-icon [kind]=\"row.kind\"></ng-doc-kind-icon>\n } @else if (row.type === 'api') {\n <span class=\"ng-doc-command-palette-type\" data-ng-doc-page-type=\"api\">{{\n texts.typeApi\n }}</span>\n }\n @if (row.keys?.length && shortcuts.enabled()) {\n @for (key of row.keys; track key) {\n <kbd class=\"ng-doc-command-palette-kbd\">{{ key }}</kbd>\n }\n }\n <svg\n class=\"ng-doc-command-palette-return\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\">\n <path d=\"M20 5v7a3 3 0 0 1-3 3H5\" />\n <path d=\"m9 11-4 4 4 4\" />\n </svg>\n </span>\n </div>\n }\n </div>\n } @empty {\n <div class=\"ng-doc-command-palette-empty\" role=\"presentation\">\n @if (searching()) {\n <ng-doc-spinner size=\"small\"></ng-doc-spinner>\n {{ texts.searching }}\n } @else if (failed()) {\n {{ texts.failed }}\n } @else {\n {{ emptyMessage() }}\n }\n </div>\n }\n </div>\n\n <div class=\"ng-doc-command-palette-preview\">\n @if (selected(); as current) {\n <div class=\"ng-doc-command-palette-preview-top\">\n @switch (current.type) {\n @case ('api') {\n @if (current.kind) {\n <ng-doc-kind-icon [kind]=\"current.kind\"></ng-doc-kind-icon>\n } @else {\n <span class=\"ng-doc-command-palette-type\" data-ng-doc-page-type=\"api\">{{\n texts.typeApi\n }}</span>\n }\n <span>{{ current.scope }}</span>\n }\n @case ('guide') {\n <span class=\"ng-doc-command-palette-type\" data-ng-doc-page-type=\"guide\">{{\n texts.typeGuide\n }}</span>\n <span>{{ current.meta }}</span>\n }\n @default {\n <ng-container\n [ngTemplateOutlet]=\"icon\"\n [ngTemplateOutletContext]=\"{ $implicit: 'action' }\"></ng-container>\n <span>{{ texts.typeAction }}</span>\n }\n }\n </div>\n <h2\n class=\"ng-doc-command-palette-preview-title\"\n [class.ng-doc-command-palette-mono]=\"current.type === 'api'\">\n {{ current.title }}\n </h2>\n @if (current.type === 'action') {\n <p class=\"ng-doc-command-palette-muted\">\n {{ current.action?.keepOpen ? texts.actionKeepsOpen : texts.actionRunsImmediately }}\n </p>\n @if (current.keys?.length && shortcuts.enabled()) {\n <div class=\"ng-doc-command-palette-hint\">\n {{ texts.shortcut }}\n @for (key of current.keys; track key) {\n <kbd class=\"ng-doc-command-palette-kbd\">{{ key }}</kbd>\n }\n </div>\n }\n } @else {\n @if (current.text) {\n <p class=\"ng-doc-command-palette-text\">{{ current.text }}</p>\n }\n @if (current.signature) {\n <pre class=\"ng-doc-command-palette-signature\"><code>{{ current.signature }}</code></pre>\n }\n <div class=\"ng-doc-command-palette-hint\">\n <kbd class=\"ng-doc-command-palette-kbd\">\u21B5</kbd>\n {{ current.type === 'api' ? texts.openSymbolPage : texts.open }}\n </div>\n }\n }\n </div>\n </div>\n\n <div class=\"ng-doc-command-palette-announcer\" role=\"status\">{{ status() }}</div>\n\n <div class=\"ng-doc-command-palette-footer\">\n <span>\n <kbd class=\"ng-doc-command-palette-kbd\">\u2191</kbd>\n <kbd class=\"ng-doc-command-palette-kbd\">\u2193</kbd>\n {{ texts.footerNavigate }}\n </span>\n <span class=\"ng-doc-command-palette-wide\"\n ><kbd class=\"ng-doc-command-palette-kbd\">\u21B5</kbd> {{ texts.open }}</span\n >\n <span class=\"ng-doc-command-palette-wide\"\n ><kbd class=\"ng-doc-command-palette-kbd\">{{ texts.keyTab }}</kbd>\n {{ texts.footerScopes }}</span\n >\n @if (shortcuts.enabled()) {\n <span class=\"ng-doc-command-palette-wide\"\n ><kbd class=\"ng-doc-command-palette-kbd\">/</kbd> {{ texts.footerSlash }}</span\n >\n }\n <button\n class=\"ng-doc-command-palette-switch\"\n type=\"button\"\n role=\"switch\"\n [attr.title]=\"texts.shortcutsSwitchTitle\"\n [attr.aria-checked]=\"shortcuts.enabled()\"\n (click)=\"shortcuts.toggle()\">\n {{ texts.shortcutsSwitch }}\n <span class=\"ng-doc-command-palette-track\" aria-hidden=\"true\"></span>\n </button>\n </div>\n</div>\n\n<ng-template #icon let-name>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\">\n @switch (name) {\n @case ('symbol') {\n <path d=\"m21 16-9 5-9-5V8l9-5 9 5z\" />\n <path d=\"m3.3 7.5 8.7 5 8.7-5M12 22V12.5\" />\n }\n @case ('section') {\n <path d=\"M4 9h16M4 15h16M10 3 8 21M16 3l-2 18\" />\n }\n @case ('action') {\n <path d=\"M13 2 3 14h9l-1 8 10-12h-9z\" />\n }\n @default {\n <path d=\"M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z\" />\n <path d=\"M14 3v5h5M9 13h6M9 17h6\" />\n }\n }\n </svg>\n</ng-template>\n", styles: [".ng-doc-command-palette-backdrop{background:rgb(var(--ng-doc-base-rgb)/.32)}:root[data-theme=dark] .ng-doc-command-palette-backdrop{background:#0000008c}@media(prefers-color-scheme:dark){:root[data-theme=auto] .ng-doc-command-palette-backdrop{background:#0000008c}}ng-doc-command-palette{display:block;width:min(var(--ng-doc-search-dialog-width),100vw - 32px);font-family:var(--ng-doc-font-family);color:var(--ng-doc-text)}ng-doc-command-palette.ng-doc-command-palette-enter{animation:ng-doc-command-palette-enter .15s var(--ng-doc-easing, ease-out)}@media(max-width:640px){ng-doc-command-palette{width:calc(100vw - 16px)}}@keyframes ng-doc-command-palette-enter{0%{opacity:0;transform:scale(.98)}}.ng-doc-command-palette{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);max-height:min(600px,82vh);overflow:hidden;background:var(--ng-doc-background);border:1px solid var(--ng-doc-border-color);border-radius:var(--ng-doc-search-border-radius, var(--ng-doc-radius-xl));box-shadow:var(--ng-doc-shadow-lg)}@media(max-width:640px){.ng-doc-command-palette{max-height:calc(100vh - 16px)}}.ng-doc-command-palette-announcer{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.ng-doc-command-palette-kbd{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;font:500 12px/1 var(--ng-doc-font-family);color:var(--ng-doc-text-muted);background:var(--ng-doc-kbd-background);border:1px solid var(--ng-doc-kbd-border-color);border-radius:var(--ng-doc-radius-xs)}.ng-doc-command-palette-mono{font-family:var(--ng-doc-code-font)}.ng-doc-command-palette-muted{color:var(--ng-doc-text-muted)}.ng-doc-command-palette-input{display:flex;align-items:center;gap:var(--ng-doc-space-3);height:56px;padding:0 var(--ng-doc-space-3) 0 var(--ng-doc-space-4);border-bottom:1px solid var(--ng-doc-border-color);color:var(--ng-doc-text-muted)}.ng-doc-command-palette-input svg{flex:none}.ng-doc-command-palette-input input{flex:1;min-width:0;height:100%;padding:0;border:0;outline:0;background:none;font:400 16px/24px var(--ng-doc-font-family);color:var(--ng-doc-heading-color)}.ng-doc-command-palette-input input::placeholder{color:var(--ng-doc-text-muted);opacity:1}.ng-doc-command-palette-segments{position:relative;display:inline-flex;flex:none;gap:2px;padding:3px;border-radius:var(--ng-doc-radius-md);background:var(--ng-doc-base-2)}.ng-doc-command-palette-segments ng-doc-selection{border-radius:var(--ng-doc-radius-sm);background:var(--ng-doc-background);box-shadow:var(--ng-doc-shadow-xs)}.ng-doc-command-palette-segments button{position:relative;display:inline-flex;align-items:center;height:24px;padding:0 8px;border:0;border-radius:var(--ng-doc-radius-sm);background:none;font:500 12px/1 var(--ng-doc-font-family);color:var(--ng-doc-text-muted);cursor:pointer;white-space:nowrap}.ng-doc-command-palette-segments button:hover,.ng-doc-command-palette-segments button[aria-selected=true]{color:var(--ng-doc-heading-color)}.ng-doc-command-palette-segments button:focus-visible{outline:none;box-shadow:var(--ng-doc-focus-ring)}:root[data-theme=dark] .ng-doc-command-palette-segments ng-doc-selection{box-shadow:var(--ng-doc-shadow-xs),inset 0 0 0 1px var(--ng-doc-base-4)}@media(prefers-color-scheme:dark){:root[data-theme=auto] .ng-doc-command-palette-segments ng-doc-selection{box-shadow:var(--ng-doc-shadow-xs),inset 0 0 0 1px var(--ng-doc-base-4)}}.ng-doc-command-palette-body{display:grid;grid-template-columns:minmax(0,1fr) var(--ng-doc-search-preview-width);min-height:0}.ng-doc-command-palette-list{min-height:120px;padding:var(--ng-doc-space-2);overflow:auto;overscroll-behavior:contain;container:ng-doc-command-palette-list/inline-size}.ng-doc-command-palette-empty{display:flex;align-items:center;justify-content:center;gap:var(--ng-doc-space-2);font-size:14px;line-height:20px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-empty{padding:var(--ng-doc-space-8) var(--ng-doc-space-3)}.ng-doc-command-palette-section{display:flex;justify-content:space-between;margin:var(--ng-doc-space-4) var(--ng-doc-space-3) var(--ng-doc-space-2);font:600 11px/16px var(--ng-doc-font-family);letter-spacing:.05em;text-transform:uppercase;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-section .ng-doc-command-palette-count{font-weight:400;letter-spacing:0;font-variant-numeric:tabular-nums}.ng-doc-command-palette-group:first-child .ng-doc-command-palette-section{margin-top:var(--ng-doc-space-2)}.ng-doc-command-palette-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;column-gap:var(--ng-doc-space-3);min-height:40px;padding:4px var(--ng-doc-space-3);border-radius:var(--ng-doc-radius-md);font-size:14px;line-height:20px;color:var(--ng-doc-text);cursor:pointer}.ng-doc-command-palette-row:hover{background:var(--ng-doc-row-hover-background)}.ng-doc-command-palette-row[aria-selected=true]{background:var(--ng-doc-row-selected-background);box-shadow:inset 0 0 0 1px var(--ng-doc-row-selected-border)}.ng-doc-command-palette-row[aria-selected=true] .ng-doc-command-palette-return{display:block}.ng-doc-command-palette-row mark{background:none;color:var(--ng-doc-primary-strong);text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px}.ng-doc-command-palette-icon{display:grid;place-items:center;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-name{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--ng-doc-search-result-header-color, var(--ng-doc-heading-color))}.ng-doc-command-palette-name.ng-doc-command-palette-mono{font-size:13px;font-weight:500}.ng-doc-command-palette-name small{margin-left:var(--ng-doc-space-2);font:400 12px var(--ng-doc-font-family);color:var(--ng-doc-text-muted)}.ng-doc-command-palette-end{display:inline-flex;align-items:center;gap:6px;justify-self:end}.ng-doc-command-palette-return{display:none;color:var(--ng-doc-primary-strong)}@container ng-doc-command-palette-list (max-width: 420px){.ng-doc-command-palette-row{column-gap:var(--ng-doc-space-2);padding:4px var(--ng-doc-space-2)}.ng-doc-command-palette-name small{display:none}}.ng-doc-command-palette-preview{padding:var(--ng-doc-space-4);overflow:auto;border-left:1px solid var(--ng-doc-border-color);background:var(--ng-doc-base-1);font-size:13px;line-height:20px}.ng-doc-command-palette-preview p{margin:0 0 var(--ng-doc-space-3)}.ng-doc-command-palette-preview-top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ng-doc-space-2);font-size:12px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-preview-title{margin:var(--ng-doc-space-2) 0 var(--ng-doc-space-1);padding:0;border:0;font:600 15px/22px var(--ng-doc-font-family);letter-spacing:0;color:var(--ng-doc-heading-color);overflow-wrap:anywhere}.ng-doc-command-palette-preview-title.ng-doc-command-palette-mono{font-family:var(--ng-doc-code-font)}.ng-doc-command-palette-text{display:-webkit-box;-webkit-line-clamp:8;-webkit-box-orient:vertical;overflow:hidden;color:var(--ng-doc-search-result-color)}.ng-doc-command-palette-type{display:inline-flex;align-items:center;height:18px;padding:0 5px;border-radius:var(--ng-doc-radius-sm);font:600 10.5px/1 var(--ng-doc-font-family);white-space:nowrap}.ng-doc-command-palette-type[data-ng-doc-page-type=api]{color:var(--ng-doc-api-tag-color);background:var(--ng-doc-api-tag-background)}.ng-doc-command-palette-type[data-ng-doc-page-type=guide]{color:var(--ng-doc-guide-tag-color);background:var(--ng-doc-guide-tag-background)}.ng-doc-command-palette-signature{margin:0 0 var(--ng-doc-space-3);padding:var(--ng-doc-space-2) var(--ng-doc-space-3);border:1px solid var(--ng-doc-border-color);border-radius:var(--ng-doc-radius-md);background:var(--ng-doc-background);font:400 13px/20px var(--ng-doc-code-font);white-space:pre-wrap;overflow-wrap:anywhere}.ng-doc-command-palette-hint{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-footer{display:flex;align-items:center;gap:var(--ng-doc-space-4);min-height:44px;padding:0 var(--ng-doc-space-3) 0 var(--ng-doc-space-4);border-top:1px solid var(--ng-doc-border-color);background:var(--ng-doc-base-1);font-size:12px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-footer>span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.ng-doc-command-palette-switch{display:inline-flex;align-items:center;gap:8px;margin:-4px -4px -4px auto;padding:4px;border:0;border-radius:var(--ng-doc-radius-sm);background:none;font:400 12px/1 var(--ng-doc-font-family);color:var(--ng-doc-text);cursor:pointer;white-space:nowrap}.ng-doc-command-palette-switch:focus-visible{outline:none;box-shadow:var(--ng-doc-focus-ring)}.ng-doc-command-palette-switch .ng-doc-command-palette-track{position:relative;width:28px;height:16px;border-radius:var(--ng-doc-radius-full);background:var(--ng-doc-base-7);transition:background var(--ng-doc-transition)}.ng-doc-command-palette-switch .ng-doc-command-palette-track:after{content:\"\";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--ng-doc-background);box-shadow:var(--ng-doc-shadow-xs);transition:transform var(--ng-doc-transition) var(--ng-doc-easing, ease)}.ng-doc-command-palette-switch[aria-checked=true] .ng-doc-command-palette-track{background:var(--ng-doc-primary)}.ng-doc-command-palette-switch[aria-checked=true] .ng-doc-command-palette-track:after{transform:translate(12px)}:root[data-theme=dark] .ng-doc-command-palette-switch:not([aria-checked=true]) .ng-doc-command-palette-track{background:var(--ng-doc-base-8)}@media(prefers-color-scheme:dark){:root[data-theme=auto] .ng-doc-command-palette-switch:not([aria-checked=true]) .ng-doc-command-palette-track{background:var(--ng-doc-base-8)}}@media(max-width:640px){.ng-doc-command-palette-body{grid-template-columns:minmax(0,1fr)}.ng-doc-command-palette-preview,.ng-doc-command-palette-wide{display:none!important}.ng-doc-command-palette-input{flex-wrap:wrap;row-gap:0;height:auto;padding-bottom:var(--ng-doc-space-2)}.ng-doc-command-palette-input input{height:48px}.ng-doc-command-palette-scopes{order:1;flex:1 1 100%}.ng-doc-command-palette-scopes button{flex:1;justify-content:center}.ng-doc-command-palette-footer{gap:var(--ng-doc-space-3);padding-left:var(--ng-doc-space-3)}}@media(prefers-reduced-motion:reduce){ng-doc-command-palette.ng-doc-command-palette-enter{animation:none}.ng-doc-command-palette-switch .ng-doc-command-palette-track,.ng-doc-command-palette-switch .ng-doc-command-palette-track:after{transition:none}}\n"], dependencies: [{ kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgDocKindIconComponent, selector: "ng-doc-kind-icon", inputs: ["kind", "type", "size"] }, { kind: "component", type: NgDocSelectionComponent, selector: "ng-doc-selection", inputs: ["align"] }, { kind: "directive", type: NgDocSelectionHostDirective, selector: "[ngDocSelectionHost]" }, { kind: "directive", type: NgDocSelectionOriginDirective, selector: "[ngDocSelectionOrigin]", inputs: ["ngDocSelectionOrigin"] }, { kind: "component", type: NgDocSpinnerComponent, selector: "ng-doc-spinner", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
438
446
|
}
|
|
439
447
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocCommandPaletteComponent, decorators: [{
|
|
440
448
|
type: Component,
|
|
@@ -448,7 +456,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImpor
|
|
|
448
456
|
NgDocSpinnerComponent,
|
|
449
457
|
], host: {
|
|
450
458
|
'animate.enter': 'ng-doc-command-palette-enter',
|
|
451
|
-
}, template: "@let current = selected();\n<div\n class=\"ng-doc-command-palette\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Search\"\n (keydown)=\"onTrapKeydown($event)\">\n <div class=\"ng-doc-command-palette-input\">\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m20 20-3.5-3.5\" />\n </svg>\n <input\n #input\n type=\"text\"\n role=\"combobox\"\n aria-label=\"Search the documentation\"\n aria-autocomplete=\"list\"\n aria-expanded=\"true\"\n aria-controls=\"ng-doc-command-palette-list\"\n [attr.aria-activedescendant]=\"current?.id ?? null\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n placeholder=\"Search guides, API and actions\u2026\"\n [formField]=\"searchForm.query\"\n (keydown)=\"onKeydown($event)\" />\n <div\n class=\"ng-doc-command-palette-scopes ng-doc-command-palette-segments\"\n role=\"tablist\"\n aria-label=\"Search scope\"\n ngDocSelectionHost>\n <ng-doc-selection [align]=\"null\" />\n @for (item of scopes; track item.id) {\n <button\n type=\"button\"\n role=\"tab\"\n aria-controls=\"ng-doc-command-palette-list\"\n [attr.tabindex]=\"scope() === item.id ? 0 : -1\"\n [attr.aria-selected]=\"scope() === item.id\"\n [ngDocSelectionOrigin]=\"scope() === item.id\"\n (mousedown)=\"$event.preventDefault()\"\n (keydown)=\"onScopeKeydown($event)\"\n (click)=\"selectScope(item.id)\">\n {{ item.label }}\n </button>\n }\n </div>\n <kbd class=\"ng-doc-command-palette-kbd\">Esc</kbd>\n </div>\n\n <div class=\"ng-doc-command-palette-body\">\n <div\n #list\n class=\"ng-doc-command-palette-list\"\n id=\"ng-doc-command-palette-list\"\n role=\"listbox\"\n aria-label=\"Results\">\n @for (section of sections(); track section.key) {\n <div class=\"ng-doc-command-palette-group\" role=\"group\" [attr.aria-label]=\"section.title\">\n <div class=\"ng-doc-command-palette-section\" aria-hidden=\"true\">\n <span>{{ section.title }}</span>\n <span class=\"ng-doc-command-palette-count\">{{ section.rows.length }}</span>\n </div>\n @for (row of section.rows; track row.id) {\n <div\n class=\"ng-doc-command-palette-row\"\n role=\"option\"\n [id]=\"row.id\"\n [attr.data-ng-doc-type]=\"row.type\"\n [attr.data-ng-doc-url]=\"row.url ?? null\"\n [attr.aria-selected]=\"row.id === current?.id\"\n (mousedown)=\"$event.preventDefault()\"\n (mousemove)=\"hover(rows().indexOf(row))\"\n (click)=\"activate(row)\">\n <span class=\"ng-doc-command-palette-icon\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"icon\"\n [ngTemplateOutletContext]=\"{ $implicit: row.icon }\"></ng-container>\n </span>\n <span class=\"ng-doc-command-palette-name\" [class.ng-doc-command-palette-mono]=\"row.type === 'api'\">\n <span class=\"ng-doc-command-palette-label\">\n @for (segment of row.label; track $index) {\n @if (segment.match) {\n <mark>{{ segment.text }}</mark>\n } @else {\n <span>{{ segment.text }}</span>\n }\n }\n </span>\n @if (row.meta) {\n <small>{{ row.meta }}</small>\n }\n </span>\n <span class=\"ng-doc-command-palette-end\">\n @if (row.kind) {\n <ng-doc-kind-icon [kind]=\"row.kind\"></ng-doc-kind-icon>\n } @else if (row.type === 'api') {\n <span class=\"ng-doc-command-palette-type\" data-ng-doc-page-type=\"api\">API</span>\n }\n @if (row.keys?.length && shortcuts.enabled()) {\n @for (key of row.keys; track key) {\n <kbd class=\"ng-doc-command-palette-kbd\">{{ key }}</kbd>\n }\n }\n <svg\n class=\"ng-doc-command-palette-return\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\">\n <path d=\"M20 5v7a3 3 0 0 1-3 3H5\" />\n <path d=\"m9 11-4 4 4 4\" />\n </svg>\n </span>\n </div>\n }\n </div>\n } @empty {\n <div class=\"ng-doc-command-palette-empty\" role=\"presentation\">\n @if (searching()) {\n <ng-doc-spinner size=\"small\"></ng-doc-spinner>\n Searching\u2026\n } @else if (failed()) {\n Search failed. Try again.\n } @else {\n {{ emptyMessage() }}\n }\n </div>\n }\n </div>\n\n <div class=\"ng-doc-command-palette-preview\">\n @if (current) {\n <div class=\"ng-doc-command-palette-preview-top\">\n @switch (current.type) {\n @case ('api') {\n @if (current.kind) {\n <ng-doc-kind-icon [kind]=\"current.kind\"></ng-doc-kind-icon>\n } @else {\n <span class=\"ng-doc-command-palette-type\" data-ng-doc-page-type=\"api\">API</span>\n }\n <span>{{ current.scope }}</span>\n }\n @case ('guide') {\n <span class=\"ng-doc-command-palette-type\" data-ng-doc-page-type=\"guide\">Guide</span>\n <span>{{ current.meta }}</span>\n }\n @default {\n <ng-container\n [ngTemplateOutlet]=\"icon\"\n [ngTemplateOutletContext]=\"{ $implicit: 'action' }\"></ng-container>\n <span>Action</span>\n }\n }\n </div>\n <h2\n class=\"ng-doc-command-palette-preview-title\"\n [class.ng-doc-command-palette-mono]=\"current.type === 'api'\">\n {{ current.title }}\n </h2>\n @if (current.type === 'action') {\n <p class=\"ng-doc-command-palette-muted\">\n {{ current.action?.keepOpen ? 'Changes the setting and keeps the search open.' : 'Runs immediately.' }}\n </p>\n @if (current.keys?.length && shortcuts.enabled()) {\n <div class=\"ng-doc-command-palette-hint\">\n Shortcut\n @for (key of current.keys; track key) {\n <kbd class=\"ng-doc-command-palette-kbd\">{{ key }}</kbd>\n }\n </div>\n }\n } @else {\n @if (current.text) {\n <p class=\"ng-doc-command-palette-text\">{{ current.text }}</p>\n }\n @if (current.signature) {\n <pre class=\"ng-doc-command-palette-signature\"><code>{{ current.signature }}</code></pre>\n }\n <div class=\"ng-doc-command-palette-hint\">\n <kbd class=\"ng-doc-command-palette-kbd\">\u21B5</kbd>\n {{ current.type === 'api' ? 'open symbol page' : 'open' }}\n </div>\n }\n }\n </div>\n </div>\n\n <div class=\"ng-doc-command-palette-announcer\" role=\"status\">{{ status() }}</div>\n\n <div class=\"ng-doc-command-palette-footer\">\n <span>\n <kbd class=\"ng-doc-command-palette-kbd\">\u2191</kbd>\n <kbd class=\"ng-doc-command-palette-kbd\">\u2193</kbd>\n navigate\n </span>\n <span class=\"ng-doc-command-palette-wide\"><kbd class=\"ng-doc-command-palette-kbd\">\u21B5</kbd> open</span>\n <span class=\"ng-doc-command-palette-wide\"\n ><kbd class=\"ng-doc-command-palette-kbd\">Tab</kbd> scopes and settings</span\n >\n @if (shortcuts.enabled()) {\n <span class=\"ng-doc-command-palette-wide\"\n ><kbd class=\"ng-doc-command-palette-kbd\">/</kbd> also opens search</span\n >\n }\n <button\n class=\"ng-doc-command-palette-switch\"\n type=\"button\"\n role=\"switch\"\n [attr.aria-checked]=\"shortcuts.enabled()\"\n title=\"Single-character shortcuts: / [ ] F L T\"\n (click)=\"shortcuts.toggle()\">\n Single-key shortcuts\n <span class=\"ng-doc-command-palette-track\" aria-hidden=\"true\"></span>\n </button>\n </div>\n</div>\n\n<ng-template #icon let-name>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\">\n @switch (name) {\n @case ('symbol') {\n <path d=\"m21 16-9 5-9-5V8l9-5 9 5z\" />\n <path d=\"m3.3 7.5 8.7 5 8.7-5M12 22V12.5\" />\n }\n @case ('section') {\n <path d=\"M4 9h16M4 15h16M10 3 8 21M16 3l-2 18\" />\n }\n @case ('action') {\n <path d=\"M13 2 3 14h9l-1 8 10-12h-9z\" />\n }\n @default {\n <path d=\"M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z\" />\n <path d=\"M14 3v5h5M9 13h6M9 17h6\" />\n }\n }\n </svg>\n</ng-template>\n", styles: [".ng-doc-command-palette-backdrop{background:rgb(var(--ng-doc-base-rgb)/.32)}:root[data-theme=dark] .ng-doc-command-palette-backdrop{background:#0000008c}@media(prefers-color-scheme:dark){:root[data-theme=auto] .ng-doc-command-palette-backdrop{background:#0000008c}}ng-doc-command-palette{display:block;width:min(var(--ng-doc-search-dialog-width),100vw - 32px);font-family:var(--ng-doc-font-family);color:var(--ng-doc-text)}ng-doc-command-palette.ng-doc-command-palette-enter{animation:ng-doc-command-palette-enter .15s var(--ng-doc-easing, ease-out)}@media(max-width:640px){ng-doc-command-palette{width:calc(100vw - 16px)}}@keyframes ng-doc-command-palette-enter{0%{opacity:0;transform:scale(.98)}}.ng-doc-command-palette{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);max-height:min(600px,82vh);overflow:hidden;background:var(--ng-doc-background);border:1px solid var(--ng-doc-border-color);border-radius:var(--ng-doc-search-border-radius, var(--ng-doc-radius-xl));box-shadow:var(--ng-doc-shadow-lg)}@media(max-width:640px){.ng-doc-command-palette{max-height:calc(100vh - 16px)}}.ng-doc-command-palette-announcer{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.ng-doc-command-palette-kbd{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;font:500 12px/1 var(--ng-doc-font-family);color:var(--ng-doc-text-muted);background:var(--ng-doc-kbd-background);border:1px solid var(--ng-doc-kbd-border-color);border-radius:var(--ng-doc-radius-xs)}.ng-doc-command-palette-mono{font-family:var(--ng-doc-code-font)}.ng-doc-command-palette-muted{color:var(--ng-doc-text-muted)}.ng-doc-command-palette-input{display:flex;align-items:center;gap:var(--ng-doc-space-3);height:56px;padding:0 var(--ng-doc-space-3) 0 var(--ng-doc-space-4);border-bottom:1px solid var(--ng-doc-border-color);color:var(--ng-doc-text-muted)}.ng-doc-command-palette-input svg{flex:none}.ng-doc-command-palette-input input{flex:1;min-width:0;height:100%;padding:0;border:0;outline:0;background:none;font:400 16px/24px var(--ng-doc-font-family);color:var(--ng-doc-heading-color)}.ng-doc-command-palette-input input::placeholder{color:var(--ng-doc-text-muted);opacity:1}.ng-doc-command-palette-segments{position:relative;display:inline-flex;flex:none;gap:2px;padding:3px;border-radius:var(--ng-doc-radius-md);background:var(--ng-doc-base-2)}.ng-doc-command-palette-segments ng-doc-selection{border-radius:var(--ng-doc-radius-sm);background:var(--ng-doc-background);box-shadow:var(--ng-doc-shadow-xs)}.ng-doc-command-palette-segments button{position:relative;display:inline-flex;align-items:center;height:24px;padding:0 8px;border:0;border-radius:var(--ng-doc-radius-sm);background:none;font:500 12px/1 var(--ng-doc-font-family);color:var(--ng-doc-text-muted);cursor:pointer;white-space:nowrap}.ng-doc-command-palette-segments button:hover,.ng-doc-command-palette-segments button[aria-selected=true]{color:var(--ng-doc-heading-color)}.ng-doc-command-palette-segments button:focus-visible{outline:none;box-shadow:var(--ng-doc-focus-ring)}:root[data-theme=dark] .ng-doc-command-palette-segments ng-doc-selection{box-shadow:var(--ng-doc-shadow-xs),inset 0 0 0 1px var(--ng-doc-base-4)}@media(prefers-color-scheme:dark){:root[data-theme=auto] .ng-doc-command-palette-segments ng-doc-selection{box-shadow:var(--ng-doc-shadow-xs),inset 0 0 0 1px var(--ng-doc-base-4)}}.ng-doc-command-palette-body{display:grid;grid-template-columns:minmax(0,1fr) var(--ng-doc-search-preview-width);min-height:0}.ng-doc-command-palette-list{min-height:120px;padding:var(--ng-doc-space-2);overflow:auto;overscroll-behavior:contain;container:ng-doc-command-palette-list/inline-size}.ng-doc-command-palette-empty{display:flex;align-items:center;justify-content:center;gap:var(--ng-doc-space-2);font-size:14px;line-height:20px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-empty{padding:var(--ng-doc-space-8) var(--ng-doc-space-3)}.ng-doc-command-palette-section{display:flex;justify-content:space-between;margin:var(--ng-doc-space-4) var(--ng-doc-space-3) var(--ng-doc-space-2);font:600 11px/16px var(--ng-doc-font-family);letter-spacing:.05em;text-transform:uppercase;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-section .ng-doc-command-palette-count{font-weight:400;letter-spacing:0;font-variant-numeric:tabular-nums}.ng-doc-command-palette-group:first-child .ng-doc-command-palette-section{margin-top:var(--ng-doc-space-2)}.ng-doc-command-palette-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;column-gap:var(--ng-doc-space-3);min-height:40px;padding:4px var(--ng-doc-space-3);border-radius:var(--ng-doc-radius-md);font-size:14px;line-height:20px;color:var(--ng-doc-text);cursor:pointer}.ng-doc-command-palette-row:hover{background:var(--ng-doc-row-hover-background)}.ng-doc-command-palette-row[aria-selected=true]{background:var(--ng-doc-row-selected-background);box-shadow:inset 0 0 0 1px var(--ng-doc-row-selected-border)}.ng-doc-command-palette-row[aria-selected=true] .ng-doc-command-palette-return{display:block}.ng-doc-command-palette-row mark{background:none;color:var(--ng-doc-primary-strong);text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px}.ng-doc-command-palette-icon{display:grid;place-items:center;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-name{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--ng-doc-search-result-header-color, var(--ng-doc-heading-color))}.ng-doc-command-palette-name.ng-doc-command-palette-mono{font-size:13px;font-weight:500}.ng-doc-command-palette-name small{margin-left:var(--ng-doc-space-2);font:400 12px var(--ng-doc-font-family);color:var(--ng-doc-text-muted)}.ng-doc-command-palette-end{display:inline-flex;align-items:center;gap:6px;justify-self:end}.ng-doc-command-palette-return{display:none;color:var(--ng-doc-primary-strong)}@container ng-doc-command-palette-list (max-width: 420px){.ng-doc-command-palette-row{column-gap:var(--ng-doc-space-2);padding:4px var(--ng-doc-space-2)}.ng-doc-command-palette-name small{display:none}}.ng-doc-command-palette-preview{padding:var(--ng-doc-space-4);overflow:auto;border-left:1px solid var(--ng-doc-border-color);background:var(--ng-doc-base-1);font-size:13px;line-height:20px}.ng-doc-command-palette-preview p{margin:0 0 var(--ng-doc-space-3)}.ng-doc-command-palette-preview-top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ng-doc-space-2);font-size:12px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-preview-title{margin:var(--ng-doc-space-2) 0 var(--ng-doc-space-1);padding:0;border:0;font:600 15px/22px var(--ng-doc-font-family);letter-spacing:0;color:var(--ng-doc-heading-color);overflow-wrap:anywhere}.ng-doc-command-palette-preview-title.ng-doc-command-palette-mono{font-family:var(--ng-doc-code-font)}.ng-doc-command-palette-text{display:-webkit-box;-webkit-line-clamp:8;-webkit-box-orient:vertical;overflow:hidden;color:var(--ng-doc-search-result-color)}.ng-doc-command-palette-type{display:inline-flex;align-items:center;height:18px;padding:0 5px;border-radius:var(--ng-doc-radius-sm);font:600 10.5px/1 var(--ng-doc-font-family);white-space:nowrap}.ng-doc-command-palette-type[data-ng-doc-page-type=api]{color:var(--ng-doc-api-tag-color);background:var(--ng-doc-api-tag-background)}.ng-doc-command-palette-type[data-ng-doc-page-type=guide]{color:var(--ng-doc-guide-tag-color);background:var(--ng-doc-guide-tag-background)}.ng-doc-command-palette-signature{margin:0 0 var(--ng-doc-space-3);padding:var(--ng-doc-space-2) var(--ng-doc-space-3);border:1px solid var(--ng-doc-border-color);border-radius:var(--ng-doc-radius-md);background:var(--ng-doc-background);font:400 13px/20px var(--ng-doc-code-font);white-space:pre-wrap;overflow-wrap:anywhere}.ng-doc-command-palette-hint{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-footer{display:flex;align-items:center;gap:var(--ng-doc-space-4);min-height:44px;padding:0 var(--ng-doc-space-3) 0 var(--ng-doc-space-4);border-top:1px solid var(--ng-doc-border-color);background:var(--ng-doc-base-1);font-size:12px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-footer>span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.ng-doc-command-palette-switch{display:inline-flex;align-items:center;gap:8px;margin:-4px -4px -4px auto;padding:4px;border:0;border-radius:var(--ng-doc-radius-sm);background:none;font:400 12px/1 var(--ng-doc-font-family);color:var(--ng-doc-text);cursor:pointer;white-space:nowrap}.ng-doc-command-palette-switch:focus-visible{outline:none;box-shadow:var(--ng-doc-focus-ring)}.ng-doc-command-palette-switch .ng-doc-command-palette-track{position:relative;width:28px;height:16px;border-radius:var(--ng-doc-radius-full);background:var(--ng-doc-base-7);transition:background var(--ng-doc-transition)}.ng-doc-command-palette-switch .ng-doc-command-palette-track:after{content:\"\";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--ng-doc-background);box-shadow:var(--ng-doc-shadow-xs);transition:transform var(--ng-doc-transition) var(--ng-doc-easing, ease)}.ng-doc-command-palette-switch[aria-checked=true] .ng-doc-command-palette-track{background:var(--ng-doc-primary)}.ng-doc-command-palette-switch[aria-checked=true] .ng-doc-command-palette-track:after{transform:translate(12px)}:root[data-theme=dark] .ng-doc-command-palette-switch:not([aria-checked=true]) .ng-doc-command-palette-track{background:var(--ng-doc-base-8)}@media(prefers-color-scheme:dark){:root[data-theme=auto] .ng-doc-command-palette-switch:not([aria-checked=true]) .ng-doc-command-palette-track{background:var(--ng-doc-base-8)}}@media(max-width:640px){.ng-doc-command-palette-body{grid-template-columns:minmax(0,1fr)}.ng-doc-command-palette-preview,.ng-doc-command-palette-wide{display:none!important}.ng-doc-command-palette-input{flex-wrap:wrap;row-gap:0;height:auto;padding-bottom:var(--ng-doc-space-2)}.ng-doc-command-palette-input input{height:48px}.ng-doc-command-palette-scopes{order:1;flex:1 1 100%}.ng-doc-command-palette-scopes button{flex:1;justify-content:center}.ng-doc-command-palette-footer{gap:var(--ng-doc-space-3);padding-left:var(--ng-doc-space-3)}}@media(prefers-reduced-motion:reduce){ng-doc-command-palette.ng-doc-command-palette-enter{animation:none}.ng-doc-command-palette-switch .ng-doc-command-palette-track,.ng-doc-command-palette-switch .ng-doc-command-palette-track:after{transition:none}}\n"] }]
|
|
459
|
+
}, template: "<div\n class=\"ng-doc-command-palette\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"texts.dialogLabel\"\n (keydown)=\"onTrapKeydown($event)\">\n <div class=\"ng-doc-command-palette-input\">\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m20 20-3.5-3.5\" />\n </svg>\n <input\n #input\n type=\"text\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded=\"true\"\n aria-controls=\"ng-doc-command-palette-list\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [attr.aria-label]=\"texts.inputLabel\"\n [attr.placeholder]=\"texts.inputPlaceholder\"\n [attr.aria-activedescendant]=\"selected()?.id ?? null\"\n [formField]=\"searchForm.query\"\n (keydown)=\"onKeydown($event)\" />\n <div\n class=\"ng-doc-command-palette-scopes ng-doc-command-palette-segments\"\n role=\"tablist\"\n [attr.aria-label]=\"texts.scopesLabel\"\n ngDocSelectionHost>\n <ng-doc-selection [align]=\"null\" />\n @for (item of scopes; track item.id) {\n <button\n type=\"button\"\n role=\"tab\"\n aria-controls=\"ng-doc-command-palette-list\"\n [attr.tabindex]=\"scope() === item.id ? 0 : -1\"\n [attr.aria-selected]=\"scope() === item.id\"\n [ngDocSelectionOrigin]=\"scope() === item.id\"\n (mousedown)=\"$event.preventDefault()\"\n (keydown)=\"onScopeKeydown($event)\"\n (click)=\"selectScope(item.id)\">\n {{ item.label }}\n </button>\n }\n </div>\n <kbd class=\"ng-doc-command-palette-kbd\">{{ texts.keyEscape }}</kbd>\n </div>\n\n <div class=\"ng-doc-command-palette-body\">\n <div\n #list\n class=\"ng-doc-command-palette-list\"\n id=\"ng-doc-command-palette-list\"\n role=\"listbox\"\n [attr.aria-label]=\"texts.resultsLabel\">\n @for (section of sections(); track section.key) {\n <div class=\"ng-doc-command-palette-group\" role=\"group\" [attr.aria-label]=\"section.title\">\n <div class=\"ng-doc-command-palette-section\" aria-hidden=\"true\">\n <span>{{ section.title }}</span>\n <span class=\"ng-doc-command-palette-count\">{{ section.rows.length }}</span>\n </div>\n @for (row of section.rows; track row.id) {\n <div\n class=\"ng-doc-command-palette-row\"\n role=\"option\"\n [id]=\"row.id\"\n [attr.data-ng-doc-type]=\"row.type\"\n [attr.data-ng-doc-url]=\"row.url ?? null\"\n [attr.aria-selected]=\"row.id === selected()?.id\"\n (mousedown)=\"$event.preventDefault()\"\n (mousemove)=\"hover(rows().indexOf(row))\"\n (click)=\"activate(row)\">\n <span class=\"ng-doc-command-palette-icon\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"icon\"\n [ngTemplateOutletContext]=\"{ $implicit: row.icon }\"></ng-container>\n </span>\n <span\n class=\"ng-doc-command-palette-name\"\n [class.ng-doc-command-palette-mono]=\"row.type === 'api'\">\n <span class=\"ng-doc-command-palette-label\">\n @for (segment of row.label; track $index) {\n @if (segment.match) {\n <mark>{{ segment.text }}</mark>\n } @else {\n <span>{{ segment.text }}</span>\n }\n }\n </span>\n @if (row.meta) {\n <small>{{ row.meta }}</small>\n }\n </span>\n <span class=\"ng-doc-command-palette-end\">\n @if (row.kind) {\n <ng-doc-kind-icon [kind]=\"row.kind\"></ng-doc-kind-icon>\n } @else if (row.type === 'api') {\n <span class=\"ng-doc-command-palette-type\" data-ng-doc-page-type=\"api\">{{\n texts.typeApi\n }}</span>\n }\n @if (row.keys?.length && shortcuts.enabled()) {\n @for (key of row.keys; track key) {\n <kbd class=\"ng-doc-command-palette-kbd\">{{ key }}</kbd>\n }\n }\n <svg\n class=\"ng-doc-command-palette-return\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\">\n <path d=\"M20 5v7a3 3 0 0 1-3 3H5\" />\n <path d=\"m9 11-4 4 4 4\" />\n </svg>\n </span>\n </div>\n }\n </div>\n } @empty {\n <div class=\"ng-doc-command-palette-empty\" role=\"presentation\">\n @if (searching()) {\n <ng-doc-spinner size=\"small\"></ng-doc-spinner>\n {{ texts.searching }}\n } @else if (failed()) {\n {{ texts.failed }}\n } @else {\n {{ emptyMessage() }}\n }\n </div>\n }\n </div>\n\n <div class=\"ng-doc-command-palette-preview\">\n @if (selected(); as current) {\n <div class=\"ng-doc-command-palette-preview-top\">\n @switch (current.type) {\n @case ('api') {\n @if (current.kind) {\n <ng-doc-kind-icon [kind]=\"current.kind\"></ng-doc-kind-icon>\n } @else {\n <span class=\"ng-doc-command-palette-type\" data-ng-doc-page-type=\"api\">{{\n texts.typeApi\n }}</span>\n }\n <span>{{ current.scope }}</span>\n }\n @case ('guide') {\n <span class=\"ng-doc-command-palette-type\" data-ng-doc-page-type=\"guide\">{{\n texts.typeGuide\n }}</span>\n <span>{{ current.meta }}</span>\n }\n @default {\n <ng-container\n [ngTemplateOutlet]=\"icon\"\n [ngTemplateOutletContext]=\"{ $implicit: 'action' }\"></ng-container>\n <span>{{ texts.typeAction }}</span>\n }\n }\n </div>\n <h2\n class=\"ng-doc-command-palette-preview-title\"\n [class.ng-doc-command-palette-mono]=\"current.type === 'api'\">\n {{ current.title }}\n </h2>\n @if (current.type === 'action') {\n <p class=\"ng-doc-command-palette-muted\">\n {{ current.action?.keepOpen ? texts.actionKeepsOpen : texts.actionRunsImmediately }}\n </p>\n @if (current.keys?.length && shortcuts.enabled()) {\n <div class=\"ng-doc-command-palette-hint\">\n {{ texts.shortcut }}\n @for (key of current.keys; track key) {\n <kbd class=\"ng-doc-command-palette-kbd\">{{ key }}</kbd>\n }\n </div>\n }\n } @else {\n @if (current.text) {\n <p class=\"ng-doc-command-palette-text\">{{ current.text }}</p>\n }\n @if (current.signature) {\n <pre class=\"ng-doc-command-palette-signature\"><code>{{ current.signature }}</code></pre>\n }\n <div class=\"ng-doc-command-palette-hint\">\n <kbd class=\"ng-doc-command-palette-kbd\">\u21B5</kbd>\n {{ current.type === 'api' ? texts.openSymbolPage : texts.open }}\n </div>\n }\n }\n </div>\n </div>\n\n <div class=\"ng-doc-command-palette-announcer\" role=\"status\">{{ status() }}</div>\n\n <div class=\"ng-doc-command-palette-footer\">\n <span>\n <kbd class=\"ng-doc-command-palette-kbd\">\u2191</kbd>\n <kbd class=\"ng-doc-command-palette-kbd\">\u2193</kbd>\n {{ texts.footerNavigate }}\n </span>\n <span class=\"ng-doc-command-palette-wide\"\n ><kbd class=\"ng-doc-command-palette-kbd\">\u21B5</kbd> {{ texts.open }}</span\n >\n <span class=\"ng-doc-command-palette-wide\"\n ><kbd class=\"ng-doc-command-palette-kbd\">{{ texts.keyTab }}</kbd>\n {{ texts.footerScopes }}</span\n >\n @if (shortcuts.enabled()) {\n <span class=\"ng-doc-command-palette-wide\"\n ><kbd class=\"ng-doc-command-palette-kbd\">/</kbd> {{ texts.footerSlash }}</span\n >\n }\n <button\n class=\"ng-doc-command-palette-switch\"\n type=\"button\"\n role=\"switch\"\n [attr.title]=\"texts.shortcutsSwitchTitle\"\n [attr.aria-checked]=\"shortcuts.enabled()\"\n (click)=\"shortcuts.toggle()\">\n {{ texts.shortcutsSwitch }}\n <span class=\"ng-doc-command-palette-track\" aria-hidden=\"true\"></span>\n </button>\n </div>\n</div>\n\n<ng-template #icon let-name>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\">\n @switch (name) {\n @case ('symbol') {\n <path d=\"m21 16-9 5-9-5V8l9-5 9 5z\" />\n <path d=\"m3.3 7.5 8.7 5 8.7-5M12 22V12.5\" />\n }\n @case ('section') {\n <path d=\"M4 9h16M4 15h16M10 3 8 21M16 3l-2 18\" />\n }\n @case ('action') {\n <path d=\"M13 2 3 14h9l-1 8 10-12h-9z\" />\n }\n @default {\n <path d=\"M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z\" />\n <path d=\"M14 3v5h5M9 13h6M9 17h6\" />\n }\n }\n </svg>\n</ng-template>\n", styles: [".ng-doc-command-palette-backdrop{background:rgb(var(--ng-doc-base-rgb)/.32)}:root[data-theme=dark] .ng-doc-command-palette-backdrop{background:#0000008c}@media(prefers-color-scheme:dark){:root[data-theme=auto] .ng-doc-command-palette-backdrop{background:#0000008c}}ng-doc-command-palette{display:block;width:min(var(--ng-doc-search-dialog-width),100vw - 32px);font-family:var(--ng-doc-font-family);color:var(--ng-doc-text)}ng-doc-command-palette.ng-doc-command-palette-enter{animation:ng-doc-command-palette-enter .15s var(--ng-doc-easing, ease-out)}@media(max-width:640px){ng-doc-command-palette{width:calc(100vw - 16px)}}@keyframes ng-doc-command-palette-enter{0%{opacity:0;transform:scale(.98)}}.ng-doc-command-palette{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);max-height:min(600px,82vh);overflow:hidden;background:var(--ng-doc-background);border:1px solid var(--ng-doc-border-color);border-radius:var(--ng-doc-search-border-radius, var(--ng-doc-radius-xl));box-shadow:var(--ng-doc-shadow-lg)}@media(max-width:640px){.ng-doc-command-palette{max-height:calc(100vh - 16px)}}.ng-doc-command-palette-announcer{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.ng-doc-command-palette-kbd{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;font:500 12px/1 var(--ng-doc-font-family);color:var(--ng-doc-text-muted);background:var(--ng-doc-kbd-background);border:1px solid var(--ng-doc-kbd-border-color);border-radius:var(--ng-doc-radius-xs)}.ng-doc-command-palette-mono{font-family:var(--ng-doc-code-font)}.ng-doc-command-palette-muted{color:var(--ng-doc-text-muted)}.ng-doc-command-palette-input{display:flex;align-items:center;gap:var(--ng-doc-space-3);height:56px;padding:0 var(--ng-doc-space-3) 0 var(--ng-doc-space-4);border-bottom:1px solid var(--ng-doc-border-color);color:var(--ng-doc-text-muted)}.ng-doc-command-palette-input svg{flex:none}.ng-doc-command-palette-input input{flex:1;min-width:0;height:100%;padding:0;border:0;outline:0;background:none;font:400 16px/24px var(--ng-doc-font-family);color:var(--ng-doc-heading-color)}.ng-doc-command-palette-input input::placeholder{color:var(--ng-doc-text-muted);opacity:1}.ng-doc-command-palette-segments{position:relative;display:inline-flex;flex:none;gap:2px;padding:3px;border-radius:var(--ng-doc-radius-md);background:var(--ng-doc-base-2)}.ng-doc-command-palette-segments ng-doc-selection{border-radius:var(--ng-doc-radius-sm);background:var(--ng-doc-background);box-shadow:var(--ng-doc-shadow-xs)}.ng-doc-command-palette-segments button{position:relative;display:inline-flex;align-items:center;height:24px;padding:0 8px;border:0;border-radius:var(--ng-doc-radius-sm);background:none;font:500 12px/1 var(--ng-doc-font-family);color:var(--ng-doc-text-muted);cursor:pointer;white-space:nowrap}.ng-doc-command-palette-segments button:hover,.ng-doc-command-palette-segments button[aria-selected=true]{color:var(--ng-doc-heading-color)}.ng-doc-command-palette-segments button:focus-visible{outline:none;box-shadow:var(--ng-doc-focus-ring)}:root[data-theme=dark] .ng-doc-command-palette-segments ng-doc-selection{box-shadow:var(--ng-doc-shadow-xs),inset 0 0 0 1px var(--ng-doc-base-4)}@media(prefers-color-scheme:dark){:root[data-theme=auto] .ng-doc-command-palette-segments ng-doc-selection{box-shadow:var(--ng-doc-shadow-xs),inset 0 0 0 1px var(--ng-doc-base-4)}}.ng-doc-command-palette-body{display:grid;grid-template-columns:minmax(0,1fr) var(--ng-doc-search-preview-width);min-height:0}.ng-doc-command-palette-list{min-height:120px;padding:var(--ng-doc-space-2);overflow:auto;overscroll-behavior:contain;container:ng-doc-command-palette-list/inline-size}.ng-doc-command-palette-empty{display:flex;align-items:center;justify-content:center;gap:var(--ng-doc-space-2);font-size:14px;line-height:20px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-empty{padding:var(--ng-doc-space-8) var(--ng-doc-space-3)}.ng-doc-command-palette-section{display:flex;justify-content:space-between;margin:var(--ng-doc-space-4) var(--ng-doc-space-3) var(--ng-doc-space-2);font:600 11px/16px var(--ng-doc-font-family);letter-spacing:.05em;text-transform:uppercase;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-section .ng-doc-command-palette-count{font-weight:400;letter-spacing:0;font-variant-numeric:tabular-nums}.ng-doc-command-palette-group:first-child .ng-doc-command-palette-section{margin-top:var(--ng-doc-space-2)}.ng-doc-command-palette-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;column-gap:var(--ng-doc-space-3);min-height:40px;padding:4px var(--ng-doc-space-3);border-radius:var(--ng-doc-radius-md);font-size:14px;line-height:20px;color:var(--ng-doc-text);cursor:pointer}.ng-doc-command-palette-row:hover{background:var(--ng-doc-row-hover-background)}.ng-doc-command-palette-row[aria-selected=true]{background:var(--ng-doc-row-selected-background);box-shadow:inset 0 0 0 1px var(--ng-doc-row-selected-border)}.ng-doc-command-palette-row[aria-selected=true] .ng-doc-command-palette-return{display:block}.ng-doc-command-palette-row mark{background:none;color:var(--ng-doc-primary-strong);text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px}.ng-doc-command-palette-icon{display:grid;place-items:center;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-name{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--ng-doc-search-result-header-color, var(--ng-doc-heading-color))}.ng-doc-command-palette-name.ng-doc-command-palette-mono{font-size:13px;font-weight:500}.ng-doc-command-palette-name small{margin-left:var(--ng-doc-space-2);font:400 12px var(--ng-doc-font-family);color:var(--ng-doc-text-muted)}.ng-doc-command-palette-end{display:inline-flex;align-items:center;gap:6px;justify-self:end}.ng-doc-command-palette-return{display:none;color:var(--ng-doc-primary-strong)}@container ng-doc-command-palette-list (max-width: 420px){.ng-doc-command-palette-row{column-gap:var(--ng-doc-space-2);padding:4px var(--ng-doc-space-2)}.ng-doc-command-palette-name small{display:none}}.ng-doc-command-palette-preview{padding:var(--ng-doc-space-4);overflow:auto;border-left:1px solid var(--ng-doc-border-color);background:var(--ng-doc-base-1);font-size:13px;line-height:20px}.ng-doc-command-palette-preview p{margin:0 0 var(--ng-doc-space-3)}.ng-doc-command-palette-preview-top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ng-doc-space-2);font-size:12px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-preview-title{margin:var(--ng-doc-space-2) 0 var(--ng-doc-space-1);padding:0;border:0;font:600 15px/22px var(--ng-doc-font-family);letter-spacing:0;color:var(--ng-doc-heading-color);overflow-wrap:anywhere}.ng-doc-command-palette-preview-title.ng-doc-command-palette-mono{font-family:var(--ng-doc-code-font)}.ng-doc-command-palette-text{display:-webkit-box;-webkit-line-clamp:8;-webkit-box-orient:vertical;overflow:hidden;color:var(--ng-doc-search-result-color)}.ng-doc-command-palette-type{display:inline-flex;align-items:center;height:18px;padding:0 5px;border-radius:var(--ng-doc-radius-sm);font:600 10.5px/1 var(--ng-doc-font-family);white-space:nowrap}.ng-doc-command-palette-type[data-ng-doc-page-type=api]{color:var(--ng-doc-api-tag-color);background:var(--ng-doc-api-tag-background)}.ng-doc-command-palette-type[data-ng-doc-page-type=guide]{color:var(--ng-doc-guide-tag-color);background:var(--ng-doc-guide-tag-background)}.ng-doc-command-palette-signature{margin:0 0 var(--ng-doc-space-3);padding:var(--ng-doc-space-2) var(--ng-doc-space-3);border:1px solid var(--ng-doc-border-color);border-radius:var(--ng-doc-radius-md);background:var(--ng-doc-background);font:400 13px/20px var(--ng-doc-code-font);white-space:pre-wrap;overflow-wrap:anywhere}.ng-doc-command-palette-hint{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-footer{display:flex;align-items:center;gap:var(--ng-doc-space-4);min-height:44px;padding:0 var(--ng-doc-space-3) 0 var(--ng-doc-space-4);border-top:1px solid var(--ng-doc-border-color);background:var(--ng-doc-base-1);font-size:12px;color:var(--ng-doc-text-muted)}.ng-doc-command-palette-footer>span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.ng-doc-command-palette-switch{display:inline-flex;align-items:center;gap:8px;margin:-4px -4px -4px auto;padding:4px;border:0;border-radius:var(--ng-doc-radius-sm);background:none;font:400 12px/1 var(--ng-doc-font-family);color:var(--ng-doc-text);cursor:pointer;white-space:nowrap}.ng-doc-command-palette-switch:focus-visible{outline:none;box-shadow:var(--ng-doc-focus-ring)}.ng-doc-command-palette-switch .ng-doc-command-palette-track{position:relative;width:28px;height:16px;border-radius:var(--ng-doc-radius-full);background:var(--ng-doc-base-7);transition:background var(--ng-doc-transition)}.ng-doc-command-palette-switch .ng-doc-command-palette-track:after{content:\"\";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--ng-doc-background);box-shadow:var(--ng-doc-shadow-xs);transition:transform var(--ng-doc-transition) var(--ng-doc-easing, ease)}.ng-doc-command-palette-switch[aria-checked=true] .ng-doc-command-palette-track{background:var(--ng-doc-primary)}.ng-doc-command-palette-switch[aria-checked=true] .ng-doc-command-palette-track:after{transform:translate(12px)}:root[data-theme=dark] .ng-doc-command-palette-switch:not([aria-checked=true]) .ng-doc-command-palette-track{background:var(--ng-doc-base-8)}@media(prefers-color-scheme:dark){:root[data-theme=auto] .ng-doc-command-palette-switch:not([aria-checked=true]) .ng-doc-command-palette-track{background:var(--ng-doc-base-8)}}@media(max-width:640px){.ng-doc-command-palette-body{grid-template-columns:minmax(0,1fr)}.ng-doc-command-palette-preview,.ng-doc-command-palette-wide{display:none!important}.ng-doc-command-palette-input{flex-wrap:wrap;row-gap:0;height:auto;padding-bottom:var(--ng-doc-space-2)}.ng-doc-command-palette-input input{height:48px}.ng-doc-command-palette-scopes{order:1;flex:1 1 100%}.ng-doc-command-palette-scopes button{flex:1;justify-content:center}.ng-doc-command-palette-footer{gap:var(--ng-doc-space-3);padding-left:var(--ng-doc-space-3)}}@media(prefers-reduced-motion:reduce){ng-doc-command-palette.ng-doc-command-palette-enter{animation:none}.ng-doc-command-palette-switch .ng-doc-command-palette-track,.ng-doc-command-palette-switch .ng-doc-command-palette-track:after{transition:none}}\n"] }]
|
|
452
460
|
}], ctorParameters: () => [], propDecorators: { input: [{ type: i0.ViewChild, args: ['input', { isSignal: true }] }], list: [{ type: i0.ViewChild, args: ['list', { isSignal: true }] }] } });
|
|
453
461
|
/**
|
|
454
462
|
* Splits a text around the first case-insensitive occurrence of the query.
|