@akcelik/strct 5.21.0 → 5.22.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.
|
@@ -29759,6 +29759,13 @@ const STRCT_MD_LIMITS = {
|
|
|
29759
29759
|
depth: 8,
|
|
29760
29760
|
/** Inline delimiter runs considered per text span. */
|
|
29761
29761
|
delimiters: 2000,
|
|
29762
|
+
/**
|
|
29763
|
+
* How far a closing delimiter or bracket is looked for. Without it every
|
|
29764
|
+
* unmatched opener scanned to the end of the document, once each: a 64 KiB
|
|
29765
|
+
* line of "*a " took 1.6 s to read, and a streamed reply is read again on
|
|
29766
|
+
* every token.
|
|
29767
|
+
*/
|
|
29768
|
+
scan: 4096,
|
|
29762
29769
|
};
|
|
29763
29770
|
const RULE = /^ {0,3}((\*\s*){3,}|(-\s*){3,}|(_\s*){3,})$/;
|
|
29764
29771
|
const ATX = /^ {0,3}(#{1,6})\s+(.*?)\s*#*\s*$/;
|
|
@@ -29996,9 +30003,10 @@ function parseInlines(source, options = {}) {
|
|
|
29996
30003
|
continue;
|
|
29997
30004
|
}
|
|
29998
30005
|
}
|
|
29999
|
-
// Hard break: two spaces at the end of a line, or a backslash
|
|
30006
|
+
// Hard break: two spaces at the end of a line, or a backslash — or every
|
|
30007
|
+
// newline, where the consumer asked for GitHub's comment style.
|
|
30000
30008
|
if (ch === '\n') {
|
|
30001
|
-
const hard = buf.endsWith(' ') || buf.endsWith('\\');
|
|
30009
|
+
const hard = options.breaks === true || buf.endsWith(' ') || buf.endsWith('\\');
|
|
30002
30010
|
buf = buf.replace(/( {2,}|\\)$/, '');
|
|
30003
30011
|
flush();
|
|
30004
30012
|
out.push(hard ? { kind: 'break' } : { kind: 'text', text: ' ' });
|
|
@@ -30040,13 +30048,39 @@ function parseInlines(source, options = {}) {
|
|
|
30040
30048
|
}
|
|
30041
30049
|
}
|
|
30042
30050
|
}
|
|
30051
|
+
// A bare URL is a link: a model writes "see https://example.com/x" far
|
|
30052
|
+
// more often than it writes an autolink. Trailing punctuation belongs to
|
|
30053
|
+
// the sentence, not the address.
|
|
30054
|
+
if ((ch === 'h' || ch === 'H') && /^https?:\/\//i.test(source.slice(i, i + 8))) {
|
|
30055
|
+
const match = /^https?:\/\/[^\s<]+/i.exec(source.slice(i));
|
|
30056
|
+
if (match) {
|
|
30057
|
+
let url = match[0];
|
|
30058
|
+
const trail = /[.,;:!?)\]'"]+$/.exec(url);
|
|
30059
|
+
if (trail) {
|
|
30060
|
+
// A closing bracket is part of the address when the URL opened one.
|
|
30061
|
+
const kept = url.slice(0, url.length - trail[0].length);
|
|
30062
|
+
url = kept.includes('(') && trail[0].startsWith(')') ? kept + ')' : kept;
|
|
30063
|
+
}
|
|
30064
|
+
if (url.length > 'https://'.length) {
|
|
30065
|
+
flush();
|
|
30066
|
+
out.push({ kind: 'link', href: url, children: [{ kind: 'text', text: url }] });
|
|
30067
|
+
i += url.length;
|
|
30068
|
+
continue;
|
|
30069
|
+
}
|
|
30070
|
+
}
|
|
30071
|
+
}
|
|
30043
30072
|
// Emphasis, strong, strikethrough. A delimiter only opens when something
|
|
30044
30073
|
// follows it immediately and only closes when something precedes it —
|
|
30045
30074
|
// the flanking rule, which is what keeps "2 * 3 * 4" arithmetic.
|
|
30046
30075
|
if ((ch === '*' || ch === '_' || ch === '~') && budget-- > 0) {
|
|
30047
30076
|
const run = new RegExp(`^\\${ch}+`).exec(source.slice(i))[0];
|
|
30048
30077
|
const len = ch === '~' ? (run.length >= 2 ? 2 : 0) : Math.min(run.length, 2);
|
|
30049
|
-
const
|
|
30078
|
+
const after = source.slice(i + run.length, i + run.length + 1) || '';
|
|
30079
|
+
const before = i > 0 ? source[i - 1] : '';
|
|
30080
|
+
// An underscore inside a word is a character, not a delimiter — or
|
|
30081
|
+
// `list_inventory for vm_cpu_usage` loses its underscores to emphasis.
|
|
30082
|
+
const intraword = ch === '_' && /[\p{L}\p{N}]/u.test(before) && /[\p{L}\p{N}]/u.test(after);
|
|
30083
|
+
const opens = !/^\s|^$/.test(after) && !intraword;
|
|
30050
30084
|
if (len && opens) {
|
|
30051
30085
|
const marker = ch.repeat(len);
|
|
30052
30086
|
const close = findCloser(source, marker, i + len);
|
|
@@ -30075,10 +30109,15 @@ function parseInlines(source, options = {}) {
|
|
|
30075
30109
|
* no such closer is not a delimiter at all, it is the character written.
|
|
30076
30110
|
*/
|
|
30077
30111
|
function findCloser(source, marker, from) {
|
|
30112
|
+
// Bounded: an unmatched delimiter in a long reply used to scan to the end of
|
|
30113
|
+
// the document, once per delimiter — 1.6s for a 64 KiB line of "*a ".
|
|
30114
|
+
const limit = Math.min(source.length, from + STRCT_MD_LIMITS.scan);
|
|
30078
30115
|
let at = source.indexOf(marker, from);
|
|
30079
|
-
while (at !== -1) {
|
|
30116
|
+
while (at !== -1 && at < limit) {
|
|
30080
30117
|
const before = source[at - 1];
|
|
30081
|
-
|
|
30118
|
+
const after = source[at + marker.length] ?? '';
|
|
30119
|
+
const intraword = marker[0] === '_' && /[\p{L}\p{N}]/u.test(before ?? '') && /[\p{L}\p{N}]/u.test(after);
|
|
30120
|
+
if (before && !/\s/.test(before) && !intraword)
|
|
30082
30121
|
return at;
|
|
30083
30122
|
at = source.indexOf(marker, at + marker.length);
|
|
30084
30123
|
}
|
|
@@ -30087,7 +30126,8 @@ function findCloser(source, marker, from) {
|
|
|
30087
30126
|
/** The index of the `]` matching the `[` at `from`, or -1. */
|
|
30088
30127
|
function matchBracket(source, from) {
|
|
30089
30128
|
let depth = 0;
|
|
30090
|
-
|
|
30129
|
+
const limit = Math.min(source.length, from + STRCT_MD_LIMITS.scan);
|
|
30130
|
+
for (let i = from; i < limit; i++) {
|
|
30091
30131
|
if (source[i] === '\\') {
|
|
30092
30132
|
i++;
|
|
30093
30133
|
continue;
|
|
@@ -30140,7 +30180,7 @@ function applyTokens(text, tokenize) {
|
|
|
30140
30180
|
* model wrote: `javascript:`, `data:`, a protocol-relative `//host`, or
|
|
30141
30181
|
* anything this does not recognise.
|
|
30142
30182
|
*/
|
|
30143
|
-
function strctClassifyHref(href) {
|
|
30183
|
+
function strctClassifyHref(href, options = {}) {
|
|
30144
30184
|
const raw = (href ?? '').trim();
|
|
30145
30185
|
if (!raw)
|
|
30146
30186
|
return null;
|
|
@@ -30149,10 +30189,16 @@ function strctClassifyHref(href) {
|
|
|
30149
30189
|
return null;
|
|
30150
30190
|
if (/^https?:\/\/[^/]/i.test(raw))
|
|
30151
30191
|
return 'external';
|
|
30152
|
-
|
|
30192
|
+
// mailto: opens a mail client with a subject and a body the model wrote, so
|
|
30193
|
+
// it is something an app says yes to rather than the default.
|
|
30194
|
+
if (options.mailto && /^mailto:[^@\s]+@[^@\s]+$/i.test(raw))
|
|
30153
30195
|
return 'external';
|
|
30154
30196
|
if (raw.startsWith('//'))
|
|
30155
30197
|
return null;
|
|
30198
|
+
// A browser reads a backslash as a slash: "/\evil.example" is an in-app
|
|
30199
|
+
// path to this function and https://evil.example/ to a middle-click.
|
|
30200
|
+
if (/[\\]/.test(raw) || /%5c/i.test(raw))
|
|
30201
|
+
return null;
|
|
30156
30202
|
if (raw.startsWith('/'))
|
|
30157
30203
|
return 'internal';
|
|
30158
30204
|
return null;
|
|
@@ -30226,10 +30272,32 @@ class StrctMarkdown {
|
|
|
30226
30272
|
/** Claim runs of plain text — an inventory id becomes an object chip. */
|
|
30227
30273
|
tokens = input(null, /* @ts-ignore */
|
|
30228
30274
|
...(ngDevMode ? [{ debugName: "tokens" }] : /* istanbul ignore next */ []));
|
|
30275
|
+
/**
|
|
30276
|
+
* A single newline is a line break, the way a comment box reads: a model
|
|
30277
|
+
* writing "Host: X\nCPU: 40 %" means two lines. Off by default, which is
|
|
30278
|
+
* CommonMark.
|
|
30279
|
+
*/
|
|
30280
|
+
breaks = input(false, { ...(ngDevMode ? { debugName: "breaks" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
30281
|
+
/** What a screen reader hears after an external link (localisable). */
|
|
30282
|
+
newTabLabel = input(' (opens in a new tab)', /* @ts-ignore */
|
|
30283
|
+
...(ngDevMode ? [{ debugName: "newTabLabel" }] : /* istanbul ignore next */ []));
|
|
30284
|
+
/**
|
|
30285
|
+
* The token templates of the view that nested this one. A list item or a
|
|
30286
|
+
* quote is drawn by a nested view, which has no projected content of its
|
|
30287
|
+
* own — without this its claimed runs fall back to plain text.
|
|
30288
|
+
*/
|
|
30289
|
+
inheritedTokens = input([], /* @ts-ignore */
|
|
30290
|
+
...(ngDevMode ? [{ debugName: "inheritedTokens" }] : /* istanbul ignore next */ []));
|
|
30229
30291
|
/** An in-app link was followed; the consumer routes it. */
|
|
30230
30292
|
navigate = output();
|
|
30231
|
-
|
|
30232
|
-
...(ngDevMode ? [{ debugName: "
|
|
30293
|
+
ownTokenDefs = contentChildren(StrctMarkdownToken, /* @ts-ignore */
|
|
30294
|
+
...(ngDevMode ? [{ debugName: "ownTokenDefs" }] : /* istanbul ignore next */ []));
|
|
30295
|
+
/** This view's own templates, plus the ones handed down to it. */
|
|
30296
|
+
allTokenDefs = computed(() => {
|
|
30297
|
+
const own = this.ownTokenDefs();
|
|
30298
|
+
return own.length ? own : this.inheritedTokens();
|
|
30299
|
+
}, /* @ts-ignore */
|
|
30300
|
+
...(ngDevMode ? [{ debugName: "allTokenDefs" }] : /* istanbul ignore next */ []));
|
|
30233
30301
|
blocks = computed(() => {
|
|
30234
30302
|
const given = this.tree();
|
|
30235
30303
|
if (given)
|
|
@@ -30237,6 +30305,7 @@ class StrctMarkdown {
|
|
|
30237
30305
|
return strctParseMarkdown(this.source(), {
|
|
30238
30306
|
streaming: this.streaming(),
|
|
30239
30307
|
tokenize: this.tokens() ?? undefined,
|
|
30308
|
+
breaks: this.breaks(),
|
|
30240
30309
|
});
|
|
30241
30310
|
}, /* @ts-ignore */
|
|
30242
30311
|
...(ngDevMode ? [{ debugName: "blocks" }] : /* istanbul ignore next */ []));
|
|
@@ -30248,7 +30317,7 @@ class StrctMarkdown {
|
|
|
30248
30317
|
return own ? own(href) : strctClassifyHref(href);
|
|
30249
30318
|
}
|
|
30250
30319
|
tokenTemplate(kind) {
|
|
30251
|
-
return this.
|
|
30320
|
+
return this.allTokenDefs().find((d) => d.strctMarkdownToken() === kind)?.template ?? null;
|
|
30252
30321
|
}
|
|
30253
30322
|
/** The caret belongs to the last block, and only while streaming. */
|
|
30254
30323
|
caretOn(index) {
|
|
@@ -30263,7 +30332,7 @@ class StrctMarkdown {
|
|
|
30263
30332
|
this.navigate.emit(href);
|
|
30264
30333
|
}
|
|
30265
30334
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctMarkdown, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30266
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: StrctMarkdown, isStandalone: true, selector: "strct-markdown", inputs: { source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: false, transformFunction: null }, tree: { classPropertyName: "tree", publicName: "tree", isSignal: true, isRequired: false, transformFunction: null }, streaming: { classPropertyName: "streaming", publicName: "streaming", isSignal: true, isRequired: false, transformFunction: null }, headingOffset: { classPropertyName: "headingOffset", publicName: "headingOffset", isSignal: true, isRequired: false, transformFunction: null }, linkPolicy: { classPropertyName: "linkPolicy", publicName: "linkPolicy", isSignal: true, isRequired: false, transformFunction: null }, tokens: { classPropertyName: "tokens", publicName: "tokens", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navigate: "navigate" }, host: { classAttribute: "strct-md" }, queries: [{ propertyName: "
|
|
30335
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: StrctMarkdown, isStandalone: true, selector: "strct-markdown", inputs: { source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: false, transformFunction: null }, tree: { classPropertyName: "tree", publicName: "tree", isSignal: true, isRequired: false, transformFunction: null }, streaming: { classPropertyName: "streaming", publicName: "streaming", isSignal: true, isRequired: false, transformFunction: null }, headingOffset: { classPropertyName: "headingOffset", publicName: "headingOffset", isSignal: true, isRequired: false, transformFunction: null }, linkPolicy: { classPropertyName: "linkPolicy", publicName: "linkPolicy", isSignal: true, isRequired: false, transformFunction: null }, tokens: { classPropertyName: "tokens", publicName: "tokens", isSignal: true, isRequired: false, transformFunction: null }, breaks: { classPropertyName: "breaks", publicName: "breaks", isSignal: true, isRequired: false, transformFunction: null }, newTabLabel: { classPropertyName: "newTabLabel", publicName: "newTabLabel", isSignal: true, isRequired: false, transformFunction: null }, inheritedTokens: { classPropertyName: "inheritedTokens", publicName: "inheritedTokens", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navigate: "navigate" }, host: { classAttribute: "strct-md" }, queries: [{ propertyName: "ownTokenDefs", predicate: StrctMarkdownToken, isSignal: true }], ngImport: i0, template: `
|
|
30267
30336
|
@for (block of blocks(); track $index) {
|
|
30268
30337
|
@switch (block.kind) {
|
|
30269
30338
|
@case ('p') {
|
|
@@ -30408,10 +30477,16 @@ class StrctMarkdown {
|
|
|
30408
30477
|
<!-- Blocks inside a list item or a quote. -->
|
|
30409
30478
|
<ng-template #blockRun let-blocks>
|
|
30410
30479
|
@for (b of blocks; track $index) {
|
|
30480
|
+
<!-- The nested view had no token templates of its own, so a claimed
|
|
30481
|
+
run inside a list item or a quote was drawn as plain text while
|
|
30482
|
+
the same run in a paragraph became a chip. -->
|
|
30411
30483
|
<strct-markdown
|
|
30412
30484
|
[tree]="[b]"
|
|
30413
30485
|
[headingOffset]="headingOffset()"
|
|
30414
30486
|
[linkPolicy]="linkPolicy()"
|
|
30487
|
+
[tokens]="tokens()"
|
|
30488
|
+
[breaks]="breaks()"
|
|
30489
|
+
[inheritedTokens]="allTokenDefs()"
|
|
30415
30490
|
(navigate)="navigate.emit($event)"
|
|
30416
30491
|
/>
|
|
30417
30492
|
}
|
|
@@ -30483,6 +30558,7 @@ class StrctMarkdown {
|
|
|
30483
30558
|
[size]="11"
|
|
30484
30559
|
aria-hidden="true"
|
|
30485
30560
|
/>
|
|
30561
|
+
<span class="strct-sr-only">{{ newTabLabel() }}</span>
|
|
30486
30562
|
</a>
|
|
30487
30563
|
}
|
|
30488
30564
|
@case ('internal') {
|
|
@@ -30509,7 +30585,7 @@ class StrctMarkdown {
|
|
|
30509
30585
|
}
|
|
30510
30586
|
}
|
|
30511
30587
|
</ng-template>
|
|
30512
|
-
`, isInline: true, styles: [".strct-md{display:block;color:var(--t1);font-size:13px;line-height:1.55}.strct-md__p{margin:0 0 var(--space-2)}.strct-md__p:last-child{margin-bottom:0}.strct-md__h{margin:var(--space-3) 0 var(--space-2);font-size:14px;font-weight:600;color:var(--t1)}.strct-md__h:first-child{margin-top:0}.strct-md__list{margin:0 0 var(--space-2);padding-inline-start:20px}.strct-md__list li{margin-block:2px}.strct-md__quote{margin:0 0 var(--space-2);padding-inline-start:var(--space-3);border-inline-start:2px solid var(--b2);color:var(--t2)}.strct-md__rule{border:0;border-block-start:1px solid var(--b1);margin:var(--space-3) 0}.strct-md__codespan{font-family:var(--mono);font-size:.92em;background:var(--bg-2);border-radius:var(--radius-sm);padding:1px 4px}.strct-md__code{margin-block-end:var(--space-2)}.strct-md__link{color:var(--acc)}.strct-md__ext{margin-inline-start:2px;vertical-align:-1px}.strct-md__tablewrap{overflow-x:auto;margin-block-end:var(--space-2)}.strct-md__table{border-collapse:collapse;width:max-content;min-width:100%}.strct-md__table th,.strct-md__table td{border:1px solid var(--b1);padding:4px 8px;text-align:start}.strct-md__table th{background:var(--bg-2);font-weight:600}.strct-md__caret{display:inline-block;width:2px;height:1em;margin-inline-start:2px;vertical-align:-2px;background:var(--acc);animation:strct-md-caret 1s steps(2) infinite}@keyframes strct-md-caret{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.strct-md__caret{animation:none}}\n"], dependencies: [{ kind: "component", type: StrctMarkdown, selector: "strct-markdown", inputs: ["source", "tree", "streaming", "headingOffset", "linkPolicy", "tokens"], outputs: ["navigate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: StrctCode, selector: "strct-code", inputs: ["code", "title", "language", "copyable", "collapsible", "collapsed", "lineNumbers", "wrap", "maxHeight", "collapseLabel", "expandLabel", "regionLabel"], outputs: ["collapsedChange"] }, { kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
30588
|
+
`, isInline: true, styles: [".strct-md{display:block;color:var(--t1);font-size:13px;line-height:1.55}.strct-md__p{margin:0 0 var(--space-2)}.strct-md__p:last-child{margin-bottom:0}.strct-md__h{margin:var(--space-3) 0 var(--space-2);font-size:14px;font-weight:600;color:var(--t1)}.strct-md__h:first-child{margin-top:0}.strct-md__list{margin:0 0 var(--space-2);padding-inline-start:20px}.strct-md__list li{margin-block:2px}.strct-md__quote{margin:0 0 var(--space-2);padding-inline-start:var(--space-3);border-inline-start:2px solid var(--b2);color:var(--t2)}.strct-md__rule{border:0;border-block-start:1px solid var(--b1);margin:var(--space-3) 0}.strct-md__codespan{font-family:var(--mono);font-size:.92em;background:var(--bg-2);border-radius:var(--radius-sm);padding:1px 4px}.strct-md__code{margin-block-end:var(--space-2)}.strct-md__link{color:var(--acc)}.strct-md__ext{margin-inline-start:2px;vertical-align:-1px}.strct-md__tablewrap{overflow-x:auto;margin-block-end:var(--space-2)}.strct-md__table{border-collapse:collapse;width:max-content;min-width:100%}.strct-md__table th,.strct-md__table td{border:1px solid var(--b1);padding:4px 8px;text-align:start}.strct-md__table th{background:var(--bg-2);font-weight:600}.strct-md__caret{display:inline-block;width:2px;height:1em;margin-inline-start:2px;vertical-align:-2px;background:var(--acc);animation:strct-md-caret 1s steps(2) infinite}@keyframes strct-md-caret{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.strct-md__caret{animation:none}}\n"], dependencies: [{ kind: "component", type: StrctMarkdown, selector: "strct-markdown", inputs: ["source", "tree", "streaming", "headingOffset", "linkPolicy", "tokens", "breaks", "newTabLabel", "inheritedTokens"], outputs: ["navigate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: StrctCode, selector: "strct-code", inputs: ["code", "title", "language", "copyable", "collapsible", "collapsed", "lineNumbers", "wrap", "maxHeight", "collapseLabel", "expandLabel", "regionLabel"], outputs: ["collapsedChange"] }, { kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
30513
30589
|
}
|
|
30514
30590
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctMarkdown, decorators: [{
|
|
30515
30591
|
type: Component,
|
|
@@ -30658,10 +30734,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
30658
30734
|
<!-- Blocks inside a list item or a quote. -->
|
|
30659
30735
|
<ng-template #blockRun let-blocks>
|
|
30660
30736
|
@for (b of blocks; track $index) {
|
|
30737
|
+
<!-- The nested view had no token templates of its own, so a claimed
|
|
30738
|
+
run inside a list item or a quote was drawn as plain text while
|
|
30739
|
+
the same run in a paragraph became a chip. -->
|
|
30661
30740
|
<strct-markdown
|
|
30662
30741
|
[tree]="[b]"
|
|
30663
30742
|
[headingOffset]="headingOffset()"
|
|
30664
30743
|
[linkPolicy]="linkPolicy()"
|
|
30744
|
+
[tokens]="tokens()"
|
|
30745
|
+
[breaks]="breaks()"
|
|
30746
|
+
[inheritedTokens]="allTokenDefs()"
|
|
30665
30747
|
(navigate)="navigate.emit($event)"
|
|
30666
30748
|
/>
|
|
30667
30749
|
}
|
|
@@ -30733,6 +30815,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
30733
30815
|
[size]="11"
|
|
30734
30816
|
aria-hidden="true"
|
|
30735
30817
|
/>
|
|
30818
|
+
<span class="strct-sr-only">{{ newTabLabel() }}</span>
|
|
30736
30819
|
</a>
|
|
30737
30820
|
}
|
|
30738
30821
|
@case ('internal') {
|
|
@@ -30760,7 +30843,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
30760
30843
|
}
|
|
30761
30844
|
</ng-template>
|
|
30762
30845
|
`, host: { class: 'strct-md' }, styles: [".strct-md{display:block;color:var(--t1);font-size:13px;line-height:1.55}.strct-md__p{margin:0 0 var(--space-2)}.strct-md__p:last-child{margin-bottom:0}.strct-md__h{margin:var(--space-3) 0 var(--space-2);font-size:14px;font-weight:600;color:var(--t1)}.strct-md__h:first-child{margin-top:0}.strct-md__list{margin:0 0 var(--space-2);padding-inline-start:20px}.strct-md__list li{margin-block:2px}.strct-md__quote{margin:0 0 var(--space-2);padding-inline-start:var(--space-3);border-inline-start:2px solid var(--b2);color:var(--t2)}.strct-md__rule{border:0;border-block-start:1px solid var(--b1);margin:var(--space-3) 0}.strct-md__codespan{font-family:var(--mono);font-size:.92em;background:var(--bg-2);border-radius:var(--radius-sm);padding:1px 4px}.strct-md__code{margin-block-end:var(--space-2)}.strct-md__link{color:var(--acc)}.strct-md__ext{margin-inline-start:2px;vertical-align:-1px}.strct-md__tablewrap{overflow-x:auto;margin-block-end:var(--space-2)}.strct-md__table{border-collapse:collapse;width:max-content;min-width:100%}.strct-md__table th,.strct-md__table td{border:1px solid var(--b1);padding:4px 8px;text-align:start}.strct-md__table th{background:var(--bg-2);font-weight:600}.strct-md__caret{display:inline-block;width:2px;height:1em;margin-inline-start:2px;vertical-align:-2px;background:var(--acc);animation:strct-md-caret 1s steps(2) infinite}@keyframes strct-md-caret{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.strct-md__caret{animation:none}}\n"] }]
|
|
30763
|
-
}], propDecorators: { source: [{ type: i0.Input, args: [{ isSignal: true, alias: "source", required: false }] }], tree: [{ type: i0.Input, args: [{ isSignal: true, alias: "tree", required: false }] }], streaming: [{ type: i0.Input, args: [{ isSignal: true, alias: "streaming", required: false }] }], headingOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "headingOffset", required: false }] }], linkPolicy: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkPolicy", required: false }] }], tokens: [{ type: i0.Input, args: [{ isSignal: true, alias: "tokens", required: false }] }], navigate: [{ type: i0.Output, args: ["navigate"] }],
|
|
30846
|
+
}], propDecorators: { source: [{ type: i0.Input, args: [{ isSignal: true, alias: "source", required: false }] }], tree: [{ type: i0.Input, args: [{ isSignal: true, alias: "tree", required: false }] }], streaming: [{ type: i0.Input, args: [{ isSignal: true, alias: "streaming", required: false }] }], headingOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "headingOffset", required: false }] }], linkPolicy: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkPolicy", required: false }] }], tokens: [{ type: i0.Input, args: [{ isSignal: true, alias: "tokens", required: false }] }], breaks: [{ type: i0.Input, args: [{ isSignal: true, alias: "breaks", required: false }] }], newTabLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "newTabLabel", required: false }] }], inheritedTokens: [{ type: i0.Input, args: [{ isSignal: true, alias: "inheritedTokens", required: false }] }], navigate: [{ type: i0.Output, args: ["navigate"] }], ownTokenDefs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StrctMarkdownToken), { isSignal: true }] }] } });
|
|
30764
30847
|
|
|
30765
30848
|
/**
|
|
30766
30849
|
* The product switcher every multi-product console grows: a chip beside the
|