UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

80 lines 10.4 kB
/** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ /** * Sync from rc-util [https://github.com/react-component/util] */ import { canUseDom } from './can-use-dom'; const MARK_KEY = `rc-util-key`; function getMark({ mark } = {}) { if (mark) { return mark.startsWith('data-') ? mark : `data-${mark}`; } return MARK_KEY; } function getContainer(option) { if (option.attachTo) { return option.attachTo; } const head = document.querySelector('head'); return head || document.body; } export function injectCSS(css, option = {}) { if (!canUseDom()) { return null; } const styleNode = document.createElement('style'); if (option.csp?.nonce) { styleNode.nonce = option.csp?.nonce; } styleNode.innerHTML = css; const container = getContainer(option); const { firstChild } = container; if (option.prepend && container.prepend) { // Use `prepend` first container.prepend(styleNode); } else if (option.prepend && firstChild) { // Fallback to `insertBefore` like IE not support `prepend` container.insertBefore(styleNode, firstChild); } else { container.appendChild(styleNode); } return styleNode; } const containerCache = new Map(); function findExistNode(key, option = {}) { const container = getContainer(option); return Array.from(containerCache.get(container)?.children || []).find(node => node.tagName === 'STYLE' && node.getAttribute(getMark(option)) === key); } export function removeCSS(key, option = {}) { const existNode = findExistNode(key, option); existNode?.parentNode?.removeChild(existNode); } export function updateCSS(css, key, option = {}) { const container = getContainer(option); // Get real parent if (!containerCache.has(container)) { const placeholderStyle = injectCSS('', option); // @ts-ignore const { parentNode } = placeholderStyle; containerCache.set(container, parentNode); parentNode.removeChild(placeholderStyle); } const existNode = findExistNode(key, option); if (existNode) { if (option.csp?.nonce && existNode.nonce !== option.csp?.nonce) { existNode.nonce = option.csp?.nonce; } if (existNode.innerHTML !== css) { existNode.innerHTML = css; } return existNode; } const newNode = injectCSS(css, option); newNode?.setAttribute(getMark(option), key); return newNode; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvcmUvdXRpbC9keW5hbWljLWNzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFJSDs7R0FFRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsTUFBTSxRQUFRLEdBQUcsYUFBMEIsQ0FBQztBQUU1QyxTQUFTLE9BQU8sQ0FBQyxFQUFFLElBQUksS0FBYyxFQUFFO0lBQ3JDLElBQUksSUFBSSxFQUFFO1FBQ1IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7S0FDekQ7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBU0QsU0FBUyxZQUFZLENBQUMsTUFBZTtJQUNuQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7UUFDbkIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDO0tBQ3hCO0lBRUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxPQUFPLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDO0FBQy9CLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQVcsRUFBRSxTQUFrQixFQUFFO0lBQ3pELElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUNoQixPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO1FBQ3JCLFNBQVMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7S0FDckM7SUFDRCxTQUFTLENB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Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuLyoqXG4gKiBTeW5jIGZyb20gcmMtdXRpbCBbaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0LWNvbXBvbmVudC91dGlsXVxuICovXG5pbXBvcnQgeyBjYW5Vc2VEb20gfSBmcm9tICcuL2Nhbi11c2UtZG9tJztcblxuY29uc3QgTUFSS19LRVkgPSBgcmMtdXRpbC1rZXlgIGFzIE56U2FmZUFueTtcblxuZnVuY3Rpb24gZ2V0TWFyayh7IG1hcmsgfTogT3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcbiAgaWYgKG1hcmspIHtcbiAgICByZXR1cm4gbWFyay5zdGFydHNXaXRoKCdkYXRhLScpID8gbWFyayA6IGBkYXRhLSR7bWFya31gO1xuICB9XG4gIHJldHVybiBNQVJLX0tFWTtcbn1cblxuaW50ZXJmYWNlIE9wdGlvbnMge1xuICBhdHRhY2hUbz86IEVsZW1lbnQ7XG4gIGNzcD86IHsgbm9uY2U/OiBzdHJpbmcgfTtcbiAgcHJlcGVuZD86IGJvb2xlYW47XG4gIG1hcms/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldENvbnRhaW5lcihvcHRpb246IE9wdGlvbnMpOiBIVE1MRWxlbWVudCB8IEVsZW1lbnQge1xuICBpZiAob3B0aW9uLmF0dGFjaFRvKSB7XG4gICAgcmV0dXJuIG9wdGlvbi5hdHRhY2hUbztcbiAgfVxuXG4gIGNvbnN0IGhlYWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gIHJldHVybiBoZWFkIHx8IGRvY3VtZW50LmJvZHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDU1MoY3NzOiBzdHJpbmcsIG9wdGlvbjogT3B0aW9ucyA9IHt9KTogSFRNTFN0eWxlRWxlbWVudCB8IG51bGwge1xuICBpZiAoIWNhblVzZURvbSgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzdHlsZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBpZiAob3B0aW9uLmNzcD8ubm9uY2UpIHtcbiAgICBzdHlsZU5vZGUubm9uY2UgPSBvcHRpb24uY3NwPy5ub25jZTtcbiAgfVxuICBzdHlsZU5vZGUuaW5uZXJIVE1MID0gY3NzO1xuXG4gIGNvbnN0IGNvbnRhaW5lciA9IGdldENvbnRhaW5lcihvcHRpb24pO1xuICBjb25zdCB7IGZpcnN0Q2hpbGQgfSA9IGNvbnRhaW5lcjtcblxuICBpZiAob3B0aW9uLnByZXBlbmQgJiYgY29udGFpbmVyLnByZXBlbmQpIHtcbiAgICAvLyBVc2UgYHByZXBlbmRgIGZpcnN0XG4gICAgY29udGFpbmVyLnByZXBlbmQoc3R5bGVOb2RlKTtcbiAgfSBlbHNlIGlmIChvcHRpb24ucHJlcGVuZCAmJiBmaXJzdENoaWxkKSB7XG4gICAgLy8gRmFsbGJhY2sgdG8gYGluc2VydEJlZm9yZWAgbGlrZSBJRSBub3Qgc3VwcG9ydCBgcHJlcGVuZGBcbiAgICBjb250YWluZXIuaW5zZXJ0QmVmb3JlKHN0eWxlTm9kZSwgZmlyc3RDaGlsZCk7XG4gIH0gZWxzZSB7XG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHN0eWxlTm9kZSk7XG4gIH1cblxuICByZXR1cm4gc3R5bGVOb2RlO1xufVxuXG5jb25zdCBjb250YWluZXJDYWNoZSA9IG5ldyBNYXA8RWxlbWVudCwgTm9kZSAmIFBhcmVudE5vZGU+KCk7XG5cbmZ1bmN0aW9uIGZpbmRFeGlzdE5vZGUoa2V5OiBzdHJpbmcsIG9wdGlvbjogT3B0aW9ucyA9IHt9KTogSFRNTFN0eWxlRWxlbWVudCB7XG4gIGNvbnN0IGNvbnRhaW5lciA9IGdldENvbnRhaW5lcihvcHRpb24pO1xuXG4gIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lckNhY2hlLmdldChjb250YWluZXIpPy5jaGlsZHJlbiB8fCBbXSkuZmluZChcbiAgICBub2RlID0+IG5vZGUudGFnTmFtZSA9PT0gJ1NUWUxFJyAmJiBub2RlLmdldEF0dHJpYnV0ZShnZXRNYXJrKG9wdGlvbikpID09PSBrZXlcbiAgKSBhcyBIVE1MU3R5bGVFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ1NTKGtleTogc3RyaW5nLCBvcHRpb246IE9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICBjb25zdCBleGlzdE5vZGUgPSBmaW5kRXhpc3ROb2RlKGtleSwgb3B0aW9uKTtcblxuICBleGlzdE5vZGU/LnBhcmVudE5vZGU/LnJlbW92ZUNoaWxkKGV4aXN0Tm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVDU1MoY3NzOiBzdHJpbmcsIGtleTogc3RyaW5nLCBvcHRpb246IE9wdGlvbnMgPSB7fSk6IEhUTUxTdHlsZUVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgY29udGFpbmVyID0gZ2V0Q29udGFpbmVyKG9wdGlvbik7XG5cbiAgLy8gR2V0IHJlYWwgcGFyZW50XG4gIGlmICghY29udGFpbmVyQ2FjaGUuaGFzKGNvbnRhaW5lcikpIHtcbiAgICBjb25zdCBwbGFjZWhvbGRlclN0eWxlID0gaW5qZWN0Q1NTKCcnLCBvcHRpb24pO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IHBhcmVudE5vZGUgfSA9IHBsYWNlaG9sZGVyU3R5bGU7XG4gICAgY29udGFpbmVyQ2FjaGUuc2V0KGNvbnRhaW5lciwgcGFyZW50Tm9kZSk7XG4gICAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChwbGFjZWhvbGRlclN0eWxlKTtcbiAgfVxuXG4gIGNvbnN0IGV4aXN0Tm9kZSA9IGZpbmRFeGlzdE5vZGUoa2V5LCBvcHRpb24pO1xuXG4gIGlmIChleGlzdE5vZGUpIHtcbiAgICBpZiAob3B0aW9uLmNzcD8ubm9uY2UgJiYgZXhpc3ROb2RlLm5vbmNlICE9PSBvcHRpb24uY3NwPy5ub25jZSkge1xuICAgICAgZXhpc3ROb2RlLm5vbmNlID0gb3B0aW9uLmNzcD8ubm9uY2U7XG4gICAgfVxuXG4gICAgaWYgKGV4aXN0Tm9kZS5pbm5lckhUTUwgIT09IGNzcykge1xuICAgICAgZXhpc3ROb2RlLmlubmVySFRNTCA9IGNzcztcbiAgICB9XG5cbiAgICByZXR1cm4gZXhpc3ROb2RlO1xuICB9XG5cbiAgY29uc3QgbmV3Tm9kZSA9IGluamVjdENTUyhjc3MsIG9wdGlvbik7XG4gIG5ld05vZGU/LnNldEF0dHJpYnV0ZShnZXRNYXJrKG9wdGlvbiksIGtleSk7XG4gIHJldHVybiBuZXdOb2RlO1xufVxuIl19