UNPKG

@awesome-fe/translate

Version:
110 lines 5.23 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseNodeRenderer = void 0; var match_some_1 = require("./utils/match-some"); var lodash_1 = require("lodash"); var BaseNodeRenderer = /** @class */ (function () { function BaseNodeRenderer() { this.ignoredAttributeNames = []; this.globalIgnoredAttributeNames = ['attribute_entries', 'title', 'target']; this.positionalAttributes = []; this.inlineAttributeNames = []; } BaseNodeRenderer.prototype.isInlineAttribute = function (it) { return (0, match_some_1.matchSome)(it.name, this.inlineAttributeNames); }; BaseNodeRenderer.prototype.getAttributes = function (node) { var _this = this; var $$keys = node.attributes.$$keys; var result = $$keys .map(function ($$key) { var _a; if (typeof $$key === 'string') { var position = (_a = _this.positionalAttributes.find(function (it) { return it.name === $$key; })) === null || _a === void 0 ? void 0 : _a.position; return [ { position: undefined, name: $$key, value: node.getAttribute($$key), negate: false }, position && { position: position, name: $$key, value: node.getAttribute($$key), negate: false }, ]; } var positionalAttribute = _this.positionalAttributes.find(function (it) { return it.position === $$key.key; }); if (positionalAttribute) { var name = positionalAttribute.name; // 由于 setAttribute 不会更改 $$keys 中的 value,因此这里要重新取一下属性值 var value = node.getAttribute(name); return { position: $$key.key, name: name, value: value, negate: false }; } else { return { position: $$key.key, name: '1', value: $$key.value, negate: false }; } }) .flat() .filter(function (it) { return !!it; }) .filter(function (it) { return !(0, match_some_1.matchSome)(it.name, __spreadArray(__spreadArray([], _this.globalIgnoredAttributeNames, true), _this.ignoredAttributeNames, true)); }); var uniqAttributes = (0, lodash_1.uniqBy)(result, function (it) { return "".concat(it.position, "-").concat(it.name, "=").concat(it.value); }); return moveIdToFirst(uniqAttributes.filter(function (it) { return !correspondingPositionalExists(it, result); })); }; BaseNodeRenderer.prototype.getDefaultAttributes = function (node) { return {}; }; BaseNodeRenderer.prototype.getNonDefaultAttributes = function (node) { var defaultAttributes = this.getDefaultAttributes(node); return this.getAttributes(node).map(function (attr) { if (defaultAttributes[attr.name] === attr.value) { return; } else if (attr.name === 'options') { return __assign(__assign({}, attr), { value: attr.value.split(',').map(function (subValue) { return subValue.trim(); }) .filter(function (it) { return defaultAttributes[attr.name] !== it; }) .join(',') }); } else { return attr; } }).filter(function (it) { return !!it; }); }; BaseNodeRenderer.prototype.getBlockAttributes = function (node) { var _this = this; return this.getNonDefaultAttributes(node).filter(function (it) { return !_this.isInlineAttribute(it); }); }; BaseNodeRenderer.prototype.getInlineAttributes = function (node) { var _this = this; return this.getNonDefaultAttributes(node).filter(function (it) { return _this.isInlineAttribute(it); }); }; return BaseNodeRenderer; }()); exports.BaseNodeRenderer = BaseNodeRenderer; function correspondingPositionalExists(attribute, existingAttributes) { return !attribute.position && !!existingAttributes.find(function (it) { return it.position && it.name === attribute.name && it.value === attribute.value; }); } function moveIdToFirst(attributes) { var id = attributes.find(function (it) { return it.name === 'id'; }); if (!id) { return attributes; } else { return __spreadArray([id], attributes.filter(function (it) { return it !== id; }), true); } } //# sourceMappingURL=base-node-renderer.js.map