@amaui/style
Version:
CSS in JS styling solution
65 lines (64 loc) • 2.58 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const AmauiStyleRuleProperty_1 = __importDefault(require("./AmauiStyleRuleProperty"));
const utils_1 = require("./utils");
const optionsDefault = {
priority: 'individual',
};
function sort(amauiStyle, options_ = {}) {
const options = Object.assign(Object.assign({}, optionsDefault), options_);
const method = (values) => {
const value = {
arguments: {
values,
},
};
if ((0, utils_1.is)('array', values)) {
const priority = options.priority;
// Sort by grouping all rules
values.sort((a, b) => {
if (a.value instanceof AmauiStyleRuleProperty_1.default && !(b.value instanceof AmauiStyleRuleProperty_1.default))
return -1;
if ((a.constructor === b.constructor) ||
((0, utils_1.is)('simple', a.value) && (0, utils_1.is)('simple', b.value)))
return 0;
return 1;
});
// Order by priority
if (priority !== 'original')
values.sort((a, b) => {
if (!((a.value instanceof AmauiStyleRuleProperty_1.default && b.value instanceof AmauiStyleRuleProperty_1.default) ||
((0, utils_1.is)('simple', a.value) && (0, utils_1.is)('simple', b.value))))
return 0;
if ((a === null || a === void 0 ? void 0 : a.property) < (b === null || b === void 0 ? void 0 : b.property))
return priority === 'individual' ? -1 : 1;
if ((a === null || a === void 0 ? void 0 : a.property) > (b === null || b === void 0 ? void 0 : b.property))
return priority === 'individual' ? 1 : -1;
});
// Add sorted array to value
value.value = values;
}
return value;
};
// Add method to subscriptions
if (amauiStyle) {
amauiStyle.subscriptions.rules.sort.subscribe(method);
}
const remove = () => {
// Remove method from subscriptions
if (amauiStyle) {
amauiStyle.subscriptions.rules.sort.unsubscribe(method);
}
};
const response = {
methods: {
method,
},
remove,
};
return response;
}
exports.default = sort;