UNPKG

ng-zorro-antd

Version:

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

80 lines 10.5 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, options = {}) { if (!canUseDom()) { return null; } const styleNode = document.createElement('style'); if (options.cspNonce) { styleNode.nonce = options.cspNonce; } styleNode.innerHTML = css; const container = getContainer(options); const { firstChild } = container; if (options.prepend && container.prepend) { // Use `prepend` first container.prepend(styleNode); } else if (options.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, options = {}) { const container = getContainer(options); // Get real parent if (!containerCache.has(container)) { const placeholderStyle = injectCSS('', options); // @ts-ignore const { parentNode } = placeholderStyle; containerCache.set(container, parentNode); parentNode.removeChild(placeholderStyle); } const existNode = findExistNode(key, options); if (existNode) { if (options.cspNonce && existNode.nonce !== options.cspNonce) { existNode.nonce = options.cspNonce; } if (existNode.innerHTML !== css) { existNode.innerHTML = css; } return existNode; } const newNode = injectCSS(css, options); newNode?.setAttribute(getMark(options), key); return newNode; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvcmUvdXRpbC9keW5hbWljLWNzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFJSDs7R0FFRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsTUFBTSxRQUFRLEdBQUcsYUFBMEIsQ0FBQztBQUU1QyxTQUFTLE9BQU8sQ0FBQyxFQUFFLElBQUksS0FBYyxFQUFFO0lBQ3JDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQVNELFNBQVMsWUFBWSxDQUFDLE1BQWU7SUFDbkMsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLE9BQU8sSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7QUFDL0IsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsR0FBVyxFQUFFLFVBQW1CLEVBQUU7SUFDMUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQixTQUFTLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDckMsQ0FBQztJQUNELFNBQVMsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO0lBRTFCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBRWpDLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekMsc0JBQXNCO1FBQ3RCLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsQ0FBQztTQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUN6QywyREFBMkQ7UUFDM0QsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDaEQsQ0FBQztTQUFNLENBQUM7UUFDTixTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7QUFFN0QsU0FBUyxhQUFhLENBQUMsR0FBVyxFQUFFLFNBQWtCLEVBQUU7SUFDdEQsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXZDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ25FLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQzNELENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsR0FBVyxFQUFFLFNBQWtCLEVBQUU7SUFDekQsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU3QyxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxHQUFXLEVBQUUsR0FBVyxFQUFFLFVBQW1CLEVBQUU7SUFDdkUsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXhDLGtCQUFrQjtJQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRCxhQUFhO1FBQ2IsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLGdCQUFnQixDQUFDO1FBQ3hDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUU5QyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLFNBQVMsQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdELFNBQVMsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNyQyxDQUFDO1FBRUQsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQzVCLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4QyxPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3QyxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuLyoqXG4gKiBTeW5jIGZyb20gcmMtdXRpbCBbaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0LWNvbXBvbmVudC91dGlsXVxuICovXG5pbXBvcnQgeyBjYW5Vc2VEb20gfSBmcm9tICcuL2Nhbi11c2UtZG9tJztcblxuY29uc3QgTUFSS19LRVkgPSBgcmMtdXRpbC1rZXlgIGFzIE56U2FmZUFueTtcblxuZnVuY3Rpb24gZ2V0TWFyayh7IG1hcmsgfTogT3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcbiAgaWYgKG1hcmspIHtcbiAgICByZXR1cm4gbWFyay5zdGFydHNXaXRoKCdkYXRhLScpID8gbWFyayA6IGBkYXRhLSR7bWFya31gO1xuICB9XG4gIHJldHVybiBNQVJLX0tFWTtcbn1cblxuaW50ZXJmYWNlIE9wdGlvbnMge1xuICBhdHRhY2hUbz86IEVsZW1lbnQ7XG4gIGNzcE5vbmNlPzogc3RyaW5nIHwgbnVsbDtcbiAgcHJlcGVuZD86IGJvb2xlYW47XG4gIG1hcms/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldENvbnRhaW5lcihvcHRpb246IE9wdGlvbnMpOiBIVE1MRWxlbWVudCB8IEVsZW1lbnQge1xuICBpZiAob3B0aW9uLmF0dGFjaFRvKSB7XG4gICAgcmV0dXJuIG9wdGlvbi5hdHRhY2hUbztcbiAgfVxuXG4gIGNvbnN0IGhlYWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gIHJldHVybiBoZWFkIHx8IGRvY3VtZW50LmJvZHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDU1MoY3NzOiBzdHJpbmcsIG9wdGlvbnM6IE9wdGlvbnMgPSB7fSk6IEhUTUxTdHlsZUVsZW1lbnQgfCBudWxsIHtcbiAgaWYgKCFjYW5Vc2VEb20oKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3Qgc3R5bGVOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgaWYgKG9wdGlvbnMuY3NwTm9uY2UpIHtcbiAgICBzdHlsZU5vZGUubm9uY2UgPSBvcHRpb25zLmNzcE5vbmNlO1xuICB9XG4gIHN0eWxlTm9kZS5pbm5lckhUTUwgPSBjc3M7XG5cbiAgY29uc3QgY29udGFpbmVyID0gZ2V0Q29udGFpbmVyKG9wdGlvbnMpO1xuICBjb25zdCB7IGZpcnN0Q2hpbGQgfSA9IGNvbnRhaW5lcjtcblxuICBpZiAob3B0aW9ucy5wcmVwZW5kICYmIGNvbnRhaW5lci5wcmVwZW5kKSB7XG4gICAgLy8gVXNlIGBwcmVwZW5kYCBmaXJzdFxuICAgIGNvbnRhaW5lci5wcmVwZW5kKHN0eWxlTm9kZSk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5wcmVwZW5kICYmIGZpcnN0Q2hpbGQpIHtcbiAgICAvLyBGYWxsYmFjayB0byBgaW5zZXJ0QmVmb3JlYCBsaWtlIElFIG5vdCBzdXBwb3J0IGBwcmVwZW5kYFxuICAgIGNvbnRhaW5lci5pbnNlcnRCZWZvcmUoc3R5bGVOb2RlLCBmaXJzdENoaWxkKTtcbiAgfSBlbHNlIHtcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoc3R5bGVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBzdHlsZU5vZGU7XG59XG5cbmNvbnN0IGNvbnRhaW5lckNhY2hlID0gbmV3IE1hcDxFbGVtZW50LCBOb2RlICYgUGFyZW50Tm9kZT4oKTtcblxuZnVuY3Rpb24gZmluZEV4aXN0Tm9kZShrZXk6IHN0cmluZywgb3B0aW9uOiBPcHRpb25zID0ge30pOiBIVE1MU3R5bGVFbGVtZW50IHtcbiAgY29uc3QgY29udGFpbmVyID0gZ2V0Q29udGFpbmVyKG9wdGlvbik7XG5cbiAgcmV0dXJuIEFycmF5LmZyb20oY29udGFpbmVyQ2FjaGUuZ2V0KGNvbnRhaW5lcik/LmNoaWxkcmVuIHx8IFtdKS5maW5kKFxuICAgIG5vZGUgPT4gbm9kZS50YWdOYW1lID09PSAnU1RZTEUnICYmIG5vZGUuZ2V0QXR0cmlidXRlKGdldE1hcmsob3B0aW9uKSkgPT09IGtleVxuICApIGFzIEhUTUxTdHlsZUVsZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVDU1Moa2V5OiBzdHJpbmcsIG9wdGlvbjogT3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gIGNvbnN0IGV4aXN0Tm9kZSA9IGZpbmRFeGlzdE5vZGUoa2V5LCBvcHRpb24pO1xuXG4gIGV4aXN0Tm9kZT8ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQoZXhpc3ROb2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUNTUyhjc3M6IHN0cmluZywga2V5OiBzdHJpbmcsIG9wdGlvbnM6IE9wdGlvbnMgPSB7fSk6IEhUTUxTdHlsZUVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgY29udGFpbmVyID0gZ2V0Q29udGFpbmVyKG9wdGlvbnMpO1xuXG4gIC8vIEdldCByZWFsIHBhcmVudFxuICBpZiAoIWNvbnRhaW5lckNhY2hlLmhhcyhjb250YWluZXIpKSB7XG4gICAgY29uc3QgcGxhY2Vob2xkZXJTdHlsZSA9IGluamVjdENTUygnJywgb3B0aW9ucyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgcGFyZW50Tm9kZSB9ID0gcGxhY2Vob2xkZXJTdHlsZTtcbiAgICBjb250YWluZXJDYWNoZS5zZXQoY29udGFpbmVyLCBwYXJlbnROb2RlKTtcbiAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKHBsYWNlaG9sZGVyU3R5bGUpO1xuICB9XG5cbiAgY29uc3QgZXhpc3ROb2RlID0gZmluZEV4aXN0Tm9kZShrZXksIG9wdGlvbnMpO1xuXG4gIGlmIChleGlzdE5vZGUpIHtcbiAgICBpZiAob3B0aW9ucy5jc3BOb25jZSAmJiBleGlzdE5vZGUubm9uY2UgIT09IG9wdGlvbnMuY3NwTm9uY2UpIHtcbiAgICAgIGV4aXN0Tm9kZS5ub25jZSA9IG9wdGlvbnMuY3NwTm9uY2U7XG4gICAgfVxuXG4gICAgaWYgKGV4aXN0Tm9kZS5pbm5lckhUTUwgIT09IGNzcykge1xuICAgICAgZXhpc3ROb2RlLmlubmVySFRNTCA9IGNzcztcbiAgICB9XG5cbiAgICByZXR1cm4gZXhpc3ROb2RlO1xuICB9XG5cbiAgY29uc3QgbmV3Tm9kZSA9IGluamVjdENTUyhjc3MsIG9wdGlvbnMpO1xuICBuZXdOb2RlPy5zZXRBdHRyaWJ1dGUoZ2V0TWFyayhvcHRpb25zKSwga2V5KTtcbiAgcmV0dXJuIG5ld05vZGU7XG59XG4iXX0=