{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap c64cdb444f7887e30543","webpack:///./index.js","webpack:///./src/PDFJSAnnotate.js","webpack:///./src/adapter/StoreAdapter.js","webpack:///./src/utils/abstractFunction.js","webpack:///./src/UI/event.js","webpack:///(webpack)/~/node-libs-browser/~/events/events.js","webpack:///./src/UI/utils.js","webpack:///./~/create-stylesheet/index.js","webpack:///./src/adapter/LocalStoreAdapter.js","webpack:///./src/utils/uuid.js","webpack:///./src/render/index.js","webpack:///./src/render/appendChild.js","webpack:///./~/object-assign/index.js","webpack:///./src/render/renderLine.js","webpack:///./src/utils/setAttributes.js","webpack:///./src/utils/normalizeColor.js","webpack:///./src/render/renderPath.js","webpack:///./src/render/renderPoint.js","webpack:///./src/render/renderRect.js","webpack:///./src/render/renderText.js","webpack:///./src/a11y/renderScreenReaderHints.js","webpack:///./src/a11y/insertScreenReaderHint.js","webpack:///./src/a11y/createScreenReaderOnly.js","webpack:///./src/a11y/insertElementWithinChildren.js","webpack:///./src/a11y/insertElementWithinElement.js","webpack:///./src/a11y/renderScreenReaderComments.js","webpack:///./src/a11y/insertScreenReaderComment.js","webpack:///./src/a11y/initEventHandlers.js","webpack:///./src/UI/index.js","webpack:///./src/UI/edit.js","webpack:///./src/UI/pen.js","webpack:///./src/UI/point.js","webpack:///./src/UI/rect.js","webpack:///./src/UI/text.js","webpack:///./src/UI/page.js"],"names":[],"mappings":"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,cAAc,MAAd,EAAsB;AACrC,aAAQ,IAAR,CAAa,iBAAb,EAAgC,SAAhC,EADqC;IAAvC;;;AANiE,OAW7D,MAAJ,EAAY;AACV,aAAQ,IAAR,CAAa,kBAAb,EAAiC,MAAjC,EADU;IAAZ;;AAIA,eAAY,MAAZ,CAfiE;EAAhC,CAAnC;;;;;;;;;;;;;;;;;;;AAmCO,UAAS,SAAT,GAAqB;AAAE,WAAQ,IAAR,gBAAgB,SAAhB,EAAF;EAArB;AACA,UAAS,gBAAT,GAA4B;AAAE,WAAQ,EAAR,gBAAc,SAAd,EAAF;EAA5B;AACA,UAAS,mBAAT,GAA+B;AAAE,WAAQ,cAAR,gBAA0B,SAA1B,EAAF;EAA/B,C;;;;;;ACpDP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AAC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","file":"dist/pdf-annotate.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[\"PDFAnnotate\"] = factory();\n\telse\n\t\troot[\"PDFAnnotate\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \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\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap c64cdb444f7887e30543\n **/","import PDFJSAnnotate from './src/PDFJSAnnotate';\n\nexport default PDFJSAnnotate;\n\n\n\n/** WEBPACK FOOTER **\n ** ./index.js\n **/","import StoreAdapter from './adapter/StoreAdapter';\nimport LocalStoreAdapter from './adapter/LocalStoreAdapter';\nimport render from './render';\nimport UI from './UI';\n\nexport default {\n /**\n * Abstract class that needs to be defined so PDFJSAnnotate\n * knows how to communicate with your server.\n */\n StoreAdapter,\n\n /**\n * Implementation of StoreAdapter that stores annotation data to localStorage.\n */\n LocalStoreAdapter,\n\n /**\n * Abstract instance of StoreAdapter\n */\n __storeAdapter: new StoreAdapter(),\n\n /**\n * Getter for the underlying StoreAdapter property\n *\n * @return {StoreAdapter}\n */\n getStoreAdapter() {\n return this.__storeAdapter;\n },\n\n /**\n * Setter for the underlying StoreAdapter property\n *\n * @param {StoreAdapter} adapter The StoreAdapter implementation to be used.\n */\n setStoreAdapter(adapter) {\n // TODO this throws an error when bundled\n // if (!(adapter instanceof StoreAdapter)) {\n // throw new Error('adapter must be an instance of StoreAdapter');\n // }\n\n this.__storeAdapter = adapter;\n },\n\n /**\n * UI is a helper for instrumenting UI interactions for creating,\n * editing, and deleting annotations in the browser.\n */\n UI,\n\n /**\n * Render the annotations for a page in the PDF Document\n *\n * @param {SVGElement} svg The SVG element that annotations should be rendered to\n * @param {PageViewport} viewport The PDFPage.getViewport data\n * @param {Object} data The StoreAdapter.getAnnotations data\n * @return {Promise}\n */\n render,\n\n /**\n * Convenience method for getting annotation data\n *\n * @alias StoreAdapter.getAnnotations\n * @param {String} documentId The ID of the document\n * @param {String} pageNumber The page number\n * @return {Promise}\n */\n getAnnotations(documentId, pageNumber) {\n return this.getStoreAdapter().getAnnotations(...arguments);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/PDFJSAnnotate.js\n **/","import abstractFunction from '../utils/abstractFunction';\nimport { fireEvent } from '../UI/event';\n\n// Adapter should never be invoked publicly\nexport default class StoreAdapter {\n /**\n * Create a new StoreAdapter instance\n *\n * @param {Object} [definition] The definition to use for overriding abstract methods\n */\n constructor(definition = {}) {\n // Copy each function from definition if it is a function we know about\n Object.keys(definition).forEach((key) => {\n if (typeof definition[key] === 'function' &&\n typeof this[key] === 'function') {\n this[key] = definition[key];\n }\n });\n }\n\n /**\n * Get all the annotations for a given document and page number.\n *\n * @param {String} documentId The ID for the document the annotations belong to\n * @param {Number} pageNumber The number of the page the annotations belong to\n * @return {Promise}\n */\n __getAnnotations(documentId, pageNumber) { abstractFunction('getAnnotations'); }\n get getAnnotations() { return this.__getAnnotations; }\n set getAnnotations(fn) {\n this.__getAnnotations = function getAnnotations(documentId, pageNumber) {\n return fn(...arguments).then((annotations) => {\n // TODO may be best to have this happen on the server\n if (annotations.annotations) {\n annotations.annotations.forEach((a) => {\n a.documentId = documentId;\n });\n }\n return annotations;\n });\n };\n }\n\n /**\n * Get the definition for a specific annotation.\n *\n * @param {String} documentId The ID for the document the annotation belongs to\n * @param {String} annotationId The ID for the annotation\n * @return {Promise}\n */\n getAnnotation(documentId, annotationId) { abstractFunction('getAnnotation'); }\n\n /**\n * Add an annotation\n *\n * @param {String} documentId The ID for the document to add the annotation to\n * @param {String} pageNumber The page number to add the annotation to\n * @param {Object} annotation The definition for the new annotation\n * @return {Promise}\n */\n __addAnnotation(documentId, pageNumber, annotation) { abstractFunction('addAnnotation'); }\n get addAnnotation() { return this.__addAnnotation; }\n set addAnnotation(fn) {\n this.__addAnnotation = function addAnnotation(documentId, pageNumber, annotation) {\n return fn(...arguments).then((annotation) => {\n fireEvent('annotation:add', documentId, pageNumber, annotation);\n return annotation;\n });\n };\n }\n\n /**\n * Edit an annotation\n *\n * @param {String} documentId The ID for the document\n * @param {String} pageNumber the page number of the annotation\n * @param {Object} annotation The definition of the modified annotation\n * @return {Promise}\n */\n __editAnnotation(documentId, pageNumber, annotation) { abstractFunction('editAnnotation'); }\n get editAnnotation() { return this.__editAnnotation; }\n set editAnnotation(fn) {\n this.__editAnnotation = function editAnnotation(documentId, annotationId, annotation) {\n return fn(...arguments).then((annotation) => {\n fireEvent('annotation:edit', documentId, annotationId, annotation);\n return annotation;\n });\n };\n }\n\n /**\n * Delete an annotation\n *\n * @param {String} documentId The ID for the document\n * @param {String} annotationId The ID for the annotation\n * @return {Promise}\n */\n __deleteAnnotation(documentId, annotationId) { abstractFunction('deleteAnnotation'); }\n get deleteAnnotation() { return this.__deleteAnnotation; }\n set deleteAnnotation(fn) {\n this.__deleteAnnotation = function deleteAnnotation(documentId, annotationId) {\n return fn(...arguments).then((success) => {\n if (success) {\n fireEvent('annotation:delete', documentId, annotationId);\n }\n return success;\n });\n };\n }\n\n /**\n * Get all the comments for an annotation\n *\n * @param {String} documentId The ID for the document\n * @param {String} annotationId The ID for the annotation\n * @return {Promise}\n */\n getComments(documentId, annotationId) { abstractFunction('getComments'); }\n\n /**\n * Add a new comment\n *\n * @param {String} documentId The ID for the document\n * @param {String} annotationId The ID for the annotation\n * @param {Object} content The definition of the comment\n * @return {Promise}\n */\n __addComment(documentId, annotationId, content) { abstractFunction('addComment'); }\n get addComment() { return this.__addComment; }\n set addComment(fn) {\n this.__addComment = function addComment(documentId, annotationId, content) {\n return fn(...arguments).then((comment) => {\n fireEvent('comment:add', documentId, annotationId, comment);\n return comment;\n });\n };\n }\n\n /**\n * Delete a comment\n *\n * @param {String} documentId The ID for the document\n * @param {String} commentId The ID for the comment\n * @return {Promise}\n */\n __deleteComment(documentId, commentId) { abstractFunction('deleteComment'); }\n get deleteComment() { return this.__deleteComment; }\n set deleteComment(fn) {\n this.__deleteComment = function deleteComment(documentId, commentId) {\n return fn(...arguments).then((success) => {\n if (success) {\n fireEvent('comment:delete', documentId, commentId);\n }\n return success;\n });\n };\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/adapter/StoreAdapter.js\n **/","/**\n * Throw an Error for an abstract function that hasn't been implemented.\n *\n * @param {String} name The name of the abstract function\n */\nexport default function abstractFunction(name) {\n throw new Error(name + ' is not implemented');\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/abstractFunction.js\n **/","import EventEmitter from 'events';\nimport {\n findAnnotationAtPoint,\n findSVGAtPoint\n} from './utils';\n\nconst emitter = new EventEmitter;\n\nlet clickNode;\n\n/**\n * Handle document.click event\n *\n * @param {Event} e The DOM event to be handled\n */\ndocument.addEventListener('click', function handleDocumentClick(e) {\n if (!findSVGAtPoint(e.clientX, e.clientY)) { return; }\n\n let target = findAnnotationAtPoint(e.clientX, e.clientY);\n\n // Emit annotation:blur if clickNode is no longer clicked\n if (clickNode && clickNode !== target) {\n emitter.emit('annotation:blur', clickNode);\n }\n\n // Emit annotation:click if target was clicked\n if (target) {\n emitter.emit('annotation:click', target);\n }\n\n clickNode = target;\n});\n\n// let mouseOverNode;\n// document.addEventListener('mousemove', function handleDocumentMousemove(e) {\n// let target = findAnnotationAtPoint(e.clientX, e.clientY);\n//\n// // Emit annotation:mouseout if target was mouseout'd\n// if (mouseOverNode && !target) {\n// emitter.emit('annotation:mouseout', mouseOverNode);\n// }\n//\n// // Emit annotation:mouseover if target was mouseover'd\n// if (target && mouseOverNode !== target) {\n// emitter.emit('annotation:mouseover', target);\n// }\n//\n// mouseOverNode = target;\n// });\n\nexport function fireEvent() { emitter.emit(...arguments); };\nexport function addEventListener() { emitter.on(...arguments); };\nexport function removeEventListener() { emitter.removeListener(...arguments); };\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/UI/event.js\n **/","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n }\n throw TypeError('Uncaught, unspecified \"error\" event.');\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/events/events.js\n ** module id = 5\n ** module chunks = 0\n **/","import createStyleSheet from 'create-stylesheet';\n\nexport const BORDER_COLOR = '#00BFFF';\n\nconst userSelectStyleSheet = createStyleSheet({\n body: {\n '-webkit-user-select': 'none',\n '-moz-user-select': 'none',\n '-ms-user-select': 'none',\n 'user-select': 'none'\n }\n});\nuserSelectStyleSheet.setAttribute('data-pdf-annotate-user-select', 'true');\n\n/**\n * Find the SVGElement that contains all the annotations for a page\n *\n * @param {Element} node An annotation within that container\n * @return {SVGElement} The container SVG or null if it can't be found\n */\nexport function findSVGContainer(node) {\n let parentNode = node;\n\n while ((parentNode = parentNode.parentNode) &&\n parentNode !== document) {\n if (parentNode.nodeName.toUpperCase() === 'SVG' &&\n parentNode.getAttribute('data-pdf-annotate-container') === 'true') {\n return parentNode;\n }\n }\n\n return null;\n}\n\n/**\n * Find an SVGElement container at a given point\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @return {SVGElement} The container SVG or null if one can't be found\n */\nexport function findSVGAtPoint(x, y) {\n let elements = document.querySelectorAll('svg[data-pdf-annotate-container=\"true\"]');\n\n for (let i=0, l=elements.length; i= rect.top && y <= rect.bottom && x >= rect.left && x <= rect.right;\n}\n\n/**\n * Get the rect of an annotation element accounting for offset.\n *\n * @param {Element} el The element to get the rect of\n * @return {Object} The dimensions of the element\n */\nexport function getOffsetAnnotationRect(el) {\n let rect = getAnnotationRect(el);\n let { offsetLeft, offsetTop } = getOffset(el);\n return {\n top: rect.top + offsetTop,\n left: rect.left + offsetLeft,\n right: rect.right + offsetLeft,\n bottom: rect.bottom + offsetTop\n };\n}\n\n/**\n * Get the rect of an annotation element.\n *\n * @param {Element} el The element to get the rect of\n * @return {Object} The dimensions of the element\n */\nexport function getAnnotationRect(el) {\n let h = 0, w = 0, x = 0, y = 0;\n let rect = el.getBoundingClientRect();\n // TODO this should be calculated somehow\n const LINE_OFFSET = 16;\n\n switch (el.nodeName.toLowerCase()) {\n case 'path':\n let minX, maxX, minY, maxY;\n\n el.getAttribute('d').replace(/Z/, '').split('M').splice(1).forEach((p) => {\n var s = p.split(' ').map(i => parseInt(i, 10));\n\n if (typeof minX === 'undefined' || s[0] < minX) { minX = s[0]; }\n if (typeof maxX === 'undefined' || s[2] > maxX) { maxX = s[2]; }\n if (typeof minY === 'undefined' || s[1] < minY) { minY = s[1]; }\n if (typeof maxY === 'undefined' || s[3] > maxY) { maxY = s[3]; }\n });\n\n h = maxY - minY;\n w = maxX - minX;\n x = minX;\n y = minY;\n break;\n\n case 'line':\n h = parseInt(el.getAttribute('y2'), 10) - parseInt(el.getAttribute('y1'), 10);\n w = parseInt(el.getAttribute('x2'), 10) - parseInt(el.getAttribute('x1'), 10);\n x = parseInt(el.getAttribute('x1'), 10);\n y = parseInt(el.getAttribute('y1'), 10);\n\n if (h === 0) {\n h += LINE_OFFSET;\n y -= (LINE_OFFSET / 2);\n }\n break;\n\n case 'text':\n h = rect.height;\n w = rect.width;\n x = parseInt(el.getAttribute('x'), 10);\n y = parseInt(el.getAttribute('y'), 10) - h;\n break;\n\n case 'g':\n let { offsetLeft, offsetTop } = getOffset(el);\n h = rect.height;\n w = rect.width;\n x = rect.left - offsetLeft;\n y = rect.top - offsetTop;\n\n if (el.getAttribute('data-pdf-annotate-type') === 'strikeout') {\n h += LINE_OFFSET;\n y -= (LINE_OFFSET / 2);\n }\n break;\n\n case 'rect':\n case 'svg':\n h = parseInt(el.getAttribute('height'), 10);\n w = parseInt(el.getAttribute('width'), 10);\n x = parseInt(el.getAttribute('x'), 10);\n y = parseInt(el.getAttribute('y'), 10);\n break;\n }\n\n // Result provides same properties as getBoundingClientRect\n let result = {\n top: y,\n left: x,\n width: w,\n height: h,\n right: x + w,\n bottom: y + h\n };\n\n // For the case of nested SVG (point annotations) and grouped\n // lines or rects no adjustment needs to be made for scale.\n // I assume that the scale is already being handled\n // natively by virtue of the `transform` attribute.\n if (!['svg', 'g'].includes(el.nodeName.toLowerCase())) {\n result = scaleUp(findSVGAtPoint(rect.left, rect.top), result);\n }\n\n return result;\n}\n\n/**\n * Adjust scale from normalized scale (100%) to rendered scale.\n *\n * @param {SVGElement} svg The SVG to gather metadata from\n * @param {Object} rect A map of numeric values to scale\n * @return {Object} A copy of `rect` with values scaled up\n */\nexport function scaleUp(svg, rect) {\n let result = {};\n let { viewport } = getMetadata(svg);\n\n Object.keys(rect).forEach((key) => {\n result[key] = rect[key] * viewport.scale;\n });\n\n return result;\n}\n\n/**\n * Adjust scale from rendered scale to a normalized scale (100%).\n *\n * @param {SVGElement} svg The SVG to gather metadata from\n * @param {Object} rect A map of numeric values to scale\n * @return {Object} A copy of `rect` with values scaled down\n */\nexport function scaleDown(svg, rect) {\n let result = {};\n let { viewport } = getMetadata(svg);\n\n Object.keys(rect).forEach((key) => {\n result[key] = rect[key] / viewport.scale;\n });\n\n return result;\n}\n\n/**\n * Get the scroll position of an element, accounting for parent elements\n *\n * @param {Element} el The element to get the scroll position for\n * @return {Object} The scrollTop and scrollLeft position\n */\nexport function getScroll(el) {\n let scrollTop = 0;\n let scrollLeft = 0;\n let parentNode = el;\n\n while ((parentNode = parentNode.parentNode) &&\n parentNode !== document) {\n scrollTop += parentNode.scrollTop;\n scrollLeft += parentNode.scrollLeft;\n }\n\n return { scrollTop, scrollLeft };\n}\n\n/**\n * Get the offset position of an element, accounting for parent elements\n *\n * @param {Element} el The element to get the offset position for\n * @return {Object} The offsetTop and offsetLeft position\n */\nexport function getOffset(el) {\n let parentNode = el;\n\n while ((parentNode = parentNode.parentNode) &&\n parentNode !== document) {\n if (parentNode.nodeName.toUpperCase() === 'SVG') {\n break;\n }\n }\n\n let rect = parentNode.getBoundingClientRect();\n\n return { offsetLeft: rect.left, offsetTop: rect.top };\n}\n\n/**\n * Disable user ability to select text on page\n */\nexport function disableUserSelect() {\n if (!userSelectStyleSheet.parentNode) {\n document.head.appendChild(userSelectStyleSheet);\n }\n}\n\n\n/**\n * Enable user ability to select text on page\n */\nexport function enableUserSelect() {\n if (userSelectStyleSheet.parentNode) {\n userSelectStyleSheet.parentNode.removeChild(userSelectStyleSheet);\n }\n}\n\n/**\n * Get the metadata for a SVG container\n *\n * @param {SVGElement} svg The SVG container to get metadata for\n */\nexport function getMetadata(svg) {\n return {\n documentId: svg.getAttribute('data-pdf-annotate-document'),\n pageNumber: parseInt(svg.getAttribute('data-pdf-annotate-page'), 10),\n viewport: JSON.parse(svg.getAttribute('data-pdf-annotate-viewport'))\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/UI/utils.js\n **/","module.exports = function createStyleSheet(blocks) {\n var style = document.createElement('style');\n var text = Object.keys(blocks).map(function (selector) {\n return processRuleSet(selector, blocks[selector]);\n }).join('\\n');\n \n style.setAttribute('type', 'text/css');\n style.appendChild(document.createTextNode(text));\n\n return style;\n}\n\nfunction processRuleSet(selector, block) {\n return selector + ' {\\n' + processDeclarationBlock(block) + '\\n}';\n}\n\nfunction processDeclarationBlock(block) {\n return Object.keys(block).map(function (prop) {\n return processDeclaration(prop, block[prop]);\n }).join('\\n');\n}\n\nfunction processDeclaration(prop, value) {\n if (!isNaN(value) && value != 0) {\n value = value + 'px';\n }\n\n return hyphenate(prop) + ': ' + value + ';';\n}\n\nfunction hyphenate(prop) {\n return prop.replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n });\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/create-stylesheet/index.js\n ** module id = 7\n ** module chunks = 0\n **/","import uuid from '../utils/uuid';\nimport StoreAdapter from './StoreAdapter';\n\n// StoreAdapter for working with localStorage\n// This is ideal for testing, examples, and prototyping\nexport default class LocalStoreAdapter extends StoreAdapter {\n constructor() {\n super({\n getAnnotations(documentId, pageNumber) {\n return new Promise((resolve, reject) => {\n let annotations = getAnnotations(documentId).filter((i) => {\n return i.page === pageNumber && i.class === 'Annotation';\n });\n\n resolve({\n documentId,\n pageNumber,\n annotations\n });\n });\n },\n\n getAnnotation(documentId, annotationId) {\n return Promise.resolve(getAnnotations(documentId)[findAnnotation(documentId, annotationId)]);\n },\n\n addAnnotation(documentId, pageNumber, annotation) {\n return new Promise((resolve, reject) => {\n annotation.class = 'Annotation';\n annotation.uuid = uuid();\n annotation.page = pageNumber;\n\n let annotations = getAnnotations(documentId);\n annotations.push(annotation);\n updateAnnotations(documentId, annotations);\n\n resolve(annotation);\n });\n },\n\n editAnnotation(documentId, annotationId, annotation) {\n return new Promise((resolve, reject) => {\n let annotations = getAnnotations(documentId);\n annotations[findAnnotation(documentId, annotationId)] = annotation;\n updateAnnotations(documentId, annotations);\n\n resolve(annotation);\n });\n },\n\n deleteAnnotation(documentId, annotationId) {\n return new Promise((resolve, reject) => {\n let index = findAnnotation(documentId, annotationId);\n if (index > -1) {\n let annotations = getAnnotations(documentId);\n annotations.splice(index, 1);\n updateAnnotations(documentId, annotations);\n }\n\n resolve(true);\n });\n },\n\n getComments(documentId, annotationId) {\n return new Promise((resolve, reject) => {\n resolve(getAnnotations(documentId).filter((i) => {\n return i.class === 'Comment' && i.annotation === annotationId;\n }));\n });\n },\n\n addComment(documentId, annotationId, content) {\n return new Promise((resolve, reject) => {\n let comment = {\n class: 'Comment',\n uuid: uuid(),\n annotation: annotationId,\n content: content\n };\n\n let annotations = getAnnotations(documentId);\n annotations.push(comment);\n updateAnnotations(documentId, annotations);\n\n resolve(comment);\n });\n },\n\n deleteComment(documentId, commentId) {\n return new Promise((resolve, reject) => {\n getAnnotations(documentId);\n let index = -1;\n let annotations = getAnnotations(documentId);\n for (let i=0, l=annotations.length; i -1) {\n annotations.splice(index, 1);\n updateAnnotations(documentId, annotations);\n }\n\n resolve(true);\n });\n }\n });\n }\n}\n\nfunction getAnnotations(documentId) {\n return JSON.parse(localStorage.getItem(`${documentId}/annotations`)) || [];\n}\n\nfunction updateAnnotations(documentId, annotations) {\n localStorage.setItem(`${documentId}/annotations`, JSON.stringify(annotations));\n}\n\nfunction findAnnotation(documentId, annotationId) {\n let index = -1;\n let annotations = getAnnotations(documentId);\n for (let i=0, l=annotations.length; i {\n // Reset the content of the SVG\n svg.innerHTML = ''; \n svg.setAttribute('data-pdf-annotate-container', true);\n svg.setAttribute('data-pdf-annotate-viewport', JSON.stringify(viewport));\n svg.removeAttribute('data-pdf-annotate-document');\n svg.removeAttribute('data-pdf-annotate-page');\n\n // If there's no data nothing can be done\n if (!data) {\n return resolve(svg);\n }\n\n svg.setAttribute('data-pdf-annotate-document', data.documentId);\n svg.setAttribute('data-pdf-annotate-page', data.pageNumber);\n \n // Make sure annotations is an array\n if (!Array.isArray(data.annotations) || data.annotations.length === 0) {\n return resolve(svg);\n }\n\n // Append annotation to svg\n data.annotations.forEach((a) => {\n appendChild(svg, a, viewport);\n });\n\n resolve(svg);\n });\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/index.js\n **/","import objectAssign from 'object-assign';\nimport renderLine from './renderLine';\nimport renderPath from './renderPath';\nimport renderPoint from './renderPoint';\nimport renderRect from './renderRect';\nimport renderText from './renderText';\n\nconst isFirefox = /firefox/i.test(navigator.userAgent);\n\n/**\n * Get the x/y translation to be used for transforming the annotations\n * based on the rotation of the viewport.\n *\n * @param {Object} viewport The viewport data from the page\n * @return {Object}\n */\nfunction getTranslation(viewport) {\n let x;\n let y;\n\n // Modulus 360 on the rotation so that we only\n // have to worry about four possible values.\n switch(viewport.rotation % 360) {\n case 0:\n x = y = 0;\n break;\n case 90:\n x = 0;\n y = (viewport.width / viewport.scale) * -1;\n break;\n case 180:\n x = (viewport.width / viewport.scale) * -1;\n y = (viewport.height / viewport.scale) * -1;\n break;\n case 270:\n x = (viewport.height / viewport.scale) * -1;\n y = 0;\n break;\n }\n\n return { x, y };\n}\n\n/**\n * Transform the rotation and scale of a node using SVG's native transform attribute.\n *\n * @param {Node} node The node to be transformed\n * @param {Object} viewport The page's viewport data\n * @return {Node}\n */\nfunction transform(node, viewport) {\n let trans = getTranslation(viewport);\n\n // Let SVG natively transform the element\n node.setAttribute('transform', `scale(${viewport.scale}) rotate(${viewport.rotation}) translate(${trans.x}, ${trans.y})`);\n \n // Manually adjust x/y for nested SVG nodes\n if (!isFirefox && node.nodeName.toLowerCase() === 'svg') {\n node.setAttribute('x', parseInt(node.getAttribute('x'), 10) * viewport.scale);\n node.setAttribute('y', parseInt(node.getAttribute('y'), 10) * viewport.scale);\n\n let x = parseInt(node.getAttribute('x', 10));\n let y = parseInt(node.getAttribute('y', 10));\n let width = parseInt(node.getAttribute('width'), 10);\n let height = parseInt(node.getAttribute('height'), 10);\n let path = node.querySelector('path');\n let svg = path.parentNode;\n \n // Scale width/height\n [node, svg, path, node.querySelector('rect')].forEach((n) => {\n n.setAttribute('width', parseInt(n.getAttribute('width'), 10) * viewport.scale);\n n.setAttribute('height', parseInt(n.getAttribute('height'), 10) * viewport.scale);\n });\n\n // Transform path but keep scale at 100% since it will be handled natively\n transform(path, objectAssign({}, viewport, { scale: 1 }));\n \n switch(viewport.rotation % 360) {\n case 90:\n node.setAttribute('x', viewport.width - y - width);\n node.setAttribute('y', x);\n svg.setAttribute('x', 1);\n svg.setAttribute('y', 0);\n break;\n case 180:\n node.setAttribute('x', viewport.width - x - width);\n node.setAttribute('y', viewport.height - y - height);\n svg.setAttribute('y', 2);\n break;\n case 270:\n node.setAttribute('x', y);\n node.setAttribute('y', viewport.height - x - height);\n svg.setAttribute('x', -1);\n svg.setAttribute('y', 0);\n break;\n }\n }\n\n return node;\n}\n\n/**\n * Append an annotation as a child of an SVG.\n *\n * @param {SVGElement} svg The SVG element to append the annotation to\n * @param {Object} annotation The annotation definition to render and append\n * @param {Object} viewport The page's viewport data\n * @return {SVGElement} A node that was created and appended by this function\n */\nexport default function appendChild(svg, annotation, viewport) {\n if (!viewport) {\n viewport = JSON.parse(svg.getAttribute('data-pdf-annotate-viewport'));\n }\n \n let child;\n switch (annotation.type) {\n case 'area':\n case 'highlight':\n child = renderRect(annotation);\n break;\n case 'strikeout':\n child = renderLine(annotation);\n break;\n case 'point':\n child = renderPoint(annotation);\n break;\n case 'textbox':\n child = renderText(annotation);\n break;\n case 'drawing':\n child = renderPath(annotation);\n break;\n }\n\n // If no type was provided for an annotation it will result in node being null.\n // Skip appending/transforming if node doesn't exist.\n if (child) {\n // Set attributes\n child.setAttribute('data-pdf-annotate-id', annotation.uuid);\n child.setAttribute('data-pdf-annotate-type', annotation.type);\n child.setAttribute('aria-hidden', true);\n\n svg.appendChild(transform(child, viewport));\n }\n\n return child;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/appendChild.js\n **/","/* eslint-disable no-unused-vars */\n'use strict';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (Object.getOwnPropertySymbols) {\n\t\t\tsymbols = Object.getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/object-assign/index.js\n ** module id = 12\n ** module chunks = 0\n **/","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\n\n/**\n * Create SVGLineElements from an annotation definition.\n * This is used for anntations of type `strikeout`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGGElement} A group of all lines to be rendered\n */\nexport default function renderLine(a) {\n let group = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n setAttributes(group, {\n stroke: normalizeColor(a.color || '#f00'),\n strokeWidth: 1\n });\n\n a.rectangles.forEach((r) => {\n let line = document.createElementNS('http://www.w3.org/2000/svg', 'line');\n\n setAttributes(line, {\n x1: r.x,\n y1: r.y,\n x2: r.x + r.width,\n y2: r.y,\n });\n\n group.appendChild(line);\n });\n\n return group;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/renderLine.js\n **/","const UPPER_REGEX = /[A-Z]/g;\n\n// Don't convert these attributes from camelCase to hyphenated-attributes\nconst BLACKLIST = [\n 'viewBox'\n];\n\nlet keyCase = (key) => {\n if (BLACKLIST.indexOf(key) === -1) {\n key = key.replace(UPPER_REGEX, match => '-' + match.toLowerCase());\n }\n return key;\n}\n\n/**\n * Set attributes for a node from a map\n *\n * @param {Node} node The node to set attributes on\n * @param {Object} attributes The map of key/value pairs to use for attributes\n */\nexport default function setAttributes(node, attributes) {\n Object.keys(attributes).forEach((key) => {\n node.setAttribute(keyCase(key), attributes[key]);\n });\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/setAttributes.js\n **/","const REGEX_HASHLESS_HEX = /^([a-f0-9]{6}|[a-f0-9]{3})$/i;\n\n/**\n * Normalize a color value\n *\n * @param {String} color The color to normalize\n * @return {String}\n */\nexport default function normalizeColor(color) {\n if (REGEX_HASHLESS_HEX.test(color)) {\n color = `#${color}`;\n }\n return color;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/normalizeColor.js\n **/","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\n\n/**\n * Create SVGPathElement from an annotation definition.\n * This is used for anntations of type `drawing`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGPathElement} The path to be rendered\n */\nexport default function renderPath(a) {\n let d = [];\n let path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n \n for (let i=0, l=a.lines.length; i {\n group.appendChild(createRect(r));\n });\n\n return group;\n } else {\n let rect = createRect(a);\n setAttributes(rect, {\n stroke: normalizeColor(a.color || '#f00'),\n fill: 'none'\n });\n\n return rect;\n }\n}\n\nfunction createRect(r) {\n let rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\n setAttributes(rect, {\n x: r.x,\n y: r.y,\n width: r.width,\n height: r.height\n });\n\n return rect;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/renderRect.js\n **/","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\n\n/**\n * Create SVGTextElement from an annotation definition.\n * This is used for anntations of type `textbox`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGTextElement} A text to be rendered\n */\nexport default function renderText(a) {\n var text = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n\n setAttributes(text, {\n x: a.x,\n y: a.y + parseInt(a.size, 10),\n fill: normalizeColor(a.color || '#000'),\n fontSize: a.size\n });\n text.innerHTML = a.content;\n\n return text;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/render/renderText.js\n **/","import insertScreenReaderHint from './insertScreenReaderHint';\nimport initEventHandlers from './initEventHandlers';\n\n// TODO This is not the right place for this to live\ninitEventHandlers();\n\n/**\n * Insert hints into the DOM for screen readers.\n *\n * @param {Array} annotations The annotations that hints are inserted for\n */\nexport default function renderScreenReaderHints(annotations) {\n annotations = Array.isArray(annotations) ? annotations : [];\n\n // Insert hints for each type\n Object.keys(SORT_TYPES).forEach((type) => {\n let sortBy = SORT_TYPES[type];\n annotations\n .filter((a) => a.type === type)\n .sort(sortBy)\n .forEach((a, i) => insertScreenReaderHint(a, i + 1));\n });\n}\n\n// Sort annotations first by y, then by x.\n// This allows hints to be injected in the order they appear,\n// which makes numbering them easier.\nfunction sortByPoint(a, b) {\n if (a.y < b.y) {\n return a.x - b.x;\n } else {\n return 1;\n }\n}\n\n// Sort annotation by it's first rectangle\nfunction sortByRectPoint(a, b) {\n return sortByPoint(a.rectangles[0], b.rectangles[0]);\n}\n\n// Sort annotation by it's first line\nfunction sortByLinePoint(a, b) {\n let lineA = a.lines[0];\n let lineB = b.lines[0];\n return sortByPoint(\n {x: lineA[0], y: lineA[1]},\n {x: lineB[0], y: lineB[1]}\n );\n}\n\n// Arrange supported types and associated sort methods\nconst SORT_TYPES = {\n 'highlight': sortByRectPoint,\n 'strikeout': sortByRectPoint,\n 'drawing': sortByLinePoint,\n 'textbox': sortByPoint,\n 'point': sortByPoint,\n 'area': sortByPoint\n};\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/a11y/renderScreenReaderHints.js\n **/","import createScreenReaderOnly from './createScreenReaderOnly';\nimport insertElementWithinChildren from './insertElementWithinChildren';\nimport insertElementWithinElement from './insertElementWithinElement';\nimport renderScreenReaderComments from './renderScreenReaderComments';\n\n// Annotation types that support comments\nconst COMMENT_TYPES = ['highlight', 'point', 'area'];\n\n/**\n * Insert a hint into the DOM for screen readers for a specific annotation.\n *\n * @param {Object} annotation The annotation to insert a hint for\n * @param {Number} num The number of the annotation out of all annotations of the same type\n */\nexport default function insertScreenReaderHint(annotation, num = 0) {\n switch (annotation.type) {\n case 'highlight':\n case 'strikeout':\n let rects = annotation.rectangles;\n let first = rects[0];\n let last = rects[rects.length - 1];\n\n insertElementWithinElement(\n createScreenReaderOnly(`Begin ${annotation.type} annotation ${num}`, annotation.uuid),\n first.x, first.y, annotation.page, true\n );\n\n insertElementWithinElement(\n createScreenReaderOnly(`End ${annotation.type} annotation ${num}`, `${annotation.uuid}-end`),\n last.x + last.width, last.y, annotation.page, false\n );\n break;\n\n case 'textbox':\n case 'point':\n let text = annotation.type === 'textbox' ? ` (content: ${annotation.content})` : '';\n\n insertElementWithinChildren(\n createScreenReaderOnly(`${annotation.type} annotation ${num}${text}`, annotation.uuid),\n annotation.x, annotation.y, annotation.page\n );\n break;\n\n case 'drawing':\n case 'area':\n let x = typeof annotation.x !== 'undefined' ? annotation.x : annotation.lines[0][0];\n let y = typeof annotation.y !== 'undefined' ? annotation.y : annotation.lines[0][1];\n\n insertElementWithinChildren(\n createScreenReaderOnly(`Unlabeled drawing`, annotation.uuid),\n x, y, annotation.page\n );\n break;\n }\n\n // Include comments in screen reader hint\n if (COMMENT_TYPES.includes(annotation.type)) {\n renderScreenReaderComments(annotation.documentId, annotation.uuid);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/a11y/insertScreenReaderHint.js\n **/","/**\n * Create a node that is only visible to screen readers\n *\n * @param {String} content The text content that should be read by screen reader\n * @param {String} [annotationId] The ID of the annotation assocaited\n * @return {Element} An Element that is only visible to screen readers\n */\nexport default function createScreenReaderOnly(content, annotationId) {\n let node = document.createElement('div');\n let text = document.createTextNode(content);\n node.appendChild(text);\n node.setAttribute('id', `pdf-annotate-screenreader-${annotationId}`);\n node.style.position = 'absolute';\n node.style.left = '-10000px';\n node.style.top = 'auto';\n node.style.width = '1px';\n node.style.height = '1px';\n node.style.overflow = 'hidden';\n return node;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/a11y/createScreenReaderOnly.js\n **/","import insertElementWithinElement from './insertElementWithinElement';\nimport { pointIntersectsRect } from '../UI/utils';\nimport { scaleUp } from '../UI/utils'; \n\n/**\n * Insert an element at a point within the document.\n * This algorithm will try to insert between elements if possible.\n * It will however use `insertElementWithinElement` if it is more accurate.\n *\n * @param {Element} el The element to be inserted\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @param {Number} pageNumber The page number to limit elements to\n * @return {Boolean} True if element was able to be inserted, otherwise false\n */\nexport default function insertElementWithinChildren(el, x, y, pageNumber) {\n // Try and use most accurate method of inserting within an element\n if (insertElementWithinElement(el, x, y, pageNumber, true)) {\n return true;\n }\n\n // Fall back to inserting between elements\n let svg = document.querySelector(`svg[data-pdf-annotate-page=\"${pageNumber}\"]`);\n let rect = svg.getBoundingClientRect();\n let nodes = [...svg.parentNode.querySelectorAll('.textLayer > div')];\n\n y = scaleUp(svg, {y}).y + rect.top;\n x = scaleUp(svg, {x}).x + rect.left;\n\n // Find the best node to insert before\n for (let i=0, l=nodes.length; i') {\n while(head.length) {\n tail.unshift(head.pop());\n if (tail[0] === '<') {\n break;\n }\n }\n }\n \n // Check if width of temp based on current head value satisfies x\n temp.innerHTML = head.join('');\n let width = scaleDown(svg, {width: temp.getBoundingClientRect().width}).width;\n if (left + width <= x) {\n break;\n }\n tail.unshift(head.pop());\n }\n \n // Update original node with new markup, including element to be inserted\n node.innerHTML = head.join('') + el.outerHTML + tail.join('');\n temp.parentNode.removeChild(temp);\n\n return true;\n}\n\n/**\n * Get a text layer element at a given point on a page\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @param {Number} pageNumber The page to limit elements to\n * @return {Element} First text layer element found at the point\n */\nfunction textLayerElementFromPoint(x, y, pageNumber) {\n let svg = document.querySelector(`svg[data-pdf-annotate-page=\"${pageNumber}\"]`);\n let rect = svg.getBoundingClientRect();\n y = scaleUp(svg, {y}).y + rect.top;\n x = scaleUp(svg, {x}).x + rect.left;\n return [...svg.parentNode.querySelectorAll('.textLayer [data-canvas-width]')].filter((el) => {\n return pointIntersectsRect(x, y, el.getBoundingClientRect());\n })[0];\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/a11y/insertElementWithinElement.js\n **/","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport insertScreenReaderComment from './insertScreenReaderComment';\n\n/**\n * Insert the comments into the DOM to be available by screen reader\n *\n * Example output:\n *
\n *
Begin highlight 1
\n *
    \n *
  1. Foo
  2. \n *
  3. Bar
  4. \n *
  5. Baz
  6. \n *
  7. Qux
  8. \n *
\n *
\n *
Some highlighted text goes here...
\n *
End highlight 1
\n *\n * NOTE: `screenReaderOnly` is not a real class, just used for brevity\n *\n * @param {String} documentId The ID of the document\n * @param {String} annotationId The ID of the annotation\n * @param {Array} [comments] Optionally preloaded comments to be rendered\n * @return {Promise}\n */\nexport default function renderScreenReaderComments(documentId, annotationId, comments) {\n let promise;\n\n if (Array.isArray(comments)) {\n promise = Promise.resolve(comments);\n } else {\n promise = PDFJSAnnotate.getStoreAdapter().getComments(documentId, annotationId);\n }\n\n return promise.then((comments) => {\n // Node needs to be found by querying DOM as it may have been inserted as innerHTML\n // leaving `screenReaderNode` as an invalid reference (see `insertElementWithinElement`).\n let node = document.getElementById(`pdf-annotate-screenreader-${annotationId}`);\n if (node) { \n let list = document.createElement('ol');\n list.setAttribute('id', `pdf-annotate-screenreader-comment-list-${annotationId}`);\n list.setAttribute('aria-label', 'Comments');\n node.appendChild(list);\n comments.forEach(insertScreenReaderComment);\n }\n });\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/a11y/renderScreenReaderComments.js\n **/","/**\n * Insert a comment into the DOM to be available by screen reader\n *\n * @param {Object} comment The comment to be inserted\n */\nexport default function insertScreenReaderComment(comment) {\n if (!comment) {\n return;\n }\n\n let list = document.querySelector(`#pdf-annotate-screenreader-${comment.annotation} ol`);\n if (list) {\n let item = document.createElement('li');\n item.setAttribute('id', `pdf-annotate-screenreader-comment-${comment.uuid}`);\n item.appendChild(document.createTextNode(`${comment.content}`));\n list.appendChild(item);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/a11y/insertScreenReaderComment.js\n **/","import insertScreenReaderHint from './insertScreenReaderHint';\nimport renderScreenReaderHints from './renderScreenReaderHints';\nimport insertScreenReaderComment from './insertScreenReaderComment';\nimport renderScreenReaderComments from './renderScreenReaderComments';\nimport { addEventListener } from '../UI/event';\nimport PDFJSAnnotate from '../PDFJSAnnotate';\n\n/**\n * Initialize the event handlers for keeping screen reader hints synced with data\n */\nexport default function initEventHandlers() {\n addEventListener('annotation:add', (documentId, pageNumber, annotation) => {\n reorderAnnotationsByType(documentId, pageNumber, annotation.type);\n });\n addEventListener('annotation:edit', (documentId, annotationId, annotation) => {\n reorderAnnotationsByType(documentId, annotation.page, annotation.type);\n });\n addEventListener('annotation:delete', removeAnnotation);\n addEventListener('comment:add', insertComment);\n addEventListener('comment:delete', removeComment);\n}\n\n/**\n * Reorder the annotation numbers by annotation type\n *\n * @param {String} documentId The ID of the document\n * @param {Number} pageNumber The page number of the annotations\n * @param {Strig} type The annotation type\n */\nfunction reorderAnnotationsByType(documentId, pageNumber, type) {\n PDFJSAnnotate.getStoreAdapter().getAnnotations(documentId, pageNumber)\n .then((annotations) => {\n return annotations.annotations.filter((a) => {\n return a.type === type;\n });\n })\n .then((annotations) => {\n annotations.forEach((a) => {\n removeAnnotation(documentId, a.uuid);\n });\n\n return annotations;\n })\n .then(renderScreenReaderHints);\n}\n\n/**\n * Remove the screen reader hint for an annotation\n *\n * @param {String} documentId The ID of the document\n * @param {String} annotationId The Id of the annotation\n */\nfunction removeAnnotation(documentId, annotationId) {\n removeElementById(`pdf-annotate-screenreader-${annotationId}`);\n removeElementById(`pdf-annotate-screenreader-${annotationId}-end`);\n}\n\n/**\n * Insert a screen reader hint for a comment\n *\n * @param {String} documentId The ID of the document\n * @param {String} annotationId The ID of tha assocated annotation\n * @param {Object} comment The comment to insert a hint for\n */\nfunction insertComment(documentId, annotationId, comment) {\n let list = document.querySelector(`pdf-annotate-screenreader-comment-list-${annotationId}`);\n let promise;\n\n if (!list) {\n promise = renderScreenReaderComments(documentId, annotationId, []).then(() => {\n list = document.querySelector(`pdf-annotate-screenreader-comment-list-${annotationId}`);\n return true;\n });\n } else {\n promise = Promise.resolve(true);\n }\n\n promise.then(() => {\n insertScreenReaderComment(comment);\n });\n}\n\n/**\n * Remove a screen reader hint for a comment\n *\n * @param {String} documentId The ID of the document\n * @param {String} commentId The ID of the comment\n */\nfunction removeComment(documentId, commentId) {\n removeElementById(`pdf-annotate-screenreader-comment-${commentId}`);\n}\n\n/**\n * Remove an element from the DOM by it's ID if it exists\n *\n * @param {String} elementID The ID of the element to be removed\n */\nfunction removeElementById(elementId) {\n let el = document.getElementById(elementId);\n if (el) {\n el.parentNode.removeChild(el);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/a11y/initEventHandlers.js\n **/","import { addEventListener, removeEventListener, fireEvent } from './event';\nimport { disableEdit, enableEdit } from './edit';\nimport { disablePen, enablePen, setPen } from './pen';\nimport { disablePoint, enablePoint } from './point';\nimport { disableRect, enableRect } from './rect';\nimport { disableText, enableText, setText } from './text';\nimport { createPage, renderPage } from './page';\n\nexport default {\n addEventListener, removeEventListener, fireEvent,\n disableEdit, enableEdit,\n disablePen, enablePen, setPen,\n disablePoint, enablePoint,\n disableRect, enableRect,\n disableText, enableText, setText,\n createPage, renderPage\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/UI/index.js\n **/","import PDFJSAnnotate from '../PDFJSAnnotate';\n\nimport appendChild from '../render/appendChild';\nimport {\n addEventListener,\n removeEventListener\n} from './event';\nimport {\n BORDER_COLOR,\n disableUserSelect,\n enableUserSelect,\n findSVGContainer,\n findSVGAtPoint,\n getAnnotationRect,\n getMetadata,\n scaleDown,\n scaleUp\n} from './utils';\n\nlet _enabled = false;\nlet isDragging = false, overlay;\nlet dragOffsetX, dragOffsetY, dragStartX, dragStartY;\nconst OVERLAY_BORDER_SIZE = 3;\n\n/**\n * Create an overlay for editing an annotation.\n *\n * @param {Element} target The annotation element to apply overlay for\n */\nfunction createEditOverlay(target) {\n destroyEditOverlay();\n\n overlay = document.createElement('div');\n let anchor = document.createElement('a');\n let parentNode = findSVGContainer(target).parentNode;\n let id = target.getAttribute('data-pdf-annotate-id');\n let rect = getAnnotationRect(target);\n let styleLeft = rect.left - OVERLAY_BORDER_SIZE;\n let styleTop = rect.top - OVERLAY_BORDER_SIZE;\n \n overlay.setAttribute('id', 'pdf-annotate-edit-overlay');\n overlay.setAttribute('data-target-id', id);\n overlay.style.boxSizing = 'content-box';\n overlay.style.position = 'absolute';\n overlay.style.top = `${styleTop}px`;\n overlay.style.left = `${styleLeft}px`;\n overlay.style.width = `${rect.width}px`;\n overlay.style.height = `${rect.height}px`;\n overlay.style.border = `${OVERLAY_BORDER_SIZE}px solid ${BORDER_COLOR}`;\n overlay.style.borderRadius = `${OVERLAY_BORDER_SIZE}px`;\n\n anchor.innerHTML = '×';\n anchor.setAttribute('href', 'javascript://');\n anchor.style.background = '#fff';\n anchor.style.borderRadius = '20px';\n anchor.style.border = '1px solid #bbb';\n anchor.style.color = '#bbb';\n anchor.style.fontSize = '16px';\n anchor.style.padding = '2px';\n anchor.style.textAlign = 'center';\n anchor.style.textDecoration = 'none';\n anchor.style.position = 'absolute';\n anchor.style.top = '-13px';\n anchor.style.right = '-13px';\n anchor.style.width = '25px';\n anchor.style.height = '25px';\n \n overlay.appendChild(anchor);\n parentNode.appendChild(overlay);\n document.addEventListener('click', handleDocumentClick);\n document.addEventListener('keyup', handleDocumentKeyup);\n document.addEventListener('mousedown', handleDocumentMousedown);\n anchor.addEventListener('click', deleteAnnotation);\n anchor.addEventListener('mouseover', () => {\n anchor.style.color = '#35A4DC';\n anchor.style.borderColor = '#999';\n anchor.style.boxShadow = '0 1px 1px #ccc';\n });\n anchor.addEventListener('mouseout', () => {\n anchor.style.color = '#bbb';\n anchor.style.borderColor = '#bbb';\n anchor.style.boxShadow = '';\n });\n overlay.addEventListener('mouseover', () => {\n if (!isDragging) { anchor.style.display = ''; }\n });\n overlay.addEventListener('mouseout', () => {\n anchor.style.display = 'none';\n });\n}\n\n/**\n * Destroy the edit overlay if it exists.\n */\nfunction destroyEditOverlay() {\n if (overlay) {\n overlay.parentNode.removeChild(overlay);\n overlay = null;\n }\n\n document.removeEventListener('click', handleDocumentClick);\n document.removeEventListener('keyup', handleDocumentKeyup);\n document.removeEventListener('mousedown', handleDocumentMousedown);\n document.removeEventListener('mousemove', handleDocumentMousemove);\n document.removeEventListener('mouseup', handleDocumentMouseup);\n enableUserSelect();\n}\n\n/**\n * Delete currently selected annotation\n */\nfunction deleteAnnotation() {\n if (!overlay) { return; }\n\n let annotationId = overlay.getAttribute('data-target-id');\n let nodes = document.querySelectorAll(`[data-pdf-annotate-id=\"${annotationId}\"]`);\n let svg = overlay.parentNode.querySelector('svg.annotationLayer');\n let { documentId } = getMetadata(svg);\n\n [...nodes].forEach((n) => {\n n.parentNode.removeChild(n);\n });\n \n PDFJSAnnotate.getStoreAdapter().deleteAnnotation(documentId, annotationId);\n\n destroyEditOverlay();\n}\n\n/**\n * Handle document.click event\n *\n * @param {Event} e The DOM event that needs to be handled\n */\nfunction handleDocumentClick(e) {\n if (!findSVGAtPoint(e.clientX, e.clientY)) { return; }\n\n // Remove current overlay\n let overlay = document.getElementById('pdf-annotate-edit-overlay');\n if (overlay) {\n if (isDragging || e.target === overlay) {\n return;\n }\n\n destroyEditOverlay();\n }\n}\n\n/**\n * Handle document.keyup event\n *\n * @param {Event} e The DOM event that needs to be handled\n */\nfunction handleDocumentKeyup(e) {\n if (overlay && e.keyCode === 46 &&\n e.target.nodeName.toLowerCase() !== 'textarea' &&\n e.target.nodeName.toLowerCase() !== 'input') {\n deleteAnnotation();\n }\n}\n\n/**\n * Handle document.mousedown event\n *\n * @param {Event} e The DOM event that needs to be handled\n */\nfunction handleDocumentMousedown(e) {\n if (e.target !== overlay) { return; }\n\n // Highlight and strikeout annotations are bound to text within the document.\n // It doesn't make sense to allow repositioning these types of annotations.\n let annotationId = overlay.getAttribute('data-target-id');\n let target = document.querySelector(`[data-pdf-annotate-id=\"${annotationId}\"]`);\n let type = target.getAttribute('data-pdf-annotate-type');\n\n if (type === 'highlight' || type === 'strikeout') { return; }\n\n isDragging = true;\n dragOffsetX = e.clientX;\n dragOffsetY = e.clientY;\n dragStartX = overlay.offsetLeft;\n dragStartY = overlay.offsetTop;\n\n overlay.style.background = 'rgba(255, 255, 255, 0.7)';\n overlay.style.cursor = 'move';\n overlay.querySelector('a').style.display = 'none';\n\n document.addEventListener('mousemove', handleDocumentMousemove);\n document.addEventListener('mouseup', handleDocumentMouseup);\n disableUserSelect();\n}\n\n/**\n * Handle document.mousemove event\n *\n * @param {Event} e The DOM event that needs to be handled\n */\nfunction handleDocumentMousemove(e) {\n let annotationId = overlay.getAttribute('data-target-id');\n let parentNode = overlay.parentNode;\n let rect = parentNode.getBoundingClientRect();\n let y = (dragStartY + (e.clientY - dragOffsetY));\n let x = (dragStartX + (e.clientX - dragOffsetX));\n let minY = 0;\n let maxY = rect.height;\n let minX = 0;\n let maxX = rect.width;\n\n if (y > minY && y + overlay.offsetHeight < maxY) {\n overlay.style.top = `${y}px`;\n }\n\n if (x > minX && x + overlay.offsetWidth < maxX) {\n overlay.style.left = `${x}px`;\n }\n}\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} e The DOM event that needs to be handled\n */\nfunction handleDocumentMouseup(e) {\n let annotationId = overlay.getAttribute('data-target-id');\n let target = document.querySelectorAll(`[data-pdf-annotate-id=\"${annotationId}\"]`);\n let type = target[0].getAttribute('data-pdf-annotate-type');\n let svg = overlay.parentNode.querySelector('svg.annotationLayer');\n let { documentId } = getMetadata(svg);\n \n overlay.querySelector('a').style.display = '';\n\n function getDelta(propX, propY) {\n return calcDelta(parseInt(target[0].getAttribute(propX), 10), parseInt(target[0].getAttribute(propY), 10));\n }\n\n function calcDelta(x, y) {\n return {\n deltaX: OVERLAY_BORDER_SIZE + scaleDown(svg, {x: overlay.offsetLeft}).x - x,\n deltaY: OVERLAY_BORDER_SIZE + scaleDown(svg, {y: overlay.offsetTop}).y - y\n };\n }\n\n PDFJSAnnotate.getStoreAdapter().getAnnotation(documentId, annotationId).then((annotation) => {\n if (['area', 'highlight', 'point', 'textbox'].indexOf(type) > -1) {\n let { deltaX, deltaY } = getDelta('x', 'y');\n [...target].forEach((t, i) => {\n if (deltaY !== 0) {\n let modelY = parseInt(t.getAttribute('y'), 10) + deltaY;\n let viewY = modelY;\n\n if (type === 'textbox') {\n viewY += annotation.size;\n }\n\n if (type === 'point') {\n viewY = scaleUp(svg, { viewY }).viewY;\n }\n\n t.setAttribute('y', viewY);\n if (annotation.rectangles) {\n annotation.rectangles[i].y = modelY;\n } else if (annotation.y) {\n annotation.y = modelY;\n }\n }\n if (deltaX !== 0) {\n let modelX = parseInt(t.getAttribute('x'), 10) + deltaX;\n let viewX = modelX;\n\n if (type === 'point') {\n viewX = scaleUp(svg, { viewX }).viewX;\n }\n\n t.setAttribute('x', viewX);\n if (annotation.rectangles) {\n annotation.rectangles[i].x = modelX;\n } else if (annotation.x) {\n annotation.x = modelX;\n }\n }\n });\n // } else if (type === 'strikeout') {\n // let { deltaX, deltaY } = getDelta('x1', 'y1');\n // [...target].forEach(target, (t, i) => {\n // if (deltaY !== 0) {\n // t.setAttribute('y1', parseInt(t.getAttribute('y1'), 10) + deltaY);\n // t.setAttribute('y2', parseInt(t.getAttribute('y2'), 10) + deltaY);\n // annotation.rectangles[i].y = parseInt(t.getAttribute('y1'), 10);\n // }\n // if (deltaX !== 0) {\n // t.setAttribute('x1', parseInt(t.getAttribute('x1'), 10) + deltaX);\n // t.setAttribute('x2', parseInt(t.getAttribute('x2'), 10) + deltaX);\n // annotation.rectangles[i].x = parseInt(t.getAttribute('x1'), 10);\n // }\n // });\n } else if (type === 'drawing') {\n let rect = scaleDown(svg, getAnnotationRect(target[0]));\n let [originX, originY] = annotation.lines[0];\n let { deltaX, deltaY } = calcDelta(originX, originY);\n\n // origin isn't necessarily at 0/0 in relation to overlay x/y\n // adjust the difference between overlay and drawing coords\n deltaY += (originY - rect.top);\n deltaX += (originX - rect.left);\n\n annotation.lines.forEach((line, i) => {\n let [x, y] = annotation.lines[i];\n annotation.lines[i][0] = x + deltaX;\n annotation.lines[i][1] = y + deltaY;\n });\n\n target[0].parentNode.removeChild(target[0]);\n appendChild(svg, annotation);\n }\n\n PDFJSAnnotate.getStoreAdapter().editAnnotation(documentId, annotationId, annotation);\n });\n\n setTimeout(() => {\n isDragging = false;\n }, 0);\n\n overlay.style.background = '';\n overlay.style.cursor = '';\n\n document.removeEventListener('mousemove', handleDocumentMousemove);\n document.removeEventListener('mouseup', handleDocumentMouseup);\n enableUserSelect();\n}\n\n/**\n * Handle annotation.click event\n *\n * @param {Element} e The annotation element that was clicked\n */\nfunction handleAnnotationClick(target) {\n createEditOverlay(target);\n}\n\n/**\n * Enable edit mode behavior.\n */\nexport function enableEdit () {\n if (_enabled) { return; }\n\n _enabled = true;\n addEventListener('annotation:click', handleAnnotationClick);\n};\n\n/**\n * Disable edit mode behavior.\n */\nexport function disableEdit () {\n destroyEditOverlay();\n\n if (!_enabled) { return; }\n\n _enabled = false;\n removeEventListener('annotation:click', handleAnnotationClick);\n};\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/UI/edit.js\n **/","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport appendChild from '../render/appendChild';\nimport {\n disableUserSelect,\n enableUserSelect,\n findSVGAtPoint,\n getMetadata,\n scaleDown\n} from './utils';\n\nlet _enabled = false;\nlet _penSize;\nlet _penColor;\nlet path;\nlet lines;\n\n/**\n * Handle document.mousedown event\n */\nfunction handleDocumentMousedown() {\n path = null;\n lines = [];\n\n document.addEventListener('mousemove', handleDocumentMousemove);\n document.addEventListener('mouseup', handleDocumentMouseup);\n}\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} e The DOM event to be handled\n */\nfunction handleDocumentMouseup(e) {\n let svg;\n if (lines.length > 1 && (svg = findSVGAtPoint(e.clientX, e.clientY))) {\n let { documentId, pageNumber } = getMetadata(svg);\n\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, {\n type: 'drawing',\n width: _penSize,\n color: _penColor,\n lines\n }\n ).then((annotation) => {\n if (path) {\n svg.removeChild(path);\n }\n\n appendChild(svg, annotation);\n });\n }\n\n document.removeEventListener('mousemove', handleDocumentMousemove);\n document.removeEventListener('mouseup', handleDocumentMouseup);\n}\n\n/**\n * Handle document.mousemove event\n *\n * @param {Event} e The DOM event to be handled\n */\nfunction handleDocumentMousemove(e) {\n savePoint(e.clientX, e.clientY);\n}\n\n/**\n * Handle document.keyup event\n *\n * @param {Event} e The DOM event to be handled\n */\nfunction handleDocumentKeyup(e) {\n // Cancel rect if Esc is pressed\n if (e.keyCode === 27) {\n lines = null;\n path.parentNode.removeChild(path);\n document.removeEventListener('mousemove', handleDocumentMousemove);\n document.removeEventListener('mouseup', handleDocumentMouseup);\n }\n}\n\n/**\n * Save a point to the line being drawn.\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n */\nfunction savePoint(x, y) {\n let svg = findSVGAtPoint(x, y);\n if (!svg) {\n return;\n }\n\n let rect = svg.getBoundingClientRect();\n let point = scaleDown(svg, {\n x: x - rect.left,\n y: y - rect.top\n });\n\n lines.push([point.x, point.y]);\n\n if (lines.length <= 1) {\n return;\n }\n\n if (path) {\n svg.removeChild(path);\n }\n\n path = appendChild(svg, {\n type: 'drawing',\n color: _penColor,\n width: _penSize,\n lines\n });\n}\n\n/**\n * Set the attributes of the pen.\n *\n * @param {Number} penSize The size of the lines drawn by the pen\n * @param {String} penColor The color of the lines drawn by the pen\n */\nexport function setPen(penSize = 1, penColor = '000000') {\n _penSize = parseInt(penSize, 10);\n _penColor = penColor;\n}\n\n/**\n * Enable the pen behavior\n */\nexport function enablePen() {\n if (_enabled) { return; }\n\n _enabled = true;\n document.addEventListener('mousedown', handleDocumentMousedown);\n document.addEventListener('keyup', handleDocumentKeyup);\n disableUserSelect();\n}\n\n/**\n * Disable the pen behavior\n */\nexport function disablePen() {\n if (!_enabled) { return; }\n\n _enabled = false;\n document.removeEventListener('mousedown', handleDocumentMousedown);\n document.removeEventListener('keyup', handleDocumentKeyup);\n enableUserSelect();\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/UI/pen.js\n **/","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport appendChild from '../render/appendChild';\nimport {\n BORDER_COLOR,\n findSVGAtPoint,\n getMetadata,\n scaleDown\n} from './utils';\n\nlet _enabled = false;\nlet input;\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} The DOM event to be handled\n */\nfunction handleDocumentMouseup(e) {\n if (input || !findSVGAtPoint(e.clientX, e.clientY)) {\n return\n }\n \n input = document.createElement('input');\n input.setAttribute('id', 'pdf-annotate-point-input');\n input.setAttribute('placeholder', 'Enter comment');\n input.style.border = `3px solid ${BORDER_COLOR}`;\n input.style.borderRadius = '3px';\n input.style.position = 'absolute';\n input.style.top = `${e.clientY}px`;\n input.style.left = `${e.clientX}px`;\n\n input.addEventListener('blur', handleInputBlur);\n input.addEventListener('keyup', handleInputKeyup);\n\n document.body.appendChild(input);\n input.focus();\n}\n\n/**\n * Handle input.blur event\n */\nfunction handleInputBlur() {\n savePoint();\n}\n\n/**\n * Handle input.keyup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleInputKeyup(e) {\n if (e.keyCode === 27) {\n closeInput();\n } else if (e.keyCode === 13) {\n savePoint();\n }\n}\n\n/**\n * Save a new point annotation from input\n */\nfunction savePoint() {\n if (input.value.trim().length > 0) {\n let clientX = parseInt(input.style.left, 10);\n let clientY = parseInt(input.style.top, 10);\n let content = input.value.trim();\n let svg = findSVGAtPoint(clientX, clientY);\n if (!svg) {\n return;\n }\n\n let rect = svg.getBoundingClientRect();\n let { documentId, pageNumber } = getMetadata(svg);\n let annotation = Object.assign({\n type: 'point'\n }, scaleDown(svg, {\n x: clientX - rect.left,\n y: clientY - rect.top\n })\n );\n\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\n .then((annotation) => {\n PDFJSAnnotate.getStoreAdapter().addComment(\n documentId,\n annotation.uuid,\n content\n );\n\n appendChild(svg, annotation);\n });\n }\n\n closeInput();\n}\n\n/**\n * Close the input element\n */\nfunction closeInput() {\n input.removeEventListener('blur', handleInputBlur);\n input.removeEventListener('keyup', handleInputKeyup);\n document.body.removeChild(input);\n input = null;\n}\n\n/**\n * Enable point annotation behavior\n */\nexport function enablePoint() {\n if (_enabled) { return; }\n\n _enabled = true;\n document.addEventListener('mouseup', handleDocumentMouseup);\n}\n\n/**\n * Disable point annotation behavior\n */\nexport function disablePoint() {\n if (!_enabled) { return; }\n\n _enabled = false;\n document.removeEventListener('mouseup', handleDocumentMouseup);\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/UI/point.js\n **/","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport appendChild from '../render/appendChild';\nimport {\n BORDER_COLOR,\n disableUserSelect,\n enableUserSelect,\n findSVGAtPoint,\n getMetadata,\n getOffset,\n scaleDown,\n scaleUp\n} from './utils';\n\nlet _enabled = false;\nlet _type;\nlet overlay;\nlet originY;\nlet originX;\n\n/**\n * Get the current window selection as rects\n *\n * @return {Array} An Array of rects\n */\nfunction getSelectionRects() {\n try {\n let selection = window.getSelection();\n let range = selection.getRangeAt(0);\n let rects = range.getClientRects();\n\n if (rects.length > 0 &&\n rects[0].width > 0 &&\n rects[0].height > 0) {\n return rects;\n }\n } catch (e) {}\n \n return null;\n}\n\n/**\n * Handle document.mousedown event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentMousedown(e) {\n let svg;\n if (_type !== 'area' || !(svg = findSVGAtPoint(e.clientX, e.clientY))) {\n return;\n }\n\n let rect = svg.getBoundingClientRect();\n originY = e.clientY;\n originX = e.clientX;\n\n overlay = document.createElement('div');\n overlay.style.position = 'absolute';\n overlay.style.top = `${originY - rect.top}px`;\n overlay.style.left = `${originX - rect.left}px`;\n overlay.style.border = `3px solid ${BORDER_COLOR}`;\n overlay.style.borderRadius = '3px';\n svg.parentNode.appendChild(overlay);\n \n document.addEventListener('mousemove', handleDocumentMousemove);\n disableUserSelect();\n}\n\n/**\n * Handle document.mousemove event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentMousemove(e) {\n let svg = overlay.parentNode.querySelector('svg.annotationLayer');\n let rect = svg.getBoundingClientRect();\n\n if (originX + (e.clientX - originX) < rect.right) {\n overlay.style.width = `${e.clientX - originX}px`;\n }\n\n if (originY + (e.clientY - originY) < rect.bottom) {\n overlay.style.height = `${e.clientY - originY}px`;\n }\n}\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentMouseup(e) {\n let rects;\n if (_type !== 'area' && (rects = getSelectionRects())) {\n let svg = findSVGAtPoint(rects[0].left, rects[0].top);\n saveRect(_type, [...rects].map((r) => {\n return {\n top: r.top,\n left: r.left,\n width: r.width,\n height: r.height\n };\n }));\n } else if (_type === 'area' && overlay) {\n let svg = overlay.parentNode.querySelector('svg.annotationLayer');\n let rect = svg.getBoundingClientRect();\n saveRect(_type, [{\n top: parseInt(overlay.style.top, 10) + rect.top,\n left: parseInt(overlay.style.left, 10) + rect.left,\n width: parseInt(overlay.style.width, 10),\n height: parseInt(overlay.style.height, 10)\n }]);\n\n overlay.parentNode.removeChild(overlay);\n overlay = null;\n\n document.removeEventListener('mousemove', handleDocumentMousemove);\n enableUserSelect();\n }\n}\n\n/**\n * Handle document.keyup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentKeyup(e) {\n // Cancel rect if Esc is pressed\n if (e.keyCode === 27) {\n let selection = window.getSelection();\n selection.removeAllRanges();\n if (overlay && overlay.parentNode) {\n overlay.parentNode.removeChild(overlay);\n overlay = null;\n document.removeEventListener('mousemove', handleDocumentMousemove);\n }\n }\n}\n\n/**\n * Save a rect annotation\n *\n * @param {String} type The type of rect (area, highlight, strikeout)\n * @param {Array} rects The rects to use for annotation\n * @param {String} color The color of the rects\n */\nfunction saveRect(type, rects, color) {\n let svg = findSVGAtPoint(rects[0].left, rects[0].top);\n let node;\n let annotation;\n\n if (!svg) {\n return;\n }\n\n let boundingRect = svg.getBoundingClientRect();\n\n if (!color) {\n if (type === 'highlight') {\n color = 'FFFF00';\n } else if (type === 'strikeout') {\n color = 'FF0000';\n }\n }\n\n // Initialize the annotation\n annotation = {\n type,\n color,\n rectangles: [...rects].map((r) => {\n let offset = 0;\n\n if (type === 'strikeout') {\n offset = r.height / 2;\n }\n\n return scaleDown(svg, {\n y: (r.top + offset) - boundingRect.top,\n x: r.left - boundingRect.left,\n width: r.width,\n height: r.height\n });\n }).filter((r) => r.width > 0 && r.height > 0 && r.x > -1 && r.y > -1)\n };\n \n // Short circuit if no rectangles exist\n if (annotation.rectangles.length === 0) {\n return;\n }\n\n // Special treatment for area as it only supports a single rect\n if (type === 'area') {\n let rect = annotation.rectangles[0];\n delete annotation.rectangles;\n annotation.x = rect.x;\n annotation.y = rect.y;\n annotation.width = rect.width;\n annotation.height = rect.height;\n }\n\n let { documentId, pageNumber } = getMetadata(svg);\n\n // Add the annotation\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\n .then((annotation) => {\n appendChild(svg, annotation);\n });\n}\n\n/**\n * Enable rect behavior\n */\nexport function enableRect(type) {\n _type = type;\n \n if (_enabled) { return; }\n\n _enabled = true;\n document.addEventListener('mouseup', handleDocumentMouseup);\n document.addEventListener('mousedown', handleDocumentMousedown);\n document.addEventListener('keyup', handleDocumentKeyup);\n}\n\n/**\n * Disable rect behavior\n */\nexport function disableRect() {\n if (!_enabled) { return; }\n\n _enabled = false;\n document.removeEventListener('mouseup', handleDocumentMouseup);\n document.removeEventListener('mousedown', handleDocumentMousedown);\n document.removeEventListener('keyup', handleDocumentKeyup);\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/UI/rect.js\n **/","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport appendChild from '../render/appendChild';\nimport {\n BORDER_COLOR,\n findSVGAtPoint,\n getMetadata,\n scaleDown\n} from './utils';\n\nlet _enabled = false;\nlet input;\nlet _textSize;\nlet _textColor;\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentMouseup(e) {\n if (input || !findSVGAtPoint(e.clientX, e.clientY)) {\n return;\n }\n\n input = document.createElement('input');\n input.setAttribute('id', 'pdf-annotate-text-input');\n input.setAttribute('placeholder', 'Enter text');\n input.style.border = `3px solid ${BORDER_COLOR}`;\n input.style.borderRadius = '3px';\n input.style.position = 'absolute';\n input.style.top = `${e.clientY}px`;\n input.style.left = `${e.clientX}px`;\n input.style.fontSize = `${_textSize}px`;\n\n input.addEventListener('blur', handleInputBlur);\n input.addEventListener('keyup', handleInputKeyup);\n\n document.body.appendChild(input);\n input.focus();\n}\n\n/**\n * Handle input.blur event\n */\nfunction handleInputBlur() {\n saveText();\n}\n\n/**\n * Handle input.keyup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleInputKeyup(e) {\n if (e.keyCode === 27) {\n closeInput();\n } else if (e.keyCode === 13) {\n saveText();\n }\n}\n\n/**\n * Save a text annotation from input\n */\nfunction saveText() {\n if (input.value.trim().length > 0) {\n let clientX = parseInt(input.style.left, 10);\n let clientY = parseInt(input.style.top, 10);\n let svg = findSVGAtPoint(clientX, clientY);\n if (!svg) {\n return;\n }\n\n let { documentId, pageNumber } = getMetadata(svg);\n let rect = svg.getBoundingClientRect();\n let annotation = Object.assign({\n type: 'textbox',\n size: _textSize,\n color: _textColor,\n content: input.value.trim()\n }, scaleDown(svg, {\n x: clientX - rect.left,\n y: clientY - rect.top,\n width: input.offsetWidth,\n height: input.offsetHeight\n })\n );\n\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\n .then((annotation) => {\n appendChild(svg, annotation);\n });\n }\n \n closeInput();\n}\n\n/**\n * Close the input\n */\nfunction closeInput() {\n if (input) {\n input.removeEventListener('blur', handleInputBlur);\n input.removeEventListener('keyup', handleInputKeyup);\n document.body.removeChild(input);\n input = null;\n }\n}\n\n/**\n * Set the text attributes\n *\n * @param {Number} textSize The size of the text\n * @param {String} textColor The color of the text\n */\nexport function setText(textSize = 12, textColor = '000000') {\n _textSize = parseInt(textSize, 10);\n _textColor = textColor;\n}\n\n\n/**\n * Enable text behavior\n */\nexport function enableText() {\n if (_enabled) { return; }\n\n _enabled = true;\n document.addEventListener('mouseup', handleDocumentMouseup);\n}\n\n\n/**\n * Disable text behavior\n */\nexport function disableText() {\n if (!_enabled) { return; }\n\n _enabled = false;\n document.removeEventListener('mouseup', handleDocumentMouseup);\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/UI/text.js\n **/","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport renderScreenReaderHints from '../a11y/renderScreenReaderHints';\n\n// Template for creating a new page\nconst PAGE_TEMPLATE = `\n
\n
\n \n
\n \n
\n
\n`;\n\n/**\n * Create a new page to be appended to the DOM.\n *\n * @param {Number} pageNumber The page number that is being created\n * @return {HTMLElement}\n */\nexport function createPage(pageNumber) {\n let temp = document.createElement('div');\n temp.innerHTML = PAGE_TEMPLATE;\n\n let page = temp.children[0];\n let canvas = page.querySelector('canvas');\n\n page.setAttribute('id', `pageContainer${pageNumber}`);\n page.setAttribute('data-page-number', pageNumber);\n\n canvas.mozOpaque = true;\n canvas.setAttribute('id', `page${pageNumber}`);\n\n return page;\n}\n\n/**\n * Render a page that has already been created.\n *\n * @param {Number} pageNumber The page number to be rendered\n * @param {Object} renderOptions The options for rendering\n * @return {Promise} Settled once rendering has completed\n * A settled Promise will be either:\n * - fulfilled: [pdfPage, annotations]\n * - rejected: Error\n */\nexport function renderPage(pageNumber, renderOptions) {\n let {\n documentId,\n pdfDocument,\n scale,\n rotate\n } = renderOptions;\n\n // Load the page and annotations\n return Promise.all([\n pdfDocument.getPage(pageNumber),\n PDFJSAnnotate.getAnnotations(documentId, pageNumber)\n ]).then(([pdfPage, annotations]) => {\n let page = document.getElementById(`pageContainer${pageNumber}`);\n let svg = page.querySelector('.annotationLayer');\n let canvas = page.querySelector('.canvasWrapper canvas');\n let canvasContext = canvas.getContext('2d', {alpha: false});\n let viewport = pdfPage.getViewport(scale, rotate);\n let transform = scalePage(pageNumber, viewport, canvasContext);\n\n // Render the page\n return Promise.all([\n pdfPage.render({ canvasContext, viewport, transform }),\n PDFJSAnnotate.render(svg, viewport, annotations)\n ]).then(() => {\n // Text content is needed for a11y, but is also necessary for creating\n // highlight and strikeout annotations which require selecting text.\n return pdfPage.getTextContent({normalizeWhitespace: true}).then((textContent) => {\n return new Promise((resolve, reject) => {\n // Render text layer for a11y of text content\n let textLayer = page.querySelector(`.textLayer`);\n let textLayerFactory = new PDFJS.DefaultTextLayerFactory();\n let textLayerBuilder = textLayerFactory.createTextLayerBuilder(textLayer, pageNumber -1, viewport);\n textLayerBuilder.setTextContent(textContent);\n textLayerBuilder.render();\n\n // Enable a11y for annotations\n // Timeout is needed to wait for `textLayerBuilder.render`\n setTimeout(() => {\n try {\n renderScreenReaderHints(annotations.annotations);\n resolve();\n } catch (e) {\n reject(e);\n }\n });\n });\n });\n }).then(() => {\n // Indicate that the page was loaded\n page.setAttribute('data-loaded', 'true');\n\n return [pdfPage, annotations];\n });\n });\n}\n\n/**\n * Scale the elements of a page.\n *\n * @param {Number} pageNumber The page number to be scaled\n * @param {Object} viewport The viewport of the PDF page (see pdfPage.getViewport(scale, rotate))\n * @param {Object} context The canvas context that the PDF page is rendered to\n * @return {Array} The transform data for rendering the PDF page\n */\nfunction scalePage(pageNumber, viewport, context) {\n let page = document.getElementById(`pageContainer${pageNumber}`);\n let canvas = page.querySelector('.canvasWrapper canvas');\n let svg = page.querySelector('.annotationLayer');\n let wrapper = page.querySelector('.canvasWrapper');\n let textLayer = page.querySelector('.textLayer');\n let outputScale = getOutputScale(context);\n let transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0];\n let sfx = approximateFraction(outputScale.sx);\n let sfy = approximateFraction(outputScale.sy);\n\n // Adjust width/height for scale\n page.style.visibility = '';\n canvas.width = roundToDivide(viewport.width * outputScale.sx, sfx[0]);\n canvas.height = roundToDivide(viewport.height * outputScale.sy, sfy[0]);\n canvas.style.width = roundToDivide(viewport.width, sfx[1]) + 'px';\n canvas.style.height = roundToDivide(viewport.height, sfx[1]) + 'px';\n svg.setAttribute('width', viewport.width);\n svg.setAttribute('height', viewport.height);\n svg.style.width = `${viewport.width}px`;\n svg.style.height = `${viewport.height}px`;\n page.style.width = `${viewport.width}px`;\n page.style.height = `${viewport.height}px`;\n wrapper.style.width = `${viewport.width}px`;\n wrapper.style.height = `${viewport.height}px`;\n textLayer.style.width = `${viewport.width}px`;\n textLayer.style.height = `${viewport.height}px`;\n\n return transform;\n}\n\n\n/**\n * Approximates a float number as a fraction using Farey sequence (max order of 8).\n *\n * @param {Number} x Positive float number\n * @return {Array} Estimated fraction: the first array item is a numerator,\n * the second one is a denominator.\n */\nfunction approximateFraction(x) {\n // Fast path for int numbers or their inversions.\n if (Math.floor(x) === x) {\n return [x, 1];\n }\n\n const xinv = 1 / x;\n const limit = 8;\n if (xinv > limit) {\n return [1, limit];\n } else if (Math.floor(xinv) === xinv) {\n return [1, xinv];\n }\n\n const x_ = x > 1 ? xinv : x;\n \n // a/b and c/d are neighbours in Farey sequence.\n let a = 0, b = 1, c = 1, d = 1;\n \n // Limit search to order 8.\n while (true) {\n // Generating next term in sequence (order of q).\n let p = a + c, q = b + d;\n if (q > limit) {\n break;\n }\n if (x_ <= p / q) {\n c = p; d = q;\n } else {\n a = p; b = q;\n }\n }\n\n // Select closest of neighbours to x.\n if (x_ - a / b < c / d - x_) {\n return x_ === x ? [a, b] : [b, a];\n } else {\n return x_ === x ? [c, d] : [d, c];\n }\n}\n\nfunction getOutputScale(ctx) {\n let devicePixelRatio = window.devicePixelRatio || 1;\n let backingStoreRatio = ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.msBackingStorePixelRatio ||\n ctx.oBackingStorePixelRatio ||\n ctx.backingStorePixelRatio || 1;\n let pixelRatio = devicePixelRatio / backingStoreRatio;\n return {\n sx: pixelRatio,\n sy: pixelRatio,\n scaled: pixelRatio !== 1\n };\n}\n\nfunction roundToDivide(x, div) {\n let r = x % div;\n return r === 0 ? x : Math.round(x - r + div);\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/UI/page.js\n **/"],"sourceRoot":""}