!(function (e) { var a = e.languages.javascript, n = '\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})+\\}', t = '(@(?:arg|argument|param|property)\\s+(?:' + n + '\\s+)?)'; (e.languages.jsdoc = e.languages.extend('javadoclike', { parameter: { pattern: RegExp(t + '(?:(?!\\s)[$\\w\\xA0-\\uFFFF.])+(?=\\s|$)'), lookbehind: !0, inside: { punctuation: /\./ }, }, })), e.languages.insertBefore('jsdoc', 'keyword', { 'optional-parameter': { pattern: RegExp( t + '\\[(?:(?!\\s)[$\\w\\xA0-\\uFFFF.])+(?:=[^[\\]]+)?\\](?=\\s|$)' ), lookbehind: !0, inside: { parameter: { pattern: /(^\[)[$\w\xA0-\uFFFF\.]+/, lookbehind: !0, inside: { punctuation: /\./ }, }, code: { pattern: /(=)[\s\S]*(?=\]$)/, lookbehind: !0, inside: a, alias: 'language-javascript', }, punctuation: /[=[\]]/, }, }, 'class-name': [ { pattern: RegExp( '(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\\s+(?:\\s+)?)[A-Z]\\w*(?:\\.[A-Z]\\w*)*'.replace( //g, function () { return n; } ) ), lookbehind: !0, inside: { punctuation: /\./ }, }, { pattern: RegExp('(@[a-z]+\\s+)' + n), lookbehind: !0, inside: { string: a.string, number: a.number, boolean: a.boolean, keyword: e.languages.typescript.keyword, operator: /=>|\.\.\.|[&|?:*]/, punctuation: /[.,;=<>{}()[\]]/, }, }, ], example: { pattern: /(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/, lookbehind: !0, inside: { code: { pattern: /^([\t ]*(?:\*\s*)?)\S.*$/m, lookbehind: !0, inside: a, alias: 'language-javascript', }, }, }, }), e.languages.javadoclike.addSupport('javascript', e.languages.jsdoc); })(Prism);