UNPKG

@aurigma/design-atoms

Version:

Design Atoms is a part of Customer's Canvas SDK which allows for manipulating individual design elements through your code.

136 lines 5.02 kB
var __values = (this && this.__values) || function(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); }; var SelectorType; (function (SelectorType) { SelectorType[SelectorType["Class"] = 0] = "Class"; SelectorType[SelectorType["Name"] = 1] = "Name"; SelectorType[SelectorType["Id"] = 2] = "Id"; })(SelectorType || (SelectorType = {})); ; var Selector = /** @class */ (function () { function Selector(value, type) { this._type = type; this._value = value; } Selector.fromString = function (selectorItem) { if (selectorItem == null || selectorItem == '') return null; if (selectorItem.startsWith('#')) { if (selectorItem.length > 1) return new Selector(selectorItem.substring(1), SelectorType.Id); else return null; } if (selectorItem.startsWith('.')) { if (selectorItem.length > 1) return new Selector(selectorItem.substring(1), SelectorType.Class); else return null; } return new Selector(selectorItem, SelectorType.Name); }; Selector.prototype.match = function (item) { switch (this._type) { case SelectorType.Class: var mC = this._matchClass(item.class); return mC; case SelectorType.Id: var mId = this._matchId(item.id); return mId; case SelectorType.Name: var mName = this._matchName(item.name); return mName; default: throw new Error("Unexpected selector type: " + SelectorType[this._type]); } }; Selector.prototype._matchClass = function (itemRawClass) { if (itemRawClass == null) return false; var classes = itemRawClass.split(" "); if (classes.length == 0) return false; return classes.includes(this._value); }; Selector.prototype._matchId = function (itemId) { return itemId == this._value; }; Selector.prototype._matchName = function (itemName) { return itemName.toLowerCase() == this._value.toLowerCase(); }; return Selector; }()); var SelectorsModel = /** @class */ (function () { function SelectorsModel(selectors) { this._selectors = selectors; } SelectorsModel.prototype.match = function (item) { var e_1, _a; if (this._selectors == null) return false; try { for (var _b = __values(this._selectors), _c = _b.next(); !_c.done; _c = _b.next()) { var selector = _c.value; if (selector.match(item)) return true; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } return false; }; return SelectorsModel; }()); var QuerySelector = /** @class */ (function () { function QuerySelector() { } QuerySelector.prototype.process = function (items, selectors) { var result = []; var selectorsModel = this._parseSelectors(selectors); items.forEach(function (item) { if (selectorsModel.match(item)) result.push(item); }); return result; }; QuerySelector.prototype._parseSelectors = function (selectors) { var e_2, _a; var parsedSelectors = []; var splitItems = selectors.split(' '); try { for (var splitItems_1 = __values(splitItems), splitItems_1_1 = splitItems_1.next(); !splitItems_1_1.done; splitItems_1_1 = splitItems_1.next()) { var item = splitItems_1_1.value; if (item == null || item == "") continue; var selector = Selector.fromString(item); if (selector) parsedSelectors.push(selector); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (splitItems_1_1 && !splitItems_1_1.done && (_a = splitItems_1.return)) _a.call(splitItems_1); } finally { if (e_2) throw e_2.error; } } return new SelectorsModel(parsedSelectors); }; return QuerySelector; }()); export { QuerySelector }; //# sourceMappingURL=QuerySelector.js.map