| (function (factory) { |
| if (typeof module === "object" && typeof module.exports === "object") { |
| var v = factory(require, exports); |
| if (v !== undefined) module.exports = v; |
| } |
| else if (typeof define === "function" && define.amd) { |
| define(["require", "exports", "../utils/objects", "../data/webCustomData", "./dataProvider"], factory); |
| } |
| })(function (require, exports) { |
| /*--------------------------------------------------------------------------------------------- |
| * Copyright (c) Microsoft Corporation. All rights reserved. |
| * Licensed under the MIT License. See License.txt in the project root for license information. |
| *--------------------------------------------------------------------------------------------*/ |
| 'use strict'; |
| Object.defineProperty(exports, "__esModule", { value: true }); |
| var objects = require("../utils/objects"); |
| var webCustomData_1 = require("../data/webCustomData"); |
| var dataProvider_1 = require("./dataProvider"); |
| var CSSDataManager = /** @class */ (function () { |
| function CSSDataManager(options) { |
| this.dataProviders = []; |
| this._propertySet = {}; |
| this._atDirectiveSet = {}; |
| this._pseudoClassSet = {}; |
| this._pseudoElementSet = {}; |
| this._properties = []; |
| this._atDirectives = []; |
| this._pseudoClasses = []; |
| this._pseudoElements = []; |
| this.setDataProviders((options === null || options === void 0 ? void 0 : options.useDefaultDataProvider) !== false, (options === null || options === void 0 ? void 0 : options.customDataProviders) || []); |
| } |
| CSSDataManager.prototype.setDataProviders = function (builtIn, providers) { |
| var _a; |
| this.dataProviders = []; |
| if (builtIn) { |
| this.dataProviders.push(new dataProvider_1.CSSDataProvider(webCustomData_1.cssData)); |
| } |
| (_a = this.dataProviders).push.apply(_a, providers); |
| this.collectData(); |
| }; |
| /** |
| * Collect all data & handle duplicates |
| */ |
| CSSDataManager.prototype.collectData = function () { |
| var _this = this; |
| this._propertySet = {}; |
| this._atDirectiveSet = {}; |
| this._pseudoClassSet = {}; |
| this._pseudoElementSet = {}; |
| this.dataProviders.forEach(function (provider) { |
| provider.provideProperties().forEach(function (p) { |
| if (!_this._propertySet[p.name]) { |
| _this._propertySet[p.name] = p; |
| } |
| }); |
| provider.provideAtDirectives().forEach(function (p) { |
| if (!_this._atDirectiveSet[p.name]) { |
| _this._atDirectiveSet[p.name] = p; |
| } |
| }); |
| provider.providePseudoClasses().forEach(function (p) { |
| if (!_this._pseudoClassSet[p.name]) { |
| _this._pseudoClassSet[p.name] = p; |
| } |
| }); |
| provider.providePseudoElements().forEach(function (p) { |
| if (!_this._pseudoElementSet[p.name]) { |
| _this._pseudoElementSet[p.name] = p; |
| } |
| }); |
| }); |
| this._properties = objects.values(this._propertySet); |
| this._atDirectives = objects.values(this._atDirectiveSet); |
| this._pseudoClasses = objects.values(this._pseudoClassSet); |
| this._pseudoElements = objects.values(this._pseudoElementSet); |
| }; |
| CSSDataManager.prototype.getProperty = function (name) { return this._propertySet[name]; }; |
| CSSDataManager.prototype.getAtDirective = function (name) { return this._atDirectiveSet[name]; }; |
| CSSDataManager.prototype.getPseudoClass = function (name) { return this._pseudoClassSet[name]; }; |
| CSSDataManager.prototype.getPseudoElement = function (name) { return this._pseudoElementSet[name]; }; |
| CSSDataManager.prototype.getProperties = function () { |
| return this._properties; |
| }; |
| CSSDataManager.prototype.getAtDirectives = function () { |
| return this._atDirectives; |
| }; |
| CSSDataManager.prototype.getPseudoClasses = function () { |
| return this._pseudoClasses; |
| }; |
| CSSDataManager.prototype.getPseudoElements = function () { |
| return this._pseudoElements; |
| }; |
| CSSDataManager.prototype.isKnownProperty = function (name) { |
| return name.toLowerCase() in this._propertySet; |
| }; |
| CSSDataManager.prototype.isStandardProperty = function (name) { |
| return this.isKnownProperty(name) && |
| (!this._propertySet[name.toLowerCase()].status || this._propertySet[name.toLowerCase()].status === 'standard'); |
| }; |
| return CSSDataManager; |
| }()); |
| exports.CSSDataManager = CSSDataManager; |
| }); |