@notelix/web-marker 1.0.13 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import Context from "./Context";
2
2
  interface EventHandler {
3
- onHighlightClick?: (context: Context, element: HTMLElement) => void;
4
- onHighlightHoverStateChange?: (context: Context, element: HTMLElement, hovering: boolean) => void;
3
+ onHighlightClick?: (context: Context, element: HTMLElement, e: Event) => void;
4
+ onHighlightHoverStateChange?: (context: Context, element: HTMLElement, hovering: boolean, e: Event) => void;
5
5
  }
6
6
  export default EventHandler;
@@ -1,5 +1,7 @@
1
1
  import Context from "./Context";
2
2
  interface HighlightPainter {
3
3
  paintHighlight: (context: Context, element: HTMLElement) => void;
4
+ beforePaintHighlight?: (context: Context) => void;
5
+ afterPaintHighlight?: (context: Context) => void;
4
6
  }
5
7
  export default HighlightPainter;
@@ -54,5 +54,7 @@ declare class Marker {
54
54
  private buildContext;
55
55
  private adjustRangeAroundBlackListedElement;
56
56
  getSerializedRangeFromUid(uid: string): SerializedRange | null;
57
+ resolveSerializedRangeOffsetInText(text: any, serializedRange: SerializedRange): number;
57
58
  }
58
59
  export default Marker;
60
+ export type { MarkerConstructorArgs };
@@ -2,7 +2,6 @@ interface SerializedRange {
2
2
  uid: string;
3
3
  textBefore: string;
4
4
  text: string;
5
- originalText: string;
6
5
  textAfter: string;
7
6
  }
8
7
  export default SerializedRange;
@@ -1,8 +1,12 @@
1
- import Marker from "./lib/classes/Marker";
1
+ import Marker, { MarkerConstructorArgs } from "./lib/classes/Marker";
2
2
  import DeserializationError, { isDeserializationError } from "./lib/classes/errors/DeserializationError";
3
+ import SerializedRange from "./lib/classes/SerializedRange";
4
+ import Context from "./lib/classes/Context";
5
+ import EventHandler from "./lib/classes/EventHandler";
6
+ import HighlightPainter from "./lib/classes/HighlightPainter";
3
7
  declare const Errors: {
4
- DeserializationError: typeof DeserializationError;
5
8
  isDeserializationError: typeof isDeserializationError;
6
9
  };
7
10
  export { Marker };
8
11
  export { Errors };
