@gitlab/ui
Version:
GitLab UI Components
76 lines (60 loc) • 1.84 kB
JavaScript
import { sanitize } from 'dompurify';
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
var DEFAULT_CONFIG = {
RETURN_DOM_FRAGMENT: true
};
var transform = function transform(el, binding) {
if (binding.oldValue !== binding.value) {
var _binding$arg;
var config = _objectSpread2(_objectSpread2({}, DEFAULT_CONFIG), (_binding$arg = binding.arg) !== null && _binding$arg !== void 0 ? _binding$arg : {});
while (el.firstChild) {
el.firstChild.remove();
}
el.appendChild(sanitize(binding.value, config));
}
};
var SafeHtmlDirective = {
bind: transform,
update: transform
};
export default SafeHtmlDirective;