Spaces:
Running
Running
| ; | |
| exports.__esModule = true; | |
| exports["default"] = void 0; | |
| var _parser = _interopRequireDefault(require("./parser")); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | |
| var Processor = /*#__PURE__*/function () { | |
| function Processor(func, options) { | |
| this.func = func || function noop() {}; | |
| this.funcRes = null; | |
| this.options = options; | |
| } | |
| var _proto = Processor.prototype; | |
| _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) { | |
| if (options === void 0) { | |
| options = {}; | |
| } | |
| var merged = Object.assign({}, this.options, options); | |
| if (merged.updateSelector === false) { | |
| return false; | |
| } else { | |
| return typeof rule !== "string"; | |
| } | |
| }; | |
| _proto._isLossy = function _isLossy(options) { | |
| if (options === void 0) { | |
| options = {}; | |
| } | |
| var merged = Object.assign({}, this.options, options); | |
| if (merged.lossless === false) { | |
| return true; | |
| } else { | |
| return false; | |
| } | |
| }; | |
| _proto._root = function _root(rule, options) { | |
| if (options === void 0) { | |
| options = {}; | |
| } | |
| var parser = new _parser["default"](rule, this._parseOptions(options)); | |
| return parser.root; | |
| }; | |
| _proto._parseOptions = function _parseOptions(options) { | |
| return { | |
| lossy: this._isLossy(options) | |
| }; | |
| }; | |
| _proto._run = function _run(rule, options) { | |
| var _this = this; | |
| if (options === void 0) { | |
| options = {}; | |
| } | |
| return new Promise(function (resolve, reject) { | |
| try { | |
| var root = _this._root(rule, options); | |
| Promise.resolve(_this.func(root)).then(function (transform) { | |
| var string = undefined; | |
| if (_this._shouldUpdateSelector(rule, options)) { | |
| string = root.toString(); | |
| rule.selector = string; | |
| } | |
| return { | |
| transform: transform, | |
| root: root, | |
| string: string | |
| }; | |
| }).then(resolve, reject); | |
| } catch (e) { | |
| reject(e); | |
| return; | |
| } | |
| }); | |
| }; | |
| _proto._runSync = function _runSync(rule, options) { | |
| if (options === void 0) { | |
| options = {}; | |
| } | |
| var root = this._root(rule, options); | |
| var transform = this.func(root); | |
| if (transform && typeof transform.then === "function") { | |
| throw new Error("Selector processor returned a promise to a synchronous call."); | |
| } | |
| var string = undefined; | |
| if (options.updateSelector && typeof rule !== "string") { | |
| string = root.toString(); | |
| rule.selector = string; | |
| } | |
| return { | |
| transform: transform, | |
| root: root, | |
| string: string | |
| }; | |
| } | |
| /** | |
| * Process rule into a selector AST. | |
| * | |
| * @param rule {postcss.Rule | string} The css selector to be processed | |
| * @param options The options for processing | |
| * @returns {Promise<parser.Root>} The AST of the selector after processing it. | |
| */ | |
| ; | |
| _proto.ast = function ast(rule, options) { | |
| return this._run(rule, options).then(function (result) { | |
| return result.root; | |
| }); | |
| } | |
| /** | |
| * Process rule into a selector AST synchronously. | |
| * | |
| * @param rule {postcss.Rule | string} The css selector to be processed | |
| * @param options The options for processing | |
| * @returns {parser.Root} The AST of the selector after processing it. | |
| */ | |
| ; | |
| _proto.astSync = function astSync(rule, options) { | |
| return this._runSync(rule, options).root; | |
| } | |
| /** | |
| * Process a selector into a transformed value asynchronously | |
| * | |
| * @param rule {postcss.Rule | string} The css selector to be processed | |
| * @param options The options for processing | |
| * @returns {Promise<any>} The value returned by the processor. | |
| */ | |
| ; | |
| _proto.transform = function transform(rule, options) { | |
| return this._run(rule, options).then(function (result) { | |
| return result.transform; | |
| }); | |
| } | |
| /** | |
| * Process a selector into a transformed value synchronously. | |
| * | |
| * @param rule {postcss.Rule | string} The css selector to be processed | |
| * @param options The options for processing | |
| * @returns {any} The value returned by the processor. | |
| */ | |
| ; | |
| _proto.transformSync = function transformSync(rule, options) { | |
| return this._runSync(rule, options).transform; | |
| } | |
| /** | |
| * Process a selector into a new selector string asynchronously. | |
| * | |
| * @param rule {postcss.Rule | string} The css selector to be processed | |
| * @param options The options for processing | |
| * @returns {string} the selector after processing. | |
| */ | |
| ; | |
| _proto.process = function process(rule, options) { | |
| return this._run(rule, options).then(function (result) { | |
| return result.string || result.root.toString(); | |
| }); | |
| } | |
| /** | |
| * Process a selector into a new selector string synchronously. | |
| * | |
| * @param rule {postcss.Rule | string} The css selector to be processed | |
| * @param options The options for processing | |
| * @returns {string} the selector after processing. | |
| */ | |
| ; | |
| _proto.processSync = function processSync(rule, options) { | |
| var result = this._runSync(rule, options); | |
| return result.string || result.root.toString(); | |
| }; | |
| return Processor; | |
| }(); | |
| exports["default"] = Processor; | |
| module.exports = exports.default; |