This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.
2021-04-02 02:24:13 +03:00

80 lines
3.0 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Paths_1 = require("./Paths");
const Resources_1 = require("./Resources");
async function getProjectStylesXMLPathAsync(projectRoot, { kind } = {}) {
return Paths_1.getResourceXMLPathAsync(projectRoot, { kind, name: 'styles' });
}
exports.getProjectStylesXMLPathAsync = getProjectStylesXMLPathAsync;
function ensureDefaultStyleResourceXML(xml) {
var _a;
xml = Resources_1.ensureDefaultResourceXML(xml);
if (!Array.isArray((_a = xml === null || xml === void 0 ? void 0 : xml.resources) === null || _a === void 0 ? void 0 : _a.style)) {
xml.resources.style = [];
}
return xml;
}
function getStyleParent(xml, parent) {
var _a, _b, _c, _d;
const app = (_d = (_c = (_b = (_a = xml === null || xml === void 0 ? void 0 : xml.resources) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.filter) === null || _c === void 0 ? void 0 : _c.call(_b, (e) => {
let matches = e.$.name === parent.name;
if (parent.parent != null && matches) {
matches = e.$.parent === parent.parent;
}
return matches;
})) === null || _d === void 0 ? void 0 : _d[0];
return app !== null && app !== void 0 ? app : null;
}
exports.getStyleParent = getStyleParent;
function getStylesItem({ name, xml, parent, }) {
xml = ensureDefaultStyleResourceXML(xml);
const appTheme = getStyleParent(xml, parent);
if (!appTheme) {
return null;
}
if (appTheme.item) {
const existingItem = appTheme.item.filter(_item => _item.$.name === name)[0];
// Don't want to 2 of the same item, so if one exists, we overwrite it
if (existingItem) {
return existingItem;
}
}
return null;
}
exports.getStylesItem = getStylesItem;
function setStylesItem({ item, xml, parent, }) {
xml = ensureDefaultStyleResourceXML(xml);
let appTheme = getStyleParent(xml, parent);
if (!appTheme) {
appTheme = Resources_1.buildResourceGroup(parent);
xml.resources.style.push(appTheme);
}
if (appTheme.item) {
const existingItem = appTheme.item.filter(_item => _item.$.name === item.$.name)[0];
// Don't want to 2 of the same item, so if one exists, we overwrite it
if (existingItem) {
existingItem._ = item._;
}
else {
appTheme.item.push(item);
}
}
else {
appTheme.item = [item];
}
return xml;
}
exports.setStylesItem = setStylesItem;
function removeStylesItem({ name, xml, parent, }) {
xml = ensureDefaultStyleResourceXML(xml);
const appTheme = getStyleParent(xml, parent);
if (appTheme === null || appTheme === void 0 ? void 0 : appTheme.item) {
const index = appTheme.item.findIndex((e) => e.$.name === name);
if (index > -1) {
appTheme.item.splice(index, 1);
}
}
return xml;
}
exports.removeStylesItem = removeStylesItem;
//# sourceMappingURL=Styles.js.map