@mxtommy/kip 3.9.0-beta.2 → 3.9.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/copilot-instructions.md +1 -1
- package/.github/instructions/angular.instructions.md +46 -0
- package/README.md +49 -12
- package/package.json +2 -4
- package/public/3rdpartylicenses.txt +77 -77
- package/public/app-help.component.css.map +7 -0
- package/public/app.component.css.map +7 -0
- package/public/assets/help-docs/configuration.md +4 -4
- package/public/assets/help-docs/dashboards.md +4 -2
- package/public/assets/svg/icons.svg +1 -1
- package/public/boolean-control-config.component.css.map +7 -0
- package/public/boolean-multicontrol-options.component.css.map +7 -0
- package/public/chunk-3EWIS24B.js +5237 -0
- package/public/chunk-3EWIS24B.js.map +1 -0
- package/public/chunk-3VR3EA35.js +1022 -0
- package/public/chunk-3VR3EA35.js.map +1 -0
- package/public/chunk-63ILPRXC.js +2091 -0
- package/public/chunk-63ILPRXC.js.map +1 -0
- package/public/chunk-65ZWQBS6.js +3102 -0
- package/public/chunk-65ZWQBS6.js.map +1 -0
- package/public/chunk-B3LKEWZP.js +4950 -0
- package/public/chunk-B3LKEWZP.js.map +1 -0
- package/public/chunk-BIBIW64D.js +16773 -0
- package/public/chunk-BIBIW64D.js.map +1 -0
- package/public/chunk-BM53SC5N.js +77 -0
- package/public/chunk-BM53SC5N.js.map +7 -0
- package/public/chunk-D7ILNFDM.js +3059 -0
- package/public/chunk-D7ILNFDM.js.map +1 -0
- package/public/chunk-E24UNLSJ.js +2228 -0
- package/public/chunk-E24UNLSJ.js.map +1 -0
- package/public/chunk-J42S2ELC.js +5927 -0
- package/public/chunk-J42S2ELC.js.map +1 -0
- package/public/chunk-KC22A6VH.js +17 -0
- package/public/chunk-KC22A6VH.js.map +7 -0
- package/public/chunk-MCEJWZB2.js +116 -0
- package/public/chunk-MCEJWZB2.js.map +1 -0
- package/public/chunk-NBF6SE6O.js +89 -0
- package/public/chunk-NBF6SE6O.js.map +7 -0
- package/public/chunk-QC7VGVAR.js +343 -0
- package/public/chunk-QC7VGVAR.js.map +7 -0
- package/public/chunk-SDOP6T56.js +42377 -0
- package/public/chunk-SDOP6T56.js.map +1 -0
- package/public/chunk-U2DCSTRY.js +159 -0
- package/public/chunk-U2DCSTRY.js.map +7 -0
- package/public/chunk-UHVNAEXC.js +4752 -0
- package/public/chunk-UHVNAEXC.js.map +1 -0
- package/public/chunk-UQYTD5AC.js +2723 -0
- package/public/chunk-UQYTD5AC.js.map +1 -0
- package/public/chunk-XSABJ5NZ.js +272 -0
- package/public/chunk-XSABJ5NZ.js.map +7 -0
- package/public/chunk-Y6N6O2IP.js +19852 -0
- package/public/chunk-Y6N6O2IP.js.map +1 -0
- package/public/chunk-YGJLBLOX.js +2708 -0
- package/public/chunk-YGJLBLOX.js.map +1 -0
- package/public/chunk-YT33DHC3.js +591 -0
- package/public/chunk-YT33DHC3.js.map +7 -0
- package/public/chunk-YZXYVP72.js +4934 -0
- package/public/chunk-YZXYVP72.js.map +1 -0
- package/public/chunk-ZEHRDSTB.js +13727 -0
- package/public/chunk-ZEHRDSTB.js.map +1 -0
- package/public/config.component.css.map +7 -0
- package/public/dashboard-scroller.component.css.map +7 -0
- package/public/dashboard.component.css.map +7 -0
- package/public/dashboards-editor.component.css.map +7 -0
- package/public/data-inspector-row.component.css.map +7 -0
- package/public/data-inspector.component.css.map +7 -0
- package/public/dataset-chart-options.component.css.map +7 -0
- package/public/datasets.component.css.map +7 -0
- package/public/dialog-confirmation.component.css.map +7 -0
- package/public/dialog-dashboard-page-editor.component.css.map +7 -0
- package/public/dialog-frame.component.css.map +7 -0
- package/public/dialog-name.component.css.map +7 -0
- package/public/display-chart-options.component.css.map +7 -0
- package/public/display.component.css.map +7 -0
- package/public/gauge-steel.component.css.map +7 -0
- package/public/home.component.css.map +7 -0
- package/public/index.html +19 -17
- package/public/main.js +36423 -0
- package/public/main.js.map +1 -0
- package/public/menu-actions.component.css.map +7 -0
- package/public/menu-notifications.component.css.map +7 -0
- package/public/minichart.component.css.map +7 -0
- package/public/modal-user-credential.component.css.map +7 -0
- package/public/modal-widget-config.component.css.map +7 -0
- package/public/notification-badge.component.css.map +7 -0
- package/public/page-header.component.css.map +7 -0
- package/public/path-control-config.component.css.map +7 -0
- package/public/paths-options.component.css.map +7 -0
- package/public/polyfills.js +4422 -0
- package/public/polyfills.js.map +1 -0
- package/public/select-autopilot.component.css.map +7 -0
- package/public/select-icon.component.css.map +7 -0
- package/public/settings.component.css.map +7 -0
- package/public/signalk.component.css.map +7 -0
- package/public/styles.css +1651 -0
- package/public/styles.css.map +7 -0
- package/public/svg-autopilot.component.css.map +7 -0
- package/public/svg-racesteer.component.css.map +7 -0
- package/public/svg-simple-linear-gauge.component.css.map +7 -0
- package/public/svg-windsteer.component.css.map +7 -0
- package/public/tile-large-icon.component.css.map +7 -0
- package/public/units.component.css.map +7 -0
- package/public/upgrade-config.component.css.map +7 -0
- package/public/widget-autopilot.component.css.map +7 -0
- package/public/widget-boolean-switch.component.css.map +7 -0
- package/public/widget-datetime.component.css.map +7 -0
- package/public/widget-freeboardsk.component.css.map +7 -0
- package/public/widget-gauge-ng-compass.component.css.map +7 -0
- package/public/widget-gauge-ng-linear.component.css.map +7 -0
- package/public/widget-gauge-ng-radial.component.css.map +7 -0
- package/public/widget-gauge-steel.component.css.map +7 -0
- package/public/widget-horizon.component.css.map +7 -0
- package/public/widget-host.component.css.map +7 -0
- package/public/widget-iframe.component.css.map +7 -0
- package/public/widget-label.component.css.map +7 -0
- package/public/widget-list-card.component.css.map +7 -0
- package/public/widget-numeric.component.css.map +7 -0
- package/public/widget-position.component.css.map +7 -0
- package/public/widget-race-timer.component.css.map +7 -0
- package/public/widget-racer-line.component.css.map +7 -0
- package/public/widget-racer-timer.component.css.map +7 -0
- package/public/widget-simple-linear.component.css.map +7 -0
- package/public/widget-slider.component.css.map +7 -0
- package/public/widget-text.component.css.map +7 -0
- package/public/widget-title.component.css.map +7 -0
- package/public/widget-tutorial.component.css.map +7 -0
- package/public/widgets-list.component.css.map +7 -0
- package/public/assets/hammer.min.js +0 -7
- package/public/chunk-2YVW3TBK.js +0 -2
- package/public/chunk-35L7BBBD.js +0 -15
- package/public/chunk-3LEMFOCV.js +0 -3
- package/public/chunk-3LJAKLLW.js +0 -1
- package/public/chunk-4JJLPUET.js +0 -60
- package/public/chunk-CBUY7NMR.js +0 -2
- package/public/chunk-CQXWGD3T.js +0 -2
- package/public/chunk-EUFDL4TJ.js +0 -6
- package/public/chunk-FBFTGVZ6.js +0 -1
- package/public/chunk-HCXH72CD.js +0 -5
- package/public/chunk-JY3WVS7C.js +0 -2
- package/public/chunk-KTDDP73O.js +0 -2
- package/public/chunk-NMEZOCU2.js +0 -1
- package/public/chunk-NS2FPVWM.js +0 -4
- package/public/chunk-OSYHJB4F.js +0 -11
- package/public/chunk-PKNLASTF.js +0 -4
- package/public/chunk-Q2Y75POI.js +0 -1
- package/public/chunk-RRTCHHRC.js +0 -3
- package/public/chunk-TA4GACKT.js +0 -4
- package/public/chunk-TXPLRBW5.js +0 -2
- package/public/chunk-VHFBF47T.js +0 -1
- package/public/chunk-VYUMZVH2.js +0 -2
- package/public/chunk-XRGAX4LS.js +0 -2
- package/public/chunk-YNJRIFUM.js +0 -1
- package/public/chunk-ZBCOJLI4.js +0 -6
- package/public/main-XM5EHMUE.js +0 -50
- package/public/polyfills-KH22MU6U.js +0 -2
- package/public/styles-RECKN66R.css +0 -1
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP-ILKS6RVC.woff2 → KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ-MJ3CERJ6.woff2 → KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP-UW3XWY7P.woff2 → KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP-U3JTBV4H.woff2 → KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP-36ULTGLY.woff2 → KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP-5NJLO2HW.woff2 → KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP-2EL65J2O.woff2 → KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP-XWLWMQVU.woff2 → KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ-PWGJWDFE.woff2 → KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP-ITB7NUJC.woff2 → KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP-32PLHKPQ.woff2 → KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP-QPSNQEDD.woff2 → KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP-JKBSJZY3.woff2 → KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP-OG5AHRIX.woff2 → KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz-PPTELUJT.woff2 → KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu4mxKKTU1Kg-SNGEW7FX.woff2 → KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz-DRL4U32S.woff2 → KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu72xKKTU1Kvnz-PRJ7OQMU.woff2 → KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz-HW6RMPJ3.woff2 → KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz-KZD6JQRT.woff2 → KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz-Z72STTMG.woff2 → KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ-CN2J7AYH.woff2 → flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["node_modules/marked/lib/marked.esm.js","node_modules/ngx-markdown/fesm2022/ngx-markdown.mjs","node_modules/@angular/material/fesm2022/menu.mjs"],"sourcesContent":["/**\n * marked v15.0.12 - a markdown parser\n * Copyright (c) 2011-2025, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n\n// src/defaults.ts\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nvar _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n// src/rules.ts\nvar noopTest = { exec: () => null };\nfunction edit(regex, opt = \"\") {\n let source = typeof regex === \"string\" ? regex : regex.source;\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === \"string\" ? val : val.source;\n valSource = valSource.replace(other.caret, \"$1\");\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nvar other = {\n codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm,\n outputLinkReplace: /\\\\([\\[\\]])/g,\n indentCodeCompensation: /^(\\s+)(?:```)/,\n beginningSpace: /^\\s+/,\n endingHash: /#$/,\n startingSpaceChar: /^ /,\n endingSpaceChar: / $/,\n nonSpaceChar: /[^ ]/,\n newLineCharGlobal: /\\n/g,\n tabCharGlobal: /\\t/g,\n multipleSpaceGlobal: /\\s+/g,\n blankLine: /^[ \\t]*$/,\n doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/,\n blockquoteStart: /^ {0,3}>/,\n blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,\n blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm,\n listReplaceTabs: /^\\t+/,\n listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,\n listIsTask: /^\\[[ xX]\\] /,\n listReplaceTask: /^\\[[ xX]\\] +/,\n anyLine: /\\n.*\\n/,\n hrefBrackets: /^<(.*)>$/,\n tableDelimiter: /[:|]/,\n tableAlignChars: /^\\||\\| *$/g,\n tableRowBlankLine: /\\n[ \\t]*$/,\n tableAlignRight: /^ *-+: *$/,\n tableAlignCenter: /^ *:-+: *$/,\n tableAlignLeft: /^ *:-+ *$/,\n startATag: /^<a /i,\n endATag: /^<\\/a>/i,\n startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i,\n endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i,\n startAngleBracket: /^</,\n endAngleBracket: />$/,\n pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,\n unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u,\n escapeTest: /[&<>\"']/,\n escapeReplace: /[&<>\"']/g,\n escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,\n escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,\n unescapeTest: /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,\n caret: /(^|[^\\[])\\^/g,\n percentDecode: /%25/g,\n findPipe: /\\|/g,\n splitPipe: / \\|/,\n slashPipe: /\\\\\\|/g,\n carriageReturn: /\\r\\n|\\r/g,\n spaceLine: /^ +$/gm,\n notSpaceStart: /^\\S*/,\n endingNewline: /\\n$/,\n listItemRegex: (bull) => new RegExp(`^( {0,3}${bull})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),\n nextBulletRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),\n hrRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),\n fencesBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`),\n headingBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),\n htmlBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, \"i\")\n};\nvar newline = /^(?:[ \\t]*(?:\\n|$))+/;\nvar blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nvar fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nvar hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nvar heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nvar bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nvar lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/;\nvar lheading = edit(lheadingCore).replace(/bull/g, bullet).replace(/blockCode/g, /(?: {4}| {0,3}\\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g, \"\").getRegex();\nvar lheadingGfm = edit(lheadingCore).replace(/bull/g, bullet).replace(/blockCode/g, /(?: {4}| {0,3}\\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\\n>]+>\\n/).replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex();\nvar _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nvar blockText = /^[^\\n]+/;\nvar _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nvar def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\", _blockLabel).replace(\"title\", /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex();\nvar list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g, bullet).getRegex();\nvar _tag = \"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\";\nvar _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nvar html = edit(\n \"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\n \"i\"\n).replace(\"comment\", _comment).replace(\"tag\", _tag).replace(\"attribute\", / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\nvar paragraph = edit(_paragraph).replace(\"hr\", hr).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\", \"\").replace(\"|table\", \"\").replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", _tag).getRegex();\nvar blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\", paragraph).getRegex();\nvar blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\nvar gfmTable = edit(\n \"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\"\n).replace(\"hr\", hr).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\", \" {0,3}>\").replace(\"code\", \"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", _tag).getRegex();\nvar blockGfm = {\n ...blockNormal,\n lheading: lheadingGfm,\n table: gfmTable,\n paragraph: edit(_paragraph).replace(\"hr\", hr).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\", \"\").replace(\"table\", gfmTable).replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", _tag).getRegex()\n};\nvar blockPedantic = {\n ...blockNormal,\n html: edit(\n `^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`\n ).replace(\"comment\", _comment).replace(/tag/g, \"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph).replace(\"hr\", hr).replace(\"heading\", \" *#{1,6} *[^\\n]\").replace(\"lheading\", lheading).replace(\"|table\", \"\").replace(\"blockquote\", \" {0,3}>\").replace(\"|fences\", \"\").replace(\"|list\", \"\").replace(\"|html\", \"\").replace(\"|tag\", \"\").getRegex()\n};\nvar escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nvar inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nvar br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nvar inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\nvar _punctuation = /[\\p{P}\\p{S}]/u;\nvar _punctuationOrSpace = /[\\s\\p{P}\\p{S}]/u;\nvar _notPunctuationOrSpace = /[^\\s\\p{P}\\p{S}]/u;\nvar punctuation = edit(/^((?![*_])punctSpace)/, \"u\").replace(/punctSpace/g, _punctuationOrSpace).getRegex();\nvar _punctuationGfmStrongEm = /(?!~)[\\p{P}\\p{S}]/u;\nvar _punctuationOrSpaceGfmStrongEm = /(?!~)[\\s\\p{P}\\p{S}]/u;\nvar _notPunctuationOrSpaceGfmStrongEm = /(?:[^\\s\\p{P}\\p{S}]|~)/u;\nvar blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nvar emStrongLDelimCore = /^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/;\nvar emStrongLDelim = edit(emStrongLDelimCore, \"u\").replace(/punct/g, _punctuation).getRegex();\nvar emStrongLDelimGfm = edit(emStrongLDelimCore, \"u\").replace(/punct/g, _punctuationGfmStrongEm).getRegex();\nvar emStrongRDelimAstCore = \"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\";\nvar emStrongRDelimAst = edit(emStrongRDelimAstCore, \"gu\").replace(/notPunctSpace/g, _notPunctuationOrSpace).replace(/punctSpace/g, _punctuationOrSpace).replace(/punct/g, _punctuation).getRegex();\nvar emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, \"gu\").replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm).replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm).replace(/punct/g, _punctuationGfmStrongEm).getRegex();\nvar emStrongRDelimUnd = edit(\n \"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\n \"gu\"\n).replace(/notPunctSpace/g, _notPunctuationOrSpace).replace(/punctSpace/g, _punctuationOrSpace).replace(/punct/g, _punctuation).getRegex();\nvar anyPunctuation = edit(/\\\\(punct)/, \"gu\").replace(/punct/g, _punctuation).getRegex();\nvar autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex();\nvar _inlineComment = edit(_comment).replace(\"(?:-->|$)\", \"-->\").getRegex();\nvar tag = edit(\n \"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\"\n).replace(\"comment\", _inlineComment).replace(\"attribute\", /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex();\nvar _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nvar link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\", _inlineLabel).replace(\"href\", /<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\", /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex();\nvar reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\", _inlineLabel).replace(\"ref\", _blockLabel).getRegex();\nvar nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\", _blockLabel).getRegex();\nvar reflinkSearch = edit(\"reflink|nolink(?!\\\\()\", \"g\").replace(\"reflink\", reflink).replace(\"nolink\", nolink).getRegex();\nvar inlineNormal = {\n _backpedal: noopTest,\n // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\nvar inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\", _inlineLabel).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\", _inlineLabel).getRegex()\n};\nvar inlineGfm = {\n ...inlineNormal,\n emStrongRDelimAst: emStrongRDelimAstGfm,\n emStrongLDelim: emStrongLDelimGfm,\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, \"i\").replace(\"email\", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])((?:\\\\.|[^\\\\])*?(?:\\\\.|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\nvar inlineBreaks = {\n ...inlineGfm,\n br: edit(br).replace(\"{2,}\", \"*\").getRegex(),\n text: edit(inlineGfm.text).replace(\"\\\\b_\", \"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g, \"*\").getRegex()\n};\nvar block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic\n};\nvar inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic\n};\n\n// src/helpers.ts\nvar escapeReplacements = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\"\n};\nvar getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape2(html2, encode) {\n if (encode) {\n if (other.escapeTest.test(html2)) {\n return html2.replace(other.escapeReplace, getEscapeReplacement);\n }\n } else {\n if (other.escapeTestNoEncode.test(html2)) {\n return html2.replace(other.escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html2;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(other.percentDecode, \"%\");\n } catch {\n return null;\n }\n return href;\n}\nfunction splitCells(tableRow, count) {\n const row = tableRow.replace(other.findPipe, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === \"\\\\\") escaped = !escaped;\n if (escaped) {\n return \"|\";\n } else {\n return \" |\";\n }\n }), cells = row.split(other.splitPipe);\n let i = 0;\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells.at(-1)?.trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push(\"\");\n }\n }\n for (; i < cells.length; i++) {\n cells[i] = cells[i].trim().replace(other.slashPipe, \"|\");\n }\n return cells;\n}\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return \"\";\n }\n let suffLen = 0;\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === \"\\\\\") {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n if (level > 0) {\n return -2;\n }\n return -1;\n}\n\n// src/Tokenizer.ts\nfunction outputLink(cap, link2, raw, lexer2, rules) {\n const href = link2.href;\n const title = link2.title || null;\n const text = cap[1].replace(rules.other.outputLinkReplace, \"$1\");\n lexer2.state.inLink = true;\n const token = {\n type: cap[0].charAt(0) === \"!\" ? \"image\" : \"link\",\n raw,\n href,\n title,\n text,\n tokens: lexer2.inlineTokens(text)\n };\n lexer2.state.inLink = false;\n return token;\n}\nfunction indentCodeCompensation(raw, text, rules) {\n const matchIndentToCode = raw.match(rules.other.indentCodeCompensation);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text.split(\"\\n\").map((node) => {\n const matchIndentInNode = node.match(rules.other.beginningSpace);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n }).join(\"\\n\");\n}\nvar _Tokenizer = class {\n options;\n rules;\n // set by the lexer\n lexer;\n // set by the lexer\n constructor(options2) {\n this.options = options2 || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: \"space\",\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(this.rules.other.codeRemoveIndent, \"\");\n return {\n type: \"code\",\n raw: cap[0],\n codeBlockStyle: \"indented\",\n text: !this.options.pedantic ? rtrim(text, \"\\n\") : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || \"\", this.rules);\n return {\n type: \"code\",\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, \"$1\") : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n if (this.rules.other.endingHash.test(text)) {\n const trimmed = rtrim(text, \"#\");\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) {\n text = trimmed.trim();\n }\n }\n return {\n type: \"heading\",\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: \"hr\",\n raw: rtrim(cap[0], \"\\n\")\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], \"\\n\").split(\"\\n\");\n let raw = \"\";\n let text = \"\";\n const tokens = [];\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n let i;\n for (i = 0; i < lines.length; i++) {\n if (this.rules.other.blockquoteStart.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n } else if (!inBlockquote) {\n currentLines.push(lines[i]);\n } else {\n break;\n }\n }\n lines = lines.slice(i);\n const currentRaw = currentLines.join(\"\\n\");\n const currentText = currentRaw.replace(this.rules.other.blockquoteSetextReplace, \"\\n $1\").replace(this.rules.other.blockquoteSetextReplace2, \"\");\n raw = raw ? `${raw}\n${currentRaw}` : currentRaw;\n text = text ? `${text}\n${currentText}` : currentText;\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n if (lines.length === 0) {\n break;\n }\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"code\") {\n break;\n } else if (lastToken?.type === \"blockquote\") {\n const oldToken = lastToken;\n const newText = oldToken.raw + \"\\n\" + lines.join(\"\\n\");\n const newToken = this.blockquote(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n } else if (lastToken?.type === \"list\") {\n const oldToken = lastToken;\n const newText = oldToken.raw + \"\\n\" + lines.join(\"\\n\");\n const newToken = this.list(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens.at(-1).raw.length).split(\"\\n\");\n continue;\n }\n }\n return {\n type: \"blockquote\",\n raw,\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list2 = {\n type: \"list\",\n raw: \"\",\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : \"\",\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : \"[*+-]\";\n }\n const itemRegex = this.rules.other.listItemRegex(bull);\n let endsWithBlankLine = false;\n while (src) {\n let endEarly = false;\n let raw = \"\";\n let itemContents = \"\";\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) {\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split(\"\\n\", 1)[0].replace(this.rules.other.listReplaceTabs, (t) => \" \".repeat(3 * t.length));\n let nextLine = src.split(\"\\n\", 1)[0];\n let blankLine = !line.trim();\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n } else if (blankLine) {\n indent = cap[1].length + 1;\n } else {\n indent = cap[2].search(this.rules.other.nonSpaceChar);\n indent = indent > 4 ? 1 : indent;\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n if (blankLine && this.rules.other.blankLine.test(nextLine)) {\n raw += nextLine + \"\\n\";\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = this.rules.other.nextBulletRegex(indent);\n const hrRegex = this.rules.other.hrRegex(indent);\n const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent);\n const headingBeginRegex = this.rules.other.headingBeginRegex(indent);\n const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent);\n while (src) {\n const rawLine = src.split(\"\\n\", 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n if (this.options.pedantic) {\n nextLine = nextLine.replace(this.rules.other.listReplaceNesting, \" \");\n nextLineWithoutTabs = nextLine;\n } else {\n nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, \" \");\n }\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n if (hrRegex.test(nextLine)) {\n break;\n }\n if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) {\n itemContents += \"\\n\" + nextLineWithoutTabs.slice(indent);\n } else {\n if (blankLine) {\n break;\n }\n if (line.replace(this.rules.other.tabCharGlobal, \" \").search(this.rules.other.nonSpaceChar) >= 4) {\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += \"\\n\" + nextLine;\n }\n if (!blankLine && !nextLine.trim()) {\n blankLine = true;\n }\n raw += rawLine + \"\\n\";\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n if (!list2.loose) {\n if (endsWithBlankLine) {\n list2.loose = true;\n } else if (this.rules.other.doubleBlankLine.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n if (this.options.gfm) {\n istask = this.rules.other.listIsTask.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== \"[ ] \";\n itemContents = itemContents.replace(this.rules.other.listReplaceTask, \"\");\n }\n }\n list2.items.push({\n type: \"list_item\",\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list2.raw += raw;\n }\n const lastItem = list2.items.at(-1);\n if (lastItem) {\n lastItem.raw = lastItem.raw.trimEnd();\n lastItem.text = lastItem.text.trimEnd();\n } else {\n return;\n }\n list2.raw = list2.raw.trimEnd();\n for (let i = 0; i < list2.items.length; i++) {\n this.lexer.state.top = false;\n list2.items[i].tokens = this.lexer.blockTokens(list2.items[i].text, []);\n if (!list2.loose) {\n const spacers = list2.items[i].tokens.filter((t) => t.type === \"space\");\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some((t) => this.rules.other.anyLine.test(t.raw));\n list2.loose = hasMultipleLineBreaks;\n }\n }\n if (list2.loose) {\n for (let i = 0; i < list2.items.length; i++) {\n list2.items[i].loose = true;\n }\n }\n return list2;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: \"html\",\n block: true,\n raw: cap[0],\n pre: cap[1] === \"pre\" || cap[1] === \"script\" || cap[1] === \"style\",\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag2 = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, \" \");\n const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, \"$1\").replace(this.rules.inline.anyPunctuation, \"$1\") : \"\";\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, \"$1\") : cap[3];\n return {\n type: \"def\",\n tag: tag2,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!this.rules.other.tableDelimiter.test(cap[2])) {\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(this.rules.other.tableAlignChars, \"\").split(\"|\");\n const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, \"\").split(\"\\n\") : [];\n const item = {\n type: \"table\",\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n return;\n }\n for (const align of aligns) {\n if (this.rules.other.tableAlignRight.test(align)) {\n item.align.push(\"right\");\n } else if (this.rules.other.tableAlignCenter.test(align)) {\n item.align.push(\"center\");\n } else if (this.rules.other.tableAlignLeft.test(align)) {\n item.align.push(\"left\");\n } else {\n item.align.push(null);\n }\n }\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i]\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i]\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: \"heading\",\n raw: cap[0],\n depth: cap[2].charAt(0) === \"=\" ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === \"\\n\" ? cap[1].slice(0, -1) : cap[1];\n return {\n type: \"paragraph\",\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: \"text\",\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: \"escape\",\n raw: cap[0],\n text: cap[1]\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: \"html\",\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) {\n if (!this.rules.other.endAngleBracket.test(trimmedUrl)) {\n return;\n }\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), \"\\\\\");\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n const lastParenIndex = findClosingBracket(cap[2], \"()\");\n if (lastParenIndex === -2) {\n return;\n }\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf(\"!\") === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = \"\";\n }\n }\n let href = cap[2];\n let title = \"\";\n if (this.options.pedantic) {\n const link2 = this.rules.other.pedanticHrefTitle.exec(href);\n if (link2) {\n href = link2[1];\n title = link2[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : \"\";\n }\n href = href.trim();\n if (this.rules.other.startAngleBracket.test(href)) {\n if (this.options.pedantic && !this.rules.other.endAngleBracket.test(trimmedUrl)) {\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, \"$1\") : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, \"$1\") : title\n }, cap[0], this.lexer, this.rules);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, \" \");\n const link2 = links[linkString.toLowerCase()];\n if (!link2) {\n const text = cap[0].charAt(0);\n return {\n type: \"text\",\n raw: text,\n text\n };\n }\n return outputLink(cap, link2, cap[0], this.lexer, this.rules);\n }\n }\n emStrong(src, maskedSrc, prevChar = \"\") {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match) return;\n if (match[3] && prevChar.match(this.rules.other.unicodeAlphaNumeric)) return;\n const nextChar = match[1] || match[2] || \"\";\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === \"*\" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue;\n rLength = [...rDelim].length;\n if (match[3] || match[4]) {\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue;\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0) continue;\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n if (Math.min(lLength, rLength) % 2) {\n const text2 = raw.slice(1, -1);\n return {\n type: \"em\",\n raw,\n text: text2,\n tokens: this.lexer.inlineTokens(text2)\n };\n }\n const text = raw.slice(2, -2);\n return {\n type: \"strong\",\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(this.rules.other.newLineCharGlobal, \" \");\n const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text);\n const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text) && this.rules.other.endingSpaceChar.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n return {\n type: \"codespan\",\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: \"br\",\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: \"del\",\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === \"@\") {\n text = cap[1];\n href = \"mailto:\" + text;\n } else {\n text = cap[1];\n href = text;\n }\n return {\n type: \"link\",\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: \"text\",\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === \"@\") {\n text = cap[0];\n href = \"mailto:\" + text;\n } else {\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? \"\";\n } while (prevCapZero !== cap[0]);\n text = cap[0];\n if (cap[1] === \"www.\") {\n href = \"http://\" + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: \"link\",\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: \"text\",\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n const escaped = this.lexer.state.inRawBlock;\n return {\n type: \"text\",\n raw: cap[0],\n text: cap[0],\n escaped\n };\n }\n }\n};\n\n// src/Lexer.ts\nvar _Lexer = class __Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options2) {\n this.tokens = [];\n this.tokens.links = /* @__PURE__ */ Object.create(null);\n this.options = options2 || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n other,\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options2) {\n const lexer2 = new __Lexer(options2);\n return lexer2.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options2) {\n const lexer2 = new __Lexer(options2);\n return lexer2.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src.replace(other.carriageReturn, \"\\n\");\n this.blockTokens(src, this.tokens);\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n return this.tokens;\n }\n blockTokens(src, tokens = [], lastParagraphClipped = false) {\n if (this.options.pedantic) {\n src = src.replace(other.tabCharGlobal, \" \").replace(other.spaceLine, \"\");\n }\n while (src) {\n let token;\n if (this.options.extensions?.block?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.raw.length === 1 && lastToken !== void 0) {\n lastToken.raw += \"\\n\";\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"paragraph\" || lastToken?.type === \"text\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue.at(-1).src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"paragraph\" || lastToken?.type === \"text\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.raw;\n this.inlineQueue.at(-1).src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n let cutSrc = src;\n if (this.options.extensions?.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === \"number\" && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n const lastToken = tokens.at(-1);\n if (lastParagraphClipped && lastToken?.type === \"paragraph\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1).src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"text\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1).src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = \"Infinite loop on byte: \" + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let maskedSrc = src;\n let match = null;\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf(\"[\") + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"[\" + \"a\".repeat(match[0].length - 2) + \"]\" + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"++\" + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"[\" + \"a\".repeat(match[0].length - 2) + \"]\" + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n let keepPrevChar = false;\n let prevChar = \"\";\n while (src) {\n if (!keepPrevChar) {\n prevChar = \"\";\n }\n keepPrevChar = false;\n let token;\n if (this.options.extensions?.inline?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.type === \"text\" && lastToken?.type === \"text\") {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n let cutSrc = src;\n if (this.options.extensions?.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === \"number\" && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== \"_\") {\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"text\") {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = \"Infinite loop on byte: \" + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n};\n\n// src/Renderer.ts\nvar _Renderer = class {\n options;\n parser;\n // set by the parser\n constructor(options2) {\n this.options = options2 || _defaults;\n }\n space(token) {\n return \"\";\n }\n code({ text, lang, escaped }) {\n const langString = (lang || \"\").match(other.notSpaceStart)?.[0];\n const code = text.replace(other.endingNewline, \"\") + \"\\n\";\n if (!langString) {\n return \"<pre><code>\" + (escaped ? code : escape2(code, true)) + \"</code></pre>\\n\";\n }\n return '<pre><code class=\"language-' + escape2(langString) + '\">' + (escaped ? code : escape2(code, true)) + \"</code></pre>\\n\";\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `<blockquote>\n${body}</blockquote>\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>\n`;\n }\n hr(token) {\n return \"<hr>\\n\";\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = \"\";\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? \"ol\" : \"ul\";\n const startAttr = ordered && start !== 1 ? ' start=\"' + start + '\"' : \"\";\n return \"<\" + type + startAttr + \">\\n\" + body + \"</\" + type + \">\\n\";\n }\n listitem(item) {\n let itemBody = \"\";\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens[0]?.type === \"paragraph\") {\n item.tokens[0].text = checkbox + \" \" + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === \"text\") {\n item.tokens[0].tokens[0].text = checkbox + \" \" + escape2(item.tokens[0].tokens[0].text);\n item.tokens[0].tokens[0].escaped = true;\n }\n } else {\n item.tokens.unshift({\n type: \"text\",\n raw: checkbox + \" \",\n text: checkbox + \" \",\n escaped: true\n });\n }\n } else {\n itemBody += checkbox + \" \";\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `<li>${itemBody}</li>\n`;\n }\n checkbox({ checked }) {\n return \"<input \" + (checked ? 'checked=\"\" ' : \"\") + 'disabled=\"\" type=\"checkbox\">';\n }\n paragraph({ tokens }) {\n return `<p>${this.parser.parseInline(tokens)}</p>\n`;\n }\n table(token) {\n let header = \"\";\n let cell = \"\";\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell });\n let body = \"\";\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = \"\";\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n body += this.tablerow({ text: cell });\n }\n if (body) body = `<tbody>${body}</tbody>`;\n return \"<table>\\n<thead>\\n\" + header + \"</thead>\\n\" + body + \"</table>\\n\";\n }\n tablerow({ text }) {\n return `<tr>\n${text}</tr>\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? \"th\" : \"td\";\n const tag2 = token.align ? `<${type} align=\"${token.align}\">` : `<${type}>`;\n return tag2 + content + `</${type}>\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `<strong>${this.parser.parseInline(tokens)}</strong>`;\n }\n em({ tokens }) {\n return `<em>${this.parser.parseInline(tokens)}</em>`;\n }\n codespan({ text }) {\n return `<code>${escape2(text, true)}</code>`;\n }\n br(token) {\n return \"<br>\";\n }\n del({ tokens }) {\n return `<del>${this.parser.parseInline(tokens)}</del>`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + escape2(title) + '\"';\n }\n out += \">\" + text + \"</a>\";\n return out;\n }\n image({ href, title, text, tokens }) {\n if (tokens) {\n text = this.parser.parseInline(tokens, this.parser.textRenderer);\n }\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return escape2(text);\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${escape2(title)}\"`;\n }\n out += \">\";\n return out;\n }\n text(token) {\n return \"tokens\" in token && token.tokens ? this.parser.parseInline(token.tokens) : \"escaped\" in token && token.escaped ? token.text : escape2(token.text);\n }\n};\n\n// src/TextRenderer.ts\nvar _TextRenderer = class {\n // no need for block level renderers\n strong({ text }) {\n return text;\n }\n em({ text }) {\n return text;\n }\n codespan({ text }) {\n return text;\n }\n del({ text }) {\n return text;\n }\n html({ text }) {\n return text;\n }\n text({ text }) {\n return text;\n }\n link({ text }) {\n return \"\" + text;\n }\n image({ text }) {\n return \"\" + text;\n }\n br() {\n return \"\";\n }\n};\n\n// src/Parser.ts\nvar _Parser = class __Parser {\n options;\n renderer;\n textRenderer;\n constructor(options2) {\n this.options = options2 || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.renderer.parser = this;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options2) {\n const parser2 = new __Parser(options2);\n return parser2.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options2) {\n const parser2 = new __Parser(options2);\n return parser2.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = \"\";\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const genericToken = anyToken;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || ![\"space\", \"hr\", \"heading\", \"code\", \"table\", \"blockquote\", \"list\", \"html\", \"paragraph\", \"text\"].includes(genericToken.type)) {\n out += ret || \"\";\n continue;\n }\n }\n const token = anyToken;\n switch (token.type) {\n case \"space\": {\n out += this.renderer.space(token);\n continue;\n }\n case \"hr\": {\n out += this.renderer.hr(token);\n continue;\n }\n case \"heading\": {\n out += this.renderer.heading(token);\n continue;\n }\n case \"code\": {\n out += this.renderer.code(token);\n continue;\n }\n case \"table\": {\n out += this.renderer.table(token);\n continue;\n }\n case \"blockquote\": {\n out += this.renderer.blockquote(token);\n continue;\n }\n case \"list\": {\n out += this.renderer.list(token);\n continue;\n }\n case \"html\": {\n out += this.renderer.html(token);\n continue;\n }\n case \"paragraph\": {\n out += this.renderer.paragraph(token);\n continue;\n }\n case \"text\": {\n let textToken = token;\n let body = this.renderer.text(textToken);\n while (i + 1 < tokens.length && tokens[i + 1].type === \"text\") {\n textToken = tokens[++i];\n body += \"\\n\" + this.renderer.text(textToken);\n }\n if (top) {\n out += this.renderer.paragraph({\n type: \"paragraph\",\n raw: body,\n text: body,\n tokens: [{ type: \"text\", raw: body, text: body, escaped: true }]\n });\n } else {\n out += body;\n }\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return \"\";\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer = this.renderer) {\n let out = \"\";\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n if (ret !== false || ![\"escape\", \"html\", \"link\", \"image\", \"strong\", \"em\", \"codespan\", \"br\", \"del\", \"text\"].includes(anyToken.type)) {\n out += ret || \"\";\n continue;\n }\n }\n const token = anyToken;\n switch (token.type) {\n case \"escape\": {\n out += renderer.text(token);\n break;\n }\n case \"html\": {\n out += renderer.html(token);\n break;\n }\n case \"link\": {\n out += renderer.link(token);\n break;\n }\n case \"image\": {\n out += renderer.image(token);\n break;\n }\n case \"strong\": {\n out += renderer.strong(token);\n break;\n }\n case \"em\": {\n out += renderer.em(token);\n break;\n }\n case \"codespan\": {\n out += renderer.codespan(token);\n break;\n }\n case \"br\": {\n out += renderer.br(token);\n break;\n }\n case \"del\": {\n out += renderer.del(token);\n break;\n }\n case \"text\": {\n out += renderer.text(token);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return \"\";\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n};\n\n// src/Hooks.ts\nvar _Hooks = class {\n options;\n block;\n constructor(options2) {\n this.options = options2 || _defaults;\n }\n static passThroughHooks = /* @__PURE__ */ new Set([\n \"preprocess\",\n \"postprocess\",\n \"processAllTokens\"\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html2) {\n return html2;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n /**\n * Provide function to tokenize markdown\n */\n provideLexer() {\n return this.block ? _Lexer.lex : _Lexer.lexInline;\n }\n /**\n * Provide function to parse tokens\n */\n provideParser() {\n return this.block ? _Parser.parse : _Parser.parseInline;\n }\n};\n\n// src/Instance.ts\nvar Marked = class {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.parseMarkdown(true);\n parseInline = this.parseMarkdown(false);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case \"table\": {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case \"list\": {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens2 = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens2, callback));\n });\n } else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n const opts = { ...pack };\n opts.async = this.defaults.async || opts.async || false;\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error(\"extension name required\");\n }\n if (\"renderer\" in ext) {\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n extensions.renderers[ext.name] = function(...args2) {\n let ret = ext.renderer.apply(this, args2);\n if (ret === false) {\n ret = prevRenderer.apply(this, args2);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (\"tokenizer\" in ext) {\n if (!ext.level || ext.level !== \"block\" && ext.level !== \"inline\") {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) {\n if (ext.level === \"block\") {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === \"inline\") {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (\"childTokens\" in ext && ext.childTokens) {\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if ([\"options\", \"parser\"].includes(prop)) {\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n renderer[rendererProp] = (...args2) => {\n let ret = rendererFunc.apply(renderer, args2);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args2);\n }\n return ret || \"\";\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if ([\"options\", \"rules\", \"lexer\"].includes(prop)) {\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n tokenizer[tokenizerProp] = (...args2) => {\n let ret = tokenizerFunc.apply(tokenizer, args2);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args2);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if ([\"options\", \"block\"].includes(prop)) {\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then((ret2) => {\n return prevHook.call(hooks, ret2);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[hooksProp] = (...args2) => {\n let ret = hooksFunc.apply(hooks, args2);\n if (ret === false) {\n ret = prevHook.apply(hooks, args2);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n if (pack.walkTokens) {\n const walkTokens2 = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function(token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens2) {\n values = values.concat(walkTokens2.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options2) {\n return _Lexer.lex(src, options2 ?? this.defaults);\n }\n parser(tokens, options2) {\n return _Parser.parse(tokens, options2 ?? this.defaults);\n }\n parseMarkdown(blockType) {\n const parse2 = (src, options2) => {\n const origOpt = { ...options2 };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.onError(!!opt.silent, !!opt.async);\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));\n }\n if (typeof src === \"undefined\" || src === null) {\n return throwError(new Error(\"marked(): input parameter is undefined or null\"));\n }\n if (typeof src !== \"string\") {\n return throwError(new Error(\"marked(): input parameter is of type \" + Object.prototype.toString.call(src) + \", string expected\"));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n const lexer2 = opt.hooks ? opt.hooks.provideLexer() : blockType ? _Lexer.lex : _Lexer.lexInline;\n const parser2 = opt.hooks ? opt.hooks.provideParser() : blockType ? _Parser.parse : _Parser.parseInline;\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then((src2) => lexer2(src2, opt)).then((tokens) => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens).then((tokens) => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens).then((tokens) => parser2(tokens, opt)).then((html2) => opt.hooks ? opt.hooks.postprocess(html2) : html2).catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer2(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html2 = parser2(tokens, opt);\n if (opt.hooks) {\n html2 = opt.hooks.postprocess(html2);\n }\n return html2;\n } catch (e) {\n return throwError(e);\n }\n };\n return parse2;\n }\n onError(silent, async) {\n return (e) => {\n e.message += \"\\nPlease report this to https://github.com/markedjs/marked.\";\n if (silent) {\n const msg = \"<p>An error occurred:</p><pre>\" + escape2(e.message + \"\", true) + \"</pre>\";\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n};\n\n// src/marked.ts\nvar markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\nmarked.options = marked.setOptions = function(options2) {\n markedInstance.setOptions(options2);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\nmarked.use = function(...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\nmarked.walkTokens = function(tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\nmarked.parseInline = markedInstance.parseInline;\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nvar options = marked.options;\nvar setOptions = marked.setOptions;\nvar use = marked.use;\nvar walkTokens = marked.walkTokens;\nvar parseInline = marked.parseInline;\nvar parse = marked;\nvar parser = _Parser.parse;\nvar lexer = _Lexer.lex;\nexport {\n _Hooks as Hooks,\n _Lexer as Lexer,\n Marked,\n _Parser as Parser,\n _Renderer as Renderer,\n _TextRenderer as TextRenderer,\n _Tokenizer as Tokenizer,\n _defaults as defaults,\n _getDefaults as getDefaults,\n lexer,\n marked,\n options,\n parse,\n parseInline,\n parser,\n setOptions,\n use,\n walkTokens\n};\n\n","import * as i0 from '@angular/core';\nimport { computed, ChangeDetectionStrategy, Component, InjectionToken, Pipe, PLATFORM_ID, Inject, Optional, Injectable, EventEmitter, Output, Input, SecurityContext, NgModule } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Subject, merge, of, timer } from 'rxjs';\nimport { switchMap, mapTo, distinctUntilChanged, shareReplay, map, takeUntil, first } from 'rxjs/operators';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Renderer, marked } from 'marked';\nconst _c0 = [\"*\"];\nexport { Renderer as MarkedRenderer } from 'marked';\nimport * as i1 from '@angular/common/http';\nimport * as i2 from '@angular/platform-browser';\nconst BUTTON_TEXT_COPY = 'Copy';\nconst BUTTON_TEXT_COPIED = 'Copied';\nclass ClipboardButtonComponent {\n constructor() {\n this._buttonClick$ = new Subject();\n this.copied = toSignal(this._buttonClick$.pipe(switchMap(() => merge(of(true), timer(3000).pipe(mapTo(false)))), distinctUntilChanged(), shareReplay(1)));\n this.copiedText = computed(() => this.copied() ? BUTTON_TEXT_COPIED : BUTTON_TEXT_COPY);\n }\n onCopyToClipboardClick() {\n this._buttonClick$.next();\n }\n static {\n this.ɵfac = function ClipboardButtonComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ClipboardButtonComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ClipboardButtonComponent,\n selectors: [[\"markdown-clipboard\"]],\n decls: 2,\n vars: 3,\n consts: [[1, \"markdown-clipboard-button\", 3, \"click\"]],\n template: function ClipboardButtonComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵdomElementStart(0, \"button\", 0);\n i0.ɵɵdomListener(\"click\", function ClipboardButtonComponent_Template_button_click_0_listener() {\n return ctx.onCopyToClipboardClick();\n });\n i0.ɵɵtext(1);\n i0.ɵɵdomElementEnd();\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"copied\", ctx.copied());\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx.copiedText());\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ClipboardButtonComponent, [{\n type: Component,\n args: [{\n selector: 'markdown-clipboard',\n template: `\n <button\n class=\"markdown-clipboard-button\"\n [class.copied]=\"copied()\"\n (click)=\"onCopyToClipboardClick()\"\n >{{ copiedText() }}</button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, null);\n})();\nconst CLIPBOARD_OPTIONS = new InjectionToken('CLIPBOARD_OPTIONS');\n\n/* eslint-disable */\nclass KatexSpecificOptions {}\nclass LanguagePipe {\n transform(value, language) {\n if (value == null) {\n value = '';\n }\n if (language == null) {\n language = '';\n }\n if (typeof value !== 'string') {\n console.error(`LanguagePipe has been invoked with an invalid value type [${typeof value}]`);\n return value;\n }\n if (typeof language !== 'string') {\n console.error(`LanguagePipe has been invoked with an invalid parameter [${typeof language}]`);\n return value;\n }\n return '```' + language + '\\n' + value + '\\n```';\n }\n static {\n this.ɵfac = function LanguagePipe_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LanguagePipe)();\n };\n }\n static {\n this.ɵpipe = /* @__PURE__ */i0.ɵɵdefinePipe({\n name: \"language\",\n type: LanguagePipe,\n pure: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(LanguagePipe, [{\n type: Pipe,\n args: [{\n name: 'language'\n }]\n }], null, null);\n})();\nvar PrismPlugin;\n(function (PrismPlugin) {\n PrismPlugin[\"CommandLine\"] = \"command-line\";\n PrismPlugin[\"LineHighlight\"] = \"line-highlight\";\n PrismPlugin[\"LineNumbers\"] = \"line-numbers\";\n})(PrismPlugin || (PrismPlugin = {}));\nconst MARKED_EXTENSIONS = new InjectionToken('MARKED_EXTENSIONS');\nconst MARKED_OPTIONS = new InjectionToken('MARKED_OPTIONS');\nconst MERMAID_OPTIONS = new InjectionToken('MERMAID_OPTIONS');\nconst errorJoyPixelsNotLoaded = '[ngx-markdown] When using the `emoji` attribute you *have to* include Emoji-Toolkit files to `angular.json` or use imports. See README for more information';\nconst errorKatexNotLoaded = '[ngx-markdown] When using the `katex` attribute you *have to* include KaTeX files to `angular.json` or use imports. See README for more information';\nconst errorMermaidNotLoaded = '[ngx-markdown] When using the `mermaid` attribute you *have to* include Mermaid files to `angular.json` or use imports. See README for more information';\nconst errorClipboardNotLoaded = '[ngx-markdown] When using the `clipboard` attribute you *have to* include Clipboard files to `angular.json` or use imports. See README for more information';\nconst errorClipboardViewContainerRequired = '[ngx-markdown] When using the `clipboard` attribute you *have to* provide the `viewContainerRef` parameter to `MarkdownService.render()` function';\nconst errorSrcWithoutHttpClient = '[ngx-markdown] When using the `src` attribute you *have to* pass the `HttpClient` as a parameter of the `forRoot` method. See README for more information';\nconst SECURITY_CONTEXT = new InjectionToken('SECURITY_CONTEXT');\nclass ExtendedRenderer extends Renderer {\n constructor() {\n super(...arguments);\n this.ɵNgxMarkdownRendererExtendedForExtensions = false;\n this.ɵNgxMarkdownRendererExtendedForMermaid = false;\n }\n}\nclass MarkdownService {\n get options() {\n return this._options;\n }\n set options(value) {\n this._options = {\n ...this.DEFAULT_MARKED_OPTIONS,\n ...value\n };\n }\n get renderer() {\n return this.options.renderer;\n }\n set renderer(value) {\n this.options.renderer = value;\n }\n constructor(clipboardOptions, extensions, options, mermaidOptions, platform, securityContext, http, sanitizer) {\n this.clipboardOptions = clipboardOptions;\n this.extensions = extensions;\n this.mermaidOptions = mermaidOptions;\n this.platform = platform;\n this.securityContext = securityContext;\n this.http = http;\n this.sanitizer = sanitizer;\n this.DEFAULT_MARKED_OPTIONS = {\n renderer: new Renderer()\n };\n this.DEFAULT_KATEX_OPTIONS = {\n delimiters: [{\n left: '$$',\n right: '$$',\n display: true\n }, {\n left: '$',\n right: '$',\n display: false\n }, {\n left: '\\\\(',\n right: '\\\\)',\n display: false\n }, {\n left: '\\\\begin{equation}',\n right: '\\\\end{equation}',\n display: true\n }, {\n left: '\\\\begin{align}',\n right: '\\\\end{align}',\n display: true\n }, {\n left: '\\\\begin{alignat}',\n right: '\\\\end{alignat}',\n display: true\n }, {\n left: '\\\\begin{gather}',\n right: '\\\\end{gather}',\n display: true\n }, {\n left: '\\\\begin{CD}',\n right: '\\\\end{CD}',\n display: true\n }, {\n left: '\\\\[',\n right: '\\\\]',\n display: true\n }]\n };\n this.DEFAULT_MERMAID_OPTIONS = {\n startOnLoad: false\n };\n this.DEFAULT_CLIPBOARD_OPTIONS = {\n buttonComponent: undefined\n };\n this.DEFAULT_PARSE_OPTIONS = {\n decodeHtml: false,\n inline: false,\n emoji: false,\n mermaid: false,\n markedOptions: undefined,\n disableSanitizer: false\n };\n this.DEFAULT_RENDER_OPTIONS = {\n clipboard: false,\n clipboardOptions: undefined,\n katex: false,\n katexOptions: undefined,\n mermaid: false,\n mermaidOptions: undefined\n };\n this._reload$ = new Subject();\n this.reload$ = this._reload$.asObservable();\n this.options = options;\n }\n parse(markdown, parseOptions = this.DEFAULT_PARSE_OPTIONS) {\n const {\n decodeHtml,\n inline,\n emoji,\n mermaid,\n disableSanitizer\n } = parseOptions;\n const markedOptions = {\n ...this.options,\n ...parseOptions.markedOptions\n };\n const renderer = markedOptions.renderer || this.renderer || new Renderer();\n if (this.extensions) {\n this.renderer = this.extendsRendererForExtensions(renderer);\n }\n if (mermaid) {\n this.renderer = this.extendsRendererForMermaid(renderer);\n }\n const trimmed = this.trimIndentation(markdown);\n const decoded = decodeHtml ? this.decodeHtml(trimmed) : trimmed;\n const emojified = emoji ? this.parseEmoji(decoded) : decoded;\n const marked = this.parseMarked(emojified, markedOptions, inline);\n const sanitized = disableSanitizer ? marked : this.sanitizer.sanitize(this.securityContext, marked);\n return sanitized || '';\n }\n render(element, options = this.DEFAULT_RENDER_OPTIONS, viewContainerRef) {\n const {\n clipboard,\n clipboardOptions,\n katex,\n katexOptions,\n mermaid,\n mermaidOptions\n } = options;\n if (katex) {\n this.renderKatex(element, {\n ...this.DEFAULT_KATEX_OPTIONS,\n ...katexOptions\n });\n }\n if (mermaid) {\n this.renderMermaid(element, {\n ...this.DEFAULT_MERMAID_OPTIONS,\n ...this.mermaidOptions,\n ...mermaidOptions\n });\n }\n if (clipboard) {\n this.renderClipboard(element, viewContainerRef, {\n ...this.DEFAULT_CLIPBOARD_OPTIONS,\n ...this.clipboardOptions,\n ...clipboardOptions\n });\n }\n this.highlight(element);\n }\n reload() {\n this._reload$.next();\n }\n getSource(src) {\n if (!this.http) {\n throw new Error(errorSrcWithoutHttpClient);\n }\n return this.http.get(src, {\n responseType: 'text'\n }).pipe(map(markdown => this.handleExtension(src, markdown)));\n }\n highlight(element) {\n if (!isPlatformBrowser(this.platform)) {\n return;\n }\n if (typeof Prism === 'undefined' || typeof Prism.highlightAllUnder === 'undefined') {\n return;\n }\n if (!element) {\n element = document;\n }\n const noLanguageElements = element.querySelectorAll('pre code:not([class*=\"language-\"])');\n Array.prototype.forEach.call(noLanguageElements, x => x.classList.add('language-none'));\n Prism.highlightAllUnder(element);\n }\n decodeHtml(html) {\n if (!isPlatformBrowser(this.platform)) {\n return html;\n }\n const textarea = document.createElement('textarea');\n textarea.innerHTML = html;\n return textarea.value;\n }\n extendsRendererForExtensions(renderer) {\n const extendedRenderer = renderer;\n if (extendedRenderer.ɵNgxMarkdownRendererExtendedForExtensions === true) {\n return renderer;\n }\n if (this.extensions?.length > 0) {\n marked.use(...this.extensions);\n }\n extendedRenderer.ɵNgxMarkdownRendererExtendedForExtensions = true;\n return renderer;\n }\n extendsRendererForMermaid(renderer) {\n const extendedRenderer = renderer;\n if (extendedRenderer.ɵNgxMarkdownRendererExtendedForMermaid === true) {\n return renderer;\n }\n const defaultCode = renderer.code;\n renderer.code = token => {\n return token.lang === 'mermaid' ? `<div class=\"mermaid\">${token.text}</div>` : defaultCode(token);\n };\n extendedRenderer.ɵNgxMarkdownRendererExtendedForMermaid = true;\n return renderer;\n }\n handleExtension(src, markdown) {\n const urlProtocolIndex = src.lastIndexOf('://');\n const urlWithoutProtocol = urlProtocolIndex > -1 ? src.substring(urlProtocolIndex + 4) : src;\n const lastSlashIndex = urlWithoutProtocol.lastIndexOf('/');\n const lastUrlSegment = lastSlashIndex > -1 ? urlWithoutProtocol.substring(lastSlashIndex + 1).split('?')[0] : '';\n const lastDotIndex = lastUrlSegment.lastIndexOf('.');\n const extension = lastDotIndex > -1 ? lastUrlSegment.substring(lastDotIndex + 1) : '';\n return !!extension && extension !== 'md' ? '```' + extension + '\\n' + markdown + '\\n```' : markdown;\n }\n parseMarked(html, markedOptions, inline = false) {\n if (markedOptions.renderer) {\n // clone renderer and remove extended flags otherwise\n // marked throws an error thinking it is a renderer prop\n const renderer = {\n ...markedOptions.renderer\n };\n delete renderer.ɵNgxMarkdownRendererExtendedForExtensions;\n delete renderer.ɵNgxMarkdownRendererExtendedForMermaid;\n // remove renderer from markedOptions because if renderer is\n // passed to marked.parse method, it will ignore all extensions\n delete markedOptions.renderer;\n marked.use({\n renderer\n });\n }\n return inline ? marked.parseInline(html, markedOptions) : marked.parse(html, markedOptions);\n }\n parseEmoji(html) {\n if (!isPlatformBrowser(this.platform)) {\n return html;\n }\n if (typeof joypixels === 'undefined' || typeof joypixels.shortnameToUnicode === 'undefined') {\n throw new Error(errorJoyPixelsNotLoaded);\n }\n return joypixels.shortnameToUnicode(html);\n }\n renderKatex(element, options) {\n if (!isPlatformBrowser(this.platform)) {\n return;\n }\n if (typeof katex === 'undefined' || typeof renderMathInElement === 'undefined') {\n throw new Error(errorKatexNotLoaded);\n }\n renderMathInElement(element, options);\n }\n renderClipboard(element, viewContainerRef, options) {\n if (!isPlatformBrowser(this.platform)) {\n return;\n }\n if (typeof ClipboardJS === 'undefined') {\n throw new Error(errorClipboardNotLoaded);\n }\n if (!viewContainerRef) {\n throw new Error(errorClipboardViewContainerRequired);\n }\n const {\n buttonComponent,\n buttonTemplate\n } = options;\n // target every <pre> elements\n const preElements = element.querySelectorAll('pre');\n for (let i = 0; i < preElements.length; i++) {\n const preElement = preElements.item(i);\n // create <pre> wrapper element\n const preWrapperElement = document.createElement('div');\n preWrapperElement.style.position = 'relative';\n preElement.parentNode.insertBefore(preWrapperElement, preElement);\n preWrapperElement.appendChild(preElement);\n // create toolbar element\n const toolbarWrapperElement = document.createElement('div');\n toolbarWrapperElement.classList.add('markdown-clipboard-toolbar');\n toolbarWrapperElement.style.position = 'absolute';\n toolbarWrapperElement.style.top = '.5em';\n toolbarWrapperElement.style.right = '.5em';\n toolbarWrapperElement.style.zIndex = '1';\n preWrapperElement.insertAdjacentElement('beforeend', toolbarWrapperElement);\n // register listener to show/hide toolbar\n preWrapperElement.onmouseenter = () => toolbarWrapperElement.classList.add('hover');\n preWrapperElement.onmouseleave = () => toolbarWrapperElement.classList.remove('hover');\n // declare embeddedViewRef holding variable\n let embeddedViewRef;\n // use provided component via input property\n // or provided via ClipboardOptions provider\n if (buttonComponent) {\n const componentRef = viewContainerRef.createComponent(buttonComponent);\n embeddedViewRef = componentRef.hostView;\n componentRef.changeDetectorRef.markForCheck();\n }\n // use provided template via input property\n else if (buttonTemplate) {\n embeddedViewRef = viewContainerRef.createEmbeddedView(buttonTemplate);\n }\n // use default component\n else {\n const componentRef = viewContainerRef.createComponent(ClipboardButtonComponent);\n embeddedViewRef = componentRef.hostView;\n componentRef.changeDetectorRef.markForCheck();\n }\n // declare clipboard instance variable\n let clipboardInstance;\n // attach clipboard.js to root node\n embeddedViewRef.rootNodes.forEach(node => {\n toolbarWrapperElement.appendChild(node);\n clipboardInstance = new ClipboardJS(node, {\n text: () => preElement.innerText\n });\n });\n // destroy clipboard instance when view is destroyed\n embeddedViewRef.onDestroy(() => clipboardInstance.destroy());\n }\n }\n renderMermaid(element, options = this.DEFAULT_MERMAID_OPTIONS) {\n if (!isPlatformBrowser(this.platform)) {\n return;\n }\n if (typeof mermaid === 'undefined' || typeof mermaid.initialize === 'undefined') {\n throw new Error(errorMermaidNotLoaded);\n }\n const mermaidElements = element.querySelectorAll('.mermaid');\n if (mermaidElements.length === 0) {\n return;\n }\n mermaid.initialize(options);\n mermaid.run({\n nodes: mermaidElements\n });\n }\n trimIndentation(markdown) {\n if (!markdown) {\n return '';\n }\n let indentStart;\n return markdown.split('\\n').map(line => {\n let lineIdentStart = indentStart;\n if (line.length > 0) {\n lineIdentStart = isNaN(lineIdentStart) ? line.search(/\\S|$/) : Math.min(line.search(/\\S|$/), lineIdentStart);\n }\n if (isNaN(indentStart)) {\n indentStart = lineIdentStart;\n }\n return lineIdentStart ? line.substring(lineIdentStart) : line;\n }).join('\\n');\n }\n static {\n this.ɵfac = function MarkdownService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MarkdownService)(i0.ɵɵinject(CLIPBOARD_OPTIONS, 8), i0.ɵɵinject(MARKED_EXTENSIONS, 8), i0.ɵɵinject(MARKED_OPTIONS, 8), i0.ɵɵinject(MERMAID_OPTIONS, 8), i0.ɵɵinject(PLATFORM_ID), i0.ɵɵinject(SECURITY_CONTEXT), i0.ɵɵinject(i1.HttpClient, 8), i0.ɵɵinject(i2.DomSanitizer));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MarkdownService,\n factory: MarkdownService.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MarkdownService, [{\n type: Injectable\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [CLIPBOARD_OPTIONS]\n }, {\n type: Optional\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MARKED_EXTENSIONS]\n }, {\n type: Optional\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MARKED_OPTIONS]\n }, {\n type: Optional\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MERMAID_OPTIONS]\n }, {\n type: Optional\n }]\n }, {\n type: Object,\n decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }]\n }, {\n type: i0.SecurityContext,\n decorators: [{\n type: Inject,\n args: [SECURITY_CONTEXT]\n }]\n }, {\n type: i1.HttpClient,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i2.DomSanitizer\n }], null);\n})();\nclass MarkdownComponent {\n get disableSanitizer() {\n return this._disableSanitizer;\n }\n set disableSanitizer(value) {\n this._disableSanitizer = this.coerceBooleanProperty(value);\n }\n get inline() {\n return this._inline;\n }\n set inline(value) {\n this._inline = this.coerceBooleanProperty(value);\n }\n // Plugin - clipboard\n get clipboard() {\n return this._clipboard;\n }\n set clipboard(value) {\n this._clipboard = this.coerceBooleanProperty(value);\n }\n // Plugin - emoji\n get emoji() {\n return this._emoji;\n }\n set emoji(value) {\n this._emoji = this.coerceBooleanProperty(value);\n }\n // Plugin - katex\n get katex() {\n return this._katex;\n }\n set katex(value) {\n this._katex = this.coerceBooleanProperty(value);\n }\n // Plugin - mermaid\n get mermaid() {\n return this._mermaid;\n }\n set mermaid(value) {\n this._mermaid = this.coerceBooleanProperty(value);\n }\n // Plugin - lineHighlight\n get lineHighlight() {\n return this._lineHighlight;\n }\n set lineHighlight(value) {\n this._lineHighlight = this.coerceBooleanProperty(value);\n }\n // Plugin - lineNumbers\n get lineNumbers() {\n return this._lineNumbers;\n }\n set lineNumbers(value) {\n this._lineNumbers = this.coerceBooleanProperty(value);\n }\n // Plugin - commandLine\n get commandLine() {\n return this._commandLine;\n }\n set commandLine(value) {\n this._commandLine = this.coerceBooleanProperty(value);\n }\n constructor(element, markdownService, viewContainerRef) {\n this.element = element;\n this.markdownService = markdownService;\n this.viewContainerRef = viewContainerRef;\n // Event emitters\n this.error = new EventEmitter();\n this.load = new EventEmitter();\n this.ready = new EventEmitter();\n this._clipboard = false;\n this._commandLine = false;\n this._disableSanitizer = false;\n this._emoji = false;\n this._inline = false;\n this._katex = false;\n this._lineHighlight = false;\n this._lineNumbers = false;\n this._mermaid = false;\n this.destroyed$ = new Subject();\n }\n ngOnChanges() {\n this.loadContent();\n }\n loadContent() {\n if (this.data != null) {\n this.handleData();\n return;\n }\n if (this.src != null) {\n this.handleSrc();\n return;\n }\n }\n ngAfterViewInit() {\n if (!this.data && !this.src) {\n this.handleTransclusion();\n }\n this.markdownService.reload$.pipe(takeUntil(this.destroyed$)).subscribe(() => this.loadContent());\n }\n ngOnDestroy() {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n async render(markdown, decodeHtml = false) {\n const parsedOptions = {\n decodeHtml,\n inline: this.inline,\n emoji: this.emoji,\n mermaid: this.mermaid,\n disableSanitizer: this.disableSanitizer\n };\n const renderOptions = {\n clipboard: this.clipboard,\n clipboardOptions: this.getClipboardOptions(),\n katex: this.katex,\n katexOptions: this.katexOptions,\n mermaid: this.mermaid,\n mermaidOptions: this.mermaidOptions\n };\n const parsed = await this.markdownService.parse(markdown, parsedOptions);\n this.element.nativeElement.innerHTML = parsed;\n this.handlePlugins();\n this.markdownService.render(this.element.nativeElement, renderOptions, this.viewContainerRef);\n this.ready.emit();\n }\n coerceBooleanProperty(value) {\n return value != null && `${String(value)}` !== 'false';\n }\n getClipboardOptions() {\n if (this.clipboardButtonComponent || this.clipboardButtonTemplate) {\n return {\n buttonComponent: this.clipboardButtonComponent,\n buttonTemplate: this.clipboardButtonTemplate\n };\n }\n return undefined;\n }\n handleData() {\n this.render(this.data);\n }\n handleSrc() {\n this.markdownService.getSource(this.src).subscribe({\n next: markdown => {\n this.render(markdown).then(() => {\n this.load.emit(markdown);\n });\n },\n error: error => this.error.emit(error)\n });\n }\n handleTransclusion() {\n this.render(this.element.nativeElement.innerHTML, true);\n }\n handlePlugins() {\n if (this.commandLine) {\n this.setPluginClass(this.element.nativeElement, PrismPlugin.CommandLine);\n this.setPluginOptions(this.element.nativeElement, {\n dataFilterOutput: this.filterOutput,\n dataHost: this.host,\n dataPrompt: this.prompt,\n dataOutput: this.output,\n dataUser: this.user\n });\n }\n if (this.lineHighlight) {\n this.setPluginOptions(this.element.nativeElement, {\n dataLine: this.line,\n dataLineOffset: this.lineOffset\n });\n }\n if (this.lineNumbers) {\n this.setPluginClass(this.element.nativeElement, PrismPlugin.LineNumbers);\n this.setPluginOptions(this.element.nativeElement, {\n dataStart: this.start\n });\n }\n }\n setPluginClass(element, plugin) {\n const preElements = element.querySelectorAll('pre');\n for (let i = 0; i < preElements.length; i++) {\n const classes = plugin instanceof Array ? plugin : [plugin];\n preElements.item(i).classList.add(...classes);\n }\n }\n setPluginOptions(element, options) {\n const preElements = element.querySelectorAll('pre');\n for (let i = 0; i < preElements.length; i++) {\n Object.keys(options).forEach(option => {\n const attributeValue = options[option];\n if (attributeValue) {\n const attributeName = this.toLispCase(option);\n preElements.item(i).setAttribute(attributeName, attributeValue.toString());\n }\n });\n }\n }\n toLispCase(value) {\n const upperChars = value.match(/([A-Z])/g);\n if (!upperChars) {\n return value;\n }\n let str = value.toString();\n for (let i = 0, n = upperChars.length; i < n; i++) {\n str = str.replace(new RegExp(upperChars[i]), '-' + upperChars[i].toLowerCase());\n }\n if (str.slice(0, 1) === '-') {\n str = str.slice(1);\n }\n return str;\n }\n static {\n this.ɵfac = function MarkdownComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MarkdownComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(MarkdownService), i0.ɵɵdirectiveInject(i0.ViewContainerRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MarkdownComponent,\n selectors: [[\"markdown\"], [\"\", \"markdown\", \"\"]],\n inputs: {\n data: \"data\",\n src: \"src\",\n disableSanitizer: \"disableSanitizer\",\n inline: \"inline\",\n clipboard: \"clipboard\",\n clipboardButtonComponent: \"clipboardButtonComponent\",\n clipboardButtonTemplate: \"clipboardButtonTemplate\",\n emoji: \"emoji\",\n katex: \"katex\",\n katexOptions: \"katexOptions\",\n mermaid: \"mermaid\",\n mermaidOptions: \"mermaidOptions\",\n lineHighlight: \"lineHighlight\",\n line: \"line\",\n lineOffset: \"lineOffset\",\n lineNumbers: \"lineNumbers\",\n start: \"start\",\n commandLine: \"commandLine\",\n filterOutput: \"filterOutput\",\n host: \"host\",\n prompt: \"prompt\",\n output: \"output\",\n user: \"user\"\n },\n outputs: {\n error: \"error\",\n load: \"load\",\n ready: \"ready\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function MarkdownComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MarkdownComponent, [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'markdown, [markdown]',\n template: '<ng-content></ng-content>'\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: MarkdownService\n }, {\n type: i0.ViewContainerRef\n }], {\n data: [{\n type: Input\n }],\n src: [{\n type: Input\n }],\n disableSanitizer: [{\n type: Input\n }],\n inline: [{\n type: Input\n }],\n clipboard: [{\n type: Input\n }],\n clipboardButtonComponent: [{\n type: Input\n }],\n clipboardButtonTemplate: [{\n type: Input\n }],\n emoji: [{\n type: Input\n }],\n katex: [{\n type: Input\n }],\n katexOptions: [{\n type: Input\n }],\n mermaid: [{\n type: Input\n }],\n mermaidOptions: [{\n type: Input\n }],\n lineHighlight: [{\n type: Input\n }],\n line: [{\n type: Input\n }],\n lineOffset: [{\n type: Input\n }],\n lineNumbers: [{\n type: Input\n }],\n start: [{\n type: Input\n }],\n commandLine: [{\n type: Input\n }],\n filterOutput: [{\n type: Input\n }],\n host: [{\n type: Input\n }],\n prompt: [{\n type: Input\n }],\n output: [{\n type: Input\n }],\n user: [{\n type: Input\n }],\n error: [{\n type: Output\n }],\n load: [{\n type: Output\n }],\n ready: [{\n type: Output\n }]\n });\n})();\nclass MarkdownPipe {\n constructor(domSanitizer, elementRef, markdownService, viewContainerRef, zone) {\n this.domSanitizer = domSanitizer;\n this.elementRef = elementRef;\n this.markdownService = markdownService;\n this.viewContainerRef = viewContainerRef;\n this.zone = zone;\n }\n async transform(value, options) {\n if (value == null) {\n return '';\n }\n if (typeof value !== 'string') {\n console.error(`MarkdownPipe has been invoked with an invalid value type [${typeof value}]`);\n return value;\n }\n const markdown = await this.markdownService.parse(value, options);\n this.zone.onStable.pipe(first()).subscribe(() => this.markdownService.render(this.elementRef.nativeElement, options, this.viewContainerRef));\n return this.domSanitizer.bypassSecurityTrustHtml(markdown);\n }\n static {\n this.ɵfac = function MarkdownPipe_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MarkdownPipe)(i0.ɵɵdirectiveInject(i2.DomSanitizer, 16), i0.ɵɵdirectiveInject(i0.ElementRef, 16), i0.ɵɵdirectiveInject(MarkdownService, 16), i0.ɵɵdirectiveInject(i0.ViewContainerRef, 16), i0.ɵɵdirectiveInject(i0.NgZone, 16));\n };\n }\n static {\n this.ɵpipe = /* @__PURE__ */i0.ɵɵdefinePipe({\n name: \"markdown\",\n type: MarkdownPipe,\n pure: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MarkdownPipe, [{\n type: Pipe,\n args: [{\n name: 'markdown'\n }]\n }], () => [{\n type: i2.DomSanitizer\n }, {\n type: i0.ElementRef\n }, {\n type: MarkdownService\n }, {\n type: i0.ViewContainerRef\n }, {\n type: i0.NgZone\n }], null);\n})();\nfunction provideMarkdown(markdownModuleConfig) {\n return [MarkdownService, markdownModuleConfig?.loader ?? [], markdownModuleConfig?.clipboardOptions ?? [], markdownModuleConfig?.markedOptions ?? [], markdownModuleConfig?.mermaidOptions ?? [], markdownModuleConfig?.markedExtensions ?? [], {\n provide: SECURITY_CONTEXT,\n useValue: markdownModuleConfig?.sanitize ?? SecurityContext.HTML\n }];\n}\n;\n;\nconst sharedDeclarations = [ClipboardButtonComponent, LanguagePipe, MarkdownComponent, MarkdownPipe];\nclass MarkdownModule {\n static forRoot(markdownModuleConfig) {\n return {\n ngModule: MarkdownModule,\n providers: [provideMarkdown(markdownModuleConfig)]\n };\n }\n static forChild() {\n return {\n ngModule: MarkdownModule\n };\n }\n static {\n this.ɵfac = function MarkdownModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MarkdownModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MarkdownModule,\n imports: [ClipboardButtonComponent, LanguagePipe, MarkdownComponent, MarkdownPipe],\n exports: [ClipboardButtonComponent, LanguagePipe, MarkdownComponent, MarkdownPipe]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MarkdownModule, [{\n type: NgModule,\n args: [{\n imports: sharedDeclarations,\n exports: sharedDeclarations\n }]\n }], null, null);\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CLIPBOARD_OPTIONS, ClipboardButtonComponent, ExtendedRenderer, KatexSpecificOptions, LanguagePipe, MARKED_EXTENSIONS, MARKED_OPTIONS, MERMAID_OPTIONS, MarkdownComponent, MarkdownModule, MarkdownPipe, MarkdownService, PrismPlugin, SECURITY_CONTEXT, errorClipboardNotLoaded, errorClipboardViewContainerRequired, errorJoyPixelsNotLoaded, errorKatexNotLoaded, errorMermaidNotLoaded, errorSrcWithoutHttpClient, provideMarkdown };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, ElementRef, DOCUMENT, ChangeDetectorRef, booleanAttribute, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, TemplateRef, ApplicationRef, Injector, ViewContainerRef, Directive, QueryList, EventEmitter, afterNextRender, ContentChildren, ViewChild, ContentChild, Output, NgZone, Renderer2, NgModule } from '@angular/core';\nimport { FocusMonitor, _IdGenerator, FocusKeyManager, isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { UP_ARROW, DOWN_ARROW, RIGHT_ARROW, LEFT_ARROW, ESCAPE, hasModifierKey, ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Subject, merge, Subscription, of } from 'rxjs';\nimport { startWith, switchMap, takeUntil, take, filter, skipWhile } from 'rxjs/operators';\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\nimport { _ as _StructuralStylesLoader } from './structural-styles-CObeNzjn.mjs';\nimport { M as MatRipple } from './ripple-BMyyyLz2.mjs';\nimport { TemplatePortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport { _ as _animationsDisabled } from './animation-ChQ1vjiF.mjs';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { createRepositionScrollStrategy, createOverlayRef, OverlayConfig, createFlexibleConnectedPositionStrategy, ViewportRuler, ScrollDispatcher, OverlayModule } from '@angular/cdk/overlay';\nimport { _getEventTarget, _getShadowRoot } from '@angular/cdk/platform';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { M as MatRippleModule } from './index-BRImSAOu.mjs';\nimport { M as MatCommonModule } from './common-module-cKSwHniA.mjs';\nimport '@angular/cdk/coercion';\nimport '@angular/cdk/layout';\n\n/**\n * Injection token used to provide the parent menu to menu-specific components.\n * @docs-private\n */\nconst _c0 = [\"mat-menu-item\", \"\"];\nconst _c1 = [[[\"mat-icon\"], [\"\", \"matMenuItemIcon\", \"\"]], \"*\"];\nconst _c2 = [\"mat-icon, [matMenuItemIcon]\", \"*\"];\nfunction MatMenuItem_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"svg\", 2);\n i0.ɵɵelement(1, \"polygon\", 3);\n i0.ɵɵelementEnd();\n }\n}\nconst _c3 = [\"*\"];\nfunction MatMenu_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵdomElementStart(0, \"div\", 0);\n i0.ɵɵdomListener(\"click\", function MatMenu_ng_template_0_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.closed.emit(\"click\"));\n })(\"animationstart\", function MatMenu_ng_template_0_Template_div_animationstart_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._onAnimationStart($event.animationName));\n })(\"animationend\", function MatMenu_ng_template_0_Template_div_animationend_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._onAnimationDone($event.animationName));\n })(\"animationcancel\", function MatMenu_ng_template_0_Template_div_animationcancel_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._onAnimationDone($event.animationName));\n });\n i0.ɵɵdomElementStart(1, \"div\", 1);\n i0.ɵɵprojection(2);\n i0.ɵɵdomElementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r1._classList);\n i0.ɵɵclassProp(\"mat-menu-panel-animations-disabled\", ctx_r1._animationsDisabled)(\"mat-menu-panel-exit-animation\", ctx_r1._panelAnimationState === \"void\")(\"mat-menu-panel-animating\", ctx_r1._isAnimating);\n i0.ɵɵdomProperty(\"id\", ctx_r1.panelId);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.ariaLabel || null)(\"aria-labelledby\", ctx_r1.ariaLabelledby || null)(\"aria-describedby\", ctx_r1.ariaDescribedby || null);\n }\n}\nconst MAT_MENU_PANEL = new InjectionToken('MAT_MENU_PANEL');\n\n/**\n * Single item inside a `mat-menu`. Provides the menu item styling and accessibility treatment.\n */\nclass MatMenuItem {\n _elementRef = inject(ElementRef);\n _document = inject(DOCUMENT);\n _focusMonitor = inject(FocusMonitor);\n _parentMenu = inject(MAT_MENU_PANEL, {\n optional: true\n });\n _changeDetectorRef = inject(ChangeDetectorRef);\n /** ARIA role for the menu item. */\n role = 'menuitem';\n /** Whether the menu item is disabled. */\n disabled = false;\n /** Whether ripples are disabled on the menu item. */\n disableRipple = false;\n /** Stream that emits when the menu item is hovered. */\n _hovered = new Subject();\n /** Stream that emits when the menu item is focused. */\n _focused = new Subject();\n /** Whether the menu item is highlighted. */\n _highlighted = false;\n /** Whether the menu item acts as a trigger for a sub-menu. */\n _triggersSubmenu = false;\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n this._parentMenu?.addItem?.(this);\n }\n /** Focuses the menu item. */\n focus(origin, options) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._getHostElement(), origin, options);\n } else {\n this._getHostElement().focus(options);\n }\n this._focused.next(this);\n }\n ngAfterViewInit() {\n if (this._focusMonitor) {\n // Start monitoring the element, so it gets the appropriate focused classes. We want\n // to show the focus style for menu items only when the focus was not caused by a\n // mouse or touch interaction.\n this._focusMonitor.monitor(this._elementRef, false);\n }\n }\n ngOnDestroy() {\n if (this._focusMonitor) {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n if (this._parentMenu && this._parentMenu.removeItem) {\n this._parentMenu.removeItem(this);\n }\n this._hovered.complete();\n this._focused.complete();\n }\n /** Used to set the `tabindex`. */\n _getTabIndex() {\n return this.disabled ? '-1' : '0';\n }\n /** Returns the host DOM element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n /** Prevents the default element actions if it is disabled. */\n _checkDisabled(event) {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n /** Emits to the hover stream. */\n _handleMouseEnter() {\n this._hovered.next(this);\n }\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel() {\n const clone = this._elementRef.nativeElement.cloneNode(true);\n const icons = clone.querySelectorAll('mat-icon, .material-icons');\n // Strip away icons, so they don't show up in the text.\n for (let i = 0; i < icons.length; i++) {\n icons[i].remove();\n }\n return clone.textContent?.trim() || '';\n }\n _setHighlighted(isHighlighted) {\n // We need to mark this for check for the case where the content is coming from a\n // `matMenuContent` whose change detection tree is at the declaration position,\n // not the insertion position. See #23175.\n this._highlighted = isHighlighted;\n this._changeDetectorRef.markForCheck();\n }\n _setTriggersSubmenu(triggersSubmenu) {\n this._triggersSubmenu = triggersSubmenu;\n this._changeDetectorRef.markForCheck();\n }\n _hasFocus() {\n return this._document && this._document.activeElement === this._getHostElement();\n }\n static ɵfac = function MatMenuItem_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatMenuItem)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatMenuItem,\n selectors: [[\"\", \"mat-menu-item\", \"\"]],\n hostAttrs: [1, \"mat-mdc-menu-item\", \"mat-focus-indicator\"],\n hostVars: 8,\n hostBindings: function MatMenuItem_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function MatMenuItem_click_HostBindingHandler($event) {\n return ctx._checkDisabled($event);\n })(\"mouseenter\", function MatMenuItem_mouseenter_HostBindingHandler() {\n return ctx._handleMouseEnter();\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.role)(\"tabindex\", ctx._getTabIndex())(\"aria-disabled\", ctx.disabled)(\"disabled\", ctx.disabled || null);\n i0.ɵɵclassProp(\"mat-mdc-menu-item-highlighted\", ctx._highlighted)(\"mat-mdc-menu-item-submenu-trigger\", ctx._triggersSubmenu);\n }\n },\n inputs: {\n role: \"role\",\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute]\n },\n exportAs: [\"matMenuItem\"],\n attrs: _c0,\n ngContentSelectors: _c2,\n decls: 5,\n vars: 3,\n consts: [[1, \"mat-mdc-menu-item-text\"], [\"matRipple\", \"\", 1, \"mat-mdc-menu-ripple\", 3, \"matRippleDisabled\", \"matRippleTrigger\"], [\"viewBox\", \"0 0 5 10\", \"focusable\", \"false\", \"aria-hidden\", \"true\", 1, \"mat-mdc-menu-submenu-icon\"], [\"points\", \"0,0 5,5 0,10\"]],\n template: function MatMenuItem_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵprojection(0);\n i0.ɵɵelementStart(1, \"span\", 0);\n i0.ɵɵprojection(2, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(3, \"div\", 1);\n i0.ɵɵconditionalCreate(4, MatMenuItem_Conditional_4_Template, 2, 0, \":svg:svg\", 2);\n }\n if (rf & 2) {\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"matRippleDisabled\", ctx.disableRipple || ctx.disabled)(\"matRippleTrigger\", ctx._getHostElement());\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx._triggersSubmenu ? 4 : -1);\n }\n },\n dependencies: [MatRipple],\n encapsulation: 2,\n changeDetection: 0\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatMenuItem, [{\n type: Component,\n args: [{\n selector: '[mat-menu-item]',\n exportAs: 'matMenuItem',\n host: {\n '[attr.role]': 'role',\n 'class': 'mat-mdc-menu-item mat-focus-indicator',\n '[class.mat-mdc-menu-item-highlighted]': '_highlighted',\n '[class.mat-mdc-menu-item-submenu-trigger]': '_triggersSubmenu',\n '[attr.tabindex]': '_getTabIndex()',\n '[attr.aria-disabled]': 'disabled',\n '[attr.disabled]': 'disabled || null',\n '(click)': '_checkDisabled($event)',\n '(mouseenter)': '_handleMouseEnter()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [MatRipple],\n template: \"<ng-content select=\\\"mat-icon, [matMenuItemIcon]\\\"></ng-content>\\n<span class=\\\"mat-mdc-menu-item-text\\\"><ng-content></ng-content></span>\\n<div class=\\\"mat-mdc-menu-ripple\\\" matRipple\\n [matRippleDisabled]=\\\"disableRipple || disabled\\\"\\n [matRippleTrigger]=\\\"_getHostElement()\\\">\\n</div>\\n\\n@if (_triggersSubmenu) {\\n <svg\\n class=\\\"mat-mdc-menu-submenu-icon\\\"\\n viewBox=\\\"0 0 5 10\\\"\\n focusable=\\\"false\\\"\\n aria-hidden=\\\"true\\\"><polygon points=\\\"0,0 5,5 0,10\\\"/></svg>\\n}\\n\"\n }]\n }], () => [], {\n role: [{\n type: Input\n }],\n disabled: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n disableRipple: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }]\n });\n})();\n\n/**\n * Throws an exception for the case when menu's x-position value isn't valid.\n * In other words, it doesn't match 'before' or 'after'.\n * @docs-private\n */\nfunction throwMatMenuInvalidPositionX() {\n throw Error(`xPosition value must be either 'before' or after'.\n Example: <mat-menu xPosition=\"before\" #menu=\"matMenu\"></mat-menu>`);\n}\n/**\n * Throws an exception for the case when menu's y-position value isn't valid.\n * In other words, it doesn't match 'above' or 'below'.\n * @docs-private\n */\nfunction throwMatMenuInvalidPositionY() {\n throw Error(`yPosition value must be either 'above' or below'.\n Example: <mat-menu yPosition=\"above\" #menu=\"matMenu\"></mat-menu>`);\n}\n/**\n * Throws an exception for the case when a menu is assigned\n * to a trigger that is placed inside the same menu.\n * @docs-private\n */\nfunction throwMatMenuRecursiveError() {\n throw Error(`matMenuTriggerFor: menu cannot contain its own trigger. Assign a menu that is ` + `not a parent of the trigger or move the trigger outside of the menu.`);\n}\n\n/**\n * Injection token that can be used to reference instances of `MatMenuContent`. It serves\n * as alternative token to the actual `MatMenuContent` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_MENU_CONTENT = new InjectionToken('MatMenuContent');\n/** Menu content that will be rendered lazily once the menu is opened. */\nclass MatMenuContent {\n _template = inject(TemplateRef);\n _appRef = inject(ApplicationRef);\n _injector = inject(Injector);\n _viewContainerRef = inject(ViewContainerRef);\n _document = inject(DOCUMENT);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _portal;\n _outlet;\n /** Emits when the menu content has been attached. */\n _attached = new Subject();\n constructor() {}\n /**\n * Attaches the content with a particular context.\n * @docs-private\n */\n attach(context = {}) {\n if (!this._portal) {\n this._portal = new TemplatePortal(this._template, this._viewContainerRef);\n }\n this.detach();\n if (!this._outlet) {\n this._outlet = new DomPortalOutlet(this._document.createElement('div'), this._appRef, this._injector);\n }\n const element = this._template.elementRef.nativeElement;\n // Because we support opening the same menu from different triggers (which in turn have their\n // own `OverlayRef` panel), we have to re-insert the host element every time, otherwise we\n // risk it staying attached to a pane that's no longer in the DOM.\n element.parentNode.insertBefore(this._outlet.outletElement, element);\n // When `MatMenuContent` is used in an `OnPush` component, the insertion of the menu\n // content via `createEmbeddedView` does not cause the content to be seen as \"dirty\"\n // by Angular. This causes the `@ContentChildren` for menu items within the menu to\n // not be updated by Angular. By explicitly marking for check here, we tell Angular that\n // it needs to check for new menu items and update the `@ContentChild` in `MatMenu`.\n this._changeDetectorRef.markForCheck();\n this._portal.attach(this._outlet, context);\n this._attached.next();\n }\n /**\n * Detaches the content.\n * @docs-private\n */\n detach() {\n if (this._portal?.isAttached) {\n this._portal.detach();\n }\n }\n ngOnDestroy() {\n this.detach();\n this._outlet?.dispose();\n }\n static ɵfac = function MatMenuContent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatMenuContent)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatMenuContent,\n selectors: [[\"ng-template\", \"matMenuContent\", \"\"]],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_MENU_CONTENT,\n useExisting: MatMenuContent\n }])]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatMenuContent, [{\n type: Directive,\n args: [{\n selector: 'ng-template[matMenuContent]',\n providers: [{\n provide: MAT_MENU_CONTENT,\n useExisting: MatMenuContent\n }]\n }]\n }], () => [], null);\n})();\n\n/** Injection token to be used to override the default options for `mat-menu`. */\nconst MAT_MENU_DEFAULT_OPTIONS = new InjectionToken('mat-menu-default-options', {\n providedIn: 'root',\n factory: MAT_MENU_DEFAULT_OPTIONS_FACTORY\n});\n/**\n * @docs-private\n * @deprecated No longer used, will be removed.\n * @breaking-change 21.0.0\n */\nfunction MAT_MENU_DEFAULT_OPTIONS_FACTORY() {\n return {\n overlapTrigger: false,\n xPosition: 'after',\n yPosition: 'below',\n backdropClass: 'cdk-overlay-transparent-backdrop'\n };\n}\n/** Name of the enter animation `@keyframes`. */\nconst ENTER_ANIMATION = '_mat-menu-enter';\n/** Name of the exit animation `@keyframes`. */\nconst EXIT_ANIMATION = '_mat-menu-exit';\nclass MatMenu {\n _elementRef = inject(ElementRef);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _injector = inject(Injector);\n _keyManager;\n _xPosition;\n _yPosition;\n _firstItemFocusRef;\n _exitFallbackTimeout;\n /** Whether animations are currently disabled. */\n _animationsDisabled = _animationsDisabled();\n /** All items inside the menu. Includes items nested inside another menu. */\n _allItems;\n /** Only the direct descendant menu items. */\n _directDescendantItems = new QueryList();\n /** Classes to be applied to the menu panel. */\n _classList = {};\n /** Current state of the panel animation. */\n _panelAnimationState = 'void';\n /** Emits whenever an animation on the menu completes. */\n _animationDone = new Subject();\n /** Whether the menu is animating. */\n _isAnimating = false;\n /** Parent menu of the current menu panel. */\n parentMenu;\n /** Layout direction of the menu. */\n direction;\n /** Class or list of classes to be added to the overlay panel. */\n overlayPanelClass;\n /** Class to be added to the backdrop element. */\n backdropClass;\n /** aria-label for the menu panel. */\n ariaLabel;\n /** aria-labelledby for the menu panel. */\n ariaLabelledby;\n /** aria-describedby for the menu panel. */\n ariaDescribedby;\n /** Position of the menu in the X axis. */\n get xPosition() {\n return this._xPosition;\n }\n set xPosition(value) {\n if (value !== 'before' && value !== 'after' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionX();\n }\n this._xPosition = value;\n this.setPositionClasses();\n }\n /** Position of the menu in the Y axis. */\n get yPosition() {\n return this._yPosition;\n }\n set yPosition(value) {\n if (value !== 'above' && value !== 'below' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionY();\n }\n this._yPosition = value;\n this.setPositionClasses();\n }\n /** @docs-private */\n templateRef;\n /**\n * List of the items inside of a menu.\n * @deprecated\n * @breaking-change 8.0.0\n */\n items;\n /**\n * Menu content that will be rendered lazily.\n * @docs-private\n */\n lazyContent;\n /** Whether the menu should overlap its trigger. */\n overlapTrigger;\n /** Whether the menu has a backdrop. */\n hasBackdrop;\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @param classes list of class names\n */\n set panelClass(classes) {\n const previousPanelClass = this._previousPanelClass;\n const newClassList = {\n ...this._classList\n };\n if (previousPanelClass && previousPanelClass.length) {\n previousPanelClass.split(' ').forEach(className => {\n newClassList[className] = false;\n });\n }\n this._previousPanelClass = classes;\n if (classes && classes.length) {\n classes.split(' ').forEach(className => {\n newClassList[className] = true;\n });\n this._elementRef.nativeElement.className = '';\n }\n this._classList = newClassList;\n }\n _previousPanelClass;\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @deprecated Use `panelClass` instead.\n * @breaking-change 8.0.0\n */\n get classList() {\n return this.panelClass;\n }\n set classList(classes) {\n this.panelClass = classes;\n }\n /** Event emitted when the menu is closed. */\n closed = new EventEmitter();\n /**\n * Event emitted when the menu is closed.\n * @deprecated Switch to `closed` instead\n * @breaking-change 8.0.0\n */\n close = this.closed;\n panelId = inject(_IdGenerator).getId('mat-menu-panel-');\n constructor() {\n const defaultOptions = inject(MAT_MENU_DEFAULT_OPTIONS);\n this.overlayPanelClass = defaultOptions.overlayPanelClass || '';\n this._xPosition = defaultOptions.xPosition;\n this._yPosition = defaultOptions.yPosition;\n this.backdropClass = defaultOptions.backdropClass;\n this.overlapTrigger = defaultOptions.overlapTrigger;\n this.hasBackdrop = defaultOptions.hasBackdrop;\n }\n ngOnInit() {\n this.setPositionClasses();\n }\n ngAfterContentInit() {\n this._updateDirectDescendants();\n this._keyManager = new FocusKeyManager(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd();\n this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));\n // If a user manually (programmatically) focuses a menu item, we need to reflect that focus\n // change back to the key manager. Note that we don't need to unsubscribe here because _focused\n // is internal and we know that it gets completed on destroy.\n this._directDescendantItems.changes.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map(item => item._focused)))).subscribe(focusedItem => this._keyManager.updateActiveItem(focusedItem));\n this._directDescendantItems.changes.subscribe(itemsList => {\n // Move focus to another item, if the active item is removed from the list.\n // We need to debounce the callback, because multiple items might be removed\n // in quick succession.\n const manager = this._keyManager;\n if (this._panelAnimationState === 'enter' && manager.activeItem?._hasFocus()) {\n const items = itemsList.toArray();\n const index = Math.max(0, Math.min(items.length - 1, manager.activeItemIndex || 0));\n if (items[index] && !items[index].disabled) {\n manager.setActiveItem(index);\n } else {\n manager.setNextItemActive();\n }\n }\n });\n }\n ngOnDestroy() {\n this._keyManager?.destroy();\n this._directDescendantItems.destroy();\n this.closed.complete();\n this._firstItemFocusRef?.destroy();\n clearTimeout(this._exitFallbackTimeout);\n }\n /** Stream that emits whenever the hovered menu item changes. */\n _hovered() {\n // Coerce the `changes` property because Angular types it as `Observable<any>`\n const itemChanges = this._directDescendantItems.changes;\n return itemChanges.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map(item => item._hovered))));\n }\n /*\n * Registers a menu item with the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n addItem(_item) {}\n /**\n * Removes an item from the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n removeItem(_item) {}\n /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n switch (keyCode) {\n case ESCAPE:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this.closed.emit('keydown');\n }\n break;\n case LEFT_ARROW:\n if (this.parentMenu && this.direction === 'ltr') {\n this.closed.emit('keydown');\n }\n break;\n case RIGHT_ARROW:\n if (this.parentMenu && this.direction === 'rtl') {\n this.closed.emit('keydown');\n }\n break;\n default:\n if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {\n manager.setFocusOrigin('keyboard');\n }\n manager.onKeydown(event);\n return;\n }\n }\n /**\n * Focus the first item in the menu.\n * @param origin Action from which the focus originated. Used to set the correct styling.\n */\n focusFirstItem(origin = 'program') {\n // Wait for `afterNextRender` to ensure iOS VoiceOver screen reader focuses the first item (#24735).\n this._firstItemFocusRef?.destroy();\n this._firstItemFocusRef = afterNextRender(() => {\n const menuPanel = this._resolvePanel();\n // If an item in the menuPanel is already focused, avoid overriding the focus.\n if (!menuPanel || !menuPanel.contains(document.activeElement)) {\n const manager = this._keyManager;\n manager.setFocusOrigin(origin).setFirstItemActive();\n // If there's no active item at this point, it means that all the items are disabled.\n // Move focus to the menuPanel panel so keyboard events like Escape still work. Also this will\n // give _some_ feedback to screen readers.\n if (!manager.activeItem && menuPanel) {\n menuPanel.focus();\n }\n }\n }, {\n injector: this._injector\n });\n }\n /**\n * Resets the active item in the menu. This is used when the menu is opened, allowing\n * the user to start from the first option when pressing the down arrow.\n */\n resetActiveItem() {\n this._keyManager.setActiveItem(-1);\n }\n /**\n * @deprecated No longer used and will be removed.\n * @breaking-change 21.0.0\n */\n setElevation(_depth) {}\n /**\n * Adds classes to the menu panel based on its position. Can be used by\n * consumers to add specific styling based on the position.\n * @param posX Position of the menu along the x axis.\n * @param posY Position of the menu along the y axis.\n * @docs-private\n */\n setPositionClasses(posX = this.xPosition, posY = this.yPosition) {\n this._classList = {\n ...this._classList,\n ['mat-menu-before']: posX === 'before',\n ['mat-menu-after']: posX === 'after',\n ['mat-menu-above']: posY === 'above',\n ['mat-menu-below']: posY === 'below'\n };\n this._changeDetectorRef.markForCheck();\n }\n /** Callback that is invoked when the panel animation completes. */\n _onAnimationDone(state) {\n const isExit = state === EXIT_ANIMATION;\n if (isExit || state === ENTER_ANIMATION) {\n if (isExit) {\n clearTimeout(this._exitFallbackTimeout);\n this._exitFallbackTimeout = undefined;\n }\n this._animationDone.next(isExit ? 'void' : 'enter');\n this._isAnimating = false;\n }\n }\n _onAnimationStart(state) {\n if (state === ENTER_ANIMATION || state === EXIT_ANIMATION) {\n this._isAnimating = true;\n }\n }\n _setIsOpen(isOpen) {\n this._panelAnimationState = isOpen ? 'enter' : 'void';\n if (isOpen) {\n if (this._keyManager.activeItemIndex === 0) {\n // Scroll the content element to the top as soon as the animation starts. This is necessary,\n // because we move focus to the first item while it's still being animated, which can throw\n // the browser off when it determines the scroll position. Alternatively we can move focus\n // when the animation is done, however moving focus asynchronously will interrupt screen\n // readers which are in the process of reading out the menu already. We take the `element`\n // from the `event` since we can't use a `ViewChild` to access the pane.\n const menuPanel = this._resolvePanel();\n if (menuPanel) {\n menuPanel.scrollTop = 0;\n }\n }\n } else if (!this._animationsDisabled) {\n // Some apps do `* { animation: none !important; }` in tests which will prevent the\n // `animationend` event from firing. Since the exit animation is loading-bearing for\n // removing the content from the DOM, add a fallback timer.\n this._exitFallbackTimeout = setTimeout(() => this._onAnimationDone(EXIT_ANIMATION), 200);\n }\n // Animation events won't fire when animations are disabled so we simulate them.\n if (this._animationsDisabled) {\n setTimeout(() => {\n this._onAnimationDone(isOpen ? ENTER_ANIMATION : EXIT_ANIMATION);\n });\n }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Sets up a stream that will keep track of any newly-added menu items and will update the list\n * of direct descendants. We collect the descendants this way, because `_allItems` can include\n * items that are part of child menus, and using a custom way of registering items is unreliable\n * when it comes to maintaining the item order.\n */\n _updateDirectDescendants() {\n this._allItems.changes.pipe(startWith(this._allItems)).subscribe(items => {\n this._directDescendantItems.reset(items.filter(item => item._parentMenu === this));\n this._directDescendantItems.notifyOnChanges();\n });\n }\n /** Gets the menu panel DOM node. */\n _resolvePanel() {\n let menuPanel = null;\n if (this._directDescendantItems.length) {\n // Because the `mat-menuPanel` is at the DOM insertion point, not inside the overlay, we don't\n // have a nice way of getting a hold of the menuPanel panel. We can't use a `ViewChild` either\n // because the panel is inside an `ng-template`. We work around it by starting from one of\n // the items and walking up the DOM.\n menuPanel = this._directDescendantItems.first._getHostElement().closest('[role=\"menu\"]');\n }\n return menuPanel;\n }\n static ɵfac = function MatMenu_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatMenu)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatMenu,\n selectors: [[\"mat-menu\"]],\n contentQueries: function MatMenu_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MAT_MENU_CONTENT, 5);\n i0.ɵɵcontentQuery(dirIndex, MatMenuItem, 5);\n i0.ɵɵcontentQuery(dirIndex, MatMenuItem, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.lazyContent = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._allItems = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.items = _t);\n }\n },\n viewQuery: function MatMenu_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(TemplateRef, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templateRef = _t.first);\n }\n },\n hostVars: 3,\n hostBindings: function MatMenu_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-label\", null)(\"aria-labelledby\", null)(\"aria-describedby\", null);\n }\n },\n inputs: {\n backdropClass: \"backdropClass\",\n ariaLabel: [0, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [0, \"aria-labelledby\", \"ariaLabelledby\"],\n ariaDescribedby: [0, \"aria-describedby\", \"ariaDescribedby\"],\n xPosition: \"xPosition\",\n yPosition: \"yPosition\",\n overlapTrigger: [2, \"overlapTrigger\", \"overlapTrigger\", booleanAttribute],\n hasBackdrop: [2, \"hasBackdrop\", \"hasBackdrop\", value => value == null ? null : booleanAttribute(value)],\n panelClass: [0, \"class\", \"panelClass\"],\n classList: \"classList\"\n },\n outputs: {\n closed: \"closed\",\n close: \"close\"\n },\n exportAs: [\"matMenu\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_MENU_PANEL,\n useExisting: MatMenu\n }])],\n ngContentSelectors: _c3,\n decls: 1,\n vars: 0,\n consts: [[\"tabindex\", \"-1\", \"role\", \"menu\", 1, \"mat-mdc-menu-panel\", 3, \"click\", \"animationstart\", \"animationend\", \"animationcancel\", \"id\"], [1, \"mat-mdc-menu-content\"]],\n template: function MatMenu_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵdomTemplate(0, MatMenu_ng_template_0_Template, 3, 12, \"ng-template\");\n }\n },\n styles: [\"mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-sys-label-large-weight))}@keyframes _mat-menu-enter{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:none}}@keyframes _mat-menu-exit{from{opacity:1}to{opacity:0}}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;box-sizing:border-box;outline:0;animation:_mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1);border-radius:var(--mat-menu-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-sys-surface-container));box-shadow:var(--mat-menu-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));will-change:transform,opacity}.mat-mdc-menu-panel.mat-menu-panel-exit-animation{animation:_mat-menu-exit 100ms 25ms linear forwards}.mat-mdc-menu-panel.mat-menu-panel-animations-disabled{animation:none}.mat-mdc-menu-panel.mat-menu-panel-animating{pointer-events:none}.mat-mdc-menu-panel.mat-menu-panel-animating:has(.mat-mdc-menu-content:empty){display:none}@media(forced-colors: active){.mat-mdc-menu-panel{outline:solid 1px}}.mat-mdc-menu-panel .mat-divider{color:var(--mat-menu-divider-color, var(--mat-sys-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing, 8px);margin-top:var(--mat-menu-divider-top-spacing, 8px)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px;padding-left:var(--mat-menu-item-leading-spacing, 12px);padding-right:var(--mat-menu-item-trailing-spacing, 12px);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-menu-item::-moz-focus-inner{border:0}[dir=rtl] .mat-mdc-menu-item{padding-left:var(--mat-menu-item-trailing-spacing, 12px);padding-right:var(--mat-menu-item-leading-spacing, 12px)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-trailing-spacing, 12px)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-trailing-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-leading-spacing, 12px)}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:\\\"\\\";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing, 12px);height:var(--mat-menu-item-icon-size, 24px);width:var(--mat-menu-item-icon-size, 24px)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing, 12px)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}@media(forced-colors: active){.mat-mdc-menu-item{margin-top:1px}}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size, 24px);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing, 12px)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing, 12px);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1);transform-origin:center}@media(forced-colors: active){.mat-mdc-menu-submenu-icon{fill:CanvasText}}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatMenu, [{\n type: Component,\n args: [{\n selector: 'mat-menu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matMenu',\n host: {\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null'\n },\n providers: [{\n provide: MAT_MENU_PANEL,\n useExisting: MatMenu\n }],\n template: \"<ng-template>\\n <div\\n class=\\\"mat-mdc-menu-panel\\\"\\n [id]=\\\"panelId\\\"\\n [class]=\\\"_classList\\\"\\n [class.mat-menu-panel-animations-disabled]=\\\"_animationsDisabled\\\"\\n [class.mat-menu-panel-exit-animation]=\\\"_panelAnimationState === 'void'\\\"\\n [class.mat-menu-panel-animating]=\\\"_isAnimating\\\"\\n (click)=\\\"closed.emit('click')\\\"\\n tabindex=\\\"-1\\\"\\n role=\\\"menu\\\"\\n (animationstart)=\\\"_onAnimationStart($event.animationName)\\\"\\n (animationend)=\\\"_onAnimationDone($event.animationName)\\\"\\n (animationcancel)=\\\"_onAnimationDone($event.animationName)\\\"\\n [attr.aria-label]=\\\"ariaLabel || null\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledby || null\\\"\\n [attr.aria-describedby]=\\\"ariaDescribedby || null\\\">\\n <div class=\\\"mat-mdc-menu-content\\\">\\n <ng-content></ng-content>\\n </div>\\n </div>\\n</ng-template>\\n\",\n styles: [\"mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-sys-label-large-weight))}@keyframes _mat-menu-enter{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:none}}@keyframes _mat-menu-exit{from{opacity:1}to{opacity:0}}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;box-sizing:border-box;outline:0;animation:_mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1);border-radius:var(--mat-menu-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-sys-surface-container));box-shadow:var(--mat-menu-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));will-change:transform,opacity}.mat-mdc-menu-panel.mat-menu-panel-exit-animation{animation:_mat-menu-exit 100ms 25ms linear forwards}.mat-mdc-menu-panel.mat-menu-panel-animations-disabled{animation:none}.mat-mdc-menu-panel.mat-menu-panel-animating{pointer-events:none}.mat-mdc-menu-panel.mat-menu-panel-animating:has(.mat-mdc-menu-content:empty){display:none}@media(forced-colors: active){.mat-mdc-menu-panel{outline:solid 1px}}.mat-mdc-menu-panel .mat-divider{color:var(--mat-menu-divider-color, var(--mat-sys-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing, 8px);margin-top:var(--mat-menu-divider-top-spacing, 8px)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px;padding-left:var(--mat-menu-item-leading-spacing, 12px);padding-right:var(--mat-menu-item-trailing-spacing, 12px);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-menu-item::-moz-focus-inner{border:0}[dir=rtl] .mat-mdc-menu-item{padding-left:var(--mat-menu-item-trailing-spacing, 12px);padding-right:var(--mat-menu-item-leading-spacing, 12px)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-trailing-spacing, 12px)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-trailing-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-leading-spacing, 12px)}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:\\\"\\\";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing, 12px);height:var(--mat-menu-item-icon-size, 24px);width:var(--mat-menu-item-icon-size, 24px)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing, 12px)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}@media(forced-colors: active){.mat-mdc-menu-item{margin-top:1px}}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size, 24px);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing, 12px)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing, 12px);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1);transform-origin:center}@media(forced-colors: active){.mat-mdc-menu-submenu-icon{fill:CanvasText}}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\\n\"]\n }]\n }], () => [], {\n _allItems: [{\n type: ContentChildren,\n args: [MatMenuItem, {\n descendants: true\n }]\n }],\n backdropClass: [{\n type: Input\n }],\n ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }],\n ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }],\n ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }],\n xPosition: [{\n type: Input\n }],\n yPosition: [{\n type: Input\n }],\n templateRef: [{\n type: ViewChild,\n args: [TemplateRef]\n }],\n items: [{\n type: ContentChildren,\n args: [MatMenuItem, {\n descendants: false\n }]\n }],\n lazyContent: [{\n type: ContentChild,\n args: [MAT_MENU_CONTENT]\n }],\n overlapTrigger: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n hasBackdrop: [{\n type: Input,\n args: [{\n transform: value => value == null ? null : booleanAttribute(value)\n }]\n }],\n panelClass: [{\n type: Input,\n args: ['class']\n }],\n classList: [{\n type: Input\n }],\n closed: [{\n type: Output\n }],\n close: [{\n type: Output\n }]\n });\n})();\n\n/** Injection token that determines the scroll handling while the menu is open. */\nconst MAT_MENU_SCROLL_STRATEGY = new InjectionToken('mat-menu-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector);\n }\n});\n/**\n * @docs-private\n * @deprecated No longer used, will be removed.\n * @breaking-change 21.0.0\n */\nfunction MAT_MENU_SCROLL_STRATEGY_FACTORY(_overlay) {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector);\n}\n/**\n * @docs-private\n * @deprecated No longer used, will be removed.\n * @breaking-change 21.0.0\n */\nconst MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_MENU_SCROLL_STRATEGY,\n deps: [],\n useFactory: MAT_MENU_SCROLL_STRATEGY_FACTORY\n};\n/**\n * Default top padding of the menu panel.\n * @deprecated No longer being used. Will be removed.\n * @breaking-change 15.0.0\n */\nconst MENU_PANEL_TOP_PADDING = 8;\n/** Mapping between menu panels and the last trigger that opened them. */\nconst PANELS_TO_TRIGGERS = new WeakMap();\n/** Directive applied to an element that should trigger a `mat-menu`. */\nclass MatMenuTriggerBase {\n _canHaveBackdrop;\n _element = inject(ElementRef);\n _viewContainerRef = inject(ViewContainerRef);\n _menuItemInstance = inject(MatMenuItem, {\n optional: true,\n self: true\n });\n _dir = inject(Directionality, {\n optional: true\n });\n _focusMonitor = inject(FocusMonitor);\n _ngZone = inject(NgZone);\n _injector = inject(Injector);\n _scrollStrategy = inject(MAT_MENU_SCROLL_STRATEGY);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _animationsDisabled = _animationsDisabled();\n _portal;\n _overlayRef = null;\n _menuOpen = false;\n _closingActionsSubscription = Subscription.EMPTY;\n _menuCloseSubscription = Subscription.EMPTY;\n _pendingRemoval;\n /**\n * We're specifically looking for a `MatMenu` here since the generic `MatMenuPanel`\n * interface lacks some functionality around nested menus and animations.\n */\n _parentMaterialMenu;\n /**\n * Cached value of the padding of the parent menu panel.\n * Used to offset sub-menus to compensate for the padding.\n */\n _parentInnerPadding;\n // Tracking input type is necessary so it's possible to only auto-focus\n // the first item of the list when the menu is opened via the keyboard\n _openedBy = undefined;\n /** Menu currently assigned to the trigger. */\n get _menu() {\n return this._menuInternal;\n }\n set _menu(menu) {\n if (menu === this._menuInternal) {\n return;\n }\n this._menuInternal = menu;\n this._menuCloseSubscription.unsubscribe();\n if (menu) {\n if (menu === this._parentMaterialMenu && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuRecursiveError();\n }\n this._menuCloseSubscription = menu.close.subscribe(reason => {\n this._destroyMenu(reason);\n // If a click closed the menu, we should close the entire chain of nested menus.\n if ((reason === 'click' || reason === 'tab') && this._parentMaterialMenu) {\n this._parentMaterialMenu.closed.emit(reason);\n }\n });\n }\n this._menuItemInstance?._setTriggersSubmenu(this._triggersSubmenu());\n }\n _menuInternal;\n constructor(_canHaveBackdrop) {\n this._canHaveBackdrop = _canHaveBackdrop;\n const parentMenu = inject(MAT_MENU_PANEL, {\n optional: true\n });\n this._parentMaterialMenu = parentMenu instanceof MatMenu ? parentMenu : undefined;\n }\n ngOnDestroy() {\n if (this._menu && this._ownsMenu(this._menu)) {\n PANELS_TO_TRIGGERS.delete(this._menu);\n }\n this._pendingRemoval?.unsubscribe();\n this._menuCloseSubscription.unsubscribe();\n this._closingActionsSubscription.unsubscribe();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n /** Whether the menu is open. */\n get menuOpen() {\n return this._menuOpen;\n }\n /** The text direction of the containing app. */\n get dir() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Whether the menu triggers a sub-menu or a top-level one. */\n _triggersSubmenu() {\n return !!(this._menuItemInstance && this._parentMaterialMenu && this._menu);\n }\n _closeMenu() {\n this._menu?.close.emit();\n }\n /** Internal method to open menu providing option to auto focus on first item. */\n _openMenu(autoFocus) {\n const menu = this._menu;\n if (this._menuOpen || !menu) {\n return;\n }\n this._pendingRemoval?.unsubscribe();\n const previousTrigger = PANELS_TO_TRIGGERS.get(menu);\n PANELS_TO_TRIGGERS.set(menu, this);\n // If the same menu is currently attached to another trigger,\n // we need to close it so it doesn't end up in a broken state.\n if (previousTrigger && previousTrigger !== this) {\n previousTrigger._closeMenu();\n }\n const overlayRef = this._createOverlay(menu);\n const overlayConfig = overlayRef.getConfig();\n const positionStrategy = overlayConfig.positionStrategy;\n this._setPosition(menu, positionStrategy);\n if (this._canHaveBackdrop) {\n overlayConfig.hasBackdrop = menu.hasBackdrop == null ? !this._triggersSubmenu() : menu.hasBackdrop;\n } else {\n overlayConfig.hasBackdrop = false;\n }\n // We need the `hasAttached` check for the case where the user kicked off a removal animation,\n // but re-entered the menu. Re-attaching the same portal will trigger an error otherwise.\n if (!overlayRef.hasAttached()) {\n overlayRef.attach(this._getPortal(menu));\n menu.lazyContent?.attach(this.menuData);\n }\n this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this._closeMenu());\n menu.parentMenu = this._triggersSubmenu() ? this._parentMaterialMenu : undefined;\n menu.direction = this.dir;\n if (autoFocus) {\n menu.focusFirstItem(this._openedBy || 'program');\n }\n this._setIsMenuOpen(true);\n if (menu instanceof MatMenu) {\n menu._setIsOpen(true);\n menu._directDescendantItems.changes.pipe(takeUntil(menu.close)).subscribe(() => {\n // Re-adjust the position without locking when the amount of items\n // changes so that the overlay is allowed to pick a new optimal position.\n positionStrategy.withLockedPosition(false).reapplyLastPosition();\n positionStrategy.withLockedPosition(true);\n });\n }\n }\n /**\n * Focuses the menu trigger.\n * @param origin Source of the menu trigger's focus.\n */\n focus(origin, options) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._element, origin, options);\n } else {\n this._element.nativeElement.focus(options);\n }\n }\n /** Closes the menu and does the necessary cleanup. */\n _destroyMenu(reason) {\n const overlayRef = this._overlayRef;\n const menu = this._menu;\n if (!overlayRef || !this.menuOpen) {\n return;\n }\n this._closingActionsSubscription.unsubscribe();\n this._pendingRemoval?.unsubscribe();\n // Note that we don't wait for the animation to finish if another trigger took\n // over the menu, because the panel will end up empty which looks glitchy.\n if (menu instanceof MatMenu && this._ownsMenu(menu)) {\n this._pendingRemoval = menu._animationDone.pipe(take(1)).subscribe(() => {\n overlayRef.detach();\n menu.lazyContent?.detach();\n });\n menu._setIsOpen(false);\n } else {\n overlayRef.detach();\n menu?.lazyContent?.detach();\n }\n if (menu && this._ownsMenu(menu)) {\n PANELS_TO_TRIGGERS.delete(menu);\n }\n // Always restore focus if the user is navigating using the keyboard or the menu was opened\n // programmatically. We don't restore for non-root triggers, because it can prevent focus\n // from making it back to the root trigger when closing a long chain of menus by clicking\n // on the backdrop.\n if (this.restoreFocus && (reason === 'keydown' || !this._openedBy || !this._triggersSubmenu())) {\n this.focus(this._openedBy);\n }\n this._openedBy = undefined;\n this._setIsMenuOpen(false);\n }\n // set state rather than toggle to support triggers sharing a menu\n _setIsMenuOpen(isOpen) {\n if (isOpen !== this._menuOpen) {\n this._menuOpen = isOpen;\n this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();\n if (this._triggersSubmenu()) {\n this._menuItemInstance._setHighlighted(isOpen);\n }\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * This method creates the overlay from the provided menu's template and saves its\n * OverlayRef so that it can be attached to the DOM when openMenu is called.\n */\n _createOverlay(menu) {\n if (!this._overlayRef) {\n const config = this._getOverlayConfig(menu);\n this._subscribeToPositions(menu, config.positionStrategy);\n this._overlayRef = createOverlayRef(this._injector, config);\n this._overlayRef.keydownEvents().subscribe(event => {\n if (this._menu instanceof MatMenu) {\n this._menu._handleKeydown(event);\n }\n });\n }\n return this._overlayRef;\n }\n /**\n * This method builds the configuration object needed to create the overlay, the OverlayState.\n * @returns OverlayConfig\n */\n _getOverlayConfig(menu) {\n return new OverlayConfig({\n positionStrategy: createFlexibleConnectedPositionStrategy(this._injector, this._getOverlayOrigin()).withLockedPosition().withGrowAfterOpen().withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'),\n backdropClass: menu.backdropClass || 'cdk-overlay-transparent-backdrop',\n panelClass: menu.overlayPanelClass,\n scrollStrategy: this._scrollStrategy(),\n direction: this._dir || 'ltr',\n disableAnimations: this._animationsDisabled\n });\n }\n /**\n * Listens to changes in the position of the overlay and sets the correct classes\n * on the menu based on the new position. This ensures the animation origin is always\n * correct, even if a fallback position is used for the overlay.\n */\n _subscribeToPositions(menu, position) {\n if (menu.setPositionClasses) {\n position.positionChanges.subscribe(change => {\n this._ngZone.run(() => {\n const posX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n const posY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n menu.setPositionClasses(posX, posY);\n });\n });\n }\n }\n /**\n * Sets the appropriate positions on a position strategy\n * so the overlay connects with the trigger correctly.\n * @param positionStrategy Strategy whose position to update.\n */\n _setPosition(menu, positionStrategy) {\n let [originX, originFallbackX] = menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\n let [overlayY, overlayFallbackY] = menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n let [originY, originFallbackY] = [overlayY, overlayFallbackY];\n let [overlayX, overlayFallbackX] = [originX, originFallbackX];\n let offsetY = 0;\n if (this._triggersSubmenu()) {\n // When the menu is a sub-menu, it should always align itself\n // to the edges of the trigger, instead of overlapping it.\n overlayFallbackX = originX = menu.xPosition === 'before' ? 'start' : 'end';\n originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\n if (this._parentMaterialMenu) {\n if (this._parentInnerPadding == null) {\n const firstItem = this._parentMaterialMenu.items.first;\n this._parentInnerPadding = firstItem ? firstItem._getHostElement().offsetTop : 0;\n }\n offsetY = overlayY === 'bottom' ? this._parentInnerPadding : -this._parentInnerPadding;\n }\n } else if (!menu.overlapTrigger) {\n originY = overlayY === 'top' ? 'bottom' : 'top';\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n }\n positionStrategy.withPositions([{\n originX,\n originY,\n overlayX,\n overlayY,\n offsetY\n }, {\n originX: originFallbackX,\n originY,\n overlayX: overlayFallbackX,\n overlayY,\n offsetY\n }, {\n originX,\n originY: originFallbackY,\n overlayX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n }, {\n originX: originFallbackX,\n originY: originFallbackY,\n overlayX: overlayFallbackX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n }]);\n }\n /** Returns a stream that emits whenever an action that should close the menu occurs. */\n _menuClosingActions() {\n const outsideClicks = this._getOutsideClickStream(this._overlayRef);\n const detachments = this._overlayRef.detachments();\n const parentClose = this._parentMaterialMenu ? this._parentMaterialMenu.closed : of();\n const hover = this._parentMaterialMenu ? this._parentMaterialMenu._hovered().pipe(filter(active => this._menuOpen && active !== this._menuItemInstance)) : of();\n return merge(outsideClicks, parentClose, hover, detachments);\n }\n /** Gets the portal that should be attached to the overlay. */\n _getPortal(menu) {\n // Note that we can avoid this check by keeping the portal on the menu panel.\n // While it would be cleaner, we'd have to introduce another required method on\n // `MatMenuPanel`, making it harder to consume.\n if (!this._portal || this._portal.templateRef !== menu.templateRef) {\n this._portal = new TemplatePortal(menu.templateRef, this._viewContainerRef);\n }\n return this._portal;\n }\n /**\n * Determines whether the trigger owns a specific menu panel, at the current point in time.\n * This allows us to distinguish the case where the same panel is passed into multiple triggers\n * and multiple are open at a time.\n */\n _ownsMenu(menu) {\n return PANELS_TO_TRIGGERS.get(menu) === this;\n }\n static ɵfac = function MatMenuTriggerBase_Factory(__ngFactoryType__) {\n i0.ɵɵinvalidFactory();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatMenuTriggerBase\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatMenuTriggerBase, [{\n type: Directive\n }], () => [{\n type: undefined\n }], null);\n})();\n\n/** Directive applied to an element that should trigger a `mat-menu`. */\nclass MatMenuTrigger extends MatMenuTriggerBase {\n _cleanupTouchstart;\n _hoverSubscription = Subscription.EMPTY;\n /**\n * @deprecated\n * @breaking-change 8.0.0\n */\n get _deprecatedMatMenuTriggerFor() {\n return this.menu;\n }\n set _deprecatedMatMenuTriggerFor(v) {\n this.menu = v;\n }\n /** References the menu instance that the trigger is associated with. */\n get menu() {\n return this._menu;\n }\n set menu(menu) {\n this._menu = menu;\n }\n /** Data to be passed along to any lazily-rendered content. */\n menuData;\n /**\n * Whether focus should be restored when the menu is closed.\n * Note that disabling this option can have accessibility implications\n * and it's up to you to manage focus, if you decide to turn it off.\n */\n restoreFocus = true;\n /** Event emitted when the associated menu is opened. */\n menuOpened = new EventEmitter();\n /**\n * Event emitted when the associated menu is opened.\n * @deprecated Switch to `menuOpened` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n onMenuOpen = this.menuOpened;\n /** Event emitted when the associated menu is closed. */\n menuClosed = new EventEmitter();\n /**\n * Event emitted when the associated menu is closed.\n * @deprecated Switch to `menuClosed` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n onMenuClose = this.menuClosed;\n constructor() {\n super(true);\n const renderer = inject(Renderer2);\n this._cleanupTouchstart = renderer.listen(this._element.nativeElement, 'touchstart', event => {\n if (!isFakeTouchstartFromScreenReader(event)) {\n this._openedBy = 'touch';\n }\n }, {\n passive: true\n });\n }\n /** Whether the menu triggers a sub-menu or a top-level one. */\n triggersSubmenu() {\n return super._triggersSubmenu();\n }\n /** Toggles the menu between the open and closed states. */\n toggleMenu() {\n return this.menuOpen ? this.closeMenu() : this.openMenu();\n }\n /** Opens the menu. */\n openMenu() {\n this._openMenu(true);\n }\n /** Closes the menu. */\n closeMenu() {\n this._closeMenu();\n }\n /**\n * Updates the position of the menu to ensure that it fits all options within the viewport.\n */\n updatePosition() {\n this._overlayRef?.updatePosition();\n }\n ngAfterContentInit() {\n this._handleHover();\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._cleanupTouchstart();\n this._hoverSubscription.unsubscribe();\n }\n _getOverlayOrigin() {\n return this._element;\n }\n _getOutsideClickStream(overlayRef) {\n return overlayRef.backdropClick();\n }\n /** Handles mouse presses on the trigger. */\n _handleMousedown(event) {\n if (!isFakeMousedownFromScreenReader(event)) {\n // Since right or middle button clicks won't trigger the `click` event,\n // we shouldn't consider the menu as opened by mouse in those cases.\n this._openedBy = event.button === 0 ? 'mouse' : undefined;\n // Since clicking on the trigger won't close the menu if it opens a sub-menu,\n // we should prevent focus from moving onto it via click to avoid the\n // highlight from lingering on the menu item.\n if (this.triggersSubmenu()) {\n event.preventDefault();\n }\n }\n }\n /** Handles key presses on the trigger. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n // Pressing enter on the trigger will trigger the click handler later.\n if (keyCode === ENTER || keyCode === SPACE) {\n this._openedBy = 'keyboard';\n }\n if (this.triggersSubmenu() && (keyCode === RIGHT_ARROW && this.dir === 'ltr' || keyCode === LEFT_ARROW && this.dir === 'rtl')) {\n this._openedBy = 'keyboard';\n this.openMenu();\n }\n }\n /** Handles click events on the trigger. */\n _handleClick(event) {\n if (this.triggersSubmenu()) {\n // Stop event propagation to avoid closing the parent menu.\n event.stopPropagation();\n this.openMenu();\n } else {\n this.toggleMenu();\n }\n }\n /** Handles the cases where the user hovers over the trigger. */\n _handleHover() {\n // Subscribe to changes in the hovered item in order to toggle the panel.\n if (this.triggersSubmenu() && this._parentMaterialMenu) {\n this._hoverSubscription = this._parentMaterialMenu._hovered().subscribe(active => {\n if (active === this._menuItemInstance && !active.disabled) {\n this._openedBy = 'mouse';\n // Open the menu, but do NOT auto-focus on first item when just hovering.\n // When VoiceOver is enabled, this is particularly confusing as the focus will\n // cause another hover event, and continue opening sub-menus without interaction.\n this._openMenu(false);\n }\n });\n }\n }\n static ɵfac = function MatMenuTrigger_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatMenuTrigger)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatMenuTrigger,\n selectors: [[\"\", \"mat-menu-trigger-for\", \"\"], [\"\", \"matMenuTriggerFor\", \"\"]],\n hostAttrs: [1, \"mat-mdc-menu-trigger\"],\n hostVars: 3,\n hostBindings: function MatMenuTrigger_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function MatMenuTrigger_click_HostBindingHandler($event) {\n return ctx._handleClick($event);\n })(\"mousedown\", function MatMenuTrigger_mousedown_HostBindingHandler($event) {\n return ctx._handleMousedown($event);\n })(\"keydown\", function MatMenuTrigger_keydown_HostBindingHandler($event) {\n return ctx._handleKeydown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-haspopup\", ctx.menu ? \"menu\" : null)(\"aria-expanded\", ctx.menuOpen)(\"aria-controls\", ctx.menuOpen ? ctx.menu == null ? null : ctx.menu.panelId : null);\n }\n },\n inputs: {\n _deprecatedMatMenuTriggerFor: [0, \"mat-menu-trigger-for\", \"_deprecatedMatMenuTriggerFor\"],\n menu: [0, \"matMenuTriggerFor\", \"menu\"],\n menuData: [0, \"matMenuTriggerData\", \"menuData\"],\n restoreFocus: [0, \"matMenuTriggerRestoreFocus\", \"restoreFocus\"]\n },\n outputs: {\n menuOpened: \"menuOpened\",\n onMenuOpen: \"onMenuOpen\",\n menuClosed: \"menuClosed\",\n onMenuClose: \"onMenuClose\"\n },\n exportAs: [\"matMenuTrigger\"],\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatMenuTrigger, [{\n type: Directive,\n args: [{\n selector: '[mat-menu-trigger-for], [matMenuTriggerFor]',\n host: {\n 'class': 'mat-mdc-menu-trigger',\n '[attr.aria-haspopup]': 'menu ? \"menu\" : null',\n '[attr.aria-expanded]': 'menuOpen',\n '[attr.aria-controls]': 'menuOpen ? menu?.panelId : null',\n '(click)': '_handleClick($event)',\n '(mousedown)': '_handleMousedown($event)',\n '(keydown)': '_handleKeydown($event)'\n },\n exportAs: 'matMenuTrigger'\n }]\n }], () => [], {\n _deprecatedMatMenuTriggerFor: [{\n type: Input,\n args: ['mat-menu-trigger-for']\n }],\n menu: [{\n type: Input,\n args: ['matMenuTriggerFor']\n }],\n menuData: [{\n type: Input,\n args: ['matMenuTriggerData']\n }],\n restoreFocus: [{\n type: Input,\n args: ['matMenuTriggerRestoreFocus']\n }],\n menuOpened: [{\n type: Output\n }],\n onMenuOpen: [{\n type: Output\n }],\n menuClosed: [{\n type: Output\n }],\n onMenuClose: [{\n type: Output\n }]\n });\n})();\n\n/**\n * Trigger that opens a menu whenever the user right-clicks within its host element.\n */\nclass MatContextMenuTrigger extends MatMenuTriggerBase {\n _point = {\n x: 0,\n y: 0,\n initialX: 0,\n initialY: 0,\n initialScrollX: 0,\n initialScrollY: 0\n };\n _triggerPressedControl = false;\n _rootNode;\n _document = inject(DOCUMENT);\n _viewportRuler = inject(ViewportRuler);\n _scrollDispatcher = inject(ScrollDispatcher);\n _scrollSubscription;\n /** References the menu instance that the trigger is associated with. */\n get menu() {\n return this._menu;\n }\n set menu(menu) {\n this._menu = menu;\n }\n /** Data to be passed along to any lazily-rendered content. */\n menuData;\n /**\n * Whether focus should be restored when the menu is closed.\n * Note that disabling this option can have accessibility implications\n * and it's up to you to manage focus, if you decide to turn it off.\n */\n restoreFocus = true;\n /** Whether the context menu is disabled. */\n disabled = false;\n /** Event emitted when the associated menu is opened. */\n menuOpened = new EventEmitter();\n /** Event emitted when the associated menu is closed. */\n menuClosed = new EventEmitter();\n constructor() {\n super(false);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._scrollSubscription?.unsubscribe();\n }\n /** Handler for `contextmenu` events. */\n _handleContextMenuEvent(event) {\n if (!this.disabled) {\n event.preventDefault();\n // If the menu is already open, only update its position.\n if (this.menuOpen) {\n this._initializePoint(event.clientX, event.clientY);\n this._updatePosition();\n } else {\n this._openContextMenu(event);\n }\n }\n }\n _destroyMenu(reason) {\n super._destroyMenu(reason);\n this._scrollSubscription?.unsubscribe();\n }\n _getOverlayOrigin() {\n return this._point;\n }\n _getOutsideClickStream(overlayRef) {\n return overlayRef.outsidePointerEvents().pipe(skipWhile((event, index) => {\n if (event.type === 'contextmenu') {\n // Do not close when attempting to open a context menu within the trigger.\n return this._isWithinMenuOrTrigger(_getEventTarget(event));\n } else if (event.type === 'auxclick') {\n // Skip the first `auxclick` since it happens at\n // the same time as the event that opens the menu.\n if (index === 0) {\n return true;\n }\n // Do not close on `auxclick` within the menu since we want to reposition the menu\n // instead. Note that we have to resolve the clicked element using its position,\n // rather than `event.target`, because the `target` is set to the `body`.\n this._rootNode ??= _getShadowRoot(this._element.nativeElement) || this._document;\n return this._isWithinMenuOrTrigger(this._rootNode.elementFromPoint(event.clientX, event.clientY));\n }\n // Using a mouse, the `contextmenu` event can fire either when pressing the right button\n // or left button + control. Most browsers won't dispatch a `click` event right after\n // a `contextmenu` event triggered by left button + control, but Safari will (see #27832).\n // This closes the menu immediately. To work around it, we check that both the triggering\n // event and the current outside click event both had the control key pressed, and that\n // that this is the first outside click event.\n return this._triggerPressedControl && index === 0 && event.ctrlKey;\n }));\n }\n /** Checks whether an element is within the trigger or the opened overlay. */\n _isWithinMenuOrTrigger(target) {\n if (!target) {\n return false;\n }\n const element = this._element.nativeElement;\n if (target === element || element.contains(target)) {\n return true;\n }\n const overlay = this._overlayRef?.hostElement;\n return overlay === target || !!overlay?.contains(target);\n }\n /** Opens the context menu. */\n _openContextMenu(event) {\n // A context menu can be triggered via a mouse right click or a keyboard shortcut.\n if (event.button === 2) {\n this._openedBy = 'mouse';\n } else {\n this._openedBy = event.button === 0 ? 'keyboard' : undefined;\n }\n this._initializePoint(event.clientX, event.clientY);\n this._triggerPressedControl = event.ctrlKey;\n super._openMenu(true);\n this._scrollSubscription?.unsubscribe();\n this._scrollSubscription = this._scrollDispatcher.scrolled(0).subscribe(() => {\n // When passing a point to the connected position strategy, the position\n // won't update as the user is scrolling so we have to do it manually.\n const position = this._viewportRuler.getViewportScrollPosition();\n const point = this._point;\n point.y = point.initialY + (point.initialScrollY - position.top);\n point.x = point.initialX + (point.initialScrollX - position.left);\n this._updatePosition();\n });\n }\n /** Initializes the point representing the origin relative to which the menu will be rendered. */\n _initializePoint(x, y) {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n const point = this._point;\n point.x = point.initialX = x;\n point.y = point.initialY = y;\n point.initialScrollX = scrollPosition.left;\n point.initialScrollY = scrollPosition.top;\n }\n /** Refreshes the position of the overlay. */\n _updatePosition() {\n const overlayRef = this._overlayRef;\n if (overlayRef) {\n const positionStrategy = overlayRef.getConfig().positionStrategy;\n positionStrategy.setOrigin(this._point);\n overlayRef.updatePosition();\n }\n }\n static ɵfac = function MatContextMenuTrigger_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatContextMenuTrigger)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatContextMenuTrigger,\n selectors: [[\"\", \"matContextMenuTriggerFor\", \"\"]],\n hostAttrs: [1, \"mat-context-menu-trigger\"],\n hostVars: 3,\n hostBindings: function MatContextMenuTrigger_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"contextmenu\", function MatContextMenuTrigger_contextmenu_HostBindingHandler($event) {\n return ctx._handleContextMenuEvent($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-controls\", ctx.menuOpen ? ctx.menu == null ? null : ctx.menu.panelId : null);\n i0.ɵɵclassProp(\"mat-context-menu-trigger-disabled\", ctx.disabled);\n }\n },\n inputs: {\n menu: [0, \"matContextMenuTriggerFor\", \"menu\"],\n menuData: [0, \"matContextMenuTriggerData\", \"menuData\"],\n restoreFocus: [0, \"matContextMenuTriggerRestoreFocus\", \"restoreFocus\"],\n disabled: [2, \"matContextMenuTriggerDisabled\", \"disabled\", booleanAttribute]\n },\n outputs: {\n menuOpened: \"menuOpened\",\n menuClosed: \"menuClosed\"\n },\n exportAs: [\"matContextMenuTrigger\"],\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatContextMenuTrigger, [{\n type: Directive,\n args: [{\n selector: '[matContextMenuTriggerFor]',\n host: {\n 'class': 'mat-context-menu-trigger',\n '[class.mat-context-menu-trigger-disabled]': 'disabled',\n '[attr.aria-controls]': 'menuOpen ? menu?.panelId : null',\n '(contextmenu)': '_handleContextMenuEvent($event)'\n },\n exportAs: 'matContextMenuTrigger'\n }]\n }], () => [], {\n menu: [{\n type: Input,\n args: [{\n alias: 'matContextMenuTriggerFor',\n required: true\n }]\n }],\n menuData: [{\n type: Input,\n args: ['matContextMenuTriggerData']\n }],\n restoreFocus: [{\n type: Input,\n args: ['matContextMenuTriggerRestoreFocus']\n }],\n disabled: [{\n type: Input,\n args: [{\n alias: 'matContextMenuTriggerDisabled',\n transform: booleanAttribute\n }]\n }],\n menuOpened: [{\n type: Output\n }],\n menuClosed: [{\n type: Output\n }]\n });\n})();\nclass MatMenuModule {\n static ɵfac = function MatMenuModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatMenuModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatMenuModule,\n imports: [MatRippleModule, MatCommonModule, OverlayModule, MatMenu, MatMenuItem, MatMenuContent, MatMenuTrigger, MatContextMenuTrigger],\n exports: [CdkScrollableModule, MatMenu, MatCommonModule, MatMenuItem, MatMenuContent, MatMenuTrigger, MatContextMenuTrigger]\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER],\n imports: [MatRippleModule, MatCommonModule, OverlayModule, CdkScrollableModule, MatCommonModule]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatMenuModule, [{\n type: NgModule,\n args: [{\n imports: [MatRippleModule, MatCommonModule, OverlayModule, MatMenu, MatMenuItem, MatMenuContent, MatMenuTrigger, MatContextMenuTrigger],\n exports: [CdkScrollableModule, MatMenu, MatCommonModule, MatMenuItem, MatMenuContent, MatMenuTrigger, MatContextMenuTrigger],\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER]\n }]\n }], null, null);\n})();\n\n/**\n * Animations used by the mat-menu component.\n * Animation duration and timing values are based on:\n * https://material.io/guidelines/components/menus.html#menus-usage\n * @docs-private\n * @deprecated No longer used, will be removed.\n * @breaking-change 21.0.0\n */\nconst matMenuAnimations = {\n // Represents:\n // trigger('transformMenu', [\n // state(\n // 'void',\n // style({\n // opacity: 0,\n // transform: 'scale(0.8)',\n // }),\n // ),\n // transition(\n // 'void => enter',\n // animate(\n // '120ms cubic-bezier(0, 0, 0.2, 1)',\n // style({\n // opacity: 1,\n // transform: 'scale(1)',\n // }),\n // ),\n // ),\n // transition('* => void', animate('100ms 25ms linear', style({opacity: 0}))),\n // ])\n /**\n * This animation controls the menu panel's entry and exit from the page.\n *\n * When the menu panel is added to the DOM, it scales in and fades in its border.\n *\n * When the menu panel is removed from the DOM, it simply fades out after a brief\n * delay to display the ripple.\n */\n transformMenu: {\n type: 7,\n name: 'transformMenu',\n definitions: [{\n type: 0,\n name: 'void',\n styles: {\n type: 6,\n styles: {\n opacity: 0,\n transform: 'scale(0.8)'\n },\n offset: null\n }\n }, {\n type: 1,\n expr: 'void => enter',\n animation: {\n type: 4,\n styles: {\n type: 6,\n styles: {\n opacity: 1,\n transform: 'scale(1)'\n },\n offset: null\n },\n timings: '120ms cubic-bezier(0, 0, 0.2, 1)'\n },\n options: null\n }, {\n type: 1,\n expr: '* => void',\n animation: {\n type: 4,\n styles: {\n type: 6,\n styles: {\n opacity: 0\n },\n offset: null\n },\n timings: '100ms 25ms linear'\n },\n options: null\n }],\n options: {}\n },\n // Represents:\n // trigger('fadeInItems', [\n // // TODO(crisbeto): this is inside the `transformMenu`\n // // now. Remove next time we do breaking changes.\n // state('showing', style({opacity: 1})),\n // transition('void => *', [\n // style({opacity: 0}),\n // animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)'),\n // ]),\n // ])\n /**\n * This animation fades in the background color and content of the menu panel\n * after its containing element is scaled in.\n */\n fadeInItems: {\n type: 7,\n name: 'fadeInItems',\n definitions: [{\n type: 0,\n name: 'showing',\n styles: {\n type: 6,\n styles: {\n opacity: 1\n },\n offset: null\n }\n }, {\n type: 1,\n expr: 'void => *',\n animation: [{\n type: 6,\n styles: {\n opacity: 0\n },\n offset: null\n }, {\n type: 4,\n styles: null,\n timings: '400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)'\n }],\n options: null\n }],\n options: {}\n }\n};\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nconst fadeInItems = matMenuAnimations.fadeInItems;\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nconst transformMenu = matMenuAnimations.transformMenu;\nexport { MAT_MENU_CONTENT, MAT_MENU_DEFAULT_OPTIONS, MAT_MENU_PANEL, MAT_MENU_SCROLL_STRATEGY, MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER, MENU_PANEL_TOP_PADDING, MatContextMenuTrigger, MatMenu, MatMenuContent, MatMenuItem, MatMenuModule, MatMenuTrigger, fadeInItems, matMenuAnimations, transformMenu };\n"],"mappings":"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","names":["PrismPlugin","options","inline","mermaid","marked","katex","html","_c0","options","options"],"x_google_ignoreList":[0,1,2]}
|