@stories-js/core
Version:
Stories web components to build stories
16 lines • 8.36 kB
JavaScript
var __spreadArray=this&&this.__spreadArray||function(e,t,r){if(r||arguments.length===2)for(var o=0,n=t.length,c;o<n;o++){if(c||!(o in t)){if(!c)c=Array.prototype.slice.call(t,0,o);c[o]=t[o]}}return e.concat(c||Array.prototype.slice.call(t))};
/*!
* (C) StoriesJS https://storiesjs.org - GPL-2.0 License
*/
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*
* This file is a port of shadowCSS from webcomponents.js to TypeScript.
* https://github.com/webcomponents/webcomponentsjs/blob/4efecd7e0e/src/ShadowCSS/ShadowCSS.js
* https://github.com/angular/angular/blob/master/packages/compiler/src/shadow_css.ts
*/var safeSelector=function(e){var t=[];var r=0;var o;e=e.replace(/(\[[^\]]*\])/g,(function(e,o){var n="__ph-".concat(r,"__");t.push(o);r++;return n}));o=e.replace(/(:nth-[-\w]+)(\([^)]+\))/g,(function(e,o,n){var c="__ph-".concat(r,"__");t.push(n);r++;return o+c}));var n={content:o,placeholders:t};return n};var restoreSafeSelector=function(e,t){return t.replace(/__ph-(\d+)__/g,(function(t,r){return e[+r]}))};var _polyfillHost="-shadowcsshost";var _polyfillSlotted="-shadowcssslotted";var _polyfillHostContext="-shadowcsscontext";var _parenSuffix=")(?:\\(("+"(?:\\([^)(]*\\)|[^)(]*)+?"+")\\))?([^,{]*)";var _cssColonHostRe=new RegExp("("+_polyfillHost+_parenSuffix,"gim");var _cssColonHostContextRe=new RegExp("("+_polyfillHostContext+_parenSuffix,"gim");var _cssColonSlottedRe=new RegExp("("+_polyfillSlotted+_parenSuffix,"gim");var _polyfillHostNoCombinator=_polyfillHost+"-no-combinator";var _polyfillHostNoCombinatorRe=/-shadowcsshost-no-combinator([^\s]*)/;var _shadowDOMSelectorsRe=[/::shadow/g,/::content/g];var _selectorReSuffix="([>\\s~+[.,{:][\\s\\S]*)?$";var _polyfillHostRe=/-shadowcsshost/gim;var _colonHostRe=/:host/gim;var _colonSlottedRe=/::slotted/gim;var _colonHostContextRe=/:host-context/gim;var _commentRe=/\/\*\s*[\s\S]*?\*\//g;var stripComments=function(e){return e.replace(_commentRe,"")};var _commentWithHashRe=/\/\*\s*#\s*source(Mapping)?URL=[\s\S]+?\*\//g;var extractCommentsWithHash=function(e){return e.match(_commentWithHashRe)||[]};var _ruleRe=/(\s*)([^;\{\}]+?)(\s*)((?:{%BLOCK%}?\s*;?)|(?:\s*;))/g;var _curlyRe=/([{}])/g;var _selectorPartsRe=/(^.*?[^\\])??((:+)(.*)|$)/;var OPEN_CURLY="{";var CLOSE_CURLY="}";var BLOCK_PLACEHOLDER="%BLOCK%";var processRules=function(e,t){var r=escapeBlocks(e);var o=0;return r.escapedString.replace(_ruleRe,(function(){var e=[];for(var n=0;n<arguments.length;n++){e[n]=arguments[n]}var c=e[2];var s="";var l=e[4];var a="";if(l&&l.startsWith("{"+BLOCK_PLACEHOLDER)){s=r.blocks[o++];l=l.substring(BLOCK_PLACEHOLDER.length+1);a="{"}var i={selector:c,content:s};var p=t(i);return"".concat(e[1]).concat(p.selector).concat(e[3]).concat(a).concat(p.content).concat(l)}))};var escapeBlocks=function(e){var t=e.split(_curlyRe);var r=[];var o=[];var n=0;var c=[];for(var s=0;s<t.length;s++){var l=t[s];if(l===CLOSE_CURLY){n--}if(n>0){c.push(l)}else{if(c.length>0){o.push(c.join(""));r.push(BLOCK_PLACEHOLDER);c=[]}r.push(l)}if(l===OPEN_CURLY){n++}}if(c.length>0){o.push(c.join(""));r.push(BLOCK_PLACEHOLDER)}var a={escapedString:r.join(""),blocks:o};return a};var insertPolyfillHostInCssText=function(e){e=e.replace(_colonHostContextRe,_polyfillHostContext).replace(_colonHostRe,_polyfillHost).replace(_colonSlottedRe,_polyfillSlotted);return e};var convertColonRule=function(e,t,r){return e.replace(t,(function(){var e=[];for(var t=0;t<arguments.length;t++){e[t]=arguments[t]}if(e[2]){var o=e[2].split(",");var n=[];for(var c=0;c<o.length;c++){var s=o[c].trim();if(!s)break;n.push(r(_polyfillHostNoCombinator,s,e[3]))}return n.join(",")}else{return _polyfillHostNoCombinator+e[3]}}))};var colonHostPartReplacer=function(e,t,r){return e+t.replace(_polyfillHost,"")+r};var convertColonHost=function(e){return convertColonRule(e,_cssColonHostRe,colonHostPartReplacer)};var colonHostContextPartReplacer=function(e,t,r){if(t.indexOf(_polyfillHost)>-1){return colonHostPartReplacer(e,t,r)}else{return e+t+r+", "+t+" "+e+r}};var convertColonSlotted=function(e,t){var r="."+t+" > ";var o=[];e=e.replace(_cssColonSlottedRe,(function(){var e=[];for(var t=0;t<arguments.length;t++){e[t]=arguments[t]}if(e[2]){var n=e[2].trim();var c=e[3];var s=r+n+c;var l="";for(var a=e[4]-1;a>=0;a--){var i=e[5][a];if(i==="}"||i===","){break}l=i+l}var p=l+s;var v="".concat(l.trimRight()).concat(s.trim());if(p.trim()!==v.trim()){var f="".concat(v,", ").concat(p);o.push({orgSelector:p,updatedSelector:f})}return s}else{return _polyfillHostNoCombinator+e[3]}}));return{selectors:o,cssText:e}};var convertColonHostContext=function(e){return convertColonRule(e,_cssColonHostContextRe,colonHostContextPartReplacer)};var convertShadowDOMSelectors=function(e){return _shadowDOMSelectorsRe.reduce((function(e,t){return e.replace(t," ")}),e)};var makeScopeMatcher=function(e){var t=/\[/g;var r=/\]/g;e=e.replace(t,"\\[").replace(r,"\\]");return new RegExp("^("+e+")"+_selectorReSuffix,"m")};var selectorNeedsScoping=function(e,t){var r=makeScopeMatcher(t);return!r.test(e)};var injectScopingSelector=function(e,t){return e.replace(_selectorPartsRe,(function(e,r,o,n,c){if(r===void 0){r=""}if(n===void 0){n=""}if(c===void 0){c=""}return r+t+n+c}))};var applySimpleSelectorScope=function(e,t,r){_polyfillHostRe.lastIndex=0;if(_polyfillHostRe.test(e)){var o=".".concat(r);return e.replace(_polyfillHostNoCombinatorRe,(function(e,t){return injectScopingSelector(t,o)})).replace(_polyfillHostRe,o+" ")}return t+" "+e};var applyStrictSelectorScope=function(e,t,r){var o=/\[is=([^\]]*)\]/g;t=t.replace(o,(function(e){var t=[];for(var r=1;r<arguments.length;r++){t[r-1]=arguments[r]}return t[0]}));var n="."+t;var c=function(e){var o=e.trim();if(!o){return""}if(e.indexOf(_polyfillHostNoCombinator)>-1){o=applySimpleSelectorScope(e,t,r)}else{var c=e.replace(_polyfillHostRe,"");if(c.length>0){o=injectScopingSelector(c,n)}}return o};var s=safeSelector(e);e=s.content;var l="";var a=0;var i;var p=/( |>|\+|~(?!=))\s*/g;var v=e.indexOf(_polyfillHostNoCombinator)>-1;var f=!v;while((i=p.exec(e))!==null){var u=i[1];var _=e.slice(a,i.index).trim();f=f||_.indexOf(_polyfillHostNoCombinator)>-1;var h=f?c(_):_;l+="".concat(h," ").concat(u," ");a=p.lastIndex}var S=e.substring(a);f=f||S.indexOf(_polyfillHostNoCombinator)>-1;l+=f?c(S):S;return restoreSafeSelector(s.placeholders,l)};var scopeSelector=function(e,t,r,o){return e.split(",").map((function(e){if(o&&e.indexOf("."+o)>-1){return e.trim()}if(selectorNeedsScoping(e,t)){return applyStrictSelectorScope(e,t,r).trim()}else{return e.trim()}})).join(", ")};var scopeSelectors=function(e,t,r,o,n){return processRules(e,(function(e){var n=e.selector;var c=e.content;if(e.selector[0]!=="@"){n=scopeSelector(e.selector,t,r,o)}else if(e.selector.startsWith("@media")||e.selector.startsWith("@supports")||e.selector.startsWith("@page")||e.selector.startsWith("@document")){c=scopeSelectors(e.content,t,r,o)}var s={selector:n.replace(/\s{2,}/g," ").trim(),content:c};return s}))};var scopeCssText=function(e,t,r,o,n){e=insertPolyfillHostInCssText(e);e=convertColonHost(e);e=convertColonHostContext(e);var c=convertColonSlotted(e,o);e=c.cssText;e=convertShadowDOMSelectors(e);if(t){e=scopeSelectors(e,t,r,o)}e=e.replace(/-shadowcsshost-no-combinator/g,".".concat(r));e=e.replace(/>\s*\*\s+([^{, ]+)/gm," $1 ");return{cssText:e.trim(),slottedSelectors:c.selectors}};var scopeCss=function(e,t,r){var o=t+"-h";var n=t+"-s";var c=extractCommentsWithHash(e);e=stripComments(e);var s=[];if(r){var l=function(e){var t="/*!@___".concat(s.length,"___*/");var r="/*!@".concat(e.selector,"*/");s.push({placeholder:t,comment:r});e.selector=t+e.selector;return e};e=processRules(e,(function(e){if(e.selector[0]!=="@"){return l(e)}else if(e.selector.startsWith("@media")||e.selector.startsWith("@supports")||e.selector.startsWith("@page")||e.selector.startsWith("@document")){e.content=processRules(e.content,l);return e}return e}))}var a=scopeCssText(e,t,o,n);e=__spreadArray([a.cssText],c,true).join("\n");if(r){s.forEach((function(t){var r=t.placeholder,o=t.comment;e=e.replace(r,o)}))}a.slottedSelectors.forEach((function(t){e=e.replace(t.orgSelector,t.updatedSelector)}));return e};export{scopeCss};
//# sourceMappingURL=shadow-css-2e256dfb.js.map