dom-mutator
Advanced tools
Comparing version 0.2.0 to 0.2.1
@@ -65,5 +65,9 @@ 'use strict'; | ||
var transformContainer = /*#__PURE__*/document.createElement('div'); | ||
var transformContainer; | ||
function getTransformedHTML(html) { | ||
if (!transformContainer) { | ||
transformContainer = document.createElement('div'); | ||
} | ||
transformContainer.innerHTML = html; | ||
@@ -269,9 +273,16 @@ return transformContainer.innerHTML; | ||
var observer = /*#__PURE__*/new MutationObserver(function () { | ||
refreshAllElementSets(); | ||
}); | ||
var observer; | ||
function disconnectGlobalObserver() { | ||
observer.disconnect(); | ||
observer && observer.disconnect(); | ||
} | ||
function connectGlobalObserver() { | ||
/* istanbul ignore next */ | ||
if (typeof document === 'undefined') return; | ||
if (!observer) { | ||
observer = new MutationObserver(function () { | ||
refreshAllElementSets(); | ||
}); | ||
} | ||
refreshAllElementSets(); | ||
@@ -287,7 +298,14 @@ observer.observe(document.body, { | ||
function mutate(selector, type, value) { | ||
// Invalid mutation | ||
/* istanbul ignore next */ | ||
if (typeof document === 'undefined') { | ||
// Not in a browser | ||
return function () {// do nothing | ||
}; | ||
} // Invalid mutation | ||
var attr = getAttribute(type, value); | ||
if (!attr) { | ||
return function () {// nothing | ||
return function () {// do nothing | ||
}; | ||
@@ -294,0 +312,0 @@ } |
@@ -1,2 +0,2 @@ | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e={},t=new Map,n=1,r=/^([a-zA-Z:_][a-zA-Z0-9:_.-]*)\s*=\s*"([^"]*)"/;function a(e,n){var r=t.get(e);if(r||t.set(e,r={}),!r[n]){var a={externalValue:s(e,n),lastValue:"",observer:new MutationObserver((function(){var t=s(e,n);t!==a.lastValue&&(a.externalValue=t,i(e,n))})),mutations:[]};r[n]=a,a.observer.observe(e,function(e){return"html"===e?{childList:!0,subtree:!0,attributes:!1,characterData:!1}:{childList:!1,subtree:!1,attributes:!0,attributeFilter:[e]}}(n))}return r[n]}var u=document.createElement("div");function s(e,t){return"html"===t?e.innerHTML:"className"===t?e.className:e.getAttribute(t)||""}function i(t,n){var u=a(t,n),i=u.externalValue;u.mutations.forEach((function(t){var n=e[t];n&&(i=function(e,t){if("addClass"===e.type){var n=t.split(" ");return e.value.split(" ").forEach((function(e){n.includes(e)||n.push(e)})),n.filter(Boolean).join(" ")}if("removeClass"===e.type){var a=t.split(" "),u=e.value.split(" ");return a.filter((function(e){return!u.includes(e)})).join(" ")}if("setHTML"===e.type)return e.value;if("appendHTML"===e.type)return t+e.value;if("setAttribute"===e.type){var s=r.exec(e.value);return(null==s?void 0:s[2])||""}return t}(n,i))}));var l=s(t,n);i!==l&&(u.lastValue=i,function(e,t,n){"html"===t?e.innerHTML=n:"className"===t?n?e.className=n:e.removeAttribute("class"):n?e.setAttribute(t,n):e.removeAttribute(t)}(t,n,i))}function l(e,t){if(["addClass","removeClass"].includes(e))return"className";if(["appendHTML","setHTML"].includes(e))return"html";if("setAttribute"===e){var n=r.exec(t);if(null!=n&&n[1]){var a=n[1];return"class"===a||"classname"===a?"className":a}}return""}function c(n,r){var u=e[n];if(u){u.elements.delete(r);var s=l(u.type,u.value),c=a(r,s),o=c.mutations.indexOf(n);-1!==o&&c.mutations.splice(o,1),i(r,s),c.mutations.length||function(e,n){var r=t.get(e);r&&(r[n]&&r[n].observer.disconnect(),delete r[n])}(r,s)}}function o(t){var n=e[t];if(n){var r=new Set(n.elements),u=new Set;document.body.querySelectorAll(n.selector).forEach((function(n){u.add(n),r.has(n)||function(t,n){var r=e[t];if(r){r.elements.add(n);var u=l(r.type,r.value);a(n,u).mutations.push(t),i(n,u)}}(t,n)})),r.forEach((function(e){u.has(e)||c(t,e)}))}}function f(){Object.keys(e).forEach((function(e){o(e)}))}var v=new MutationObserver((function(){f()}));function d(){f(),v.observe(document.body,{childList:!0,subtree:!0,attributes:!1,characterData:!1})}d(),exports.connectGlobalObserver=d,exports.default=function(t,r,a){if(!l(r,a))return function(){};var s=function(t,r,a){"appendHTML"!==r&&"setHTML"!==r||(u.innerHTML=a,a=u.innerHTML);var s=""+n++;return e[s]={selector:t,type:r,value:a,elements:new Set},o(s),s}(t,r,a);return function(){!function(t){var n=e[t];n&&(new Set(n.elements).forEach((function(e){c(t,e)})),e[t].elements.clear(),delete e[t])}(s)}},exports.disconnectGlobalObserver=function(){v.disconnect()}; | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t,n={},r=new Map,a=1,u=/^([a-zA-Z:_][a-zA-Z0-9:_.-]*)\s*=\s*"([^"]*)"/;function i(e,t){var n=r.get(e);if(n||r.set(e,n={}),!n[t]){var a={externalValue:s(e,t),lastValue:"",observer:new MutationObserver((function(){var n=s(e,t);n!==a.lastValue&&(a.externalValue=n,l(e,t))})),mutations:[]};n[t]=a,a.observer.observe(e,function(e){return"html"===e?{childList:!0,subtree:!0,attributes:!1,characterData:!1}:{childList:!1,subtree:!1,attributes:!0,attributeFilter:[e]}}(t))}return n[t]}function s(e,t){return"html"===t?e.innerHTML:"className"===t?e.className:e.getAttribute(t)||""}function l(e,t){var r=i(e,t),a=r.externalValue;r.mutations.forEach((function(e){var t=n[e];t&&(a=function(e,t){if("addClass"===e.type){var n=t.split(" ");return e.value.split(" ").forEach((function(e){n.includes(e)||n.push(e)})),n.filter(Boolean).join(" ")}if("removeClass"===e.type){var r=t.split(" "),a=e.value.split(" ");return r.filter((function(e){return!a.includes(e)})).join(" ")}if("setHTML"===e.type)return e.value;if("appendHTML"===e.type)return t+e.value;if("setAttribute"===e.type){var i=u.exec(e.value);return(null==i?void 0:i[2])||""}return t}(t,a))}));var l=s(e,t);a!==l&&(r.lastValue=a,function(e,t,n){"html"===t?e.innerHTML=n:"className"===t?n?e.className=n:e.removeAttribute("class"):n?e.setAttribute(t,n):e.removeAttribute(t)}(e,t,a))}function o(e,t){if(["addClass","removeClass"].includes(e))return"className";if(["appendHTML","setHTML"].includes(e))return"html";if("setAttribute"===e){var n=u.exec(t);if(null!=n&&n[1]){var r=n[1];return"class"===r||"classname"===r?"className":r}}return""}function c(e,t){var a=n[e];if(a){a.elements.delete(t);var u=o(a.type,a.value),s=i(t,u),c=s.mutations.indexOf(e);-1!==c&&s.mutations.splice(c,1),l(t,u),s.mutations.length||function(e,t){var n=r.get(e);n&&(n[t]&&n[t].observer.disconnect(),delete n[t])}(t,u)}}function f(e){var t=n[e];if(t){var r=new Set(t.elements),a=new Set;document.body.querySelectorAll(t.selector).forEach((function(t){a.add(t),r.has(t)||function(e,t){var r=n[e];if(r){r.elements.add(t);var a=o(r.type,r.value);i(t,a).mutations.push(e),l(t,a)}}(e,t)})),r.forEach((function(t){a.has(t)||c(e,t)}))}}function v(){Object.keys(n).forEach((function(e){f(e)}))}function d(){"undefined"!=typeof document&&(t||(t=new MutationObserver((function(){v()}))),v(),t.observe(document.body,{childList:!0,subtree:!0,attributes:!1,characterData:!1}))}d(),exports.connectGlobalObserver=d,exports.default=function(t,r,u){if("undefined"==typeof document)return function(){};if(!o(r,u))return function(){};var i=function(t,r,u){var i;"appendHTML"!==r&&"setHTML"!==r||(i=u,e||(e=document.createElement("div")),e.innerHTML=i,u=e.innerHTML);var s=""+a++;return n[s]={selector:t,type:r,value:u,elements:new Set},f(s),s}(t,r,u);return function(){!function(e){var t=n[e];t&&(new Set(t.elements).forEach((function(t){c(e,t)})),n[e].elements.clear(),delete n[e])}(i)}},exports.disconnectGlobalObserver=function(){t&&t.disconnect()}; | ||
//# sourceMappingURL=dom-mutator.cjs.production.min.js.map |
@@ -61,5 +61,9 @@ var mutations = {}; | ||
var transformContainer = /*#__PURE__*/document.createElement('div'); | ||
var transformContainer; | ||
function getTransformedHTML(html) { | ||
if (!transformContainer) { | ||
transformContainer = document.createElement('div'); | ||
} | ||
transformContainer.innerHTML = html; | ||
@@ -265,9 +269,16 @@ return transformContainer.innerHTML; | ||
var observer = /*#__PURE__*/new MutationObserver(function () { | ||
refreshAllElementSets(); | ||
}); | ||
var observer; | ||
function disconnectGlobalObserver() { | ||
observer.disconnect(); | ||
observer && observer.disconnect(); | ||
} | ||
function connectGlobalObserver() { | ||
/* istanbul ignore next */ | ||
if (typeof document === 'undefined') return; | ||
if (!observer) { | ||
observer = new MutationObserver(function () { | ||
refreshAllElementSets(); | ||
}); | ||
} | ||
refreshAllElementSets(); | ||
@@ -283,7 +294,14 @@ observer.observe(document.body, { | ||
function mutate(selector, type, value) { | ||
// Invalid mutation | ||
/* istanbul ignore next */ | ||
if (typeof document === 'undefined') { | ||
// Not in a browser | ||
return function () {// do nothing | ||
}; | ||
} // Invalid mutation | ||
var attr = getAttribute(type, value); | ||
if (!attr) { | ||
return function () {// nothing | ||
return function () {// do nothing | ||
}; | ||
@@ -290,0 +308,0 @@ } |
{ | ||
"version": "0.2.0", | ||
"version": "0.2.1", | ||
"license": "MIT", | ||
@@ -4,0 +4,0 @@ "main": "dist/index.js", |
@@ -86,4 +86,7 @@ export type MutationType = | ||
const transformContainer = document.createElement('div'); | ||
let transformContainer: HTMLDivElement; | ||
function getTransformedHTML(html: string) { | ||
if (!transformContainer) { | ||
transformContainer = document.createElement('div'); | ||
} | ||
transformContainer.innerHTML = html; | ||
@@ -281,9 +284,16 @@ return transformContainer.innerHTML; | ||
// Observer for elements that don't exist in the DOM yet | ||
const observer = new MutationObserver(() => { | ||
refreshAllElementSets(); | ||
}); | ||
let observer: MutationObserver; | ||
export function disconnectGlobalObserver() { | ||
observer.disconnect(); | ||
observer && observer.disconnect(); | ||
} | ||
export function connectGlobalObserver() { | ||
/* istanbul ignore next */ | ||
if (typeof document === 'undefined') return; | ||
if (!observer) { | ||
observer = new MutationObserver(() => { | ||
refreshAllElementSets(); | ||
}); | ||
} | ||
refreshAllElementSets(); | ||
@@ -304,2 +314,10 @@ observer.observe(document.body, { | ||
): () => void { | ||
/* istanbul ignore next */ | ||
if (typeof document === 'undefined') { | ||
// Not in a browser | ||
return () => { | ||
// do nothing | ||
}; | ||
} | ||
// Invalid mutation | ||
@@ -309,3 +327,3 @@ const attr = getAttribute(type, value); | ||
return () => { | ||
// nothing | ||
// do nothing | ||
}; | ||
@@ -312,0 +330,0 @@ } |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
80490
850