vue-safe-html
Version:
A Vue directive which renders sanitised HTML dynamically
1 lines • 1.45 kB
JavaScript
(()=>{"use strict";var e={d:(r,t)=>{for(var n in t)e.o(t,n)&&!e.o(r,n)&&Object.defineProperty(r,n,{enumerable:!0,get:t[n]})},o:(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},r={};e.r(r),e.d(r,{allowedTags:()=>n,createDirective:()=>i,default:()=>a});var t=/<\/?[^>]+(>|$)/g,n=["a","b","br","strong","i","em","mark","small","del","ins","sub","sup"],o=function(e){return Array.isArray(e)&&e.every((function(e){return"string"==typeof e}))};const i=function(e,r){var i=o(e)?e:n;return function(e,n){var a=i;if(n.modifiers){var l=Object.keys(n.modifiers);l.length>0&&o(l)&&(a=l)}var u=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return e?0===r.length?e.replace(t,""):e.replace(/<(\/*)(\w+)([^>]*)>/g,(function(e,t,o,i){if(r.includes(o)){if(t)return"</".concat(o,">");var a=i.split(/\s+/).filter((function(e){return n.includes(e.split("=")[0])})).join(" ");return"<".concat(o).concat(a?" ".concat(a):"",">")}return""})):""}(n.value,a,r);"string"==typeof e.innerHTML?e.innerHTML=u:e.data.domProps={innerHTML:u}}},a={install:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.directive("safe-html",i(r.allowedTags,r.allowedAttributes))}};module.exports.VueSafeHTML=r})();