12
+ export type { Context, EventHandler, HighlightPainter, SerializedRange, MarkerConstructorArgs, DeserializationError, };
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t():"function"===typeof define&&define.amd?define([],t):"object"===typeof exports?exports["web-marker"]=t():e["web-marker"]=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function i(e){if("undefined"===typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=function(e,t){if(e){if("string"===typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e))){var t=0,n=function(){};return{s:n,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o,l=!0,a=!1;return{s:function(){i=e[Symbol.iterator]()},n:function(){var e=i.next();return l=e.done,e},e:function(e){a=!0,o=e},f:function(){try{l||null==i.return||i.return()}finally{if(a)throw o}}}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var a;n.r(t),n.d(t,"Marker",(function(){return R})),n.d(t,"Errors",(function(){return A}));var u=new Uint8Array(16);function f(){if(!a&&!(a="undefined"!==typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!==typeof msCrypto&&"function"===typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return a(u)}var s=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;for(var d=function(e){return"string"===typeof e&&s.test(e)},c=[],h=0;h<256;++h)c.push((h+256).toString(16).substr(1));var v=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(c[e[t+0]]+c[e[t+1]]+c[e[t+2]]+c[e[t+3]]+"-"+c[e[t+4]]+c[e[t+5]]+"-"+c[e[t+6]]+c[e[t+7]]+"-"+c[e[t+8]]+c[e[t+9]]+"-"+c[e[t+10]]+c[e[t+11]]+c[e[t+12]]+c[e[t+13]]+c[e[t+14]]+c[e[t+15]]).toLowerCase();if(!d(n))throw TypeError("Stringified UUID is invalid");return n};var g=function(e,t,n){var r=(e=e||{}).random||(e.rng||f)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(var i=0;i<16;++i)t[n+i]=r[i];return t}return v(r)};function m(){return g()}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e){return(y=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function x(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function T(e){return(T="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function b(e,t){return!t||"object"!==T(t)&&"function"!==typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function E(e,t,n){return(E=x()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&p(i,n.prototype),i}).apply(null,arguments)}function N(e){var t="function"===typeof Map?new Map:void 0;return(N=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!==typeof e)throw new TypeError("Super expression must either be null or a function");if("undefined"!==typeof t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return E(e,arguments,y(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),p(r,e)})(e)}var k=function(e){!function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&p(e,t)}(r,e);var t,n=(t=r,function(){var e,n=y(t);if(x()){var r=y(this).constructor;e=Reflect.construct(n,arguments,r)}else e=n.apply(this,arguments);return b(this,e)});function r(){return o(this,r),n.apply(this,arguments)}return r}(N(Error));var C=[{textBefore:!0,textAfter:!0},{textBefore:!1,textAfter:!0},{textBefore:!0,textAfter:!1},{textBefore:!1,textAfter:!1}];var S=document.createElement("style");S.innerText=".".concat("web-marker-black-listed-element"," {display:none;};");var O={paintHighlight:function(e,t){console.log("paintHighlight",e,t),t.style.textDecoration="underline",t.style.textDecorationColor="orange"}},w={onHighlightClick:function(e,t){console.log("onHighlightClick",e,t)},onHighlightHoverStateChange:function(e,t,n){console.log("onHighlightHoverStateChange",e,t),t.style.backgroundColor=n?"#FFE49C":""}},H=function(){function e(t){var n=this,r=t.rootElement,i=t.highlightPainter,l=t.eventHandler;o(this,e),this.rootElement=void 0,this.eventHandler=void 0,this.highlightPainter=void 0,this.state={lastHoverId:"",uidToSerializedRange:{}},this.clickListener=function(e){if(e.target&&e.target instanceof HTMLElement){var t=e.target,r=t.getAttribute("highlight-id");r&&n.eventHandler.onHighlightClick&&n.eventHandler.onHighlightClick(n.buildContext(r),t)}},this.mouseoverListener=function(e){if(e.target&&e.target instanceof HTMLElement){var t=e.target,r=null===t||void 0===t?void 0:t.getAttribute("highlight-id");if(n.state.lastHoverId!==r){var i=n.state.lastHoverId;n.state.lastHoverId=r,r&&n.highlightHovering(r,!0),i&&n.highlightHovering(i,!1)}}},this.rootElement=r||document.body,this.highlightPainter=i||O,this.eventHandler=l||w}var t,n,r;return t=e,r=[{key:"clearSelection",value:function(){var e=window.getSelection();e&&(e.empty?e.empty():e.removeAllRanges&&e.removeAllRanges())}},{key:"resolveHighlightElements",value:function(e){for(var t=[],n=0,r=Array.from(document.getElementsByTagName("web-marker-highlight"));n<r.length;n++){var i=r[n];i.getAttribute("highlight-id")===e&&t.push(i)}return t}},{key:"normalizeText",value:function(t){return e.normalizeTextCache[t]||(e.normalizeTextCache[t]=t.replace(/\s/g,"").toLowerCase()),e.normalizeTextCache[t]}},{key:"isBlackListedElementNode",value:function(e){if(!e)return!1;if(e.nodeType!==Node.ELEMENT_NODE)return!1;var t=getComputedStyle(e);if("none"===t.display)return!0;if("hidden"===t.visibility)return!0;var n=e.className;if(n&&n.indexOf&&n.indexOf("web-marker-black-listed-element")>=0)return!0;var r=e.tagName;return"STYLE"===r||"SCRIPT"===r||"TITLE"===r||"NOSCRIPT"===r}},{key:"getRealOffset",value:function(t,n){for(var r=t.textContent||"",i=0,o=0;o<r.length;o++){for(;o<r.length&&!e.normalizeText(r.substr(o,1));)o++;if(i===n)return o;i++}if(i===n)return r.length;throw new Error("failed to get real offset")}},{key:"unpaintElement",value:function(e){for(var t,n=Array.from(e.childNodes),r=0;r<n.length;r++){var i;null===(i=e.parentNode)||void 0===i||i.insertBefore(n[r],e)}null===(t=e.parentNode)||void 0===t||t.removeChild(e)}},{key:"convertRangeToSelection",value:function(e){var t=window.getSelection();return t.removeAllRanges(),t.addRange(e),t}}],(n=[{key:"serializeRange",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{uid:void 0,charsToKeepForTextBeforeAndTextAfter:16};document.head.appendChild(S);try{this.adjustRangeAroundBlackListedElement(t);var r=(null===n||void 0===n?void 0:n.uid)||m(),i=(null===n||void 0===n?void 0:n.charsToKeepForTextBeforeAndTextAfter)||16,o=e.convertRangeToSelection(t),l=o.toString(),a=e.normalizeText(l);if(a){var u="",f="";u+=e.normalizeText(this.getInnerText(t.startContainer).substr(0,t.startOffset));for(var s=t.startContainer;u.length<i&&(s=this.findPreviousTextNodeInDomTree(s));)u=e.normalizeText(s.textContent)+u;u.length>i&&(u=u.substr(u.length-i)),f+=e.normalizeText(this.getInnerText(t.endContainer).substr(t.endOffset));for(var d=t.endContainer;f.length<i&&(d=this.findNextTextNodeInDomTree(d));)f+=e.normalizeText(d.textContent);return f.length>i&&(f=f.substr(0,i)),this.state.uidToSerializedRange[r]={uid:r,textBefore:u,text:a,originalText:l,textAfter:f},this.state.uidToSerializedRange[r]}return null}finally{document.head.removeChild(S)}}},{key:"paint",value:function(t){var n=this;if(t){var r=t.uid,i=this.deserializeRange(t);if(!i.collapsed){var o=function(e){e.setAttribute("highlight-id",r)};new Promise((function(e){if(i.startContainer===i.endContainer){if(i.startOffset===i.endOffset)return void e(null);var t=i.startContainer.splitText(i.startOffset);return t.splitText(i.endOffset),o(n.convertTextNodeToHighlightElement(t)),void e(null)}var r=[],l=i.startContainer.splitText(i.startOffset);for(r.push(l);(l=n.findNextTextNodeInDomTree(l))!==i.endContainer;)r.push(l);i.endContainer.splitText(i.endOffset),r.push(i.endContainer),r.forEach((function(e){if(e){var t,r,i=n.convertTextNodeToHighlightElement(e);o(i),i.innerText||(null===(t=i.parentElement)||void 0===t||t.insertBefore(e,i.nextSibling),null===(r=i.parentElement)||void 0===r||r.removeChild(i))}})),e(null)})).then((function(){n.paintHighlights(r)}))}return e.clearSelection(),{range:i}}}},{key:"unpaint",value:function(t){var n,r=t.uid,o=i(e.resolveHighlightElements(r));try{for(o.s();!(n=o.n()).done;){var l=n.value;e.unpaintElement(l)}}catch(a){o.e(a)}finally{o.f()}}},{key:"deserializeRange",value:function(t){document.head.appendChild(S);try{this.state.uidToSerializedRange[t.uid]=t;var n=function(e,t){var n,r=i(C);try{for(r.s();!(n=r.n()).done;){var o=n.value,l=(o.textBefore?t.textBefore:"")+t.text+(o.textAfter?t.textAfter:""),a=e.indexOf(l);if(a>=0)return a+(o.textBefore?t.textBefore.length:0)}}catch(u){r.e(u)}finally{r.f()}throw new k}(this.getNormalizedInnerText(this.rootElement),t),r=this.findElementAtOffset(this.rootElement,n),o=this.findElementAtOffset(this.rootElement,n+t.text.length),l=document.createRange();return l.setStart(r.element,e.getRealOffset(r.element,r.offset)),l.setEnd(o.element,e.getRealOffset(o.element,o.offset)),this.trimRangeSpaces(l),l}finally{document.head.removeChild(S)}}},{key:"addEventListeners",value:function(){this.rootElement.addEventListener("click",this.clickListener,!0),this.rootElement.addEventListener("mouseover",this.mouseoverListener,!0)}},{key:"removeEventListeners",value:function(){this.rootElement.removeEventListener("click",this.clickListener,!0),this.rootElement.removeEventListener("mouseover",this.mouseoverListener,!0)}},{key:"paintHighlights",value:function(t){var n,r=i(e.resolveHighlightElements(t));try{for(r.s();!(n=r.n()).done;){var o=n.value;this.highlightPainter.paintHighlight(this.buildContext(t),o)}}catch(l){r.e(l)}finally{r.f()}}},{key:"highlightHovering",value:function(t,n){var r,o=i(e.resolveHighlightElements(t));try{for(o.s();!(r=o.n()).done;){var l=r.value;this.eventHandler.onHighlightHoverStateChange&&this.eventHandler.onHighlightHoverStateChange(this.buildContext(t),l,n)}}catch(a){o.e(a)}finally{o.f()}}},{key:"getInnerText",value:function(t){if(e.isBlackListedElementNode(t))return"";if(t.nodeType===Node.TEXT_NODE)return t.textContent;if("undefined"===typeof t.innerText){for(var n="",r=0;r<t.childNodes.length;r++)n+=this.getInnerText(t.childNodes[r]);return n}return t.innerText}},{key:"getNormalizedInnerText",value:function(t){return e.normalizeText(this.getInnerText(t))}},{key:"findLastChildTextNode",value:function(t){if(!t)return null;if(t.nodeType===Node.TEXT_NODE)return t;if(t.childNodes)for(var n=t.childNodes.length-1;n>=0;n--)if(!e.isBlackListedElementNode(t.childNodes[n])){var r=this.findLastChildTextNode(t.childNodes[n]);if(null!==r)return r}return null}},{key:"findFirstChildTextNode",value:function(t){if(t.nodeType===Node.TEXT_NODE)return t;if(t.childNodes)for(var n=0;n<t.childNodes.length;n++)if(!e.isBlackListedElementNode(t.childNodes[n])){var r=this.findFirstChildTextNode(t.childNodes[n]);if(null!==r)return r}return null}},{key:"findPreviousTextNodeInDomTree",value:function(t){for(;t;){for(var n;e.isBlackListedElementNode((null===(r=t)||void 0===r?void 0:r.previousSibling)||null);){var r,i;t=(null===(i=t)||void 0===i?void 0:i.previousSibling)||null}for(;null===(o=t)||void 0===o?void 0:o.previousSibling;){var o,l,a=this.findLastChildTextNode((null===(l=t)||void 0===l?void 0:l.previousSibling)||null);if(a)return a;t=t.previousSibling}t=(null===(n=t)||void 0===n?void 0:n.parentElement)||null}return null}},{key:"findNextTextNodeInDomTree",value:function(t){for(;t;){for(var n;e.isBlackListedElementNode((null===(r=t)||void 0===r?void 0:r.nextSibling)||null);){var r,i;t=(null===(i=t)||void 0===i?void 0:i.nextSibling)||null}for(;null===(o=t)||void 0===o?void 0:o.nextSibling;){var o,l;if(e.isBlackListedElementNode(null===(l=t)||void 0===l?void 0:l.nextSibling))t=t.nextSibling;else{var a=this.findFirstChildTextNode(t.nextSibling);if(a)return a;t=t.nextSibling}}t=(null===(n=t)||void 0===n?void 0:n.parentElement)||null}return null}},{key:"forwardOffset",value:function(e,t){var n=e.element,r=e.offset,i=this.getNormalizedInnerText(n);if(i.length>t+r)return{element:n,offset:r+=t};var o=this.findNextTextNodeInDomTree(n);return o?this.forwardOffset({element:o,offset:0},t-(i.length-r)):{element:n,offset:r=this.getInnerText(n)}}},{key:"backwardOffset",value:function(e,t){var n=e.element,r=e.offset;if(r>=t)return{element:n,offset:r-=t};var i=this.findPreviousTextNodeInDomTree(n);return i?this.backwardOffset({element:i,offset:this.getNormalizedInnerText(i).length},t-r):{element:n,offset:r=0}}},{key:"findElementAtOffset",value:function(t,n){if(t.nodeType===Node.TEXT_NODE)return{element:t,offset:n};for(var r=0,i=0;i<t.childNodes.length;i++)if(!e.isBlackListedElementNode(t.childNodes[i])){var o=this.getNormalizedInnerText(t.childNodes[i]).length;if(!((r+=o)<n))return this.findElementAtOffset(t.childNodes[i],n-(r-o))}throw new Error("failed to findElementAtOffset")}},{key:"trimRangeSpaces",value:function(e){var t=this.getInnerText(e.startContainer).substr(e.startOffset),n=t.trimStart();e.setStart(e.startContainer,e.startOffset+(t.length-n.length));var r=this.getInnerText(e.endContainer).substr(0,e.endOffset),i=r.trimEnd();e.setEnd(e.endContainer,e.endOffset-(r.length-i.length))}},{key:"convertTextNodeToHighlightElement",value:function(e){var t,n,r=document.createElement("web-marker-highlight");return null===(t=e.parentElement)||void 0===t||t.insertBefore(r,e.nextSibling),null===(n=e.parentElement)||void 0===n||n.removeChild(e),r.appendChild(e),r}},{key:"buildContext",value:function(e){return{serializedRange:this.state.uidToSerializedRange[e],marker:this}}},{key:"adjustRangeAroundBlackListedElement",value:function(t){for(var n=t.startContainer,r=null;n;)e.isBlackListedElementNode(n)&&(r=n),n=n.parentElement;n=t.endContainer;for(var i=null;n;)e.isBlackListedElementNode(n)&&(i=n),n=n.parentElement;if(r&&i&&r===i)throw new Error("cannot highlight blacklisted element");if(r&&t.setStart(this.findNextTextNodeInDomTree(r),0),i){var o=this.findPreviousTextNodeInDomTree(i);t.setEnd(o,this.getInnerText(o).length)}}},{key:"getSerializedRangeFromUid",value:function(e){return this.state.uidToSerializedRange[e]||null}}])&&l(t.prototype,n),r&&l(t,r),e}();H.normalizeTextCache={};var R=H,A={DeserializationError:k,isDeserializationError:function(e){return e instanceof k}}}])}));
1
+ !function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t():"function"===typeof define&&define.amd?define([],t):"object"===typeof exports?exports["web-marker"]=t():e["web-marker"]=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function i(e){if("undefined"===typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=function(e,t){if(e){if("string"===typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e))){var t=0,n=function(){};return{s:n,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o,l=!0,a=!1;return{s:function(){i=e[Symbol.iterator]()},n:function(){var e=i.next();return l=e.done,e},e:function(e){a=!0,o=e},f:function(){try{l||null==i.return||i.return()}finally{if(a)throw o}}}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var a;n.r(t),n.d(t,"Marker",(function(){return R})),n.d(t,"Errors",(function(){return I}));var u=new Uint8Array(16);function f(){if(!a&&!(a="undefined"!==typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!==typeof msCrypto&&"function"===typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return a(u)}var s=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;for(var d=function(e){return"string"===typeof e&&s.test(e)},c=[],h=0;h<256;++h)c.push((h+256).toString(16).substr(1));var v=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(c[e[t+0]]+c[e[t+1]]+c[e[t+2]]+c[e[t+3]]+"-"+c[e[t+4]]+c[e[t+5]]+"-"+c[e[t+6]]+c[e[t+7]]+"-"+c[e[t+8]]+c[e[t+9]]+"-"+c[e[t+10]]+c[e[t+11]]+c[e[t+12]]+c[e[t+13]]+c[e[t+14]]+c[e[t+15]]).toLowerCase();if(!d(n))throw TypeError("Stringified UUID is invalid");return n};var g=function(e,t,n){var r=(e=e||{}).random||(e.rng||f)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(var i=0;i<16;++i)t[n+i]=r[i];return t}return v(r)};function m(){return g()}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e){return(y=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function x(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function T(e){return(T="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function b(e,t){return!t||"object"!==T(t)&&"function"!==typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function E(e,t,n){return(E=x()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&p(i,n.prototype),i}).apply(null,arguments)}function N(e){var t="function"===typeof Map?new Map:void 0;return(N=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!==typeof e)throw new TypeError("Super expression must either be null or a function");if("undefined"!==typeof t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return E(e,arguments,y(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),p(r,e)})(e)}var S=function(e){!function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&p(e,t)}(r,e);var t,n=(t=r,function(){var e,n=y(t);if(x()){var r=y(this).constructor;e=Reflect.construct(n,arguments,r)}else e=n.apply(this,arguments);return b(this,e)});function r(){return o(this,r),n.apply(this,arguments)}return r}(N(Error));var k=document.createElement("style");k.innerText=".".concat("web-marker-black-listed-element"," {display:none!important;};");var C={paintHighlight:function(e,t){console.log("paintHighlight",e,t),t.style.textDecoration="underline",t.style.textDecorationColor="orange"}},O={onHighlightClick:function(e,t){console.log("onHighlightClick",e,t)},onHighlightHoverStateChange:function(e,t,n){console.log("onHighlightHoverStateChange",e,t),t.style.backgroundColor=n?"#FFE49C":""}},w=function(){function e(t){var n=this,r=t.rootElement,i=t.highlightPainter,l=t.eventHandler;o(this,e),this.rootElement=void 0,this.eventHandler=void 0,this.highlightPainter=void 0,this.state={lastHoverId:"",uidToSerializedRange:{}},this.clickListener=function(e){if(e.target&&e.target instanceof HTMLElement){var t=e.target,r=t.getAttribute("highlight-id");r&&n.eventHandler.onHighlightClick&&n.eventHandler.onHighlightClick(n.buildContext(r),t,e)}},this.mouseoverListener=function(e){if(e.target&&e.target instanceof HTMLElement){var t=e.target,r=null===t||void 0===t?void 0:t.getAttribute("highlight-id");if(n.state.lastHoverId!==r){var i=n.state.lastHoverId;n.state.lastHoverId=r,r&&n.highlightHovering(r,!0,e),i&&n.highlightHovering(i,!1,e)}}},this.rootElement=r||document.body,this.highlightPainter=i||C,this.eventHandler=l||O}var t,n,r;return t=e,r=[{key:"clearSelection",value:function(){var e=window.getSelection();e&&(e.empty?e.empty():e.removeAllRanges&&e.removeAllRanges())}},{key:"resolveHighlightElements",value:function(e){for(var t=[],n=0,r=Array.from(document.getElementsByTagName("web-marker-highlight"));n<r.length;n++){var i=r[n];i.getAttribute("highlight-id")===e&&t.push(i)}return t}},{key:"normalizeText",value:function(t){return e.normalizeTextCache[t]||(e.normalizeTextCache[t]=t.replace(/\s/g,"").toLowerCase()),e.normalizeTextCache[t]}},{key:"isBlackListedElementNode",value:function(e){if(!e)return!1;if(e.nodeType!==Node.ELEMENT_NODE)return!1;var t=getComputedStyle(e);if("none"===t.display)return!0;if("hidden"===t.visibility)return!0;var n=e.className;if(n&&n.indexOf&&n.indexOf("web-marker-black-listed-element")>=0)return!0;var r=e.tagName;return"STYLE"===r||"SCRIPT"===r||"TITLE"===r||"NOSCRIPT"===r}},{key:"getRealOffset",value:function(t,n){for(var r=t.textContent||"",i=0,o=0;o<r.length;o++){for(;o<r.length&&!e.normalizeText(r.substr(o,1));)o++;if(i===n)return o;i++}if(i===n)return r.length;throw new Error("failed to get real offset")}},{key:"unpaintElement",value:function(e){for(var t,n=Array.from(e.childNodes),r=0;r<n.length;r++){var i;null===(i=e.parentNode)||void 0===i||i.insertBefore(n[r],e)}null===(t=e.parentNode)||void 0===t||t.removeChild(e)}},{key:"convertRangeToSelection",value:function(e){var t=window.getSelection();return t.removeAllRanges(),t.addRange(e),t}}],(n=[{key:"serializeRange",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{uid:void 0,charsToKeepForTextBeforeAndTextAfter:128};document.head.appendChild(k);try{this.adjustRangeAroundBlackListedElement(t);var r=(null===n||void 0===n?void 0:n.uid)||m(),i=(null===n||void 0===n?void 0:n.charsToKeepForTextBeforeAndTextAfter)||128,o=e.convertRangeToSelection(t),l=o.toString(),a=e.normalizeText(l);if(a){var u="",f="";u+=this.getInnerText(t.startContainer).substr(0,t.startOffset);for(var s=t.startContainer;u.length<i&&(s=this.findPreviousTextNodeInDomTree(s));)u=s.textContent+u;u.length>i&&(u=u.substr(u.length-i)),f+=this.getInnerText(t.endContainer).substr(t.endOffset);for(var d=t.endContainer;f.length<i&&(d=this.findNextTextNodeInDomTree(d));)f+=d.textContent;return f.length>i&&(f=f.substr(0,i)),this.state.uidToSerializedRange[r]={uid:r,textBefore:u,text:l,textAfter:f},this.state.uidToSerializedRange[r]}return null}finally{document.head.removeChild(k)}}},{key:"paint",value:function(t){var n=this;if(t){var r=t.uid,i=this.deserializeRange(t);if(!i.collapsed){var o=function(e){e.setAttribute("highlight-id",r)};new Promise((function(e){if(i.startContainer===i.endContainer){if(i.startOffset===i.endOffset)return void e(null);var t=i.startContainer.splitText(i.startOffset);return t.splitText(i.endOffset),o(n.convertTextNodeToHighlightElement(t)),void e(null)}var r=[],l=i.startContainer.splitText(i.startOffset);for(r.push(l);(l=n.findNextTextNodeInDomTree(l))!==i.endContainer;)r.push(l);i.endContainer.splitText(i.endOffset),r.push(i.endContainer),r.forEach((function(e){if(e){var t,r,i=n.convertTextNodeToHighlightElement(e);o(i),i.innerText||(null===(t=i.parentElement)||void 0===t||t.insertBefore(e,i.nextSibling),null===(r=i.parentElement)||void 0===r||r.removeChild(i))}})),e(null)})).then((function(){n.paintHighlights(r)}))}return e.clearSelection(),{range:i}}}},{key:"unpaint",value:function(t){var n,r=t.uid,o=i(e.resolveHighlightElements(r));try{for(o.s();!(n=o.n()).done;){var l=n.value;e.unpaintElement(l)}}catch(a){o.e(a)}finally{o.f()}}},{key:"deserializeRange",value:function(t){document.head.appendChild(k);try{this.state.uidToSerializedRange[t.uid]=t;var n=this.getNormalizedInnerText(this.rootElement),r=this.resolveSerializedRangeOffsetInText(n,t),i=this.findElementAtOffset(this.rootElement,r),o=this.findElementAtOffset(this.rootElement,r+e.normalizeText(t.text).length),l=document.createRange();return l.setStart(i.element,e.getRealOffset(i.element,i.offset)),l.setEnd(o.element,e.getRealOffset(o.element,o.offset)),this.trimRangeSpaces(l),l}finally{document.head.removeChild(k)}}},{key:"addEventListeners",value:function(){this.rootElement.addEventListener("click",this.clickListener,!0),this.rootElement.addEventListener("mouseover",this.mouseoverListener,!0)}},{key:"removeEventListeners",value:function(){this.rootElement.removeEventListener("click",this.clickListener,!0),this.rootElement.removeEventListener("mouseover",this.mouseoverListener,!0)}},{key:"paintHighlights",value:function(t){var n=this.buildContext(t);this.highlightPainter.beforePaintHighlight&&this.highlightPainter.beforePaintHighlight(n);var r,o=i(e.resolveHighlightElements(t));try{for(o.s();!(r=o.n()).done;){var l=r.value;this.highlightPainter.paintHighlight(n,l)}}catch(a){o.e(a)}finally{o.f()}this.highlightPainter.afterPaintHighlight&&this.highlightPainter.afterPaintHighlight(n)}},{key:"highlightHovering",value:function(t,n,r){var o,l=i(e.resolveHighlightElements(t));try{for(l.s();!(o=l.n()).done;){var a=o.value;this.eventHandler.onHighlightHoverStateChange&&this.eventHandler.onHighlightHoverStateChange(this.buildContext(t),a,n,r)}}catch(u){l.e(u)}finally{l.f()}}},{key:"getInnerText",value:function(t){if(e.isBlackListedElementNode(t))return"";if(t.nodeType===Node.TEXT_NODE)return t.textContent;if("undefined"===typeof t.innerText){for(var n="",r=0;r<t.childNodes.length;r++)n+=this.getInnerText(t.childNodes[r]);return n}return t.innerText}},{key:"getNormalizedInnerText",value:function(t){return e.normalizeText(this.getInnerText(t))}},{key:"findLastChildTextNode",value:function(t){if(!t)return null;if(t.nodeType===Node.TEXT_NODE)return t;if(t.childNodes)for(var n=t.childNodes.length-1;n>=0;n--)if(!e.isBlackListedElementNode(t.childNodes[n])){var r=this.findLastChildTextNode(t.childNodes[n]);if(null!==r)return r}return null}},{key:"findFirstChildTextNode",value:function(t){if(t.nodeType===Node.TEXT_NODE)return t;if(t.childNodes)for(var n=0;n<t.childNodes.length;n++)if(!e.isBlackListedElementNode(t.childNodes[n])){var r=this.findFirstChildTextNode(t.childNodes[n]);if(null!==r)return r}return null}},{key:"findPreviousTextNodeInDomTree",value:function(t){for(;t;){for(var n;e.isBlackListedElementNode((null===(r=t)||void 0===r?void 0:r.previousSibling)||null);){var r,i;t=(null===(i=t)||void 0===i?void 0:i.previousSibling)||null}for(;null===(o=t)||void 0===o?void 0:o.previousSibling;){var o,l,a=this.findLastChildTextNode((null===(l=t)||void 0===l?void 0:l.previousSibling)||null);if(a)return a;t=t.previousSibling}t=(null===(n=t)||void 0===n?void 0:n.parentElement)||null}return null}},{key:"findNextTextNodeInDomTree",value:function(t){for(;t;){for(var n;e.isBlackListedElementNode((null===(r=t)||void 0===r?void 0:r.nextSibling)||null);){var r,i;t=(null===(i=t)||void 0===i?void 0:i.nextSibling)||null}for(;null===(o=t)||void 0===o?void 0:o.nextSibling;){var o,l;if(e.isBlackListedElementNode(null===(l=t)||void 0===l?void 0:l.nextSibling))t=t.nextSibling;else{var a=this.findFirstChildTextNode(t.nextSibling);if(a)return a;t=t.nextSibling}}t=(null===(n=t)||void 0===n?void 0:n.parentElement)||null}return null}},{key:"forwardOffset",value:function(e,t){var n=e.element,r=e.offset,i=this.getNormalizedInnerText(n);if(i.length>t+r)return{element:n,offset:r+=t};var o=this.findNextTextNodeInDomTree(n);return o?this.forwardOffset({element:o,offset:0},t-(i.length-r)):{element:n,offset:r=this.getInnerText(n)}}},{key:"backwardOffset",value:function(e,t){var n=e.element,r=e.offset;if(r>=t)return{element:n,offset:r-=t};var i=this.findPreviousTextNodeInDomTree(n);return i?this.backwardOffset({element:i,offset:this.getNormalizedInnerText(i).length},t-r):{element:n,offset:r=0}}},{key:"findElementAtOffset",value:function(t,n){if(t.nodeType===Node.TEXT_NODE)return{element:t,offset:n};for(var r=0,i=0;i<t.childNodes.length;i++)if(!e.isBlackListedElementNode(t.childNodes[i])){var o=this.getNormalizedInnerText(t.childNodes[i]).length;if(!((r+=o)<n))return this.findElementAtOffset(t.childNodes[i],n-(r-o))}throw new Error("failed to findElementAtOffset")}},{key:"trimRangeSpaces",value:function(e){var t=this.getInnerText(e.startContainer).substr(e.startOffset),n=t.trimStart();e.setStart(e.startContainer,e.startOffset+(t.length-n.length));var r=this.getInnerText(e.endContainer).substr(0,e.endOffset),i=r.trimEnd();e.setEnd(e.endContainer,e.endOffset-(r.length-i.length))}},{key:"convertTextNodeToHighlightElement",value:function(e){var t,n,r=document.createElement("web-marker-highlight");return null===(t=e.parentElement)||void 0===t||t.insertBefore(r,e.nextSibling),null===(n=e.parentElement)||void 0===n||n.removeChild(e),r.appendChild(e),r}},{key:"buildContext",value:function(e){return{serializedRange:this.state.uidToSerializedRange[e],marker:this}}},{key:"adjustRangeAroundBlackListedElement",value:function(t){for(var n=t.startContainer,r=null;n;)e.isBlackListedElementNode(n)&&(r=n),n=n.parentElement;n=t.endContainer;for(var i=null;n;)e.isBlackListedElementNode(n)&&(i=n),n=n.parentElement;if(r&&i&&r===i)throw new Error("cannot highlight blacklisted element");if(r&&t.setStart(this.findNextTextNodeInDomTree(r),0),i){var o=this.findPreviousTextNodeInDomTree(i);t.setEnd(o,this.getInnerText(o).length)}}},{key:"getSerializedRangeFromUid",value:function(e){return this.state.uidToSerializedRange[e]||null}},{key:"resolveSerializedRangeOffsetInText",value:function(t,n){var r,o=e.normalizeText(n.textBefore),l=e.normalizeText(n.textAfter),a=e.normalizeText(n.text),u=i(H);try{for(u.s();!(r=u.n()).done;){var f=r.value,s=(f.textBefore?o:"")+a+(f.textAfter?l:""),d=t.indexOf(s);if(d>=0)return d+(f.textBefore?o.length:0)}}catch(c){u.e(c)}finally{u.f()}throw new S}}])&&l(t.prototype,n),r&&l(t,r),e}();w.normalizeTextCache={};var H=[{textBefore:!0,textAfter:!0},{textBefore:!1,textAfter:!0},{textBefore:!0,textAfter:!1},{textBefore:!1,textAfter:!1}],R=w,I={isDeserializationError:function(e){return e instanceof S}}}])}));
2
2
  //# sourceMappingURL=web-marker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://web-marker/webpack/universalModuleDefinition","webpack://web-marker/webpack/bootstrap","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://web-marker/./node_modules/uuid/dist/esm-browser/rng.js","webpack://web-marker/./node_modules/uuid/dist/esm-browser/regex.js","webpack://web-marker/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://web-marker/./node_modules/uuid/dist/esm-browser/validate.js","webpack://web-marker/./node_modules/uuid/dist/esm-browser/v4.js","webpack://web-marker/./src/utils/makeid.ts","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/construct.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://web-marker/./src/lib/classes/errors/DeserializationError.ts","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack://web-marker/./src/utils/resolveSerializedRangeOffsetInText.ts","webpack://web-marker/./src/lib/classes/Marker.ts","webpack://web-marker/./src/libroot.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_arrayLikeToArray","arr","len","length","arr2","Array","_createForOfIteratorHelper","iterator","isArray","minLen","toString","slice","constructor","from","test","F","done","e","_e","f","TypeError","it","err","normalCompletion","didErr","step","next","_e2","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","configurable","writable","getRandomValues","rnds8","Uint8Array","rng","crypto","msCrypto","Error","validate","uuid","REGEX","byteToHex","push","substr","stringify","offset","arguments","undefined","toLowerCase","v4","options","buf","rnds","random","makeid","uuidv4","_setPrototypeOf","setPrototypeOf","__proto__","_getPrototypeOf","getPrototypeOf","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","_typeof","obj","_possibleConstructorReturn","self","ReferenceError","Parent","args","Class","a","apply","Function","_cache","Map","fn","indexOf","has","set","Wrapper","this","DeserializationError","subClass","superClass","Derived","result","Super","NewTarget","resolveSerializedRangeOffsetInTextStrategies","textBefore","textAfter","blackListedElementStyle","document","createElement","innerText","defaultHighlightPainter","paintHighlight","context","element","console","log","style","textDecoration","textDecorationColor","defaultEventHandler","onHighlightClick","onHighlightHoverStateChange","hovering","backgroundColor","Marker","rootElement","highlightPainter","eventHandler","state","lastHoverId","uidToSerializedRange","clickListener","HTMLElement","id","getAttribute","buildContext","mouseoverListener","newHoverId","oldHoverId","highlightHovering","body","protoProps","staticProps","selection","getSelection","empty","removeAllRanges","highlightId","elements","getElementsByTagName","item","normalizeTextCache","replace","nodeType","Node","ELEMENT_NODE","computedStyle","getComputedStyle","display","visibility","className","tagName","textNode","normalizedOffset","textContent","cumulative","normalizeText","childNodes","parentNode","insertBefore","removeChild","range","addRange","uid","charsToKeepForTextBeforeAndTextAfter","head","appendChild","adjustRangeAroundBlackListedElement","convertRangeToSelection","originalText","text","getInnerText","startContainer","startOffset","ptr","findPreviousTextNodeInDomTree","endContainer","endOffset","findNextTextNodeInDomTree","serializedRange","deserializeRange","collapsed","setElementHighlightIdAttribute","setAttribute","Promise","resolve","word","splitText","convertTextNodeToHighlightElement","toPaint","forEach","decoratedElement","parentElement","nextSibling","then","paintHighlights","clearSelection","resolveHighlightElements","unpaintElement","strategy","textToSearch","index","resolveSerializedRangeOffsetInText","getNormalizedInnerText","start","findElementAtOffset","end","createRange","setStart","getRealOffset","setEnd","trimRangeSpaces","addEventListener","removeEventListener","isBlackListedElementNode","TEXT_NODE","node","candidate","findLastChildTextNode","findFirstChildTextNode","previousSibling","toMove","elementText","nextTextNode","forwardOffset","previousTextNode","backwardOffset","cumulativeOffset","childSize","startTrimmed","trimStart","endTrimmed","trimEnd","marker","blacklistedParentOfStartContainer","blacklistedParentOfEndContainer","prevNode","Errors","isDeserializationError"],"mappings":"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","file":"web-marker.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"web-marker\"] = factory();\n\telse\n\t\troot[\"web-marker\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = unsupportedIterableToArray(o))) {\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var it,\n normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { v4 as uuidv4 } from \"uuid\";\n\nexport default function makeid() {\n return uuidv4();\n}\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import setPrototypeOf from \"./setPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport setPrototypeOf from \"./setPrototypeOf\";\nimport isNativeFunction from \"./isNativeFunction\";\nimport construct from \"./construct\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","export default class DeserializationError extends Error {}\n\nexport function isDeserializationError(err: Error): boolean {\n return err instanceof DeserializationError;\n}\n","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n return function () {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (isNativeReflectConstruct()) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","import SerializedRange from \"../lib/classes/SerializedRange\";\nimport DeserializationError from \"../lib/classes/errors/DeserializationError\";\n\nconst resolveSerializedRangeOffsetInTextStrategies = [\n {\n textBefore: true,\n textAfter: true,\n },\n {\n textBefore: false,\n textAfter: true,\n },\n {\n textBefore: true,\n textAfter: false,\n },\n {\n textBefore: false,\n textAfter: false,\n },\n];\n\nexport default function resolveSerializedRangeOffsetInText(\n text: any,\n serializedRange: SerializedRange\n): number {\n // TODO: optimize algorithm, maybe use https://github.com/google/diff-match-patch\n for (let strategy of resolveSerializedRangeOffsetInTextStrategies) {\n const textToSearch =\n (strategy.textBefore ? serializedRange.textBefore : \"\") +\n serializedRange.text +\n (strategy.textAfter ? serializedRange.textAfter : \"\");\n\n const index = text.indexOf(textToSearch);\n if (index >= 0) {\n return (\n index + (strategy.textBefore ? serializedRange.textBefore.length : 0)\n );\n }\n }\n\n throw new DeserializationError();\n}\n","import makeid from \"../../utils/makeid\";\nimport EventHandler from \"./EventHandler\";\nimport HighlightPainter from \"./HighlightPainter\";\nimport EventHandlerContext from \"./Context\";\nimport Context from \"./Context\";\nimport SerializedRange from \"./SerializedRange\";\nimport resolveSerializedRangeOffsetInText from \"../../utils/resolveSerializedRangeOffsetInText\";\n\nconst HighlightTagName = \"web-marker-highlight\";\nconst HighlightBlacklistedElementClassName = \"web-marker-black-listed-element\";\nconst AttributeNameHighlightId = \"highlight-id\";\n\nconst blackListedElementStyle = document.createElement(\"style\");\nblackListedElementStyle.innerText = `.${HighlightBlacklistedElementClassName} {display:none;};`;\n\ninterface MarkerConstructorArgs {\n rootElement?: HTMLElement;\n eventHandler?: EventHandler;\n highlightPainter?: HighlightPainter;\n}\n\nconst defaultHighlightPainter: HighlightPainter = {\n paintHighlight: (context: Context, element: HTMLElement) => {\n console.log(\"paintHighlight\", context, element);\n element.style.textDecoration = \"underline\";\n element.style.textDecorationColor = \"orange\";\n },\n};\n\nconst defaultEventHandler: EventHandler = {\n onHighlightClick: (context, element) => {\n console.log(\"onHighlightClick\", context, element);\n },\n onHighlightHoverStateChange: (context, element, hovering) => {\n console.log(\"onHighlightHoverStateChange\", context, element);\n if (hovering) {\n element.style.backgroundColor = \"#FFE49C\";\n } else {\n element.style.backgroundColor = \"\";\n }\n },\n};\n\nclass Marker {\n public static normalizeTextCache = {} as any;\n rootElement: Element;\n eventHandler: EventHandler;\n highlightPainter: HighlightPainter;\n state = {\n lastHoverId: \"\",\n uidToSerializedRange: {} as { [key: string]: SerializedRange },\n };\n\n constructor({\n rootElement,\n highlightPainter,\n eventHandler,\n }: MarkerConstructorArgs) {\n this.rootElement = rootElement || document.body;\n this.highlightPainter = highlightPainter || defaultHighlightPainter;\n this.eventHandler = eventHandler || defaultEventHandler;\n }\n\n public static clearSelection() {\n const selection = window.getSelection();\n if (!selection) {\n return;\n }\n if (selection.empty) {\n selection.empty();\n } else if (selection.removeAllRanges) {\n selection.removeAllRanges();\n }\n }\n\n private static resolveHighlightElements(highlightId: string): HTMLElement[] {\n let elements: HTMLElement[] = [];\n for (let item of Array.from(\n document.getElementsByTagName(HighlightTagName)\n )) {\n if (item.getAttribute(AttributeNameHighlightId) === highlightId) {\n elements.push(item as HTMLElement);\n }\n }\n return elements;\n }\n\n private static normalizeText(s: string) {\n if (!Marker.normalizeTextCache[s]) {\n Marker.normalizeTextCache[s] = s.replace(/\\s/g, \"\").toLowerCase();\n }\n return Marker.normalizeTextCache[s];\n }\n\n private static isBlackListedElementNode(element: Node | null) {\n if (!element) {\n return false;\n }\n if (element.nodeType !== Node.ELEMENT_NODE) {\n return false;\n }\n const computedStyle = getComputedStyle(element as any);\n if (computedStyle.display === \"none\") {\n return true;\n }\n if (computedStyle.visibility === \"hidden\") {\n return true;\n }\n\n const className = (element as any).className;\n if (\n className &&\n className.indexOf &&\n className.indexOf(HighlightBlacklistedElementClassName) >= 0\n ) {\n return true;\n }\n\n const tagName = (element as any).tagName;\n return (\n tagName === \"STYLE\" ||\n tagName === \"SCRIPT\" ||\n tagName === \"TITLE\" ||\n tagName === \"NOSCRIPT\"\n );\n }\n\n private static getRealOffset(textNode: Node, normalizedOffset: number) {\n const s = textNode.textContent || \"\";\n let cumulative = 0;\n for (let i = 0; i < s.length; i++) {\n while (i < s.length && !Marker.normalizeText(s.substr(i, 1))) {\n // omit whitespaces\n i++;\n }\n if (cumulative === normalizedOffset) {\n return i;\n }\n cumulative++;\n }\n if (cumulative === normalizedOffset) {\n return s.length;\n }\n throw new Error(\"failed to get real offset\");\n }\n\n private static unpaintElement(element: HTMLElement) {\n let childNodes = Array.from(element.childNodes);\n for (let i = 0; i < childNodes.length; i++) {\n element.parentNode?.insertBefore(childNodes[i], element);\n }\n element.parentNode?.removeChild(element);\n }\n\n private static convertRangeToSelection(range: Range) {\n const selection = window.getSelection() as any;\n selection.removeAllRanges();\n selection.addRange(range);\n return selection;\n }\n\n public serializeRange(\n range: Range,\n options: { uid?: string; charsToKeepForTextBeforeAndTextAfter?: number } = {\n uid: undefined,\n charsToKeepForTextBeforeAndTextAfter: 16,\n }\n ): SerializedRange | null {\n document.head.appendChild(blackListedElementStyle);\n\n try {\n this.adjustRangeAroundBlackListedElement(range);\n const uid = options?.uid || makeid();\n const charsToKeepForTextBeforeAndTextAfter =\n options?.charsToKeepForTextBeforeAndTextAfter || 16;\n const selection = Marker.convertRangeToSelection(range);\n\n let originalText = selection.toString();\n let text = Marker.normalizeText(originalText);\n if (text) {\n let textBefore = \"\";\n let textAfter = \"\";\n\n {\n // find textBefore\n textBefore =\n textBefore +\n Marker.normalizeText(\n this.getInnerText(range.startContainer).substr(\n 0,\n range.startOffset\n )\n );\n\n let ptr = range.startContainer as Node | null;\n while (textBefore.length < charsToKeepForTextBeforeAndTextAfter) {\n ptr = this.findPreviousTextNodeInDomTree(ptr);\n if (!ptr) {\n // already reached the front\n break;\n }\n textBefore =\n Marker.normalizeText((ptr as any).textContent) + textBefore;\n }\n if (textBefore.length > charsToKeepForTextBeforeAndTextAfter) {\n textBefore = textBefore.substr(\n textBefore.length - charsToKeepForTextBeforeAndTextAfter\n );\n }\n }\n\n {\n // find textAfter\n textAfter =\n textAfter +\n Marker.normalizeText(\n this.getInnerText(range.endContainer).substr(range.endOffset)\n );\n\n let ptr = range.endContainer as Node | null;\n while (textAfter.length < charsToKeepForTextBeforeAndTextAfter) {\n ptr = this.findNextTextNodeInDomTree(ptr);\n if (!ptr) {\n // already reached the end\n break;\n }\n textAfter =\n textAfter + Marker.normalizeText((ptr as any).textContent);\n }\n\n if (textAfter.length > charsToKeepForTextBeforeAndTextAfter) {\n textAfter = textAfter.substr(\n 0,\n charsToKeepForTextBeforeAndTextAfter\n );\n }\n }\n\n this.state.uidToSerializedRange[uid] = {\n uid,\n textBefore,\n text,\n originalText,\n textAfter,\n };\n return this.state.uidToSerializedRange[uid];\n }\n\n return null;\n } finally {\n document.head.removeChild(blackListedElementStyle);\n }\n }\n\n public paint(serializedRange: SerializedRange) {\n if (!serializedRange) {\n return;\n }\n const uid = serializedRange.uid;\n const range = this.deserializeRange(serializedRange);\n if (!range.collapsed) {\n const setElementHighlightIdAttribute = (element: HTMLElement) => {\n element.setAttribute(AttributeNameHighlightId, uid);\n };\n\n new Promise((resolve) => {\n if (range.startContainer === range.endContainer) {\n if (range.startOffset === range.endOffset) {\n resolve(null);\n return;\n }\n // special case\n const word = (<Text>range.startContainer).splitText(\n range.startOffset\n );\n word.splitText(range.endOffset);\n setElementHighlightIdAttribute(\n this.convertTextNodeToHighlightElement(word)\n );\n\n resolve(null);\n return;\n }\n\n const toPaint = [];\n let ptr = (<Text>range.startContainer).splitText(\n range.startOffset\n ) as Node | null;\n toPaint.push(ptr);\n\n while (true) {\n ptr = this.findNextTextNodeInDomTree(ptr);\n if (ptr === range.endContainer) {\n break;\n }\n toPaint.push(ptr);\n }\n\n (<Text>range.endContainer).splitText(range.endOffset);\n toPaint.push(range.endContainer);\n\n toPaint.forEach((item) => {\n if (item) {\n let decoratedElement = this.convertTextNodeToHighlightElement(item);\n setElementHighlightIdAttribute(decoratedElement);\n\n if (!decoratedElement.innerText) {\n decoratedElement.parentElement?.insertBefore(\n item,\n decoratedElement.nextSibling\n );\n decoratedElement.parentElement?.removeChild(decoratedElement);\n }\n }\n });\n\n resolve(null);\n return;\n }).then(() => {\n this.paintHighlights(uid);\n });\n }\n Marker.clearSelection();\n return { range };\n }\n\n public unpaint(serializedRange: SerializedRange) {\n const id = serializedRange.uid;\n\n for (let element of Marker.resolveHighlightElements(id)) {\n Marker.unpaintElement(element);\n }\n }\n\n public deserializeRange(serializedRange: SerializedRange) {\n document.head.appendChild(blackListedElementStyle);\n try {\n this.state.uidToSerializedRange[serializedRange.uid] = serializedRange;\n const rootText = this.getNormalizedInnerText(this.rootElement);\n const offset = resolveSerializedRangeOffsetInText(\n rootText,\n serializedRange\n );\n const start = this.findElementAtOffset(this.rootElement, offset);\n const end = this.findElementAtOffset(\n this.rootElement,\n offset + serializedRange.text.length\n );\n const range = document.createRange();\n range.setStart(\n start.element,\n Marker.getRealOffset(start.element, start.offset)\n );\n range.setEnd(end.element, Marker.getRealOffset(end.element, end.offset));\n this.trimRangeSpaces(range);\n return range;\n } finally {\n document.head.removeChild(blackListedElementStyle);\n }\n }\n\n clickListener = (e: Event) => {\n if (!e.target || !(e.target instanceof HTMLElement)) {\n return;\n }\n\n const target = e.target as HTMLElement;\n const id = target.getAttribute(AttributeNameHighlightId);\n if (id && this.eventHandler.onHighlightClick) {\n this.eventHandler.onHighlightClick(this.buildContext(id), target);\n }\n };\n\n mouseoverListener = (e: Event) => {\n if (!e.target || !(e.target instanceof HTMLElement)) {\n return;\n }\n\n const target = e.target as HTMLElement;\n let newHoverId = target?.getAttribute(AttributeNameHighlightId);\n if (this.state.lastHoverId === newHoverId) {\n return;\n }\n const oldHoverId = this.state.lastHoverId;\n this.state.lastHoverId = newHoverId as string;\n\n if (newHoverId) {\n this.highlightHovering(newHoverId, true);\n }\n if (oldHoverId) {\n this.highlightHovering(oldHoverId, false);\n }\n };\n\n public addEventListeners() {\n this.rootElement.addEventListener(\"click\", this.clickListener, true);\n this.rootElement.addEventListener(\n \"mouseover\",\n this.mouseoverListener,\n true\n );\n }\n\n public removeEventListeners() {\n this.rootElement.removeEventListener(\"click\", this.clickListener, true);\n this.rootElement.removeEventListener(\n \"mouseover\",\n this.mouseoverListener,\n true\n );\n }\n\n public paintHighlights(highlightId: string) {\n for (let element of Marker.resolveHighlightElements(highlightId)) {\n this.highlightPainter.paintHighlight(\n this.buildContext(highlightId),\n element\n );\n }\n }\n\n private highlightHovering(highlightId: string, hovering: boolean) {\n for (let element of Marker.resolveHighlightElements(highlightId)) {\n if (this.eventHandler.onHighlightHoverStateChange) {\n this.eventHandler.onHighlightHoverStateChange(\n this.buildContext(highlightId),\n element as any,\n hovering\n );\n }\n }\n }\n\n private getInnerText(element: Node) {\n if (Marker.isBlackListedElementNode(element)) {\n return \"\";\n }\n if (element.nodeType === Node.TEXT_NODE) {\n return element.textContent;\n } else {\n if (typeof (element as any).innerText === \"undefined\") {\n let result = \"\";\n for (let i = 0; i < element.childNodes.length; i++) {\n result += this.getInnerText(element.childNodes[i]);\n }\n return result;\n } else {\n return (element as any).innerText;\n }\n }\n }\n\n private getNormalizedInnerText(element: Node) {\n return Marker.normalizeText(this.getInnerText(element));\n }\n\n private findLastChildTextNode(node: Node | null): Node | null {\n if (!node) {\n return null;\n }\n if (node.nodeType === Node.TEXT_NODE) {\n return node;\n }\n if (node.childNodes) {\n for (let i = node.childNodes.length - 1; i >= 0; i--) {\n if (Marker.isBlackListedElementNode(node.childNodes[i])) {\n continue;\n }\n const candidate = this.findLastChildTextNode(node.childNodes[i]);\n if (candidate !== null) {\n return candidate;\n }\n }\n }\n return null;\n }\n\n private findFirstChildTextNode(node: Node): Node | null {\n if (node.nodeType === Node.TEXT_NODE) {\n return node;\n }\n if (node.childNodes) {\n for (let i = 0; i < node.childNodes.length; i++) {\n if (Marker.isBlackListedElementNode(node.childNodes[i])) {\n continue;\n }\n const candidate = this.findFirstChildTextNode(node.childNodes[i]);\n if (candidate !== null) {\n return candidate;\n }\n }\n }\n return null;\n }\n\n private findPreviousTextNodeInDomTree(ptr: Node | null) {\n while (ptr) {\n while (Marker.isBlackListedElementNode(ptr?.previousSibling || null)) {\n ptr = ptr?.previousSibling || null;\n }\n while (ptr?.previousSibling) {\n const candidate = this.findLastChildTextNode(\n ptr?.previousSibling || null\n );\n if (candidate) {\n return candidate;\n }\n ptr = ptr.previousSibling;\n }\n\n ptr = ptr?.parentElement || null;\n }\n return null;\n }\n\n private findNextTextNodeInDomTree(ptr: Node | null) {\n while (ptr) {\n while (Marker.isBlackListedElementNode(ptr?.nextSibling || null)) {\n ptr = ptr?.nextSibling || null;\n }\n while (ptr?.nextSibling) {\n if (Marker.isBlackListedElementNode(ptr?.nextSibling)) {\n ptr = ptr.nextSibling;\n continue;\n }\n const candidate = this.findFirstChildTextNode(ptr.nextSibling);\n if (candidate) {\n return candidate;\n }\n ptr = ptr.nextSibling;\n }\n\n ptr = ptr?.parentElement || null;\n }\n return null;\n }\n\n private forwardOffset(\n { element, offset }: { element: Node; offset: number },\n toMove: number\n ): { element: Node; offset: number } {\n const elementText = this.getNormalizedInnerText(element);\n if (elementText.length > toMove + offset) {\n offset += toMove;\n return { element, offset };\n } else {\n let nextTextNode = this.findNextTextNodeInDomTree(element);\n if (nextTextNode) {\n return this.forwardOffset(\n {\n element: nextTextNode,\n offset: 0,\n },\n toMove - (elementText.length - offset)\n );\n } else {\n offset = this.getInnerText(element);\n return { element, offset };\n }\n }\n }\n\n private backwardOffset(\n { element, offset }: { element: Node; offset: number },\n toMove: number\n ): { element: Node; offset: number } {\n if (offset >= toMove) {\n offset -= toMove;\n return { element, offset };\n } else {\n const previousTextNode = this.findPreviousTextNodeInDomTree(element);\n if (previousTextNode) {\n return this.backwardOffset(\n {\n element: previousTextNode,\n offset: this.getNormalizedInnerText(previousTextNode).length,\n },\n toMove - offset\n );\n } else {\n offset = 0;\n return { element, offset };\n }\n }\n }\n\n private findElementAtOffset(\n root: Node,\n offset: number\n ): { element: Node; offset: number } {\n if (root.nodeType === Node.TEXT_NODE) {\n return { element: root as Text, offset: offset };\n } else {\n let cumulativeOffset = 0;\n for (let i = 0; i < root.childNodes.length; i++) {\n if (Marker.isBlackListedElementNode(root.childNodes[i])) {\n continue;\n }\n const childSize = this.getNormalizedInnerText(\n root.childNodes[i]\n ).length;\n cumulativeOffset += childSize;\n if (cumulativeOffset < offset) {\n continue;\n }\n return this.findElementAtOffset(\n root.childNodes[i],\n offset - (cumulativeOffset - childSize)\n );\n }\n throw new Error(\"failed to findElementAtOffset\");\n }\n }\n\n private trimRangeSpaces(range: Range) {\n let start = this.getInnerText(range.startContainer).substr(\n range.startOffset\n );\n let startTrimmed = start.trimStart();\n range.setStart(\n range.startContainer,\n range.startOffset + (start.length - startTrimmed.length)\n );\n\n let end = this.getInnerText(range.endContainer).substr(0, range.endOffset);\n let endTrimmed = end.trimEnd();\n range.setEnd(\n range.endContainer,\n range.endOffset - (end.length - endTrimmed.length)\n );\n }\n\n private convertTextNodeToHighlightElement(word: Node) {\n const decoratedElement = document.createElement(HighlightTagName);\n word.parentElement?.insertBefore(decoratedElement, word.nextSibling);\n word.parentElement?.removeChild(word);\n decoratedElement.appendChild(word);\n return decoratedElement;\n }\n\n private buildContext(highlightId: string): EventHandlerContext {\n return {\n serializedRange: this.state.uidToSerializedRange[highlightId],\n marker: this,\n };\n }\n\n private adjustRangeAroundBlackListedElement(range: Range) {\n let ptr = range.startContainer;\n let blacklistedParentOfStartContainer = null;\n while (ptr) {\n if (Marker.isBlackListedElementNode(ptr)) {\n blacklistedParentOfStartContainer = ptr;\n }\n ptr = ptr.parentElement as any;\n }\n\n ptr = range.endContainer;\n let blacklistedParentOfEndContainer = null;\n while (ptr) {\n if (Marker.isBlackListedElementNode(ptr)) {\n blacklistedParentOfEndContainer = ptr;\n }\n ptr = ptr.parentElement as any;\n }\n if (\n blacklistedParentOfStartContainer &&\n blacklistedParentOfEndContainer &&\n blacklistedParentOfStartContainer === blacklistedParentOfEndContainer\n ) {\n throw new Error(\"cannot highlight blacklisted element\");\n }\n\n if (blacklistedParentOfStartContainer) {\n range.setStart(\n this.findNextTextNodeInDomTree(\n blacklistedParentOfStartContainer\n ) as any,\n 0\n );\n }\n if (blacklistedParentOfEndContainer) {\n let prevNode = this.findPreviousTextNodeInDomTree(\n blacklistedParentOfEndContainer\n ) as any;\n range.setEnd(prevNode, this.getInnerText(prevNode).length);\n }\n }\n\n public getSerializedRangeFromUid(uid: string): SerializedRange | null {\n return this.state.uidToSerializedRange[uid] || null;\n }\n}\n\nexport default Marker;\n","import Marker from \"./lib/classes/Marker\";\nimport DeserializationError, {\n isDeserializationError,\n} from \"./lib/classes/errors/DeserializationError\";\n\nconst Errors = {\n DeserializationError,\n isDeserializationError,\n};\n\nexport { Marker };\nexport { Errors };\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://web-marker/webpack/universalModuleDefinition","webpack://web-marker/webpack/bootstrap","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://web-marker/./node_modules/uuid/dist/esm-browser/rng.js","webpack://web-marker/./node_modules/uuid/dist/esm-browser/regex.js","webpack://web-marker/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://web-marker/./node_modules/uuid/dist/esm-browser/validate.js","webpack://web-marker/./node_modules/uuid/dist/esm-browser/v4.js","webpack://web-marker/./src/utils/makeid.ts","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/construct.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://web-marker/./src/lib/classes/errors/DeserializationError.ts","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://web-marker/./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack://web-marker/./src/lib/classes/Marker.ts","webpack://web-marker/./src/libroot.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_arrayLikeToArray","arr","len","length","arr2","Array","_createForOfIteratorHelper","iterator","isArray","minLen","toString","slice","constructor","from","test","F","done","e","_e","f","TypeError","it","err","normalCompletion","didErr","step","next","_e2","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","configurable","writable","getRandomValues","rnds8","Uint8Array","rng","crypto","msCrypto","Error","validate","uuid","REGEX","byteToHex","push","substr","stringify","offset","arguments","undefined","toLowerCase","v4","options","buf","rnds","random","makeid","uuidv4","_setPrototypeOf","setPrototypeOf","__proto__","_getPrototypeOf","getPrototypeOf","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","_typeof","obj","_possibleConstructorReturn","self","ReferenceError","Parent","args","Class","a","apply","Function","_cache","Map","fn","indexOf","has","set","Wrapper","this","DeserializationError","subClass","superClass","Derived","result","Super","NewTarget","blackListedElementStyle","document","createElement","innerText","defaultHighlightPainter","paintHighlight","context","element","console","log","style","textDecoration","textDecorationColor","defaultEventHandler","onHighlightClick","onHighlightHoverStateChange","hovering","backgroundColor","Marker","rootElement","highlightPainter","eventHandler","state","lastHoverId","uidToSerializedRange","clickListener","HTMLElement","id","getAttribute","buildContext","mouseoverListener","newHoverId","oldHoverId","highlightHovering","body","protoProps","staticProps","selection","getSelection","empty","removeAllRanges","highlightId","elements","getElementsByTagName","item","normalizeTextCache","replace","nodeType","Node","ELEMENT_NODE","computedStyle","getComputedStyle","display","visibility","className","tagName","textNode","normalizedOffset","textContent","cumulative","normalizeText","childNodes","parentNode","insertBefore","removeChild","range","addRange","uid","charsToKeepForTextBeforeAndTextAfter","head","appendChild","adjustRangeAroundBlackListedElement","convertRangeToSelection","text","textNormalized","textBefore","textAfter","getInnerText","startContainer","startOffset","ptr","findPreviousTextNodeInDomTree","endContainer","endOffset","findNextTextNodeInDomTree","serializedRange","deserializeRange","collapsed","setElementHighlightIdAttribute","setAttribute","Promise","resolve","word","splitText","convertTextNodeToHighlightElement","toPaint","forEach","decoratedElement","parentElement","nextSibling","then","paintHighlights","clearSelection","resolveHighlightElements","unpaintElement","rootText","getNormalizedInnerText","resolveSerializedRangeOffsetInText","start","findElementAtOffset","end","createRange","setStart","getRealOffset","setEnd","trimRangeSpaces","addEventListener","removeEventListener","beforePaintHighlight","afterPaintHighlight","isBlackListedElementNode","TEXT_NODE","node","candidate","findLastChildTextNode","findFirstChildTextNode","previousSibling","toMove","elementText","nextTextNode","forwardOffset","previousTextNode","backwardOffset","cumulativeOffset","childSize","startTrimmed","trimStart","endTrimmed","trimEnd","marker","blacklistedParentOfStartContainer","blacklistedParentOfEndContainer","prevNode","textBeforeNormalized","textAfterNormalized","resolveSerializedRangeOffsetInTextStrategies","strategy","textToSearch","index","Errors","isDeserializationError"],"mappings":"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","file":"web-marker.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"web-marker\"] = factory();\n\telse\n\t\troot[\"web-marker\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = unsupportedIterableToArray(o))) {\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var it,\n normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { v4 as uuidv4 } from \"uuid\";\n\nexport default function makeid() {\n return uuidv4();\n}\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import setPrototypeOf from \"./setPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport setPrototypeOf from \"./setPrototypeOf\";\nimport isNativeFunction from \"./isNativeFunction\";\nimport construct from \"./construct\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","export default class DeserializationError extends Error {}\n\nexport function isDeserializationError(err: Error): boolean {\n return err instanceof DeserializationError;\n}\n","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n return function () {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (isNativeReflectConstruct()) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","import makeid from \"../../utils/makeid\";\nimport EventHandler from \"./EventHandler\";\nimport HighlightPainter from \"./HighlightPainter\";\nimport EventHandlerContext from \"./Context\";\nimport Context from \"./Context\";\nimport SerializedRange from \"./SerializedRange\";\nimport DeserializationError from \"./errors/DeserializationError\";\n\nconst HighlightTagName = \"web-marker-highlight\";\nconst HighlightBlacklistedElementClassName = \"web-marker-black-listed-element\";\nconst AttributeNameHighlightId = \"highlight-id\";\n\nconst defaultCharsToKeepForTextBeforeAndTextAfter = 128;\nconst blackListedElementStyle = document.createElement(\"style\");\nblackListedElementStyle.innerText = `.${HighlightBlacklistedElementClassName} {display:none!important;};`;\n\ninterface MarkerConstructorArgs {\n rootElement?: HTMLElement;\n eventHandler?: EventHandler;\n highlightPainter?: HighlightPainter;\n}\n\nconst defaultHighlightPainter: HighlightPainter = {\n paintHighlight: (context: Context, element: HTMLElement) => {\n console.log(\"paintHighlight\", context, element);\n element.style.textDecoration = \"underline\";\n element.style.textDecorationColor = \"orange\";\n },\n};\n\nconst defaultEventHandler: EventHandler = {\n onHighlightClick: (context, element) => {\n console.log(\"onHighlightClick\", context, element);\n },\n onHighlightHoverStateChange: (context, element, hovering) => {\n console.log(\"onHighlightHoverStateChange\", context, element);\n if (hovering) {\n element.style.backgroundColor = \"#FFE49C\";\n } else {\n element.style.backgroundColor = \"\";\n }\n },\n};\n\nclass Marker {\n public static normalizeTextCache = {} as any;\n rootElement: Element;\n eventHandler: EventHandler;\n highlightPainter: HighlightPainter;\n state = {\n lastHoverId: \"\",\n uidToSerializedRange: {} as { [key: string]: SerializedRange },\n };\n\n constructor({\n rootElement,\n highlightPainter,\n eventHandler,\n }: MarkerConstructorArgs) {\n this.rootElement = rootElement || document.body;\n this.highlightPainter = highlightPainter || defaultHighlightPainter;\n this.eventHandler = eventHandler || defaultEventHandler;\n }\n\n public static clearSelection() {\n const selection = window.getSelection();\n if (!selection) {\n return;\n }\n if (selection.empty) {\n selection.empty();\n } else if (selection.removeAllRanges) {\n selection.removeAllRanges();\n }\n }\n\n private static resolveHighlightElements(highlightId: string): HTMLElement[] {\n let elements: HTMLElement[] = [];\n for (let item of Array.from(\n document.getElementsByTagName(HighlightTagName)\n )) {\n if (item.getAttribute(AttributeNameHighlightId) === highlightId) {\n elements.push(item as HTMLElement);\n }\n }\n return elements;\n }\n\n private static normalizeText(s: string) {\n if (!Marker.normalizeTextCache[s]) {\n Marker.normalizeTextCache[s] = s.replace(/\\s/g, \"\").toLowerCase();\n }\n return Marker.normalizeTextCache[s];\n }\n\n private static isBlackListedElementNode(element: Node | null) {\n if (!element) {\n return false;\n }\n if (element.nodeType !== Node.ELEMENT_NODE) {\n return false;\n }\n const computedStyle = getComputedStyle(element as any);\n if (computedStyle.display === \"none\") {\n return true;\n }\n if (computedStyle.visibility === \"hidden\") {\n return true;\n }\n\n const className = (element as any).className;\n if (\n className &&\n className.indexOf &&\n className.indexOf(HighlightBlacklistedElementClassName) >= 0\n ) {\n return true;\n }\n\n const tagName = (element as any).tagName;\n return (\n tagName === \"STYLE\" ||\n tagName === \"SCRIPT\" ||\n tagName === \"TITLE\" ||\n tagName === \"NOSCRIPT\"\n );\n }\n\n private static getRealOffset(textNode: Node, normalizedOffset: number) {\n const s = textNode.textContent || \"\";\n let cumulative = 0;\n for (let i = 0; i < s.length; i++) {\n while (i < s.length && !Marker.normalizeText(s.substr(i, 1))) {\n // omit whitespaces\n i++;\n }\n if (cumulative === normalizedOffset) {\n return i;\n }\n cumulative++;\n }\n if (cumulative === normalizedOffset) {\n return s.length;\n }\n throw new Error(\"failed to get real offset\");\n }\n\n private static unpaintElement(element: HTMLElement) {\n let childNodes = Array.from(element.childNodes);\n for (let i = 0; i < childNodes.length; i++) {\n element.parentNode?.insertBefore(childNodes[i], element);\n }\n element.parentNode?.removeChild(element);\n }\n\n private static convertRangeToSelection(range: Range) {\n const selection = window.getSelection() as any;\n selection.removeAllRanges();\n selection.addRange(range);\n return selection;\n }\n\n public serializeRange(\n range: Range,\n options: { uid?: string; charsToKeepForTextBeforeAndTextAfter?: number } = {\n uid: undefined,\n charsToKeepForTextBeforeAndTextAfter:\n defaultCharsToKeepForTextBeforeAndTextAfter,\n }\n ): SerializedRange | null {\n document.head.appendChild(blackListedElementStyle);\n\n try {\n this.adjustRangeAroundBlackListedElement(range);\n const uid = options?.uid || makeid();\n const charsToKeepForTextBeforeAndTextAfter =\n options?.charsToKeepForTextBeforeAndTextAfter ||\n defaultCharsToKeepForTextBeforeAndTextAfter;\n const selection = Marker.convertRangeToSelection(range);\n\n let text = selection.toString();\n let textNormalized = Marker.normalizeText(text);\n if (textNormalized) {\n let textBefore = \"\";\n let textAfter = \"\";\n\n {\n // find textBefore\n textBefore =\n textBefore +\n this.getInnerText(range.startContainer).substr(\n 0,\n range.startOffset\n );\n\n let ptr = range.startContainer as Node | null;\n while (textBefore.length < charsToKeepForTextBeforeAndTextAfter) {\n ptr = this.findPreviousTextNodeInDomTree(ptr);\n if (!ptr) {\n // already reached the front\n break;\n }\n textBefore = (ptr as any).textContent + textBefore;\n }\n if (textBefore.length > charsToKeepForTextBeforeAndTextAfter) {\n textBefore = textBefore.substr(\n textBefore.length - charsToKeepForTextBeforeAndTextAfter\n );\n }\n }\n\n {\n // find textAfter\n textAfter =\n textAfter +\n this.getInnerText(range.endContainer).substr(range.endOffset);\n\n let ptr = range.endContainer as Node | null;\n while (textAfter.length < charsToKeepForTextBeforeAndTextAfter) {\n ptr = this.findNextTextNodeInDomTree(ptr);\n if (!ptr) {\n // already reached the end\n break;\n }\n textAfter = textAfter + (ptr as any).textContent;\n }\n\n if (textAfter.length > charsToKeepForTextBeforeAndTextAfter) {\n textAfter = textAfter.substr(\n 0,\n charsToKeepForTextBeforeAndTextAfter\n );\n }\n }\n\n this.state.uidToSerializedRange[uid] = {\n uid,\n textBefore,\n text,\n textAfter,\n };\n return this.state.uidToSerializedRange[uid];\n }\n\n return null;\n } finally {\n document.head.removeChild(blackListedElementStyle);\n }\n }\n\n public paint(serializedRange: SerializedRange) {\n if (!serializedRange) {\n return;\n }\n const uid = serializedRange.uid;\n const range = this.deserializeRange(serializedRange);\n if (!range.collapsed) {\n const setElementHighlightIdAttribute = (element: HTMLElement) => {\n element.setAttribute(AttributeNameHighlightId, uid);\n };\n\n new Promise((resolve) => {\n if (range.startContainer === range.endContainer) {\n if (range.startOffset === range.endOffset) {\n resolve(null);\n return;\n }\n // special case\n const word = (<Text>range.startContainer).splitText(\n range.startOffset\n );\n word.splitText(range.endOffset);\n setElementHighlightIdAttribute(\n this.convertTextNodeToHighlightElement(word)\n );\n\n resolve(null);\n return;\n }\n\n const toPaint = [];\n let ptr = (<Text>range.startContainer).splitText(\n range.startOffset\n ) as Node | null;\n toPaint.push(ptr);\n\n while (true) {\n ptr = this.findNextTextNodeInDomTree(ptr);\n if (ptr === range.endContainer) {\n break;\n }\n toPaint.push(ptr);\n }\n\n (<Text>range.endContainer).splitText(range.endOffset);\n toPaint.push(range.endContainer);\n\n toPaint.forEach((item) => {\n if (item) {\n let decoratedElement = this.convertTextNodeToHighlightElement(item);\n setElementHighlightIdAttribute(decoratedElement);\n\n if (!decoratedElement.innerText) {\n decoratedElement.parentElement?.insertBefore(\n item,\n decoratedElement.nextSibling\n );\n decoratedElement.parentElement?.removeChild(decoratedElement);\n }\n }\n });\n\n resolve(null);\n return;\n }).then(() => {\n this.paintHighlights(uid);\n });\n }\n Marker.clearSelection();\n return { range };\n }\n\n public unpaint(serializedRange: SerializedRange) {\n const id = serializedRange.uid;\n\n for (let element of Marker.resolveHighlightElements(id)) {\n Marker.unpaintElement(element);\n }\n }\n\n public deserializeRange(serializedRange: SerializedRange) {\n document.head.appendChild(blackListedElementStyle);\n try {\n this.state.uidToSerializedRange[serializedRange.uid] = serializedRange;\n const rootText = this.getNormalizedInnerText(this.rootElement);\n const offset = this.resolveSerializedRangeOffsetInText(\n rootText,\n serializedRange\n );\n const start = this.findElementAtOffset(this.rootElement, offset);\n const end = this.findElementAtOffset(\n this.rootElement,\n offset + Marker.normalizeText(serializedRange.text).length\n );\n const range = document.createRange();\n range.setStart(\n start.element,\n Marker.getRealOffset(start.element, start.offset)\n );\n range.setEnd(end.element, Marker.getRealOffset(end.element, end.offset));\n this.trimRangeSpaces(range);\n return range;\n } finally {\n document.head.removeChild(blackListedElementStyle);\n }\n }\n\n clickListener = (e: Event) => {\n if (!e.target || !(e.target instanceof HTMLElement)) {\n return;\n }\n\n const target = e.target as HTMLElement;\n const id = target.getAttribute(AttributeNameHighlightId);\n if (id && this.eventHandler.onHighlightClick) {\n this.eventHandler.onHighlightClick(this.buildContext(id), target, e);\n }\n };\n\n mouseoverListener = (e: Event) => {\n if (!e.target || !(e.target instanceof HTMLElement)) {\n return;\n }\n\n const target = e.target as HTMLElement;\n let newHoverId = target?.getAttribute(AttributeNameHighlightId);\n if (this.state.lastHoverId === newHoverId) {\n return;\n }\n const oldHoverId = this.state.lastHoverId;\n this.state.lastHoverId = newHoverId as string;\n\n if (newHoverId) {\n this.highlightHovering(newHoverId, true, e);\n }\n if (oldHoverId) {\n this.highlightHovering(oldHoverId, false, e);\n }\n };\n\n public addEventListeners() {\n this.rootElement.addEventListener(\"click\", this.clickListener, true);\n this.rootElement.addEventListener(\n \"mouseover\",\n this.mouseoverListener,\n true\n );\n }\n\n public removeEventListeners() {\n this.rootElement.removeEventListener(\"click\", this.clickListener, true);\n this.rootElement.removeEventListener(\n \"mouseover\",\n this.mouseoverListener,\n true\n );\n }\n\n public paintHighlights(highlightId: string) {\n let context = this.buildContext(highlightId);\n if (this.highlightPainter.beforePaintHighlight) {\n this.highlightPainter.beforePaintHighlight(context);\n }\n for (let element of Marker.resolveHighlightElements(highlightId)) {\n this.highlightPainter.paintHighlight(\n context,\n element\n );\n }\n if (this.highlightPainter.afterPaintHighlight) {\n this.highlightPainter.afterPaintHighlight(context);\n }\n }\n\n private highlightHovering(highlightId: string, hovering: boolean, e: Event) {\n for (let element of Marker.resolveHighlightElements(highlightId)) {\n if (this.eventHandler.onHighlightHoverStateChange) {\n this.eventHandler.onHighlightHoverStateChange(\n this.buildContext(highlightId),\n element as any,\n hovering,\n e\n );\n }\n }\n }\n\n private getInnerText(element: Node) {\n if (Marker.isBlackListedElementNode(element)) {\n return \"\";\n }\n if (element.nodeType === Node.TEXT_NODE) {\n return element.textContent;\n } else {\n if (typeof (element as any).innerText === \"undefined\") {\n let result = \"\";\n for (let i = 0; i < element.childNodes.length; i++) {\n result += this.getInnerText(element.childNodes[i]);\n }\n return result;\n } else {\n return (element as any).innerText;\n }\n }\n }\n\n private getNormalizedInnerText(element: Node) {\n return Marker.normalizeText(this.getInnerText(element));\n }\n\n private findLastChildTextNode(node: Node | null): Node | null {\n if (!node) {\n return null;\n }\n if (node.nodeType === Node.TEXT_NODE) {\n return node;\n }\n if (node.childNodes) {\n for (let i = node.childNodes.length - 1; i >= 0; i--) {\n if (Marker.isBlackListedElementNode(node.childNodes[i])) {\n continue;\n }\n const candidate = this.findLastChildTextNode(node.childNodes[i]);\n if (candidate !== null) {\n return candidate;\n }\n }\n }\n return null;\n }\n\n private findFirstChildTextNode(node: Node): Node | null {\n if (node.nodeType === Node.TEXT_NODE) {\n return node;\n }\n if (node.childNodes) {\n for (let i = 0; i < node.childNodes.length; i++) {\n if (Marker.isBlackListedElementNode(node.childNodes[i])) {\n continue;\n }\n const candidate = this.findFirstChildTextNode(node.childNodes[i]);\n if (candidate !== null) {\n return candidate;\n }\n }\n }\n return null;\n }\n\n private findPreviousTextNodeInDomTree(ptr: Node | null) {\n while (ptr) {\n while (Marker.isBlackListedElementNode(ptr?.previousSibling || null)) {\n ptr = ptr?.previousSibling || null;\n }\n while (ptr?.previousSibling) {\n const candidate = this.findLastChildTextNode(\n ptr?.previousSibling || null\n );\n if (candidate) {\n return candidate;\n }\n ptr = ptr.previousSibling;\n }\n\n ptr = ptr?.parentElement || null;\n }\n return null;\n }\n\n private findNextTextNodeInDomTree(ptr: Node | null) {\n while (ptr) {\n while (Marker.isBlackListedElementNode(ptr?.nextSibling || null)) {\n ptr = ptr?.nextSibling || null;\n }\n while (ptr?.nextSibling) {\n if (Marker.isBlackListedElementNode(ptr?.nextSibling)) {\n ptr = ptr.nextSibling;\n continue;\n }\n const candidate = this.findFirstChildTextNode(ptr.nextSibling);\n if (candidate) {\n return candidate;\n }\n ptr = ptr.nextSibling;\n }\n\n ptr = ptr?.parentElement || null;\n }\n return null;\n }\n\n private forwardOffset(\n { element, offset }: { element: Node; offset: number },\n toMove: number\n ): { element: Node; offset: number } {\n const elementText = this.getNormalizedInnerText(element);\n if (elementText.length > toMove + offset) {\n offset += toMove;\n return { element, offset };\n } else {\n let nextTextNode = this.findNextTextNodeInDomTree(element);\n if (nextTextNode) {\n return this.forwardOffset(\n {\n element: nextTextNode,\n offset: 0,\n },\n toMove - (elementText.length - offset)\n );\n } else {\n offset = this.getInnerText(element);\n return { element, offset };\n }\n }\n }\n\n private backwardOffset(\n { element, offset }: { element: Node; offset: number },\n toMove: number\n ): { element: Node; offset: number } {\n if (offset >= toMove) {\n offset -= toMove;\n return { element, offset };\n } else {\n const previousTextNode = this.findPreviousTextNodeInDomTree(element);\n if (previousTextNode) {\n return this.backwardOffset(\n {\n element: previousTextNode,\n offset: this.getNormalizedInnerText(previousTextNode).length,\n },\n toMove - offset\n );\n } else {\n offset = 0;\n return { element, offset };\n }\n }\n }\n\n private findElementAtOffset(\n root: Node,\n offset: number\n ): { element: Node; offset: number } {\n if (root.nodeType === Node.TEXT_NODE) {\n return { element: root as Text, offset: offset };\n } else {\n let cumulativeOffset = 0;\n for (let i = 0; i < root.childNodes.length; i++) {\n if (Marker.isBlackListedElementNode(root.childNodes[i])) {\n continue;\n }\n const childSize = this.getNormalizedInnerText(\n root.childNodes[i]\n ).length;\n cumulativeOffset += childSize;\n if (cumulativeOffset < offset) {\n continue;\n }\n return this.findElementAtOffset(\n root.childNodes[i],\n offset - (cumulativeOffset - childSize)\n );\n }\n throw new Error(\"failed to findElementAtOffset\");\n }\n }\n\n private trimRangeSpaces(range: Range) {\n let start = this.getInnerText(range.startContainer).substr(\n range.startOffset\n );\n let startTrimmed = start.trimStart();\n range.setStart(\n range.startContainer,\n range.startOffset + (start.length - startTrimmed.length)\n );\n\n let end = this.getInnerText(range.endContainer).substr(0, range.endOffset);\n let endTrimmed = end.trimEnd();\n range.setEnd(\n range.endContainer,\n range.endOffset - (end.length - endTrimmed.length)\n );\n }\n\n private convertTextNodeToHighlightElement(word: Node) {\n const decoratedElement = document.createElement(HighlightTagName);\n word.parentElement?.insertBefore(decoratedElement, word.nextSibling);\n word.parentElement?.removeChild(word);\n decoratedElement.appendChild(word);\n return decoratedElement;\n }\n\n private buildContext(highlightId: string): EventHandlerContext {\n return {\n serializedRange: this.state.uidToSerializedRange[highlightId],\n marker: this,\n };\n }\n\n private adjustRangeAroundBlackListedElement(range: Range) {\n let ptr = range.startContainer;\n let blacklistedParentOfStartContainer = null;\n while (ptr) {\n if (Marker.isBlackListedElementNode(ptr)) {\n blacklistedParentOfStartContainer = ptr;\n }\n ptr = ptr.parentElement as any;\n }\n\n ptr = range.endContainer;\n let blacklistedParentOfEndContainer = null;\n while (ptr) {\n if (Marker.isBlackListedElementNode(ptr)) {\n blacklistedParentOfEndContainer = ptr;\n }\n ptr = ptr.parentElement as any;\n }\n if (\n blacklistedParentOfStartContainer &&\n blacklistedParentOfEndContainer &&\n blacklistedParentOfStartContainer === blacklistedParentOfEndContainer\n ) {\n throw new Error(\"cannot highlight blacklisted element\");\n }\n\n if (blacklistedParentOfStartContainer) {\n range.setStart(\n this.findNextTextNodeInDomTree(\n blacklistedParentOfStartContainer\n ) as any,\n 0\n );\n }\n if (blacklistedParentOfEndContainer) {\n let prevNode = this.findPreviousTextNodeInDomTree(\n blacklistedParentOfEndContainer\n ) as any;\n range.setEnd(prevNode, this.getInnerText(prevNode).length);\n }\n }\n\n public getSerializedRangeFromUid(uid: string): SerializedRange | null {\n return this.state.uidToSerializedRange[uid] || null;\n }\n\n resolveSerializedRangeOffsetInText(\n text: any,\n serializedRange: SerializedRange\n ): number {\n // TODO: optimize algorithm, maybe use https://github.com/google/diff-match-patch\n const textBeforeNormalized = Marker.normalizeText(\n serializedRange.textBefore\n );\n const textAfterNormalized = Marker.normalizeText(serializedRange.textAfter);\n const textNormalized = Marker.normalizeText(serializedRange.text);\n\n for (let strategy of resolveSerializedRangeOffsetInTextStrategies) {\n const textToSearch =\n (strategy.textBefore ? textBeforeNormalized : \"\") +\n textNormalized +\n (strategy.textAfter ? textAfterNormalized : \"\");\n\n const index = text.indexOf(textToSearch);\n if (index >= 0) {\n return index + (strategy.textBefore ? textBeforeNormalized.length : 0);\n }\n }\n\n throw new DeserializationError();\n }\n}\n\nconst resolveSerializedRangeOffsetInTextStrategies = [\n {\n textBefore: true,\n textAfter: true,\n },\n {\n textBefore: false,\n textAfter: true,\n },\n {\n textBefore: true,\n textAfter: false,\n },\n {\n textBefore: false,\n textAfter: false,\n },\n];\n\nexport default Marker;\nexport type { MarkerConstructorArgs };\n","import Marker, { MarkerConstructorArgs } from \"./lib/classes/Marker\";\nimport DeserializationError, {\n isDeserializationError,\n} from \"./lib/classes/errors/DeserializationError\";\nimport SerializedRange from \"./lib/classes/SerializedRange\";\nimport Context from \"./lib/classes/Context\";\nimport EventHandler from \"./lib/classes/EventHandler\";\nimport HighlightPainter from \"./lib/classes/HighlightPainter\";\n\nconst Errors = {\n isDeserializationError,\n};\n\nexport { Marker };\nexport { Errors };\n\nexport type {\n Context,\n EventHandler,\n HighlightPainter,\n SerializedRange,\n MarkerConstructorArgs,\n DeserializationError,\n};\n"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@notelix/web-marker",
3
- "version": "1.0.13",
3
+ "version": "2.0.2",
4
4
  "description": "a web page highlighter",
5
5
  "main": "./build/web-marker.js",
6
6
  "types": "./build/libroot.d.ts",
@@ -1,2 +0,0 @@
1
- import SerializedRange from "../lib/classes/SerializedRange";
2
- export default function resolveSerializedRangeOffsetInText(text: any, serializedRange: SerializedRange): number;