@pie-element/extended-text-entry 15.1.1 → 15.1.2-next.1

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.
Files changed (100) hide show
  1. package/configure.js +2 -0
  2. package/controller.js +1 -0
  3. package/dist/author/defaults.d.ts +166 -0
  4. package/dist/author/defaults.js +209 -0
  5. package/dist/author/index.d.ts +52 -0
  6. package/dist/author/index.js +74 -0
  7. package/dist/author/main.d.ts +26 -0
  8. package/dist/author/main.js +166 -0
  9. package/dist/browser/author/index.js +495 -0
  10. package/dist/browser/author/index.js.map +1 -0
  11. package/dist/browser/browser-kkT1XVKw.js +219 -0
  12. package/dist/browser/browser-kkT1XVKw.js.map +1 -0
  13. package/dist/browser/controller/index.js +184 -0
  14. package/dist/browser/controller/index.js.map +1 -0
  15. package/dist/browser/delivery/index.js +98 -0
  16. package/dist/browser/delivery/index.js.map +1 -0
  17. package/dist/browser/dist-CfUys1Kx.js +47872 -0
  18. package/dist/browser/dist-CfUys1Kx.js.map +1 -0
  19. package/dist/browser/extended-text-entry.css +2 -0
  20. package/dist/browser/main-BVg6yw7a.js +714 -0
  21. package/dist/browser/main-BVg6yw7a.js.map +1 -0
  22. package/dist/browser/print/index.js +48 -0
  23. package/dist/browser/print/index.js.map +1 -0
  24. package/dist/controller/defaults.d.ts +33 -0
  25. package/dist/controller/defaults.js +104 -0
  26. package/dist/controller/index.d.ts +59 -0
  27. package/dist/controller/index.js +72 -0
  28. package/dist/delivery/annotation/annotation-editor.d.ts +47 -0
  29. package/dist/delivery/annotation/annotation-editor.js +296 -0
  30. package/dist/delivery/annotation/annotation-menu.d.ts +25 -0
  31. package/dist/delivery/annotation/annotation-menu.js +113 -0
  32. package/dist/delivery/annotation/annotation-utils.d.ts +20 -0
  33. package/dist/delivery/annotation/annotation-utils.js +65 -0
  34. package/dist/delivery/annotation/freeform-editor.d.ts +30 -0
  35. package/dist/delivery/annotation/freeform-editor.js +143 -0
  36. package/dist/delivery/index.d.ts +23 -0
  37. package/dist/delivery/index.js +68 -0
  38. package/dist/delivery/main.d.ts +27 -0
  39. package/dist/delivery/main.js +134 -0
  40. package/dist/extended-text-entry.css +2 -0
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.iife.d.ts +8 -0
  43. package/dist/index.iife.js +403 -0
  44. package/dist/index.js +2 -0
  45. package/dist/print/index.d.ts +15 -0
  46. package/dist/print/index.js +48 -0
  47. package/dist/runtime-support.d.ts +12 -0
  48. package/dist/runtime-support.js +12 -0
  49. package/package.json +89 -23
  50. package/CHANGELOG.json +0 -1282
  51. package/CHANGELOG.md +0 -2264
  52. package/LICENSE.md +0 -5
  53. package/README.md +0 -1
  54. package/configure/CHANGELOG.json +0 -922
  55. package/configure/CHANGELOG.md +0 -1953
  56. package/configure/lib/defaults.js +0 -224
  57. package/configure/lib/defaults.js.map +0 -1
  58. package/configure/lib/index.js +0 -125
  59. package/configure/lib/index.js.map +0 -1
  60. package/configure/lib/main.js +0 -247
  61. package/configure/lib/main.js.map +0 -1
  62. package/configure/package.json +0 -23
  63. package/controller/CHANGELOG.json +0 -362
  64. package/controller/CHANGELOG.md +0 -1183
  65. package/controller/lib/defaults.js +0 -91
  66. package/controller/lib/defaults.js.map +0 -1
  67. package/controller/lib/index.js +0 -101
  68. package/controller/lib/index.js.map +0 -1
  69. package/controller/package.json +0 -16
  70. package/docs/config-schema.json +0 -1782
  71. package/docs/config-schema.json.md +0 -1333
  72. package/docs/demo/config.js +0 -7
  73. package/docs/demo/generate.js +0 -14
  74. package/docs/demo/index.html +0 -3
  75. package/docs/demo/session.js +0 -7
  76. package/docs/pie-schema.json +0 -954
  77. package/docs/pie-schema.json.md +0 -717
  78. package/lib/annotation/annotation-editor.js +0 -636
  79. package/lib/annotation/annotation-editor.js.map +0 -1
  80. package/lib/annotation/annotation-menu.js +0 -147
  81. package/lib/annotation/annotation-menu.js.map +0 -1
  82. package/lib/annotation/annotation-utils.js +0 -205
  83. package/lib/annotation/annotation-utils.js.map +0 -1
  84. package/lib/annotation/freeform-editor.js +0 -241
  85. package/lib/annotation/freeform-editor.js.map +0 -1
  86. package/lib/index.js +0 -108
  87. package/lib/index.js.map +0 -1
  88. package/lib/main.js +0 -205
  89. package/lib/main.js.map +0 -1
  90. package/lib/print.js +0 -86
  91. package/lib/print.js.map +0 -1
  92. package/module/configure.js +0 -1
  93. package/module/controller.js +0 -139
  94. package/module/demo.js +0 -38
  95. package/module/element.js +0 -1
  96. package/module/index.html +0 -21
  97. package/module/manifest.json +0 -22
  98. package/module/print-demo.js +0 -76
  99. package/module/print.html +0 -18
  100. package/module/print.js +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"annotation-editor.js","names":["_react","_interopRequireDefault","require","_styles","_propTypes","_annotationUtils","_freeformEditor","_annotationMenu","_editableHtmlTipTap","_configUi","TextContainer","styled","padding","backgroundColor","border","borderRadius","overflowY","lineHeight","whiteSpace","overflowWrap","margin","userSelect","LabelsContainer","width","Wrapper","position","overflowX","display","CommentContainer","InputContainer","theme","paddingTop","spacing","marginBottom","marginTop","globalStyles","document","getElementById","styleElement","createElement","id","textContent","head","appendChild","AnnotationEditor","React","Component","constructor","props","_defineProperty2","default","textRef","labelsRef","left","offsetLeft","offsetWidth","Array","from","children","forEach","label","spans","getAnnotationElements","dataset","annId","spanOffset","offsetTop","offsetParent","top","scrollTop","style","event","annotations","selectionDetails","state","target","annotationId","selectedElems","labelElem","getLabelElement","annotationIndex","findIndex","annotation","isSideLabel","hasAttribute","zIndex","setState","anchorEl","openedMenu","openedEditor","elem","classList","contains","setProperty","color","removeProperty","length","removeElemsWrapping","clearSelection","selection","window","getSelection","detail","rangeCount","selectedRange","getRangeAt","selectedText","toString","isSelectionInside","commonAncestorContainer","isCollapsed","getRangeDetails","wrapRange","onChange","parentRef","removeChild","splice","handleClose","elems","disabled","type","className","cursor","onclick","handleClick","onmouseover","handleHover","onmouseout","handleCancelHover","firstSpan","innerHTML","freeform","marginLeft","wordBreak","fontSize","fontStyle","fontWeight","webkitUserSelect","mozUserSelect","msUserSelect","start","end","Date","getTime","join","createDOMAnnotation","newAnnotation","text","updatedAnnotation","oldType","oldLabel","updateLabel","createNewAnnotation","push","remove","add","newLabel","span","componentDidMount","domStart","domEnd","getDOMNodes","range","createRange","setStart","node","offset","setEnd","adjustAnnotationsPosition","addEventListener","componentWillUnmount","removeEventListener","render","comment","customKeys","disabledMath","keypadMode","height","maxHeight","onCommentChange","predefinedAnnotations","anchorOffset","topOffset","minHeight","ref","r","onMouseDown","onMouseUp","handleSelection","dangerouslySetInnerHTML","__html","markup","pluginProps","math","controlledKeypadMode","video","audio","textAlign","h3","open","isNewAnnotation","onClose","onDelete","deleteAnnotation","onEdit","editAnnotation","onWrite","addAnnotation","onAnnotate","handleMenuClick","value","onSave","updateAnnotation","onTypeChange","changeAnnotationType","PropTypes","string","array","func","isRequired","number","bool","_default","exports"],"sources":["../../src/annotation/annotation-editor.jsx"],"sourcesContent":["import React from 'react';\nimport { styled } from '@mui/material/styles';\nimport PropTypes from 'prop-types';\n\nimport {\n clearSelection,\n isSideLabel,\n getAnnotationElements,\n getDOMNodes,\n getLabelElement,\n getRangeDetails,\n removeElemsWrapping,\n wrapRange,\n} from './annotation-utils';\nimport FreeformEditor from './freeform-editor';\nimport AnnotationMenu from './annotation-menu';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { InputContainer } from '@pie-lib/config-ui';\n\nconst TextContainer = styled('div')({\n padding: '10px 120px 10px 16px',\n backgroundColor: 'rgba(0, 0, 0, 0.06)',\n border: '1px solid #ccc',\n borderRadius: '4px',\n overflowY: 'scroll',\n lineHeight: '36px',\n whiteSpace: 'pre-wrap',\n overflowWrap: 'break-word',\n '& p': {\n margin: 0,\n },\n '& span[data-latex]': {\n userSelect: 'none',\n '-webkit-user-select': 'none',\n '-moz-user-select': 'none',\n '-ms-user-select': 'none',\n },\n});\n\nconst LabelsContainer = styled('div')({\n width: '230px',\n});\n\nconst Wrapper = styled('div')({\n position: 'relative',\n overflowX: 'hidden',\n display: 'flex',\n});\n\nconst CommentContainer = styled(InputContainer)(({ theme }) => ({\n paddingTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n marginTop: theme.spacing(2),\n width: '100%',\n}));\n\n// Global styles for pseudo-elements that can't be applied inline\nconst globalStyles = `\n .sideAnnotation:before {\n position: absolute;\n right: var(--before-right, 100%);\n top: var(--before-top, 5px);\n border: solid transparent;\n content: \"\";\n height: 0;\n width: 0;\n pointer-events: none;\n border-width: var(--before-border-width, 7px);\n border-right-color: var(--before-border-color, rgb(153, 255, 153));\n }\n`;\n\n// Inject styles if not already injected\nif (!document.getElementById('annotation-editor-styles')) {\n const styleElement = document.createElement('style');\n styleElement.id = 'annotation-editor-styles';\n styleElement.textContent = globalStyles;\n document.head.appendChild(styleElement);\n}\n\nclass AnnotationEditor extends React.Component {\n static propTypes = {\n text: PropTypes.string,\n comment: PropTypes.string,\n annotations: PropTypes.array,\n predefinedAnnotations: PropTypes.array,\n onChange: PropTypes.func.isRequired,\n onCommentChange: PropTypes.func.isRequired,\n width: PropTypes.number,\n height: PropTypes.number,\n maxHeight: PropTypes.string,\n disabled: PropTypes.bool,\n disabledMath: PropTypes.bool,\n customKeys: PropTypes.array,\n keypadMode: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n anchorEl: null,\n openedMenu: false,\n openedEditor: false,\n selectedElems: [],\n labelElem: null,\n selectionDetails: null,\n annotation: null,\n annotationIndex: null,\n };\n }\n\n componentDidMount() {\n const { annotations, text } = this.props;\n\n if (text) {\n annotations.forEach((annotation) => {\n const [domStart, domEnd] = getDOMNodes(annotation.start, annotation.end, this.textRef);\n\n if (domStart && domEnd) {\n const range = document.createRange();\n\n range.setStart(domStart.node, domStart.offset);\n range.setEnd(domEnd.node, domEnd.offset);\n\n const spans = wrapRange(range);\n\n this.createDOMAnnotation(spans, annotation);\n }\n });\n }\n\n if (this.textRef) {\n this.adjustAnnotationsPosition();\n this.textRef.addEventListener('scroll', this.adjustAnnotationsPosition);\n }\n }\n\n adjustAnnotationsPosition = () => {\n if (this.textRef && this.labelsRef) {\n const left = this.textRef.offsetLeft + this.textRef.offsetWidth + 8;\n\n Array.from(this.labelsRef.children).forEach((label) => {\n const spans = getAnnotationElements(label.dataset.annId);\n const spanOffset = spans[0].offsetTop ? spans[0].offsetTop : spans[0].offsetParent.offsetTop;\n const top = spanOffset - this.textRef.scrollTop - 6;\n\n label.style.top = `${top}px`;\n label.style.left = `${left}px`;\n });\n }\n };\n\n handleClick = (event) => {\n const { annotations } = this.props;\n const { selectionDetails } = this.state;\n\n if (selectionDetails) {\n // new selection was made inside another annotation and should not update that annotation\n return;\n }\n\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const annotationIndex = annotations.findIndex((annotation) => annotation.id === annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n if (isSideLabel) {\n labelElem.style.zIndex = '10';\n }\n\n this.setState({\n anchorEl: selectedElems[0],\n openedMenu: !!id || (!!annId && !isSideLabel), // true if the annotation or the label was clicked\n openedEditor: !!annId && isSideLabel, // true if the side label was clicked\n selectedElems,\n labelElem,\n annotationIndex,\n annotation: annotations[annotationIndex],\n selectionDetails: null,\n });\n };\n\n handleHover = (event) => {\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n selectedElems.forEach((elem) => {\n elem.style.zIndex = '20';\n if (elem.classList.contains('positive')) {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.7)';\n } else if (elem.classList.contains('negative')) {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.55)';\n }\n });\n\n if (isSideLabel) {\n labelElem.style.zIndex = '20';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.backgroundColor = 'rgb(128, 255, 128)';\n labelElem.style.setProperty('--before-border-color', 'rgb(153, 255, 153)');\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.backgroundColor = 'rgb(255, 179, 230)';\n labelElem.style.setProperty('--before-border-color', 'rgb(255, 179, 230)');\n }\n } else {\n labelElem.style.zIndex = '20';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.color = 'rgb(0, 77, 0)';\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.color = 'rgb(153, 0, 102)';\n }\n }\n };\n\n handleCancelHover = (event) => {\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n selectedElems.forEach((elem) => {\n elem.style.zIndex = '';\n if (elem.classList.contains('positive')) {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.5)';\n } else if (elem.classList.contains('negative')) {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.4)';\n }\n });\n\n if (isSideLabel) {\n labelElem.style.zIndex = '';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.backgroundColor = 'rgb(153, 255, 153)';\n labelElem.style.removeProperty('--before-border-color');\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.backgroundColor = 'rgb(255, 204, 238)';\n labelElem.style.removeProperty('--before-border-color');\n }\n } else {\n labelElem.style.zIndex = '';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.color = 'rgb(0, 128, 0)';\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.color = 'rgb(204, 0, 136)';\n }\n }\n };\n\n handleClose = (event) => {\n const { selectedElems, labelElem } = this.state;\n\n if (selectedElems.length && !selectedElems[0].hasAttribute('data-id')) {\n removeElemsWrapping(selectedElems, this.textRef);\n }\n\n if (labelElem) {\n labelElem.style.zIndex = '';\n }\n\n this.setState({\n anchorEl: null,\n openedMenu: false,\n openedEditor: false,\n selectedElems: [],\n labelElem: null,\n selectionDetails: null,\n annotationIndex: null,\n annotation: null,\n });\n\n clearSelection();\n };\n\n handleSelection = (event) => {\n const selection = window.getSelection();\n\n // prevent unwanted selections\n if (event.detail > 2) {\n clearSelection();\n return;\n }\n\n if (selection && selection.rangeCount > 0) {\n const selectedRange = selection.getRangeAt(0);\n const selectedText = selectedRange.toString();\n const isSelectionInside = this.textRef.contains(selectedRange.commonAncestorContainer);\n\n if (!selection.isCollapsed && selectedText !== '' && isSelectionInside) {\n const selectionDetails = getRangeDetails(selectedRange, this.textRef);\n const selectedElems = wrapRange(selectedRange);\n\n this.setState({\n anchorEl: selectedElems[0],\n openedMenu: true,\n selectedElems,\n selectionDetails,\n });\n }\n }\n };\n\n deleteAnnotation = () => {\n const { annotations, onChange } = this.props;\n const { selectedElems, labelElem, annotationIndex, annotation } = this.state;\n const parentRef = isSideLabel(annotation.label) ? this.labelsRef : selectedElems[0];\n\n parentRef.removeChild(labelElem);\n removeElemsWrapping(selectedElems, this.textRef);\n annotations.splice(annotationIndex, 1);\n\n onChange(annotations);\n this.handleClose();\n };\n\n createDOMAnnotation = (elems, annotation) => {\n const { disabled } = this.props;\n const { id, label, type } = annotation;\n\n (elems || []).forEach((elem) => {\n elem.dataset.id = id;\n elem.className = `annotation ${type}`;\n // Apply annotation styles directly\n elem.style.position = 'relative';\n elem.style.cursor = 'pointer';\n if (type === 'positive') {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.5)';\n } else if (type === 'negative') {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.4)';\n }\n elem.onclick = !disabled && this.handleClick;\n elem.onmouseover = this.handleHover;\n elem.onmouseout = this.handleCancelHover;\n });\n\n const firstSpan = (elems && elems[0]) || {};\n const labelElem = document.createElement('SPAN');\n\n labelElem.dataset.annId = id;\n labelElem.innerHTML = label;\n labelElem.onclick = !disabled && this.handleClick;\n labelElem.onmouseover = this.handleHover;\n labelElem.onmouseout = this.handleCancelHover;\n\n if (isSideLabel(label)) {\n const spanOffset = firstSpan.offsetTop ? firstSpan.offsetTop : firstSpan.offsetParent.offsetTop;\n const top = spanOffset - this.textRef.scrollTop;\n const left = this.textRef.offsetLeft + this.textRef.offsetWidth + 8;\n\n labelElem.dataset.freeform = true;\n labelElem.className = `sideAnnotation ${type}`;\n \n // Apply side annotation styles directly\n labelElem.style.position = 'absolute';\n labelElem.style.padding = '4px';\n labelElem.style.borderRadius = '4px';\n labelElem.style.marginLeft = '8px';\n labelElem.style.width = '180px';\n labelElem.style.whiteSpace = 'pre-wrap';\n labelElem.style.wordBreak = 'break-word';\n labelElem.style.border = '2px solid #ffffff';\n labelElem.style.fontSize = '14px';\n labelElem.style.fontStyle = 'normal';\n labelElem.style.fontWeight = 'normal';\n labelElem.style.top = `${top}px`;\n labelElem.style.left = `${left}px`;\n \n if (type === 'negative') {\n labelElem.style.backgroundColor = 'rgb(255, 204, 238)';\n } else if (type === 'positive') {\n labelElem.style.backgroundColor = 'rgb(153, 255, 153)';\n }\n \n // Add pseudo-element styles via CSS\n labelElem.style.setProperty('--before-border-width', '7px');\n labelElem.style.setProperty('--before-top', '5px');\n labelElem.style.setProperty('--before-right', '100%');\n if (type === 'negative') {\n labelElem.style.setProperty('--before-border-color', 'rgb(255, 204, 238)');\n } else if (type === 'positive') {\n labelElem.style.setProperty('--before-border-color', 'rgb(153, 255, 153)');\n }\n\n this.labelsRef.appendChild(labelElem);\n } else {\n labelElem.className = `annotationLabel ${type}`;\n \n // Apply annotation label styles directly\n labelElem.style.backgroundColor = 'rgb(242, 242, 242)';\n labelElem.style.padding = '2px';\n labelElem.style.position = 'absolute';\n labelElem.style.userSelect = 'none';\n labelElem.style.whiteSpace = 'nowrap';\n labelElem.style.top = '-10px';\n labelElem.style.left = '-2px';\n labelElem.style.fontSize = '12px';\n labelElem.style.fontStyle = 'normal';\n labelElem.style.fontWeight = 'normal';\n labelElem.style.lineHeight = '6px';\n labelElem.style.webkitUserSelect = 'none';\n labelElem.style.mozUserSelect = 'none';\n labelElem.style.msUserSelect = 'none';\n \n if (type === 'positive') {\n labelElem.style.color = 'rgb(0, 128, 0)';\n } else if (type === 'negative') {\n labelElem.style.color = 'rgb(204, 0, 136)';\n }\n \n firstSpan.appendChild(labelElem);\n }\n };\n\n createNewAnnotation = (label, type) => {\n const { selectedElems, selectionDetails } = this.state;\n const annotation = {\n id: [selectionDetails.start, selectionDetails.end, new Date().getTime()].join('-'),\n label,\n type,\n ...selectionDetails,\n };\n\n this.createDOMAnnotation(selectedElems, annotation);\n\n return annotation;\n };\n\n handleMenuClick = (newAnnotation) => {\n const { annotations, onChange } = this.props;\n const { annotation, annotationIndex } = this.state;\n const { type, text: label } = newAnnotation;\n\n if (annotation) {\n const updatedAnnotation = { ...annotation, label, type };\n const { type: oldType, label: oldLabel } = annotation;\n\n this.updateLabel(oldLabel, updatedAnnotation, type !== oldType && oldType);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n } else {\n const newAnnotation = this.createNewAnnotation(label, type);\n\n annotations.push(newAnnotation);\n }\n\n onChange(annotations);\n this.handleClose();\n };\n\n editAnnotation = () => {\n this.setState({\n openedMenu: false,\n openedEditor: true,\n });\n };\n\n addAnnotation = (type) => {\n const { annotations, onChange } = this.props;\n const annotation = this.createNewAnnotation('', type);\n const labelElem = getLabelElement(annotation.id);\n\n annotations.push(annotation);\n\n this.setState({\n openedMenu: false,\n openedEditor: true,\n annotationIndex: annotations.length - 1,\n annotation,\n labelElem,\n });\n\n onChange(annotations);\n };\n\n updateLabel = (oldLabel, annotation, oldType) => {\n const { selectedElems, labelElem } = this.state;\n const { label, type } = annotation;\n\n if ((isSideLabel(label) && isSideLabel(oldLabel)) || (!isSideLabel(label) && !isSideLabel(oldLabel))) {\n labelElem.innerHTML = label;\n\n if (oldType) {\n labelElem.classList.remove(oldType);\n labelElem.classList.add(type);\n\n selectedElems.forEach((elem) => {\n elem.classList.remove(oldType);\n elem.classList.add(type);\n });\n }\n } else if (isSideLabel(label) && !isSideLabel(oldLabel)) {\n selectedElems[0].removeChild(labelElem);\n this.createDOMAnnotation(selectedElems, annotation);\n } else if (!isSideLabel(label) && isSideLabel(oldLabel)) {\n this.labelsRef.removeChild(labelElem);\n this.createDOMAnnotation(selectedElems, annotation);\n }\n };\n\n changeAnnotationType = (newLabel) => {\n const { annotations, onChange } = this.props;\n const { annotationIndex, selectedElems } = this.state;\n const { type: oldType, label: oldLabel } = annotations[annotationIndex];\n const type = oldType === 'positive' ? 'negative' : 'positive';\n const updatedAnnotation = { ...annotations[annotationIndex], type, label: newLabel };\n\n selectedElems.forEach((span) => {\n span.classList.remove(oldType);\n span.classList.add(type);\n });\n\n this.updateLabel(oldLabel, updatedAnnotation, oldType);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n\n onChange(annotations);\n this.handleClose();\n };\n\n updateAnnotation = (oldLabel, newLabel) => {\n const { annotations, onChange } = this.props;\n const { annotationIndex } = this.state;\n const updatedAnnotation = { ...annotations[annotationIndex], label: newLabel };\n\n this.updateLabel(oldLabel, updatedAnnotation);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n\n onChange(annotations);\n };\n\n componentWillUnmount() {\n this.textRef.removeEventListener('scroll', this.adjustAnnotationsPosition);\n }\n\n render() {\n const {\n comment,\n customKeys,\n disabled,\n disabledMath,\n keypadMode,\n height,\n width,\n maxHeight,\n onCommentChange,\n predefinedAnnotations,\n text,\n } = this.props;\n const { anchorEl, annotation, openedMenu, openedEditor, selectionDetails } = this.state;\n\n const anchorOffset = anchorEl && (anchorEl.offsetTop ? anchorEl.offsetTop : anchorEl.offsetParent.offsetTop);\n const topOffset = this.textRef && anchorOffset ? anchorOffset - this.textRef.scrollTop - 8 : 0;\n\n return (\n <div>\n <Wrapper>\n <TextContainer\n style={{ width: width - 34, minHeight: height, maxHeight: maxHeight }}\n ref={(r) => (this.textRef = r)}\n onMouseDown={!disabled ? clearSelection : () => {}}\n onMouseUp={!disabled ? this.handleSelection : () => {}}\n dangerouslySetInnerHTML={{ __html: text }}\n />\n <LabelsContainer ref={(r) => (this.labelsRef = r)} />\n </Wrapper>\n\n <CommentContainer label={'Comment'}>\n <EditableHtml\n className=\"prompt\"\n markup={comment || ''}\n onChange={onCommentChange}\n width={width && (width + 104).toString()}\n disabled={disabled}\n pluginProps={{\n math: {\n disabled: disabledMath,\n customKeys: customKeys,\n keypadMode: keypadMode,\n controlledKeypadMode: false,\n },\n video: {\n disabled: true,\n },\n audio: {\n disabled: true,\n },\n textAlign: {\n disabled: true,\n },\n h3: {\n disabled: true,\n },\n }}\n />\n </CommentContainer>\n\n <AnnotationMenu\n anchorEl={anchorEl}\n open={openedMenu && !disabled}\n annotations={predefinedAnnotations}\n isNewAnnotation={!!selectionDetails}\n onClose={this.handleClose}\n onDelete={this.deleteAnnotation}\n onEdit={this.editAnnotation}\n onWrite={this.addAnnotation}\n onAnnotate={this.handleMenuClick}\n />\n\n <FreeformEditor\n anchorEl={this.textRef}\n open={openedEditor && !disabled}\n offset={topOffset}\n value={(annotation && annotation.label) || ''}\n type={annotation && annotation.type}\n onClose={this.handleClose}\n onDelete={this.deleteAnnotation}\n onSave={this.updateAnnotation}\n onTypeChange={this.changeAnnotationType}\n />\n </div>\n );\n }\n}\n\nexport default AnnotationEditor;\n"],"mappings":"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","ignoreList":[]}
