{"version":3,"names":["safeSelector","selector","placeholders","index","replace","_","keep","replaceBy","push","content","pseudo","exp","ss","restoreSafeSelector","_polyfillHost","_polyfillSlotted","_polyfillHostContext","_parenSuffix","_cssColonHostRe","RegExp","_cssColonHostContextRe","_cssColonSlottedRe","_polyfillHostNoCombinator","_polyfillHostNoCombinatorRe","_shadowDOMSelectorsRe","_selectorReSuffix","_polyfillHostRe","_colonHostRe","_colonSlottedRe","_colonHostContextRe","_commentRe","stripComments","input","_commentWithHashRe","extractCommentsWithHash","match","_ruleRe","_curlyRe","_selectorPartsRe","OPEN_CURLY","CLOSE_CURLY","BLOCK_PLACEHOLDER","processRules","ruleCallback","inputWithEscapedBlocks","escapeBlocks","nextBlockIndex","escapedString","m","suffix","contentPrefix","startsWith","blocks","substring","length","cssRule","rule","inputParts","split","resultParts","escapedBlocks","bracketCount","currentBlockParts","partIndex","part","join","strEscapedBlocks","insertPolyfillHostInCssText","convertColonRule","cssText","regExp","partReplacer","parts","r","i","p","trim","colonHostPartReplacer","host","convertColonHost","colonHostContextPartReplacer","indexOf","convertColonSlotted","slotScopeId","slotClass","selectors","compound","slottedSelector","prefixSelector","char","orgSelector","addedSelector","trimRight","updatedSelector","convertColonHostContext","convertShadowDOMSelectors","reduce","result","pattern","makeScopeMatcher","scopeSelector","lre","rre","selectorNeedsScoping","re","test","injectScopingSelector","scopingSelector","before","_colonGroup","colon","after","applySimpleSelectorScope","hostSelector","lastIndex","applyStrictSelectorScope","isRe","className","_scopeSelectorPart","scopedP","t","safeContent","scopedSelector","startIndex","res","sep","hasHost","shouldScope","exec","separator","slice","scopedPart","scopeSelectorText","slotSelector","map","shallowPart","scopeSelectors","commentOriginalSelector","scopeCssText","scopeId","hostScopeId","slotted","slottedSelectors","scopeCss","commentsWithHash","orgSelectors","processCommentedSelector","placeholder","comment","scoped","forEach"],"sources":["./node_modules/@stencil/core/internal/client/shadow-css.js"],"sourcesContent":["/*\n Stencil Client Platform v2.22.3 | MIT Licensed | https://stenciljs.com\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n *\n * This file is a port of shadowCSS from webcomponents.js to TypeScript.\n * https://github.com/webcomponents/webcomponentsjs/blob/4efecd7e0e/src/ShadowCSS/ShadowCSS.js\n * https://github.com/angular/angular/blob/master/packages/compiler/src/shadow_css.ts\n */\nconst safeSelector = (selector) => {\n const placeholders = [];\n let index = 0;\n // Replaces attribute selectors with placeholders.\n // The WS in [attr=\"va lue\"] would otherwise be interpreted as a selector separator.\n selector = selector.replace(/(\\[[^\\]]*\\])/g, (_, keep) => {\n const replaceBy = `__ph-${index}__`;\n placeholders.push(keep);\n index++;\n return replaceBy;\n });\n // Replaces the expression in `:nth-child(2n + 1)` with a placeholder.\n // WS and \"+\" would otherwise be interpreted as selector separators.\n const content = selector.replace(/(:nth-[-\\w]+)(\\([^)]+\\))/g, (_, pseudo, exp) => {\n const replaceBy = `__ph-${index}__`;\n placeholders.push(exp);\n index++;\n return pseudo + replaceBy;\n });\n const ss = {\n content,\n placeholders,\n };\n return ss;\n};\nconst restoreSafeSelector = (placeholders, content) => {\n return content.replace(/__ph-(\\d+)__/g, (_, index) => placeholders[+index]);\n};\nconst _polyfillHost = '-shadowcsshost';\nconst _polyfillSlotted = '-shadowcssslotted';\n// note: :host-context pre-processed to -shadowcsshostcontext.\nconst _polyfillHostContext = '-shadowcsscontext';\nconst _parenSuffix = ')(?:\\\\((' + '(?:\\\\([^)(]*\\\\)|[^)(]*)+?' + ')\\\\))?([^,{]*)';\nconst _cssColonHostRe = new RegExp('(' + _polyfillHost + _parenSuffix, 'gim');\nconst _cssColonHostContextRe = new RegExp('(' + _polyfillHostContext + _parenSuffix, 'gim');\nconst _cssColonSlottedRe = new RegExp('(' + _polyfillSlotted + _parenSuffix, 'gim');\nconst _polyfillHostNoCombinator = _polyfillHost + '-no-combinator';\nconst _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\\s]*)/;\nconst _shadowDOMSelectorsRe = [/::shadow/g, /::content/g];\nconst _selectorReSuffix = '([>\\\\s~+[.,{:][\\\\s\\\\S]*)?$';\nconst _polyfillHostRe = /-shadowcsshost/gim;\nconst _colonHostRe = /:host/gim;\nconst _colonSlottedRe = /::slotted/gim;\nconst _colonHostContextRe = /:host-context/gim;\nconst _commentRe = /\\/\\*\\s*[\\s\\S]*?\\*\\//g;\nconst stripComments = (input) => {\n return input.replace(_commentRe, '');\n};\nconst _commentWithHashRe = /\\/\\*\\s*#\\s*source(Mapping)?URL=[\\s\\S]+?\\*\\//g;\nconst extractCommentsWithHash = (input) => {\n return input.match(_commentWithHashRe) || [];\n};\nconst _ruleRe = /(\\s*)([^;\\{\\}]+?)(\\s*)((?:{%BLOCK%}?\\s*;?)|(?:\\s*;))/g;\nconst _curlyRe = /([{}])/g;\nconst _selectorPartsRe = /(^.*?[^\\\\])??((:+)(.*)|$)/;\nconst OPEN_CURLY = '{';\nconst CLOSE_CURLY = '}';\nconst BLOCK_PLACEHOLDER = '%BLOCK%';\nconst processRules = (input, ruleCallback) => {\n const inputWithEscapedBlocks = escapeBlocks(input);\n let nextBlockIndex = 0;\n return inputWithEscapedBlocks.escapedString.replace(_ruleRe, (...m) => {\n const selector = m[2];\n let content = '';\n let suffix = m[4];\n let contentPrefix = '';\n if (suffix && suffix.startsWith('{' + BLOCK_PLACEHOLDER)) {\n content = inputWithEscapedBlocks.blocks[nextBlockIndex++];\n suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1);\n contentPrefix = '{';\n }\n const cssRule = {\n selector,\n content,\n };\n const rule = ruleCallback(cssRule);\n return `${m[1]}${rule.selector}${m[3]}${contentPrefix}${rule.content}${suffix}`;\n });\n};\nconst escapeBlocks = (input) => {\n const inputParts = input.split(_curlyRe);\n const resultParts = [];\n const escapedBlocks = [];\n let bracketCount = 0;\n let currentBlockParts = [];\n for (let partIndex = 0; partIndex < inputParts.length; partIndex++) {\n const part = inputParts[partIndex];\n if (part === CLOSE_CURLY) {\n bracketCount--;\n }\n if (bracketCount > 0) {\n currentBlockParts.push(part);\n }\n else {\n if (currentBlockParts.length > 0) {\n escapedBlocks.push(currentBlockParts.join(''));\n resultParts.push(BLOCK_PLACEHOLDER);\n currentBlockParts = [];\n }\n resultParts.push(part);\n }\n if (part === OPEN_CURLY) {\n bracketCount++;\n }\n }\n if (currentBlockParts.length > 0) {\n escapedBlocks.push(currentBlockParts.join(''));\n resultParts.push(BLOCK_PLACEHOLDER);\n }\n const strEscapedBlocks = {\n escapedString: resultParts.join(''),\n blocks: escapedBlocks,\n };\n return strEscapedBlocks;\n};\nconst insertPolyfillHostInCssText = (selector) => {\n selector = selector\n .replace(_colonHostContextRe, _polyfillHostContext)\n .replace(_colonHostRe, _polyfillHost)\n .replace(_colonSlottedRe, _polyfillSlotted);\n return selector;\n};\nconst convertColonRule = (cssText, regExp, partReplacer) => {\n // m[1] = :host(-context), m[2] = contents of (), m[3] rest of rule\n return cssText.replace(regExp, (...m) => {\n if (m[2]) {\n const parts = m[2].split(',');\n const r = [];\n for (let i = 0; i < parts.length; i++) {\n const p = parts[i].trim();\n if (!p)\n break;\n r.push(partReplacer(_polyfillHostNoCombinator, p, m[3]));\n }\n return r.join(',');\n }\n else {\n return _polyfillHostNoCombinator + m[3];\n }\n });\n};\nconst colonHostPartReplacer = (host, part, suffix) => {\n return host + part.replace(_polyfillHost, '') + suffix;\n};\nconst convertColonHost = (cssText) => {\n return convertColonRule(cssText, _cssColonHostRe, colonHostPartReplacer);\n};\nconst colonHostContextPartReplacer = (host, part, suffix) => {\n if (part.indexOf(_polyfillHost) > -1) {\n return colonHostPartReplacer(host, part, suffix);\n }\n else {\n return host + part + suffix + ', ' + part + ' ' + host + suffix;\n }\n};\nconst convertColonSlotted = (cssText, slotScopeId) => {\n const slotClass = '.' + slotScopeId + ' > ';\n const selectors = [];\n cssText = cssText.replace(_cssColonSlottedRe, (...m) => {\n if (m[2]) {\n const compound = m[2].trim();\n const suffix = m[3];\n const slottedSelector = slotClass + compound + suffix;\n let prefixSelector = '';\n for (let i = m[4] - 1; i >= 0; i--) {\n const char = m[5][i];\n if (char === '}' || char === ',') {\n break;\n }\n prefixSelector = char + prefixSelector;\n }\n const orgSelector = prefixSelector + slottedSelector;\n const addedSelector = `${prefixSelector.trimRight()}${slottedSelector.trim()}`;\n if (orgSelector.trim() !== addedSelector.trim()) {\n const updatedSelector = `${addedSelector}, ${orgSelector}`;\n selectors.push({\n orgSelector,\n updatedSelector,\n });\n }\n return slottedSelector;\n }\n else {\n return _polyfillHostNoCombinator + m[3];\n }\n });\n return {\n selectors,\n cssText,\n };\n};\nconst convertColonHostContext = (cssText) => {\n return convertColonRule(cssText, _cssColonHostContextRe, colonHostContextPartReplacer);\n};\nconst convertShadowDOMSelectors = (cssText) => {\n return _shadowDOMSelectorsRe.reduce((result, pattern) => result.replace(pattern, ' '), cssText);\n};\nconst makeScopeMatcher = (scopeSelector) => {\n const lre = /\\[/g;\n const rre = /\\]/g;\n scopeSelector = scopeSelector.replace(lre, '\\\\[').replace(rre, '\\\\]');\n return new RegExp('^(' + scopeSelector + ')' + _selectorReSuffix, 'm');\n};\nconst selectorNeedsScoping = (selector, scopeSelector) => {\n const re = makeScopeMatcher(scopeSelector);\n return !re.test(selector);\n};\nconst injectScopingSelector = (selector, scopingSelector) => {\n return selector.replace(_selectorPartsRe, (_, before = '', _colonGroup, colon = '', after = '') => {\n return before + scopingSelector + colon + after;\n });\n};\nconst applySimpleSelectorScope = (selector, scopeSelector, hostSelector) => {\n // In Android browser, the lastIndex is not reset when the regex is used in String.replace()\n _polyfillHostRe.lastIndex = 0;\n if (_polyfillHostRe.test(selector)) {\n const replaceBy = `.${hostSelector}`;\n return selector\n .replace(_polyfillHostNoCombinatorRe, (_, selector) => injectScopingSelector(selector, replaceBy))\n .replace(_polyfillHostRe, replaceBy + ' ');\n }\n return scopeSelector + ' ' + selector;\n};\nconst applyStrictSelectorScope = (selector, scopeSelector, hostSelector) => {\n const isRe = /\\[is=([^\\]]*)\\]/g;\n scopeSelector = scopeSelector.replace(isRe, (_, ...parts) => parts[0]);\n const className = '.' + scopeSelector;\n const _scopeSelectorPart = (p) => {\n let scopedP = p.trim();\n if (!scopedP) {\n return '';\n }\n if (p.indexOf(_polyfillHostNoCombinator) > -1) {\n scopedP = applySimpleSelectorScope(p, scopeSelector, hostSelector);\n }\n else {\n // remove :host since it should be unnecessary\n const t = p.replace(_polyfillHostRe, '');\n if (t.length > 0) {\n scopedP = injectScopingSelector(t, className);\n }\n }\n return scopedP;\n };\n const safeContent = safeSelector(selector);\n selector = safeContent.content;\n let scopedSelector = '';\n let startIndex = 0;\n let res;\n const sep = /( |>|\\+|~(?!=))\\s*/g;\n // If a selector appears before :host it should not be shimmed as it\n // matches on ancestor elements and not on elements in the host's shadow\n // `:host-context(div)` is transformed to\n // `-shadowcsshost-no-combinatordiv, div -shadowcsshost-no-combinator`\n // the `div` is not part of the component in the 2nd selectors and should not be scoped.\n // Historically `component-tag:host` was matching the component so we also want to preserve\n // this behavior to avoid breaking legacy apps (it should not match).\n // The behavior should be:\n // - `tag:host` -> `tag[h]` (this is to avoid breaking legacy apps, should not match anything)\n // - `tag :host` -> `tag [h]` (`tag` is not scoped because it's considered part of a\n // `:host-context(tag)`)\n const hasHost = selector.indexOf(_polyfillHostNoCombinator) > -1;\n // Only scope parts after the first `-shadowcsshost-no-combinator` when it is present\n let shouldScope = !hasHost;\n while ((res = sep.exec(selector)) !== null) {\n const separator = res[1];\n const part = selector.slice(startIndex, res.index).trim();\n shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1;\n const scopedPart = shouldScope ? _scopeSelectorPart(part) : part;\n scopedSelector += `${scopedPart} ${separator} `;\n startIndex = sep.lastIndex;\n }\n const part = selector.substring(startIndex);\n shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1;\n scopedSelector += shouldScope ? _scopeSelectorPart(part) : part;\n // replace the placeholders with their original values\n return restoreSafeSelector(safeContent.placeholders, scopedSelector);\n};\nconst scopeSelector = (selector, scopeSelectorText, hostSelector, slotSelector) => {\n return selector\n .split(',')\n .map((shallowPart) => {\n if (slotSelector && shallowPart.indexOf('.' + slotSelector) > -1) {\n return shallowPart.trim();\n }\n if (selectorNeedsScoping(shallowPart, scopeSelectorText)) {\n return applyStrictSelectorScope(shallowPart, scopeSelectorText, hostSelector).trim();\n }\n else {\n return shallowPart.trim();\n }\n })\n .join(', ');\n};\nconst scopeSelectors = (cssText, scopeSelectorText, hostSelector, slotSelector, commentOriginalSelector) => {\n return processRules(cssText, (rule) => {\n let selector = rule.selector;\n let content = rule.content;\n if (rule.selector[0] !== '@') {\n selector = scopeSelector(rule.selector, scopeSelectorText, hostSelector, slotSelector);\n }\n else if (rule.selector.startsWith('@media') ||\n rule.selector.startsWith('@supports') ||\n rule.selector.startsWith('@page') ||\n rule.selector.startsWith('@document')) {\n content = scopeSelectors(rule.content, scopeSelectorText, hostSelector, slotSelector);\n }\n const cssRule = {\n selector: selector.replace(/\\s{2,}/g, ' ').trim(),\n content,\n };\n return cssRule;\n });\n};\nconst scopeCssText = (cssText, scopeId, hostScopeId, slotScopeId, commentOriginalSelector) => {\n cssText = insertPolyfillHostInCssText(cssText);\n cssText = convertColonHost(cssText);\n cssText = convertColonHostContext(cssText);\n const slotted = convertColonSlotted(cssText, slotScopeId);\n cssText = slotted.cssText;\n cssText = convertShadowDOMSelectors(cssText);\n if (scopeId) {\n cssText = scopeSelectors(cssText, scopeId, hostScopeId, slotScopeId);\n }\n cssText = cssText.replace(/-shadowcsshost-no-combinator/g, `.${hostScopeId}`);\n cssText = cssText.replace(/>\\s*\\*\\s+([^{, ]+)/gm, ' $1 ');\n return {\n cssText: cssText.trim(),\n slottedSelectors: slotted.selectors,\n };\n};\nconst scopeCss = (cssText, scopeId, commentOriginalSelector) => {\n const hostScopeId = scopeId + '-h';\n const slotScopeId = scopeId + '-s';\n const commentsWithHash = extractCommentsWithHash(cssText);\n cssText = stripComments(cssText);\n const orgSelectors = [];\n if (commentOriginalSelector) {\n const processCommentedSelector = (rule) => {\n const placeholder = `/*!@___${orgSelectors.length}___*/`;\n const comment = `/*!@${rule.selector}*/`;\n orgSelectors.push({ placeholder, comment });\n rule.selector = placeholder + rule.selector;\n return rule;\n };\n cssText = processRules(cssText, (rule) => {\n if (rule.selector[0] !== '@') {\n return processCommentedSelector(rule);\n }\n else if (rule.selector.startsWith('@media') ||\n rule.selector.startsWith('@supports') ||\n rule.selector.startsWith('@page') ||\n rule.selector.startsWith('@document')) {\n rule.content = processRules(rule.content, processCommentedSelector);\n return rule;\n }\n return rule;\n });\n }\n const scoped = scopeCssText(cssText, scopeId, hostScopeId, slotScopeId);\n cssText = [scoped.cssText, ...commentsWithHash].join('\\n');\n if (commentOriginalSelector) {\n orgSelectors.forEach(({ placeholder, comment }) => {\n cssText = cssText.replace(placeholder, comment);\n });\n }\n scoped.slottedSelectors.forEach((slottedSelector) => {\n cssText = cssText.replace(slottedSelector.orgSelector, slottedSelector.updatedSelector);\n });\n return cssText;\n};\n\nexport { scopeCss };\n"],"mappings":"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"}