@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
JavaScript
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