@@ -1,147 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _react = _interopRequireDefault(require("react"));
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
11
- var _styles = require("@mui/material/styles");
12
- var _material = require("@mui/material");
13
- const StyledPopover = (0, _styles.styled)(_material.Popover)({
14
- '& .MuiPaper-root': {
15
- overflowX: 'unset',
16
- overflowY: 'unset',
17
- marginTop: '-16px',
18
- '&::after': {
19
- position: 'absolute',
20
- left: 'calc(50% - 7px)',
21
- border: 'solid transparent',
22
- content: '""',
23
- height: 0,
24
- width: 0,
25
- pointerEvents: 'none',
26
- borderWidth: '7px',
27
- borderTopColor: 'black'
28
- }
29
- }
30
- });
31
- const MainWrapper = (0, _styles.styled)('div')(({
32
- theme
33
- }) => ({
34
- width: '300px',
35
- overflow: 'hidden',
36
- borderRadius: '4px',
37
- backgroundColor: theme.palette.common.white,
38
- border: `2px solid ${theme.palette.grey[100]}`
39
- }));
40
- const AnnotationsWrapper = (0, _styles.styled)('div')({
41
- display: 'flex',
42
- flexWrap: 'wrap'
43
- });
44
- const ControlsWrapper = (0, _styles.styled)('div')(({
45
- theme
46
- }) => ({
47
- display: 'flex',
48
- flexWrap: 'wrap',
49
- borderTop: `2px solid ${theme.palette.grey[100]}`
50
- }));
51
- const Button = (0, _styles.styled)('div')(({
52
- theme,
53
- variant
54
- }) => ({
55
- width: '22%',
56
- textAlign: 'center',
57
- padding: '4px',
58
- cursor: 'pointer',
59
- borderBottom: `1px solid ${theme.palette.grey[100]}`,
60
- '&:not(:nth-child(4n))': {
61
- borderRight: `1px solid ${theme.palette.grey[100]}`
62
- },
63
- '&:nth-child(4n)': {
64
- flexGrow: 1
65
- },
66
- '&:hover': {
67
- backgroundColor: theme.palette.grey[100]
68
- },
69
- ...(variant === 'positive' && {
70
- backgroundColor: 'rgb(153, 255, 153) !important',
71
- '&:hover': {
72
- filter: 'brightness(85%)'
73
- }
74
- }),
75
- ...(variant === 'negative' && {
76
- backgroundColor: 'rgb(255, 204, 238) !important',
77
- '&:hover': {
78
- filter: 'brightness(85%)'
79
- }
80
- })
81
- }));
82
- class AnnotationMenu extends _react.default.Component {
83
- render() {
84
- const {
85
- anchorEl,
86
- annotations,
87
- isNewAnnotation,
88
- onAnnotate,
89
- onClose,
90
- onEdit,
91
- onDelete,
92
- onWrite,
93
- open
94
- } = this.props;
95
- return /*#__PURE__*/_react.default.createElement(StyledPopover, {
96
- anchorEl: anchorEl,
97
- open: open,
98
- onClose: onClose,
99
- elevation: 5,
100
- transitionDuration: {
101
- enter: 225,
102
- exit: 195
103
- },
104
- anchorOrigin: {
105
- vertical: 'top',
106
- horizontal: 'center'
107
- },
108
- transformOrigin: {
109
- vertical: 'bottom',
110
- horizontal: 'center'
111
- }
112
- }, /*#__PURE__*/_react.default.createElement(MainWrapper, null, /*#__PURE__*/_react.default.createElement(AnnotationsWrapper, null, annotations.map((annotation, index) => /*#__PURE__*/_react.default.createElement(Button, {
113
- key: `annotation-${index}`,
114
- variant: annotation.type,
115
- onClick: () => onAnnotate(annotation)
116
- }, annotation.label))), /*#__PURE__*/_react.default.createElement(ControlsWrapper, null, /*#__PURE__*/_react.default.createElement(Button, {
117
- onClick: onClose
118
- }, "Cancel"), /*#__PURE__*/_react.default.createElement(Button, {
119
- style: {
120
- pointerEvents: 'none'
121
- }
122
- }), isNewAnnotation ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Button, {
123
- variant: "positive",
124
- onClick: () => onWrite('positive')
125
- }, "Write"), /*#__PURE__*/_react.default.createElement(Button, {
126
- variant: "negative",
127
- onClick: () => onWrite('negative')
128
- }, "Write")) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Button, {
129
- onClick: onDelete
130
- }, "Delete"), /*#__PURE__*/_react.default.createElement(Button, {
131
- onClick: onEdit
132
- }, "Edit")))));
133
- }
134
- }
135
- (0, _defineProperty2.default)(AnnotationMenu, "propTypes", {
136
- anchorEl: _propTypes.default.object,
137
- open: _propTypes.default.bool,
138
- annotations: _propTypes.default.array,
139
- isNewAnnotation: _propTypes.default.bool,
140
- onClose: _propTypes.default.func,
141
- onDelete: _propTypes.default.func,
142
- onEdit: _propTypes.default.func,
143
- onWrite: _propTypes.default.func,
144
- onAnnotate: _propTypes.default.func
145
- });
146
- var _default = exports.default = AnnotationMenu;
147
- //# sourceMappingURL=annotation-menu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"annotation-menu.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_material","StyledPopover","styled","Popover","overflowX","overflowY","marginTop","position","left","border","content","height","width","pointerEvents","borderWidth","borderTopColor","MainWrapper","theme","overflow","borderRadius","backgroundColor","palette","common","white","grey","AnnotationsWrapper","display","flexWrap","ControlsWrapper","borderTop","Button","variant","textAlign","padding","cursor","borderBottom","borderRight","flexGrow","filter","AnnotationMenu","React","Component","render","anchorEl","annotations","isNewAnnotation","onAnnotate","onClose","onEdit","onDelete","onWrite","open","props","default","createElement","elevation","transitionDuration","enter","exit","anchorOrigin","vertical","horizontal","transformOrigin","map","annotation","index","key","type","onClick","label","style","Fragment","_defineProperty2","PropTypes","object","bool","array","func","_default","exports"],"sources":["../../src/annotation/annotation-menu.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { Popover } from '@mui/material';\n\nconst StyledPopover = styled(Popover)({\n '& .MuiPaper-root': {\n overflowX: 'unset',\n overflowY: 'unset',\n marginTop: '-16px',\n '&::after': {\n position: 'absolute',\n left: 'calc(50% - 7px)',\n border: 'solid transparent',\n content: '\"\"',\n height: 0,\n width: 0,\n pointerEvents: 'none',\n borderWidth: '7px',\n borderTopColor: 'black',\n },\n },\n});\n\nconst MainWrapper = styled('div')(({ theme }) => ({\n width: '300px',\n overflow: 'hidden',\n borderRadius: '4px',\n backgroundColor: theme.palette.common.white,\n border: `2px solid ${theme.palette.grey[100]}`,\n}));\n\nconst AnnotationsWrapper = styled('div')({\n display: 'flex',\n flexWrap: 'wrap',\n});\n\nconst ControlsWrapper = styled('div')(({ theme }) => ({\n display: 'flex',\n flexWrap: 'wrap',\n borderTop: `2px solid ${theme.palette.grey[100]}`,\n}));\n\nconst Button = styled('div')(({ theme, variant }) => ({\n width: '22%',\n textAlign: 'center',\n padding: '4px',\n cursor: 'pointer',\n borderBottom: `1px solid ${theme.palette.grey[100]}`,\n '&:not(:nth-child(4n))': {\n borderRight: `1px solid ${theme.palette.grey[100]}`,\n },\n '&:nth-child(4n)': {\n flexGrow: 1,\n },\n '&:hover': {\n backgroundColor: theme.palette.grey[100],\n },\n ...(variant === 'positive' && {\n backgroundColor: 'rgb(153, 255, 153) !important',\n '&:hover': {\n filter: 'brightness(85%)',\n },\n }),\n ...(variant === 'negative' && {\n backgroundColor: 'rgb(255, 204, 238) !important',\n '&:hover': {\n filter: 'brightness(85%)',\n },\n }),\n}));\n\nclass AnnotationMenu extends React.Component {\n static propTypes = {\n anchorEl: PropTypes.object,\n open: PropTypes.bool,\n annotations: PropTypes.array,\n isNewAnnotation: PropTypes.bool,\n onClose: PropTypes.func,\n onDelete: PropTypes.func,\n onEdit: PropTypes.func,\n onWrite: PropTypes.func,\n onAnnotate: PropTypes.func,\n };\n\n render() {\n const { anchorEl, annotations, isNewAnnotation, onAnnotate, onClose, onEdit, onDelete, onWrite, open } =\n this.props;\n\n return (\n <StyledPopover\n anchorEl={anchorEl}\n open={open}\n onClose={onClose}\n elevation={5}\n transitionDuration={{ enter: 225, exit: 195 }}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'bottom',\n horizontal: 'center',\n }}\n >\n <MainWrapper>\n <AnnotationsWrapper>\n {annotations.map((annotation, index) => (\n <Button\n key={`annotation-${index}`}\n variant={annotation.type}\n onClick={() => onAnnotate(annotation)}\n >\n {annotation.label}\n </Button>\n ))}\n </AnnotationsWrapper>\n <ControlsWrapper>\n <Button onClick={onClose}>\n Cancel\n </Button>\n <Button style={{ pointerEvents: 'none' }} />\n {isNewAnnotation ? (\n <React.Fragment>\n <Button variant=\"positive\" onClick={() => onWrite('positive')}>\n Write\n </Button>\n <Button variant=\"negative\" onClick={() => onWrite('negative')}>\n Write\n </Button>\n </React.Fragment>\n ) : (\n <React.Fragment>\n <Button onClick={onDelete}>\n Delete\n </Button>\n <Button onClick={onEdit}>\n Edit\n </Button>\n </React.Fragment>\n )}\n </ControlsWrapper>\n </MainWrapper>\n </StyledPopover>\n );\n }\n}\n\nexport default AnnotationMenu;\n"],"mappings":"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","ignoreList":[]}
@@ -1,205 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.wrapRange = exports.removeElemsWrapping = exports.isSideLabel = exports.getRangeDetails = exports.getLabelElement = exports.getDOMNodes = exports.getAnnotationElements = exports.clearSelection = void 0;
7
- // returns DOM Nodes before the stopOffset
8
- const getAllTextNodesBeforePosition = (node, stopOffset, nodeArray) => {
9
- const nodes = nodeArray ? nodeArray : [];
10
- const offset = nodes.reduce((acc, node) => acc + node.textContent.length, 0);
11
- let keepWalking = true;
12
- if (offset > stopOffset) {
13
- return false;
14
- }
15
- if (node) {
16
- // 3 = HTML DOM node value for text nodes
17
- if (node.nodeType === 3 && node.parentNode && !node.parentNode.hasAttribute('data-ann-id')) {
18
- nodes.push(node);
19
- }
20
- node = node.firstChild;
21
- }
22
- while (node && keepWalking) {
23
- keepWalking = getAllTextNodesBeforePosition(node, stopOffset, nodes);
24
- node = node.nextSibling;
25
- }
26
- return nodes;
27
- };
28
-
29
- // returns DOM Nodes that overlap the start or end position
30
- const getDOMNodes = (startOffset, endOffset, rootNode) => {
31
- const textNodesToEnd = getAllTextNodesBeforePosition(rootNode, endOffset);
32
- const domNodes = [];
33
- let start = 0;
34
- textNodesToEnd.forEach(node => {
35
- const end = start + node.textContent.length;
36
- [startOffset, endOffset].forEach(offset => {
37
- if (start <= offset && offset < end) {
38
- domNodes.push({
39
- node,
40
- offset: offset - start
41
- });
42
- }
43
- });
44
- start = end;
45
- });
46
- return domNodes;
47
- };
48
-
49
- // returns [ textNodes, text ]
50
- // textNodes = DOM Text Nodes between start range and end range node
51
- // text = plain text in range
52
- exports.getDOMNodes = getDOMNodes;
53
- const getTextNodesBetween = range => {
54
- const {
55
- commonAncestorContainer: rootNode,
56
- startContainer: startNode,
57
- endContainer: endNode,
58
- startOffset,
59
- endOffset
60
- } = range;
61
- const textNodes = [];
62
- let pastStartNode = false;
63
- let reachedEndNode = false;
64
- let text = '';
65
- const getTextNodes = node => {
66
- const {
67
- nodeValue: value,
68
- childNodes
69
- } = node;
70
- if (node === startNode && node === endNode) {
71
- if (value) {
72
- text += value.substring(startOffset, endOffset);
73
- }
74
- pastStartNode = reachedEndNode = true;
75
- } else if (node === startNode) {
76
- if (value) {
77
- text += value.substring(startOffset);
78
- }
79
- pastStartNode = true;
80
- } else if (node === endNode) {
81
- if (value) {
82
- text += value.substring(0, endOffset);
83
- }
84
- reachedEndNode = true;
85
- } else if (node && node.nodeType === 3 && node.parentNode && !node.parentNode.hasAttribute('data-ann-id')) {
86
- // 3 = HTML DOM node value for text nodes
87
- if (value && pastStartNode && !reachedEndNode) {
88
- text += value;
89
- textNodes.push(node);
90
- }
91
- }
92
- childNodes.forEach(childNode => {
93
- if (!reachedEndNode) {
94
- getTextNodes(childNode);
95
- } else {
96
- return;
97
- }
98
- });
99
- };
100
- getTextNodes(rootNode);
101
- return [textNodes, text];
102
- };
103
- const surroundContent = range => {
104
- const wrapper = document.createElement('SPAN');
105
- range.surroundContents(wrapper);
106
- return wrapper;
107
- };
108
-
109
- // wrap each DOM Text Node in range into a span
110
- const wrapRange = range => {
111
- if (range.startContainer === range.endContainer) {
112
- return [surroundContent(range)];
113
- }
114
- const [nodesBetween] = getTextNodesBetween(range);
115
-
116
- // wrap the start node
117
- const startRange = document.createRange();
118
- startRange.selectNodeContents(range.startContainer);
119
- startRange.setStart(range.startContainer, range.startOffset);
120
- const startWrapper = surroundContent(startRange);
121
-
122
- // wrap the end node
123
- const endRange = document.createRange();
124
- endRange.selectNode(range.endContainer);
125
- endRange.setEnd(range.endContainer, range.endOffset);
126
- const endWrapper = surroundContent(endRange);
127
-
128
- // wrap the nodes between start and end nodes, if any
129
- const centerWrappers = nodesBetween.map(node => {
130
- const wrapper = document.createElement('SPAN');
131
- node.parentNode.insertBefore(wrapper, node);
132
- wrapper.appendChild(node);
133
- return wrapper;
134
- });
135
- return [startWrapper, ...centerWrappers, endWrapper];
136
- };
137
-
138
- // returns text in range with start and end position in rootNode
139
- exports.wrapRange = wrapRange;
140
- const getRangeDetails = (range, rootNode) => {
141
- const rangeBefore = document.createRange();
142
- rangeBefore.setStart(rootNode, 0);
143
- rangeBefore.setEnd(range.startContainer, range.startOffset);
144
- const [, text] = getTextNodesBetween(rangeBefore);
145
- const [, textSelected] = getTextNodesBetween(range);
146
- const start = text.length;
147
- const end = start + textSelected.length;
148
- return {
149
- quote: textSelected,
150
- start,
151
- end
152
- };
153
- };
154
-
155
- // removes the annotation spans without changing the content inside
156
- exports.getRangeDetails = getRangeDetails;
157
- const removeElemsWrapping = (elems, container) => {
158
- (elems || []).forEach(elem => {
159
- const parent = elem.parentNode;
160
- const childNodes = elem.childNodes;
161
- const childNodesLength = childNodes.length;
162
- if (childNodesLength > 0) {
163
- for (let i = 0; i < childNodesLength; i++) {
164
- parent.insertBefore(childNodes[0], elem);
165
- }
166
- } else {
167
- parent.insertBefore(document.createTextNode(elem.textContent), elem);
168
- }
169
- parent.removeChild(elem);
170
- });
171
- container.normalize();
172
- };
173
-
174
- // also used in select-text
175
- exports.removeElemsWrapping = removeElemsWrapping;
176
- const clearSelection = () => {
177
- if (document.getSelection) {
178
- // for all new browsers (IE9+, Chrome, Firefox)
179
- document.getSelection().removeAllRanges();
180
- document.getSelection().addRange(document.createRange());
181
- } else if (window.getSelection) {
182
- // equals with the document.getSelection (MSDN info)
183
- if (window.getSelection().removeAllRanges) {
184
- // for all new browsers (IE9+, Chrome, Firefox)
185
- window.getSelection().removeAllRanges();
186
- window.getSelection().addRange(document.createRange());
187
- } else if (window.getSelection().empty) {
188
- // Chrome supports this as well
189
- window.getSelection().empty();
190
- }
191
- } else if (document.selection) {
192
- // IE8-
193
- document.selection.empty();
194
- }
195
- };
196
-
197
- // check if annotation label contains line breaks or its length >= 20 characters
198
- exports.clearSelection = clearSelection;
199
- const isSideLabel = text => text.length >= 20 || text.search(/\n|\r|\r\n/) !== -1;
200
- exports.isSideLabel = isSideLabel;
201
- const getAnnotationElements = id => Array.from(document.querySelectorAll(`[data-id='${id}']`));
202
- exports.getAnnotationElements = getAnnotationElements;
203
- const getLabelElement = id => document.querySelector(`[data-ann-id='${id}']`);
204
- exports.getLabelElement = getLabelElement;
205
- //# sourceMappingURL=annotation-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"annotation-utils.js","names":["getAllTextNodesBeforePosition","node","stopOffset","nodeArray","nodes","offset","reduce","acc","textContent","length","keepWalking","nodeType","parentNode","hasAttribute","push","firstChild","nextSibling","getDOMNodes","startOffset","endOffset","rootNode","textNodesToEnd","domNodes","start","forEach","end","exports","getTextNodesBetween","range","commonAncestorContainer","startContainer","startNode","endContainer","endNode","textNodes","pastStartNode","reachedEndNode","text","getTextNodes","nodeValue","value","childNodes","substring","childNode","surroundContent","wrapper","document","createElement","surroundContents","wrapRange","nodesBetween","startRange","createRange","selectNodeContents","setStart","startWrapper","endRange","selectNode","setEnd","endWrapper","centerWrappers","map","insertBefore","appendChild","getRangeDetails","rangeBefore","textSelected","quote","removeElemsWrapping","elems","container","elem","parent","childNodesLength","i","createTextNode","removeChild","normalize","clearSelection","getSelection","removeAllRanges","addRange","window","empty","selection","isSideLabel","search","getAnnotationElements","id","Array","from","querySelectorAll","getLabelElement","querySelector"],"sources":["../../src/annotation/annotation-utils.js"],"sourcesContent":["// returns DOM Nodes before the stopOffset\nconst getAllTextNodesBeforePosition = (node, stopOffset, nodeArray) => {\n const nodes = nodeArray ? nodeArray : [];\n const offset = nodes.reduce((acc, node) => acc + node.textContent.length, 0);\n let keepWalking = true;\n\n if (offset > stopOffset) {\n return false;\n }\n\n if (node) {\n // 3 = HTML DOM node value for text nodes\n if (node.nodeType === 3 && node.parentNode && !node.parentNode.hasAttribute('data-ann-id')) {\n nodes.push(node);\n }\n\n node = node.firstChild;\n }\n\n while (node && keepWalking) {\n keepWalking = getAllTextNodesBeforePosition(node, stopOffset, nodes);\n node = node.nextSibling;\n }\n\n return nodes;\n};\n\n// returns DOM Nodes that overlap the start or end position\nexport const getDOMNodes = (startOffset, endOffset, rootNode) => {\n const textNodesToEnd = getAllTextNodesBeforePosition(rootNode, endOffset);\n const domNodes = [];\n let start = 0;\n\n textNodesToEnd.forEach((node) => {\n const end = start + node.textContent.length;\n\n [startOffset, endOffset].forEach((offset) => {\n if (start <= offset && offset < end) {\n domNodes.push({\n node,\n offset: offset - start,\n });\n }\n });\n\n start = end;\n });\n\n return domNodes;\n};\n\n// returns [ textNodes, text ]\n// textNodes = DOM Text Nodes between start range and end range node\n// text = plain text in range\nconst getTextNodesBetween = (range) => {\n const {\n commonAncestorContainer: rootNode,\n startContainer: startNode,\n endContainer: endNode,\n startOffset,\n endOffset,\n } = range;\n const textNodes = [];\n let pastStartNode = false;\n let reachedEndNode = false;\n let text = '';\n\n const getTextNodes = (node) => {\n const { nodeValue: value, childNodes } = node;\n\n if (node === startNode && node === endNode) {\n if (value) {\n text += value.substring(startOffset, endOffset);\n }\n\n pastStartNode = reachedEndNode = true;\n } else if (node === startNode) {\n if (value) {\n text += value.substring(startOffset);\n }\n\n pastStartNode = true;\n } else if (node === endNode) {\n if (value) {\n text += value.substring(0, endOffset);\n }\n\n reachedEndNode = true;\n } else if (node && node.nodeType === 3 && node.parentNode && !node.parentNode.hasAttribute('data-ann-id')) {\n // 3 = HTML DOM node value for text nodes\n if (value && pastStartNode && !reachedEndNode) {\n text += value;\n textNodes.push(node);\n }\n }\n\n childNodes.forEach((childNode) => {\n if (!reachedEndNode) {\n getTextNodes(childNode);\n } else {\n return;\n }\n });\n };\n\n getTextNodes(rootNode);\n\n return [textNodes, text];\n};\n\nconst surroundContent = (range) => {\n const wrapper = document.createElement('SPAN');\n\n range.surroundContents(wrapper);\n\n return wrapper;\n};\n\n// wrap each DOM Text Node in range into a span\nexport const wrapRange = (range) => {\n if (range.startContainer === range.endContainer) {\n return [surroundContent(range)];\n }\n\n const [nodesBetween] = getTextNodesBetween(range);\n\n // wrap the start node\n const startRange = document.createRange();\n\n startRange.selectNodeContents(range.startContainer);\n startRange.setStart(range.startContainer, range.startOffset);\n\n const startWrapper = surroundContent(startRange);\n\n // wrap the end node\n const endRange = document.createRange();\n\n endRange.selectNode(range.endContainer);\n endRange.setEnd(range.endContainer, range.endOffset);\n\n const endWrapper = surroundContent(endRange);\n\n // wrap the nodes between start and end nodes, if any\n const centerWrappers = nodesBetween.map((node) => {\n const wrapper = document.createElement('SPAN');\n\n node.parentNode.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n\n return wrapper;\n });\n\n return [startWrapper, ...centerWrappers, endWrapper];\n};\n\n// returns text in range with start and end position in rootNode\nexport const getRangeDetails = (range, rootNode) => {\n const rangeBefore = document.createRange();\n\n rangeBefore.setStart(rootNode, 0);\n rangeBefore.setEnd(range.startContainer, range.startOffset);\n\n const [, text] = getTextNodesBetween(rangeBefore);\n const [, textSelected] = getTextNodesBetween(range);\n const start = text.length;\n const end = start + textSelected.length;\n\n return {\n quote: textSelected,\n start,\n end,\n };\n};\n\n// removes the annotation spans without changing the content inside\nexport const removeElemsWrapping = (elems, container) => {\n (elems || []).forEach((elem) => {\n const parent = elem.parentNode;\n const childNodes = elem.childNodes;\n const childNodesLength = childNodes.length;\n\n if (childNodesLength > 0) {\n for (let i = 0; i < childNodesLength; i++) {\n parent.insertBefore(childNodes[0], elem);\n }\n } else {\n parent.insertBefore(document.createTextNode(elem.textContent), elem);\n }\n\n parent.removeChild(elem);\n });\n\n container.normalize();\n};\n\n// also used in select-text\nexport const clearSelection = () => {\n if (document.getSelection) {\n // for all new browsers (IE9+, Chrome, Firefox)\n document.getSelection().removeAllRanges();\n document.getSelection().addRange(document.createRange());\n } else if (window.getSelection) {\n // equals with the document.getSelection (MSDN info)\n if (window.getSelection().removeAllRanges) {\n // for all new browsers (IE9+, Chrome, Firefox)\n window.getSelection().removeAllRanges();\n window.getSelection().addRange(document.createRange());\n } else if (window.getSelection().empty) {\n // Chrome supports this as well\n window.getSelection().empty();\n }\n } else if (document.selection) {\n // IE8-\n document.selection.empty();\n }\n};\n\n// check if annotation label contains line breaks or its length >= 20 characters\nexport const isSideLabel = (text) => text.length >= 20 || text.search(/\\n|\\r|\\r\\n/) !== -1;\n\nexport const getAnnotationElements = (id) => Array.from(document.querySelectorAll(`[data-id='${id}']`));\n\nexport const getLabelElement = (id) => document.querySelector(`[data-ann-id='${id}']`);\n"],"mappings":"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","ignoreList":[]}