{"version":3,"sources":["webpack:///./node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/compression-writer.js","webpack:///./src/views/helperTemplates/PdfComponent.vue?6e30","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/text-layer.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/accessibility-tags/accessibility-tags.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/utility/path-util.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/primitives/matrix.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/primitives/point.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/drawing-util.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/types.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/signature.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/enum/enum.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/context-menu.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/primitives/size.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/pdf-annotation.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/navigation-pane.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/ajax-handler.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/primitives/rect.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/utility/dom-util.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/utility/base-util.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/core/elements/drawing-element.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/core/containers/container.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/core/appearance.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/core/elements/text-element.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/utility/diagram-util.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/selector.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/core/elements/path-element.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/connector-util.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/action.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/tools.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/rendering/canvas-renderer.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/rendering/svg-renderer.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/dom-util.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/blazor-context-menu.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/spinner.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/blazor-ui-adaptor.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/enumerator.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/base/pdfviewer-base.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/pdfium/pdfium-runner.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/graphics/pdf-stream-writer.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/fonts/pdf-string-format.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/fonts/pdf-font-metrics.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/fonts/string-layouter.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/fonts/pdf-standard-font.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/fonts/ttf-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/fonts/ttf-reader.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/base-stream.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/fonts/unicode-true-type-font.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/graphics/rightToLeft/text-shape.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/graphics/rightToLeft/bidirectional.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/graphics/rightToLeft/text-renderer.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/graphics/pdf-path.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/graphics/pdf-template.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/graphics/images/pdf-image.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/graphics/pdf-graphics.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/annotations/annotation-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/form/field.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/utils.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/pdf-primitives.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/pdf-page.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/annotations/pdf-appearance.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/annotations/annotation.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/graphics/images/image-decoder.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/graphics/images/pdf-bitmap.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/pdf-base/annotation-renderer.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/pdf-base/image-structure.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/content-parser.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/pdf-base/page-renderer.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/pdf-base/fontData.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/pdf-base/form-fields-base.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/pdf-base/signature-base.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/pdf-base/bookmark-base.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/decode-stream.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/predictor-stream.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/flate-stream.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/pdf-parser.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/decrypt-stream.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/security/encryptor.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/pdf-cross-reference.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/pdf-catalog.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/form/form.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/import-export/xml-writer.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/import-export/xfdf-document.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/import-export/json-document.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/import-export/fdf-document.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/pdf-outline.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/import-export/xml-document.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/pdf-file-structure.js","webpack:///./node_modules/@syncfusion/ej2-pdf/src/pdf/core/pdf-document.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/pdf-base/pdf-renderer.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/form-fields/form-fields.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/core/elements/image-element.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/rendering/renderer.js","webpack:///./node_modules/@syncfusion/ej2-drawings/src/drawing/core/containers/canvas.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/html-element.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/drawing/drawing.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/pdfviewer.js","webpack:///./node_modules/@syncfusion/ej2-vue-pdfviewer/src/pdfviewer/pdfviewer.component.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/menu/menu.js","webpack:///./node_modules/@syncfusion/ej2-splitbuttons/src/split-button/split-button.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/slider/slider.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/color-picker/color-picker.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/toolbar/annotation-toolbar.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/toolbar/formdesigner-toolbar.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/toolbar/toolbar.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/magnification/magnification.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/navigation/page-navigation.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/annotation/link-annotation.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/treeview/treeview.js","webpack:///./node_modules/@syncfusion/ej2-lists/src/list-view/list-view.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/bookmark-view/bookmark-view.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/thumbnail-view/thumbnail-view.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/print/print.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/text-selection/text-selection.js","webpack:///./node_modules/@syncfusion/ej2-pdfviewer/src/pdfviewer/text-search/text-search.js","webpack:///src/views/helperTemplates/PdfComponent.vue","webpack:///./src/views/helperTemplates/PdfComponent.vue?03c6","webpack:///./src/views/helperTemplates/PdfComponent.vue","webpack:///./node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","webpack:///./node_modules/@syncfusion/ej2-splitbuttons/src/common/common.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/combo-box/combo-box.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/menu-scroll.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","webpack:///./src/views/helperTemplates/PdfComponent.vue?3005","webpack:///./node_modules/@syncfusion/ej2-navigations/src/tab/tab.js","webpack:///./node_modules/@syncfusion/ej2-splitbuttons/src/drop-down-button/drop-down-button.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/save.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/encoding.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/context-menu/context-menu.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","TOUCHEND_HIDE_DELAY","TAPHOLD_THRESHOLD","SHOW_POINTER_TIP_GAP","HIDE_POINTER_TIP_GAP","MOUSE_TRAIL_GAP","POINTER_ADJUST","ROOT","RTL","DEVICE","ICON","CLOSE","TOOLTIP_WRAP","CONTENT","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","TIP_BOTTOM","TIP_TOP","TIP_LEFT","TIP_RIGHT","POPUP_ROOT","POPUP_OPEN","POPUP_CLOSE","POPUP_LIB","HIDE_POPUP","POPUP_CONTAINER","Animation","_super","apply","effect","duration","delay","Tooltip","options","element","_this","call","mouseMoveEvent","mouseMoveTarget","containerElement","isBodyContainer","initialize","formatPosition","_a","_b","position","indexOf","split","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","createElement","className","tipClass","appendChild","tooltipEle","renderPopup","elePos","mouseTrail","top","left","getTooltipPosition","classList","remove","popupObj","height","width","X","Y","enableRtl","open","openPopupHandler","bind","close","closePopupHandler","getScalingFactor","x","y","scalingFactors","elementsWithTransform","closest","contains","computedStyle","window","getComputedStyle","transformValue","getPropertyValue","matrixValues","match","map","parseFloat","style","display","parentWithZoomStyle","zoom","pos","getBoundingClientRect","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionLeft","collisionTop","collisionFlipFit","windowResize","reposition","findTarget","dataBind","needTemplateReposition","trigger","tooltipEventArgs","isReact","opensOn","clearTemplate","clear","xScalingFactor","yScalingFactor","tipWidth","tipHeight","tooltipEleWidth","tooltipEleHeight","arrowEle","tipAdjust","tipHeightAdjust","tipWidthAdjust","tooltipEleRect","arrowEleRect","Math","round","showTipPointer","clientHeight","clientWidth","offsetWidth","offsetHeight","offsetX","offsetY","updateTipPosition","selEle","removeList","adjustArrow","leftValue","topValue","tooltipWidth","tooltipHeight","arrowInnerELe","tipPosExclude","tipPointerPosition","renderContent","tooltipContent","cssClass","getAttribute","setAttribute","removeAttribute","content","innerHTML","HTMLElement","enableHtmlSanitizer","setProperties","sanitize","enableHtmlParse","tempFunction","tempArr","id","undefined","root","templateFunction","renderReactTemplates","renderCloseIcon","isSticky","tipClose","add","touchStartEvent","onStickyClose","existingCloseIcon","querySelector","addDescribedBy","describedby","push","join","trim","removeDescribedBy","index","splice","orgdescribedby","tapHoldHandler","evt","clearTimeout","autoCloseTimer","targetHover","originalEvent","touchEndHandler","e","setTimeout","targetClick","hideTooltip","animation","closeDelay","targetList","slice","ctrlId","document","_i","targetList_1","target_1","restoreElement","showTooltip","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showAnimation","showTimer","hideTimer","openDelay","type","cancel","event","isInteracted","observeCallback","beforeRenderArgs","beforeRenderCallback","isHidden","attrs","role","styles","tooltipBeforeRender","tooltipAfterRender","stop","appendContainer","ctrlObj","container","body","tagName","isDevice","maxWidth","observedArgs","beforeOpenCallback","openAnimation_1","name","timingFunction","show","onMouseMove","wireMouseEvents","tooltip","viewContainerRef","checkCollision","horizontal","vertical","affectedPos","checkCollideTarget","offsetLeft","pageXOffset","scrollLeft","offsetTop","pageYOffset","scrollTop","newpos","collidedPosition","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","eleOffset","windowCollision","arrowleft","parseInt","toString","positionString","newPos","offsetType","hideAnimation","targetElement","hide","isTooltipOpen","tooltipHide","popupHide","closeAnimation","unwireMouseEvents","destroy","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","relatedTarget","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","preventDefault","touches","pageX","pageY","colpos","keyDown","keyCode","touchEnd","scrollHandler","render","wireEvents","renderComplete","preRender","triggerList","getTriggerList","triggerList_1","wireFocusEvents","touchModule","tapHoldThreshold","tapHold","touchEndEvent","targetsList","targetList_2","unwireEvents","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","getModuleName","getPersistData","addOnPersist","onPropertyChanged","newProp","oldProp","keys","prop","refresh","target_2","currentTarget","currentTarget_1","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","Uint8Array","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","CompressedStreamWriter","noWrap","pendingBuffer","pendingBufLength","pendingBufCache","pendingBufBitsInCache","bufferPosition","extraBits","currentHash","matchStart","matchLength","matchPrevAvail","blockStart","stringStart","lookAhead","totalBytesIn","inputOffset","inputEnd","windowSize","windowMask","hashSize","hashMask","hashShift","floor","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","Uint16Array","arrLiterals","stream","dataWindow","hashHead","hashPrevious","writeZLibHeader","get","enumerable","configurable","compressedString","String","fromCharCode","write","data","offset","Error","end","encode","getBytes","inputBuffer","ChecksumCalculator","checksumUpdate","pendingBufferFlush","compressData","headerDate","pendingBufferWriteShortBytes","s","finish","success","fillWindow","canFlush","compressSlow","flush","lookAheadCompleted","slideWindow","prevMatch","prevLen","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","len","lastBlock","more","set","subarray","updateHash","m","hash","curMatch","chainLen","niceLen","scan","bestEnd","bestLength","max","limit","stringEnd","scanEnd1","scanEnd","min","literal","codeFrequencies","dist","lc","huffmanLengthCode","dc","huffmanDistanceCode","stored","storedOffset","storedLength","buildTree","calculateBLFreq","blTreeCodes","codeLengths","huffCodeLengthOrders","opt_len","getEncodedLength","static_len","huffmanFlushStoredBlock","pendingBufferWriteBits","setStaticCodes","huffmanCompressBlock","huffmanReset","huffmanSendAllTrees","pendingBufferAlignToByte","pendingBufferWriteShort","pendingBufferWriteByteBlock","code","distance","buildCodes","treeLength","rank","writeTree","reset","literalLen","writeCodeToStream","bits","count","uint","Uint32Array","pendingBufferFlushBits","isClose","array","result","bitReverse","writer","elementCount","minCodes","maxLength","codeMinCount","codeFrequency","lengthCount","Int32Array","codeCount","codeLength","codes","lengths","temp","lengthTemp","nextCode","bitsCount","value","reverseBits","blTree","maxCount","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","n","freq","pPos","leafsCount","nodesCount","child","values","node","iIndex","constructHuffmanTree","buildLength","first","last","lastVal","path","second","minDepth","numNodes","numLeafs","overflow","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","childIndex","bitLength","checksum","buffer","checksum_uint","s1","s2","checkSumBitOffset","steps","checksumIterationCount","checksumBase","_vm","_h","$createElement","_c","_self","staticClass","_v","_s","title","serviceUrl","documentPath","staticRenderFns","TextLayer","pdfViewer","pdfViewerBase","textBoundsArray","characterBound","closeNotification","notifyDialog","addTextLayer","pageNumber","pageWidth","pageHeight","pageDiv","textLayer","textDiv","getElementById","applyElementStyles","renderTextContents","textContents","textBounds","rotation","rtldoc","isRTLText","canvasElement","clientSideRendering","yValue","heightValue","linebounds","lineContent","Width","Height","idNumber","childNodes","includes","j","bounds","textContent","replace","newLine","whiteSpace","checkIsRtlText","direction","Rotation","setStyleToTextDiv","Bottom","setTextElementProperties","context","getContext","font","fontSize","fontFamily","contextWidth","measureText","scale","getZoomFactor","applyTextRotation","resizeExcessDiv","textSelectionModule","enableTextSelection","isTextSelectionDisabled","resizeTextContents","isTextSearch","getElement","parentElement","removeChild","textSearch","resizeSearchElements","textRotation","scaleString","transform","textRotationAngle","transformOrigin","resizeTextContentsOnZoom","renderObject","sessionStorage","getItem","getDocumentId","getPreviousZoomFactor","JSON","parse","textElements","filter","obj","clearTextLayers","isPinchZoomed","lowerPageValue","currentPageNumber","higherPageValue","pageCount","textLayers","querySelectorAll","getMagnified","getTextSelectionStatus","getTextSearchStatus","removeElement","getPinchZoomed","removeForeignObjects","isIE","parentNode","childElement","getElementsByClassName","outerDivParent","convertToSpan","divId","fromOffset","toOffset","textString","substring","createTextNode","spanElement","currentText","applySpanForSelection","startPage","endPage","anchorOffsetDiv","focusOffsetDiv","anchorOffset","focusOffset","storedData","pageTextDetails","documentId","pageText","startId","endId","textDivs","initId","lastId","length_1","clearDivSelection","bottom","textHeight","isTextSelection","modifyTextCursor","isAdd","textLayerList","textElement","isBackWardSelection","selection","anchorNode","compareDocumentPosition","focusNode","backward","Node","DOCUMENT_POSITION_PRECEDING","getPageIndex","pageId","getTextIndex","pageIndex","textIndex","magnificationModule","previousZoomFactor","textSearchModule","createNotificationPopup","text","isMessageBoxOpen","notificationElement","isMessagePopupOpened","_dotnetInstance","invokeMethodAsync","popupElement_1","viewerContainer","showCloseIcon","closeOnEscape","isModal","header","localeObj","getConstant","buttons","buttonModel","isPrimary","click","beforeClose","error","appendTo","AccessibilityTags","createTag","taggedTextResponse","tagType","TagType","parentTagType","ParentTagType","Text","altText","AltText","Bounds","childTags","ChildElements","textTag","getTag","setStyleToTaggedTextDiv","FontSize","FontName","FontStyle","innerText","alt","src","forEach","newelement","addTaggedLayer","taggedLayer","enableAccessibilityTags","isTaggedPdf","pageSize","pointerEvents","renderAccessibilityTags","fontName","fontStyle","zoomFactor","ConvertPointToPixel","fontWeight","color","processPathData","collection","arrayCollection","parsePathData","ob","char","toLowerCase","command","x1","y1","x2","y2","r1","r2","angle","largeArc","sweep","tokenizer","current","commands","lastIndex","isExponential","exec","Number","getRectanglePath","cornerRadius","point2","next","points","corners","corner","pathSegmentCollection","x0","y0","segments","seg","prev","ctrl","cpt2","newSeg","transformPath","arr","sX","sY","bX","bY","iX","iY","scalePathData","toFixed","scaledPath","updatedSegment","pathData","getPathString","segment","isScale","val","scaleFactor","oldOffset","newOffset","splitArrayCollection","test","getNewString","getString","string","cmd","ang","l","MatrixTypes","Point","equals","point1","isEmptyPoint","point","pt","cos","PI","sin","findLength","sqrt","pow","findAngle","atan2","distancePoints","pt1","pt2","getLengthFromListOfPoints","adjustPoint","source","isStart","abs","getClassName","Matrix","m11","m12","m21","m22","identityMatrix","Identity","transformPointByMatrix","matrix","multiplyPoint","rotateMatrix","centerX","centerY","multiplyMatrix","createRotationRadians","scaleMatrix","scaleX","scaleY","createScaling","Scaling","Translation","setMatrix","num","num2","Unknown","matrix1","matrix2","type2","assignMatrix","m11New","m12New","m21New","m22New","offsetX_1","offsetY_1","mat","isLineShapes","shapeAnnotationType","setElementStype","formFieldAnnotationType","fill","strokeWidth","strokeDashArray","borderDashArray","fillColor","strokeColor","borderColor","thickness","opacity","findPointsLength","getBaseShapeAttributes","baseShapeAttributes","actualSize","pivot","rotateAngle","parentTransform","stroke","pivotX","pivotY","dashArray","visible","tx","ty","getFunction","cloneObject","additionalProp","newObject","sourceObject","properties","concat","customProperties","propAdditional","internalProp","getInternalProperties","properties_1","property","isEventEmmitter","cloneArray","cloneNode","innerHtml","sourceArray","clonedArray","propName","isLeader","rotatedPoint","leaderCount","newPoint1","wrapper","children","sourcePoint","targetPoint","center","leaderHeight","leader","CommentStatus","ContextMenuItem","SignatureType","AnnotationResizerLocation","DisplayMode","CursorType","DynamicStampItem","SignStampItem","StandardBusinessStampItem","AllowedInteraction","AnnotationDataFormat","FormFieldDataFormat","RotateTransform","ElementAction","ConnectorConstraints","ThumbsConstraints","SelectorConstraints","NoOfSegments","Signature","mouseMoving","canvasTouched","imageSignatureDataUrl","drawSignatureDataUrl","outputString","drawOutputString","imageOutputString","signaturecollection","outputcollection","signAnnotationIndex","fontsign","signfontStyle","isSaveSignature","isSaveInitial","isInitialFiledSaveSignature","isSignatureFieldsSaveSignature","issaveTypeSignature","issaveImageSignature","issaveTypeInitial","issaveImageInitial","saveSignatureTypeString","saveInitialTypeString","saveTypeString","signatureTypeString","initialTypeString","saveUploadString","saveSignatureUploadString","saveInitialUploadString","signatureUploadString","initialUploadString","clearUploadString","textValue","signatureDrawString","initialDrawString","signatureTextContentTop","signatureTextContentLeft","saveSignatureString","saveInitialString","saveImageString","signatureFieldCollection","signatureImageString","initialImageString","maxSaveLimit","select","isSwiped","signaturetype","addStampImage","args","upoadedFiles","files","uploadedFile","reader","FileReader","onload","canvas","image","Image","proxy","signbutton","visibility","drawImage","enableCreateButton","signatureImageHeight","naturalHeight","signatureImageWidth","naturalWidth","switchTabImageSignature","readAsDataURL","createSignaturePanel","maximumWidth","pageContainer","elementID","dialogDiv","addEventListener","signaturePanelMouseDown","signaturePanelMouseMove","signaturePanelMouseUp","clearSignatureCanvas","isToolbarSignClicked","appearanceTab","createSignatureCanvas","signaturePanelHeader","isInitialField","signatureDialog","allowDragging","tabObj","signatureWindow","drawSignatureWithTool","formFieldsModule","fireFocusOutFormField","setFocus","disabled","closeSignaturePanel","addSignatureInPage","updateCanvasSize","checkboxItem","ej2_instances","items","label","drawCheckbox","hideSignatureCheckbox","typeCheckbox","imageCheckbox","setSignatureCanvasWidth","drawSavedSignature","appearanceElement","apperanceTabWidth","pathcanvas","uploadCanvas","context_1","image_1","checkbox","checked","enableClearbutton","drawSavedTypeSignature","output","drawSavedImageSignature","handWrittenSignatureSettings","initialDialogSettings","hideSaveSignature","hideCheckboxParent","signatureDialogSettings","initialFieldSettings","signatureFieldSettings","saveSignatureCheckbox","saveSignatureImage","toDataURL","addSignature","annot","annotationName","annotation","createGUID","currentSignatureAnnot","isSignatureAdded","signatureBounds","updateSignatureAspectRatio","signatureCount","signatureName","addSignatureCollection","hideSignaturePanel","checkSaveFiledSign","saveTypeSignature","saveUploadSignature","drawSignature","isSignature","currentField","currentData","collectionData","csData","minimumX","minimumY","maximumX","maximumY","signatureCanvas","signatureCavasWidth","signatureCavasHeight","newdifferenceX","newdifferenceY","signBounds","calculateSignatureBounds","zoomvalue","currentLeft","currentWidth","currentTop","currentHeight","currentLeftDiff","currentTopDiff","ratioX","ratioY","isSignatureStretched","isHeightStretched","leftDifference","topDifference","fieldWidth","LineBounds","fieldHeight","fieldWidthRatio","fieldHeightRatio","canvasWidthRatio","canvasHeightRatio","fieldRotation","offsetParent","RotationAngle","ratioDifference","leftValueDiff","topValueDiff","signatureFitMode","removeFocus","signatureElement","focus","signatureFields","getSignField","signatureFieldId","formDesignerModule","FormField","uniqueID","getFormDesignerSignField","getFormFieldSignField","getItemFromSessionStorage","formFieldsData","Name","PageIndex","initialField","saveSign","typeAddSignature","imageAddSignature","signtypevalue","updateSignatureTypeValue","inputValue","dynamicText","signatureModule","saveDrawSignature","standardImageRatio","imageCanvas","uploadString","imageString","isType","fontElements","bindTypeSignatureClickEvent","fontElement","typeSignatureclicked","bindDrawSignatureClickEvent","eventTarget","previousField","field","checkBoxObj","input","saveCheckBoxContent","appearanceDiv","border","backgroundColor","boxSizing","borderRadius","signaturePanelMouseLeave","typeDiv","inputText","inputobj","placeholder","floatLabelType","fontDiv","marginTop","paddingRight","renderSignatureText","tab","uploadDiv","button","uploadButton","zIndex","imageUploadString","ctx_1","image_2","uploadSignatureImage","fontSignature","typeSignatureFonts","showHideSignatureTab","displayMode","selected","handleSelectEvent","selecting","headerText","tabInstance","headerValue","selectedItem","toLocaleLowerCase","enableCreateSignatureButton","textbox","drawSignOnTabSwitch","imageSignOnTabSwitch","Draw","Upload","createSignatureFileElement","signImage","textBox","clickSign","typeSignatureclick","createButton","newCanvas","signatureType","k","differenceX","differenceY","top_1","beginPath","moveTo","lineTo","closePath","signCollection","imageCount","signature","imageData","isInitial","getSaveLimit","RenderSavedSignature","isAddedSignClicked","keyString","signatureFontFamily","collectionAddedsign","signatureIndex","signatureId","setTabItemWidth","fontAppearance","padding","canvasWidth","margin","elem","paddingLeft","context_2","canvasContent","image_3","fontInnerDiv","findMousePosition","mouseDetection","oldX","mouseX","oldY","mouseY","drawMousePosition","isEnable","createbtn","clearbtn","currentRect","changedTouches","clientX","clientY","drawSignatureInCanvas","lineWidth","arc","convertToPath","movePath","linePath","isCanvasClear","drawObject","previousIndex","selectedIndex","isClearDrawTab","isClearTypeTab","isClearImageTab","checkBoxElement","nextElementSibling","clearRect","fontdiv","saveSignature","storeObject","isStorageExceed","annotationStorage","annotations","annotationCollection","newArray","pageAnnotationObject","z","isSignatureEditable","signatureSettings","annotationSettings","annotationAuthor","author","strokeColorString","stringify","getRgbCode","getBounds","checkDefaultFont","signTypeCanvas","canvasContext","textAlign","fillText","colorString","annotationModule","nameToHash","stringArray","getValue","g","a","renderSignature","signatureData","currentAnnotation","canvass","renderDrawing","signatureAdded","storeSignatureData","fireSignatureAdd","renderExistingSignature","isImport","isAnnotationAdded","PathData","IsSignature","AnnotationType","rectDiff","rectDifference","FontFamily","Opacity","StrokeColor","Thickness","SignatureName","navigationPane","annotationMenuObj","enableItems","addAction","Value","sessionSize","clearAnnotationStorage","clearFormFieldStorage","storeSignatureCollections","annotObject","removeItem","pageIndex_1","getPageCollection","markupAnnotation","annotationStringified","setItem","shapeAnnotation","modifySignatureCollection","annotationBase","isSignatureEdited","updateDocumentEditedProperty","currentAnnotObject","pageAnnotations","getAnnotations","top_2","updateSignatureCollection","manageAnnotations","collectionDetails","checkSignatureCollection","selectAnnotation","annotationId","annotName","uniqueKey","isExisting","signatureCollection","collections","addInCollection","pageSignatures","shapeAnnotations","showSignatureDialog","isShow","setAnnotationMode","setInitialMode","number","updateSignatureCollections","removeEventListener","ContextMenu","copyContextMenu","contextMenuList","iconCss","separator","createContextMenu","contextMenuElement","contextMenuObj","beforeOpen","contextMenuOnBeforeOpen","onMenuItemSelect","created","contextMenuOnCreated","enableDesktopMode","animationSettings","textMarkupAnnotationModule","setTarget","preventContextmenu","currentAnnotSettings","selectedItems","freeTextAnnotationModule","isInuptBoxInFocus","isFreeTextContextMenu","showItems","checkContextMenuDeleteItem","isShapeBasedAnnotationsEnabled","isTouchDesignerMode","isClickWithinSelectionBounds","hideItems","isTextSelected","getSelection","removeAllRanges","selectedText","checkIsNormalText","info","isLock","formFields","designerMode","onOpeningForShape","toolbar","formDesignerToolbarModule","showHideDeleteIcon","designerModetarget","isShapeCopied","currentTextMarkupAnnotation","formDesigner","isCalibrateAnnotationModule","measureAnnotationModule","currentAnnotationMode","contextMenuOption","hideContextItems","enableCommentPanelItem","contextMenuItems","restrictContextMenu","contextMenuSettings","hideMenuItems","ul","contextMenuCollection","getRootElement","menuItem","menuName","disableContextMenuItems","isDisabled","hideLocaleItem","processLocaleContent","getEnabledItemCount","contextMenuLocaleContent","enabledItemCount","liCollection","li","enableCommentPanel","isProp","startsWith","OnItemSelected","selectedMenu","item","previousAction","Size","clone","PdfBounds","PdfFont","PdfAnnotationBase","parent","defaultValue","isArray","isBold","isItalic","isStrikeout","isUnderline","PdfFormFieldBase","ZOrderPageTable","pageIdTemp","zIndexTemp","childNodesTemp","objects","NavigationPane","viewer","base","thumbnailWidthMin","contentContainerScrollWidth","closeButtonLeft","isTooltipCreated","isThumbnail","isThumbnailAddedProgrammatically","annotationContextMenu","isCommentPanelShow","commentPanelWidthMin","isNavigationToolbarVisible","isBookmarkListOpen","isNavigationPaneResized","isBookmarkOpen","isThumbnailOpen","restrictUpdateZoomValue","loadImportAnnotation","fireImportStart","uploadedFileType","importFile","annotationData","atob","jsonData","firstAnnotation","pdfAnnotation","textMarkupAnnotation","measureShapeAnnotation","freeTextAnnotation","stampAnnotations","signatureInkAnnotation","isPDFViewerJson","importAnnotations","Json","accept","Xfdf","fireImportFailed","promise","then","openImportExportNotificationPopup","resizeIconMouseOver","srcElement","cursor","resizePanelMouseDown","sideBarResizer","previousX","isDown","sideBarContentContainer","resizeViewerMouseLeave","commentPanelContainer","commentPanelMouseLeave","resizePanelMouseMove","getPopupNoteVisibleStatus","skipPreventDefault","outerContainerWidth","right","sideBarContent","sideBarContentSplitter","sideBarTitleContainer","getViewerContainerLeft","getViewerContainerRight","closeDiv","viewerWidth","thumbnailViewModule","gotoThumbnailImage","renderViewPortThumbnailImage","updateZoomValue","bookmarkButton","bookmarkViewModule","setBookmarkContentHeight","updateCommentPanelContainer","sideToolbarOnClose","removeThumbnailSelectionIconTheme","removeBookmarkSelectionIconTheme","updateViewerContainerOnClose","sideToolbarOnClick","sideBarTitle","isblazor","bookmarkPane","setThumbnailSelectionIconTheme","updateViewerContainerOnExpand","inkAnnotationModule","drawInkAnnotation","openThumbnailPane","closeThumbnailPane","bookmarkButtonOnClick","openBookmarkcontentInitially","commentPanelMouseDown","commentPanelResizer","stickyNotesAnnotationModule","updateCommentPanelTextTop","calculateCommentPanelWidth","initializeNavigationPane","createNavigationPane","mainContainer","createCommentPanelTitleContainer","commentsContentContainer","createFileElement","createXFdfFileElement","sideBarToolbar","sideBarToolbarSplitter","cssFloat","createCommentPanel","controlLeft","controlRight","createSidebarToolBar","createSidebarTitleCloseButton","createResizeIcon","sideToolbarOnMouseup","sideBarTitleOnMouseup","adjustPane","splitterElement","sideToolbarElement","sideToolbarContent","toolbarContainer","toolbarHeight","enableToolbar","getSideToolbarHeight","createCommentPanelResizeIcon","commentPanelTitleContainer","commentpanelTilte","annotationButton","moreOptionButtonSpan","commentCloseIconDiv","paddingTop","paddingBottom","closeCommentPanelContainer","commentCloseIcon","createAnnotationContextMenu","openAnnotationContextMenu","commentPanelResizeIcon","setCommentPanelResizeIconTop","annotationMenuElement","annotationMenuItemSelect","exportAnnotations","importAnnotationIconClick","importXFdfAnnotationIconClick","toolbarElement","annotationInputElement","annotationXFdfInputElement","commentPanel","getViewerContainerScrollbarWidth","showHideDropletDiv","toolbarModule","annotationToolbarModule","propertyToolbar","createNavigationPaneMobile","option","viewerMainContainer","insertBefore","searchTemplate","prefixIcon","tooltipText","goBackToToolbar","template","iconElement","firstElementChild","enableSearchItems","searchButtonClick","searchInput","searchPrevious","searchNext","overflowMode","isStringTemplate","initiateSearchBox","initiateBookmarks","searchBtn","which","initiateTextSearch","resetVariables","setSearchInputWidth","mobileScrollerContainer","mobileTool","bookmarkContainer","renderBookmarkContentMobile","inputString","initiateSearch","cancelTextSearch","childNavigateCount","bookmarkList","back","onWindowResize","isMobileAnnotEnabled","showToolbar","searchInputParent","getParentElementSearchBox","idString","createTooltipMobile","toastObject","tooltipElement","tooltipChild","tooltipElement_1","createMobileTooltip","tooltipDiv","onTooltipClose","toolbarResize","thumbnailButton","thumbnailButtonSpan","thumbnailTooltip","onTooltipBeforeOpen","buttonSpan","bookMarkTooltip","toolbarSettings","enableThumbnailButton","enableBookmarkButton","resizeIcon","setResizeIconTop","mainContainerWidth","sideToolbarWidth","enableThumbnail","sideBarContentContainerWidth","commentPanelContainerWidth","getViewerMainContainerWidth","resetThumbnailIcon","resetThumbnailView","setBookmarkSelectionIconTheme","focusViewerContainer","renderBookmarkcontent","disableBookmarkButton","bookmarkContent","commentTitleCollections","commentTitleMoreIconCollections","commentTitleElement","moreIconElement","replyTitleCollections","replyTitleMoreIconCollections","replyTitleElement","elementOfMoreIcon","bookmarkButtonInstance","thumbnailButtonInstance","AjaxHandler","pdfviewer","mode","contentType","retryTimeout","retryCount","retryStatusCodes","send","jsonObj","httpRequest","XMLHttpRequest","timeout","sendRequest","onreadystatechange","isSkip","viewerBase","isPasswordAvailable","passwordData","resendRequest","stateChange","ontimeout","onerror","abort","onSuccess","onFailure","onError","isTimeout","status","statusString","readyState","responseType","response","responseText","fireAjaxRequestFailed","statusText","action","url","withCredentials","ajaxRequestSettings","setRequestHeader","addExtraData","setCustomAjaxHeaders","jsonObject","ajaxData","fireAjaxRequestInitiate","successHandler","failureHandler","errorHandler","ajaxHeaders","headerName","Rect","MAX_VALUE","rect1","rect2","uniteRect","rect","NaN","unitePoint","intersection","intersects","empty","Inflate","containsRect","containsPoint","toPoints","topLeft","topRight","bottomLeft","bottomRight","toBounds","points_1","MIN_VALUE","getChildNode","nodeType","measurePath","measureElement","svg","getBBox","svgBounds","currentValue","xmin","xmax","ymin","ymax","currentpath","getTextOptions","textOverflow","textDecoration","doWrap","whiteSpaceToString","textWrapping","breakWord","wordBreakToString","textAlignToString","italic","bold","wrapSvgText","txtValue","bounds1","bBoxText","dy","ceil","wordWrapping","words","newText","existingWidth","existingText","wrap","eachLine","wrapText","txt","childNode","wrapSvgTextAlign","txtWidth","wrapBounds","getDiagramElement","elementId","contentId","diagramElement","createHtmlElement","elementType","attribute","setAttributeHtml","attributes","createMeasureElements","usageCount","divElement","imageElement","createElementNS","tSpan","setAttributeNS","measureImage","contentSize","randomId","chars","crypto","intCrypto","msCrypto","getRandomValues","random","cornersPointsBeforeRotation","ele","rotateSize","size","minX","minY","maxX","maxY","middleLeft","topCenter","bottomCenter","middleRight","state","bBox","rotatePoint","getOffset","offX","desiredSize","offY","DrawingElement","rotateValue","isDirt","minHeight","minWidth","maxHeight","horizontalAlignment","verticalAlignment","relativeMode","Self","Parent","preventContainer","staticSize","isRectElement","isCalculateDesiredSize","elementActions","None","unitMode","float","floatingBounds","setOffsetWithRespectToBounds","getAbsolutePosition","measure","availableSize","validateDesiredSize","arrange","updateBounds","Container","desiredBounds","measureChildren","prevRotateAngle","hasChildren","childBounds","desired","force","GetChildrenBounds","offsetPt","newPoint","stretchChildren","findChildOffsetFromCenter","childSize","refPoint","getGradientType","Margin","Stop","Gradient","LinearGradient","RadialGradient","ShapeStyle","StrokeStyle","TextStyle","TextElement","canMeasure","canConsiderBounds","textNodes","textWrapBounds","refreshTextElement","intersect3","lineUtil1","lineUtil2","l1","l2","na","nb","enabled","intersectPt","ua","ub","mousePosition","Selector","init","diagram","nameTable","PathElement","absolutePath","canMeasurePath","absoluteBounds","updatePath","newPathString","getConnectorPoints","vertexPoints","newPoints","getSegmentPath","connector","getPt","pts","clipDecorators","updateSegmentElement","segmentPath","getSegmentElement","segmentElement","updateDecoratorElement","adjacentPoint","isSource","getPath","getDecoratorShape","sourceDecoraterShapes","taregetDecoraterShapes","getDecoratorElement","offsetPoint","decEle","clipDecorator","start","initDistanceLabel","labels","textele","enableImportAnnotationMeasurement","notes","setConversion","pixelToPointFactor","enableShapeLabel","labelBorderColor","labelFillColor","fontColor","initPerimeterLabel","calculatePerimeter","updatePerimeterLabel","perimeter","textElement_3","getPolygonPath","initLeaders","leaders","initLeader","isSecondLeader","finalPoint","isPointOverConnector","reference","intersectinPt","segment1","segment2","intersectDetails","rect_1","shortestPoint","shortest","shortest1","angleBWStAndEnd","angleBWStAndRef","vaAngle","shape","decoratorShapes","findActiveElement","pdfBase","isOverlapped","activeElements","activePageID","findObjectsUnderMouse","object","findObjectUnderMouse","currentPosition","pageTable","getPageTable","objArray","findObjects","touchPadding","touchArg","actualTarget","getEventPageNumber","pageCurrentRect","targetParentRect","isNaN","offsetForSelector","boundsDiff","tool","isOver","newpoint","CalculateLeaderPoints","rotationValue","StampTool","objectBounds","selector","currentobject","findTargetShapeElement","insertObject","low","high","mid","shapeElement","findTargetElement","paddingValue","rotateThumbDistance","rotateThumb","region","objCollection","objCollection_1","ActiveElements","activePage","ToolBase","protectChange","commandHandler","inAction","currentElement","blocked","isTooltipVisible","childTable","helper","undoElement","undoParentElement","startAction","mouseDown","startPosition","prevPosition","mouseMove","prevPageId","mouseUp","endAction","mouseWheel","mouseLeave","updateSize","startPoint","endPoint","initialBounds","isMouseUp","difx","dify","diff","deltaWidth","deltaHeight","findAnnotationSettings","annotationMaxHeight","annotationMaxWidth","annotationMinHeight","annotationMinWidth","isAnnotationSet","getPositions","newWidth","newHeight","getPivot","SelectTool","mouseEventHelper","overlappedCollections","checkAllowedInteractions","currentSelctor","annotationSelectorSettings","selectedObject","formField","currentAnnot","currentSource","ctrlKey","clearSelection","isFreeTextSelected","isAnnotationMouseDown","isFormFieldMouseDown","fireAnnotationUnSelect","alignment","isReadonly","isReadOnly","isRequired","isPrint","isChecked","isSelected","fireFormFieldUnselectEvent","formField_1","MoveTool","prevNode","nodeMouseDown","redoElement","checkisAnnotationMove","isDragged","dragSelectedObjects","calculateMouseActionXDiff","calculateMouseActionYDiff","updateHTMLElement","renderSelector","isAnnotationMouseMove","isFormFieldMouseMove","newShapeObject","modifiedDate","previousPosition","fireFormFieldMoveEvent","stampAnnotationModule","updateSessionStorage","updateStickyNotes","calculateMouseXDiff","calculateMouseYDiff","requiredX","requiredY","isStamp","diffX","diffY","cobject","stampFillColor","labelContent","checkBoundaryConstraints","currentSelctor_1","triggerAnnotationMove","nodeElement","moveStampElement","textWidth","getTextWidth","widthRatio","getFontSize","defaultFontSize","sourceWrapper","InkDrawingTool","disableTextSelectionMode","drawInkInCanvas","storePathData","ConnectTool","initialPosition","prevSource","measureType","isResized","sizeObject","checkAnnotationWidth","nodePropertyChange","newShapeElementObject","updateCalibrateValues","cloneShapebject","dragConnectorEnds","selectedSegment","ResizeTool","isPreventHistory","oldObject","isAnnotationSelect","isFormFieldSelect","deltaValues","scaleObjects","stampSettings","signatureIndicatorSettings","boundsRatio","fireFormFieldResizeEvent","annotationElement","getPoints","changes","getChanges","getTooltipContent","pdfAnnotationBaseModel","change","isCtrlKeyPressed","scaleSelectedItems","NodeDrawingTool","updateFreeTextProperties","isFormDesign","formFieldElement","drawingObject","getActivePage","updateFormFieldInitialSize","page","updateNodeDimension","formFieldCollection","isMultiline","insertSpaces","isTransparent","formFieldCollections","drawHTMLContent","isMouseDown","dragging","updateRadiusLinePosition","drawnAnnotation","trasPoint","PolygonDrawingTool","lastPoint","nodeAnnotElement","subject","borderStyle","isDoubleClineck","isMouseLeave","currentSelector","enableShapeAnnotation","shapeAnnotationModule","renderShapeAnnotations","enableMeasureAnnotation","calculateArea","addTextToComments","calculateVolume","renderMeasureShapeAnnotations","annotationObject","LineTool","nodeAnnot","lineHeadEnd","lineHeadStart","measureModule","annotationNode","leaderLength","RotateTool","rotate","CanvasRenderer","setStyle","ctx","strokeStyle","globalAlpha","parseDashArray","setLineDash","fillStyle","rotateContext","translate","setFontStyle","dashes","splittedDashes","splittedDashes_1","drawRectangle","drawPath","save","fillRect","restore","renderPath","segs","bezierCurveTo","quadraticCurveTo","curr","rx","ry","xAxisRotation","cp","currp","cpp","centp","a1","u","v","ad","dir","ah","ra","sx","sy","drawText","labelAlign","startPointX","startPointY","textlength","endPointX","endPointY","acos","getMeetOffset","arg","res","dest","getSliceOffset","alignOptions","srcWidth","srcHeight","destinationW","destinationH","resultWidth","resultHeight","xalign","substr","yalign","sWidth","sHeight","dWidth","dHeight","canvas1","ctx1","srcRatio","destRatio","complete","transform_1","getTransform","setTransform","f","loadImage","customStampCollection","printID","parentSvg","fromPalette","pivotX_1","pivotY_1","imageObj","labelX","labelY","offsetx","offsety","pointx","pointy","refreshDiagramElements","drawingObjects","renderer","renderElement","SvgRenderer","diagramId","onlyRect","isSelector","ariaLabel","attr","class","poiterEvents","setAttributeSvg","setSvgStyle","updateSelectionRegion","gElement","createGElement","createSvgElement","drawCircle","enableSelector","circle","classval","radius","canApplyStyle","canvasRenderer","svgLabelAlign","wrapBound","pointX","pointY","drawLine","line","shadowElement","renderAdornerLayer","commonStyle","cavas","nextElement","pageBound","svgAdornerSvg","adornerSvgLayer","svgSelector","svgObj","BlazorContextMenu","htmlCollection","htmlElement","globalTimeOut","spinTemplate","spinCSSClass","DEFT_MAT_WIDTH","DEFT_MAT3_WIDTH","DEFT_FAB_WIDTH","DEFT_BOOT_WIDTH","DEFT_BOOT4_WIDTH","CLS_SHOWSPIN","CLS_HIDESPIN","CLS_MATERIALSPIN","CLS_MATERIAL3SPIN","CLS_FABRICSPIN","CLS_BOOTSPIN","CLS_BOOT4SPIN","CLS_BOOT5SPIN","CLS_TAILWIND","CLS_Fluent","CLS_HIGHCONTRASTSPIN","CLS_SPINWRAP","CLS_SPININWRAP","CLS_SPINCIRCLE","CLS_SPINARC","CLS_SPINLABEL","CLS_SPINTEMPLATE","createSpinner","internalCreateElement","makeElement","createSpinnerContainer","theme","getTheme","calculateRadius","setTheme","createLabel","innerWrap","replaceContent","labelEle","createMaterialSpinner","randomGenerator","timeOut","createMaterialElement","matCalculateAttributes","createMaterial3Spinner","createBootstrap4Spinner","createBootstrap5Spinner","createTailwindSpinner","createFabricElement","fbCalculateAttributes","createFluentSpinner","startMatAnimate","globalObject","timeOutVar","globalVariables","spinnerInfo","globalInfo","animateMaterial","createFabricSpinner","createHighContrastSpinner","innerContainer","createBootstrapSpinner","createBootstrapElement","bootCalculateAttributes","svgBoot","viewBoxValue","trans","defaultRadius","firstChild","bootCircle","rad","startArc","defineArcPoints","circleEle","generateSeries","begin","series","increment","formSeries","animateBootstrap","bootAnimate","isAnimate","inner","defaultSize","previousId","combine","charAt","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","cls","svgMaterial","matCirclePath","spinnerContainer","spinnerInnerContainer","createCircle","easeAnimation","easing","startTime","Date","getTime","diameter","getSize","strokeSize","getStrokeSize","matAnimation","currentTime","getDashOffset","drawArc","parsed","timestamp","timecount","innerConainer","trgClass","endArc","defineCircle","defineArc","radians","showSpinner","showHideSpinner","isHide","spinnerWrap","spinCheck","svgEle","hideSpinner","PdfAnnotationFlag","PdfLineEndingStyle","PdfLineIntent","PdfLineCaptionType","PdfBorderStyle","PdfBorderEffectStyle","PdfRotationAngle","PdfCrossReferenceType","PdfHighlightMode","PdfTextAlignment","PdfFormFieldVisibility","PdfMeasurementUnit","PdfCircleMeasurementType","PdfRubberStampAnnotationIcon","PdfCheckBoxStyle","PdfTextMarkupAnnotationType","PdfPopupIcon","PdfAnnotationState","PdfAnnotationStateModel","PdfAttachmentIcon","PdfAnnotationIntent","PdfDestinationMode","DataFormat","PdfFormFieldsTabOrder","_PdfAnnotationType","_PdfGraphicsUnit","_FieldFlag","_SignatureFlag","_PdfCheckFieldState","PdfPermissionFlag","PdfPageOrientation","PdfTextDirection","PdfSubSuperScript","PdfBlendMode","PdfFillMode","PdfDashStyle","PdfLineCap","PdfLineJoin","_PdfWordWrapType","_FontDescriptorFlag","_TrueTypeCmapFormat","_TrueTypeCmapEncoding","_TrueTypePlatformID","_TrueTypeMicrosoftEncodingID","_TrueTypeMacintoshEncodingID","_TrueTypeCompositeGlyphFlag","_ImageFormat","_TokenType","PdfTextStyle","BlazorUiAdaptor","totalPageElement","currentPageBoxElementContainer","currentPageBoxElement","firstPageElement","previousPageElement","nextPageElement","lastPageElement","zommOutElement","zoomInElement","zoomDropDownElement","selectToolElement","handToolElement","commentElement","submitFormButton","searchElement","printElement","downloadElement","highlightElement","underlineElement","strikeThroughElement","calibrateElement","stampElement","freeTextElement","inkElement","annotationFontSizeInputElement","annotationFontFamilyInputElement","annotationColorElement","annotationStrokeColorElement","annotationThicknessElement","annotationOpacityElement","annotationFontColorElement","annotationFontFamilyElement","annotationFontSizeElement","annotationTextAlignElement","annotationTextColorElement","annotationTextPropertiesElement","annotationDeleteElement","annotationCloseElement","annotationCommentPanelElement","mobileToolbarContainerElement","mobileSearchPreviousOccurenceElement","mobileSearchNextOccurenceElement","disableClass","editAnnotationButtonElement","findToolbarElements","updateTotalPage","updateCurrentPage","loadDocument","enableNavigation","isEnabled","enableMagnification","selectItem","SelectToolElement","enableStickyNotesAnnotation","enableTextSearch","isFormFieldDocument","enableAnnotation","enableAnnotationToolbar","enablePrint","enableDownload","enableTextMarkupAnnotation","enableStampAnnotations","enableFreeText","enableHandwrittenSignature","enableInkAnnotation","deselectItem","showAnnotationToolbar","isToolbarVisible","adjustViewer","deSelectItem","closeAnnotationToolbar","resetToolbar","EnableDeleteOption","pageChanged","updateUndoRedoButton","enable","disableUndoRedoButton","enableTextMarkupAnnotationPropertiesTools","enableAnnotationPropertiesTool","isProperitiesChange","enableFreeTextAnnotationPropertiesTools","enableStampAnnotationPropertiesTools","isPropertiesChange","enableSignaturePropertiesTools","annotationAdd","annotationUnSelect","annotationSelect","annotationType","updateFontFamilyInIcon","updateFontSizeInIcon","fontValue","tapOnMobileDevice","isTapHidden","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","done","__generator","t","_","sent","trys","ops","verb","Symbol","iterator","op","TypeError","pop","PdfViewerBase","hyperlinkAndLinkAnnotation","pageImageDetails","isReRenderRequired","mouseDownEvent","pngData","isDocumentLoaded","renderedPagesList","pageGap","pageLeft","sessionLimit","pageStopValue","pageLimit","previousPage","isViewerMouseDown","isViewerMouseWheel","scrollPosition","isLoadedFormFieldAdded","pointerCount","pointersForTouch","reRenderedCount","mouseLeft","mouseTop","touchClientX","touchClientY","previousTime","isTouchScrolled","isLongTouchPropagated","longTouchTimer","isViewerContainerDoubleClick","dblClickTimer","pinchZoomStorage","isPanMode","dragX","dragY","isScrollbarMouseDown","scrollX","scrollY","ispageMoved","isThumb","singleTapTimer","tapCount","inputTapCount","isInitialLoaded","annotationPageList","importPageList","isImportAction","isImportedAnnotation","isAnnotationCollectionRemoved","eventArgs","isStampMouseDown","stampAdded","customStampCount","isDynamicStamp","isMixedSizeDocument","highestWidth","highestHeight","isAlreadyAdded","isWebkitMobile","isSelection","isAddAnnotation","annotationComments","isNewSignatureAdded","isInitialPageMode","documentAnnotationCollections","annotationRenderredList","formFieldStorage","isFormStorageExceed","isNewStamp","downloadCollections","annotationEvent","isAnnotationDrawn","validateForm","isMinimumZoom","documentLoaded","tileRenderCount","tileRequestCount","isTileImageRendered","isDataExits","requestLists","tilerequestLists","textrequestLists","renderThumbnailImages","pageRenderCount","isInkAdded","inkCount","isMousedOver","isFormFieldMousedOver","isPassword","digitalSignaturePages","isDigitalSignaturePresent","isDrawnCompletely","isAddComment","requestCollection","nonFillableFields","isJsonImported","isJsonExported","isPageRotated","downloadFileName","isFocusField","isTouchPad","isMacGestureActive","macGestureStartScale","zoomInterval","accessibilityTagsHandler","accessibilityTagsCollection","pageRequestListForAccessibilityTags","enableAccessibilityMultiPageRequest","focusField","isSkipDocumentPath","clearSessionStorage","hashId","documentLiveCount","serviceURL","decodeURI","actionName","clearCache","browserSupportsKeepalive","Request","setUnloadRequestHeaders","credentialsData","fetch","method","credentials","headers","viewerElementWidth","formDesignerToolbarHeight","isAnnotationToolbarHidden","navigationToolbar","isFormDesignerToolbarHidded","formDesignerToolbar","updatePageHeight","annotationToolbarContainer","annotationToolbarHeight","onToolbarResize","textSearchBoxOnResize","mobilePageNoContainer","updateMobileScrollerPosition","viewerContainerOnMousedown","isUpdate","isClickedOnScrollBar","detail","documentMode","clearTextSelection","diagramMouseDown","accordionContainer","isEditableElement","updateCommentPanel","mouseDownHandler","viewerContainerOnMouseup","scrollHoldTimer","pageViewScrollChanged","isSignatureFieldReadOnly","diagramMouseUp","onAnnotationMouseUp","accordionExpand","expandItem","commentsDiv","eventTarget_1","pageString","formFieldsTargetId","targetFormField","firePageClick","isTextMarkupAnnotationModule","isToolbarInkClicked","onTextMarkupAnnotationMouseUp","updateCanvas","detectTouchPad","wheelDeltaY","deltaY","deltaMode","handleMacGestureStart","stopPropagation","magnification","handleMacGestureChange","macX","macY","initiateMouseZoom","handleMacGestureEnd","viewerContainerOnMouseWheel","getRerenderCanvasCreated","zoomDifference","zoomValue","isMacSafari","wheelDelta","pageRerenderOnMouseWheel","fitPageScrollMouseWheel","textSelectionOnMouseWheel","onWindowKeyDown","isMac","navigator","platform","isCommandKey","metaKey","isFreeTextAnnotationModule","inputElementModule","isInFocus","activeElement","isContentEditable","DeleteKeyPressed","addInkAnnotation","deSelectCommentAnnotation","updateStampItems","deselectAllItemsInBlazor","deselectAllItems","isFormDesignerToolbarVisible","tabIndex","fieldId","formfield","fireFormFieldClickEvent","setCheckBoxState","id_1","nextField","fieldIndex","shiftKey","findIndex","focusFormField","viewerContainerOnKeyDown","updateScrollTop","openFileDialogBox","copyText","copy","contextMenuModule","textSearchButtonHandler","printModule","print","undo","cut","redo","isSearchboxDialogOpen","searchBoxId","isPropertyDialogOpen","paste","magnifyBehaviorKeyDown","viewerContainerOnMousemove","isCollapsed","isDropletClicked","isEnableTextMarkupResizer","currentTextMarkupAddMode","textSelect","textSelectionOnMouseMove","onTextMarkupAnnotationMouseMove","panOnMouseMove","currentStampAnnotation","stampModule","isStampAnnotSelected","diagramMouseLeave","diagramMouseMove","isNewStampAnnot","isStampMode","deltaX","viewerContainerOnMouseLeave","textSelectionOnMouseLeave","viewerContainerOnMouseEnter","viewerContainerOnMouseOver","viewerContainerOnClick","getCurrentTextMarkupAnnotation","getTextMarkupAnnotationMode","fireTextSelectionStart","selectAWord","contextMenuAction","calculateContextMenuPosition","drawTextMarkupAnnotations","maintainSelectionOnZoom","applySelection","fireTextSelectEnd","getMouseEventArgs","isMetaKey","clickCount","annotation_1","selectTextMarkupCurrentPage","comments","isFreeTextAnnotation","elmtPosition","editLabel","isAnnotationToolbarVisible","annotationItem","addInuptElemet","fireFormFieldDoubleClickEvent","createPropertiesWindow","selectEntireLine","viewerContainerOnDragStart","viewerContainerOnContextMenuClick","onWindowMouseUp","modules","isLeftDropletClicked","isRightDropletClicked","isTextMarkupAnnotationMode","isNewFreeTextAnnotation","viewerElement","textSelectionOnMouseup","selectionStartPage","onWindowTouchEnd","viewerContainerOnTouchStart","touchPoints","setTouchPoints","preventTouchEvent","onTextMarkupAnnotationTouchEnd","handleTaps","handleTextBoxTaps","isDesignerMode","isMoving","viewerContainerOnLongTouch","textMarkupToolbarElement","initiateTouchSelection","viewerContainerOnPointerDown","pointerType","viewerContainerOnTouchMove","enablePinchZoom","initiatePinchMove","getPagesPinchZoomed","pinchMoveScroll","top_3","viewerContainerOnPointerMove","pointerId","viewerContainerOnTouchEnd","pinchMoveEnd","cancelable","clearInterval","isDeviceiOS","difference","speed","renderStampAnnotation","viewerContainerOnPointerEnd","viewerContainerOnScroll","allowServerDataBind","allowServerDataBinding","enableServerDataBinding","scrollposX","scrollposY","ratio","scrollHeight","containerValue","verticalScrollValue","getPageHeight","getPageTop","fitType","renderElementsVirtualScroll","getPinchScrolled","showPageLoadingIndicator","updateNavigationButtons","mobileSpanContainer","mobilecurrentPageContainer","isThumbnailClicked","firePageChange","updatePagesForFitPage","currentPage","clearIntervalTimer","getLinkInformation","getStoredData","initiatePageViewScrollChanged","timer","scrollSettings","delayPageRequestTimeOnScroll","updateCommentPanelScrollTop","accessibilityTags","initializeComponent","blazorUIAdaptor","controlWidth","toolbarDiv","createMobilePageNumberContainer","touchAction","setMaximumHeight","applyViewerHeight","intializeToolbar","enableNavigationToolbar","mobilenumberContainer","mobiletotalPageContainer","createThumbnailContainer","createPrintPopup","createGoToPagePopup","waitingPopup","setLoaderProperties","spinnerElement","createFileInputElement","createTextSearchBox","load","initializeCollection","interactionMode","mobileScrollContainerDown","mobileScrollContainerEnd","initiatePageRender","documentData","password","unload","loadedData","showLoadingIndicator","isFileName","saveDocumentInfo","initiatePanning","checkDocumentData","isbase64","fileByteArray","convertBase64","setFileName","fileName","constructJsonObject","createAjaxRequest","initiateLoadDocument","jsonDocumentId","base64","charCodeAt","loadSuccess","documentDetails","onControlError","serverActionSettings","StatusText","uniqueId","fireAjaxRequestSuccess","requestSuccess","clearAnnotationSelection","relativePosition","updateWidth","updateHeight","updateViewerContainer","updateViewerContainerSize","refreshOverflow","goToPagePopup","checkRedirection","redirect","redirectUrl","redirectUri","location","href","getPdfBase64","ok","arrayBuffer","console","pdfData","binary","reduce","str","byte","base64String","btoa","catch","message","loadRequestHandler","pdfBase64","pdfRendererModule","updateFormFieldName","openNotificationPopup","PdfRenderedFormFields","ActualFieldName","FieldName","errorString","showNotificationDialog","showNotificationPopup","digitialSignatureFile","saveDocumentHashData","saveFormfieldsData","pageRender","pageData","pageSizes","restrictionList","RestrictionSummary","RestrictionEnabled","renderPasswordPopup","renderCorruptPopup","updateToolbarItems","createAnnotationSelectElement","restrictionSummary","EnableRestriction","DisableToolbarItems","enableFormFields","enableFormFieldButton","passwordDialogReset","passwordPopup","initPageDiv","previousZoomValue","isZoomMode","isAutoZoom","zoomTo","zoomMode","fitToWidth","fitToPage","isInitialLoading","viewPortWidth","proxy_1","pdfViewerRunner","postMessage","onmessage","initialPagesRendered","uploadedDocumentName","enableAnnotationAddTools","createRequestForRender","renderLimit","initialRenderPages","pageTop","viewerHeight","renderPageElement","promptElement_1","passwordInput_1","fireDocumentLoadFailed","promise_1","promptElement","createPasswordPopup","createCorruptedPopup","corruptPopup","isBase64String","isClientsideLoading","showDigitalSignatureAppearance","hideEmptyDigitalSignatureFields","documentStringArray","encodeURI","formfieldvalue","setItemInSessionStorage","submitItem","updateWaitingPopup","isPageNumber","createWaitingPopup","spinnerPosition","showPrintLoadingIndicator","printWaitingPopup","printMainContainer","isMagnified","isPinchScrolled","isPagePinchZoomed","getPagesZoomed","isPagesZoomed","isRerenderCanvasCreated","download","createRequestForDownload","saveAsBlob","saveAsBlobRequest","constructJsonDownload","dowonloadRequestHandler","getDocumentAsBase64","resultdata","saveAsBlobFile","blobUrl","createBlobUrl","isTriggerEvent","thumbnailView","importedAnnotation","clipboardData","clipObject","formFieldIndex","zIndexTable","initiateTextSelectMode","resetTextSearch","readOnlyCollection","renderedPageList","hasChildNodes","lastChild","unloadDocument","request","virtualLoadRequestHandler","pageRequestHandler","importAnnotationRequestHandler","exportAnnotationRequestHandler","importFormFieldsRequestHandler","exportFormFieldsRequestHandler","printRequestHandler","windowSessionStorageClear","fireDocumentUnload","unWireEvents","unloadRequestHandler","myHeaders","Headers","append","moreOptionsButton","commentTextBox","commentContainer","editableElement","commentSelect","getScrollParent","scrollNodeX","scrollNodeY","userAgent","appVersion","scrollTo","nodeName","overflowY","popupElement","closeCorruptPopup","hideLoadingIndicator","goToPageElement","inputContainer","goToPageInput","pageNoContainer","GoToPageCancelClick","GoToPageApplyClick","closeGoToPagePopUp","goToPageTextBox","format","showSpinButton","EnableApplyButton","DisableApplyButton","popupElements","navigation","goToPage","differenceRatio","passwordInput","passwordCancel","applyPassword","passwordCancelClick","isInteraction","createCustomStampElement","vendor","terminate","passive","fitToAuto","applyLeftPosition","shapeLabelSettings","labelOpacity","isCancel","isEnableDelete","hidenItems","disabledItems","shapeMenuItems","CopyItemSelected","TextMarkUpSelected","PropertiesItemSelected","CutItemSelected","pasteItemSelected","DeleteItemSelected","ScaleRatioSelected","CommentItemSelected","showCommentsPanel","createScaleRatioWindow","deleteFormField","deleteAnnotation","pasteSelectedText","cutSelectedText","copySelectedText","isSelectionMaintained","enableProperties","ltrChars","rtlChars","rtlDirCheck","RegExp","isWithin","diCount","negativeCount","positiveCount","getCurrentSelectionBounds","currentBound","getHorizontalValue","getVerticalValue","getHorizontalClientValue","pageBounds","getVerticalClientValue","isText","selectionRangeArray","inputFields","enableTextSelectionMode","initiateTextSelection","isSelectionToolDisabled","updateInteractionTools","isRemoveFocus_1","isNewFreeTextAnnot","onDoubleTap","onSingleTap","onTextBoxDoubleTap","targetAnnotation","isFormfields","moreDropDown","dropDown","getSelectTextMarkupCurrentPage","onDoubleTapMagnification","currentStampObj","updateDeleteItems","renderStamp","onAnnotationMouseDown","pageValues","isPortrait","isLandscape","differentPageSize","previousPageHeight","pageRotation","renderPageContainer","getPageWidth","all","renderPagesVirtually","lowerLimit","pageValue","pageCanvas","initialLoadedPages","maintainSelectionOnScroll","indexInArray","initiateRenderPagesVirtually","isCompletePageSizeNotReceived","viritualload","i_1","fireDocumentLoad","linkAnnotationModule","linkAnnotation","linkPage","renderDocumentLink","annotationY","tileRenderPage","canvas_1","pageDiv_1","tileX","tileY","background","updateLeftPosition","retrieveCurrentZoomFactor","oldCanvases","currentString","tileX_1","tileY_1","renderPDFInformations","isExtractText","getPDFDocumentTexts","rerenderAnnotations","oldPageDiv","rerenderCountIncrement","currentImageWidth","matrixElements","Elements","Values","currentImageTop","currentImageLeft","onPageRender","_loop_1","tileImgId","zoomFactor_1","tileData","this_1","getStoredTileImageDetails","getWindowSessionStorageTile","node_1","ELEMENT_NODE","tileX_2","tileY_2","renderTileCanvas","marginLeft","marginRight","calculateImageWidth","imageWidth","renderPage","imageSource","canvas_2","pageDiv_2","boxShadow","pushImageObjects","aElement","getElementsByTagName","isAnnotationRendered","renderTextContent","isFormFieldPageZoomed","renderFormFields","accessibilityTagsModule","createRequestForAccessibilityTags","rerenderFormFields","enableHyperlink","renderHyperlinkContent","applySelectionRangeOnScroll","stickyNotesAnnotation","signatureAnnotation","checkDocumentCollectionData","drawPageAnnotations","isStampAnnotationModule","stampData","renderStampAnnotations","renderAnnotations","renderStickyNotesAnnotations","renderFreeTextAnnotations","isInkAnnotationModule","renderExistingInkSignature","highlightOtherOccurrences","selectCommentsAnnotation","isAnnotationSelected","annotationPageIndex","selectAnnotationFromCodeBehind","annotationsCollection","isAddedProgrammatically","annotData","annotationOrder","AnnotType","renderTextMarkupAnnotationsInPage","texts","documentTextCollection","PageText","returnPageListForAccessibilityTags","pageList","minPage","maxPage","orderPageDivElements","renderPageCanvas","createRequestForThumbnails","createRequestForBookmarks","initializeAcccordionContainer","isCommandPanelOpen","createRequestForComments","createAnnotationLayer","oldCanvas","leftPosition","pageDiff","getPageNumberFromClientPoint","clientPoint","viewerContainerBounds","verticalScrollPosition","convertClientPointToPagePoint","pagePoint","convertPagePointToClientPoint","convertPagePointToScrollingPoint","scrollingPoint","renderCountIncrement","currentPageIndex","previous","renderPreviousPagesInScroll","allowPageRendering","downloadDocument","Url","URL","webkitURL","createObjectURL","anchorElement","documentElement","padCharacter","downloadExportFormat","annotationDataFormat","formFieldDataFormat","isForm","isJson","extension","exportAnnotationFileName","fireFormExportSuccess","fireExportSuccess","exportFormFields","createRequestForExportFormfields","importFormFields","createRequestForImportingFormfields","isObject","createFormfieldsJsonData","canExport","fireFormExportStarted","formFieldsPageList","getFormFieldsPageList","isAnnotationsExist","isFieldsDataExist","resultData","getDataOnSuccess","exportFileDownload","fireFormExportFailed","annotationJson","decodeURIComponent","escape","msSaveOrOpenBlob","getLastIndexValue","sliceBy","indexName","lastIndexOf","sourceName","fireFormImportStarted","assign","importClientSideFormFields","fireFormImportFailed","fireFormImportSuccess","removeExistingFormFields","fieldsData","downloadFormDesigner","downloadFormFieldsData","saveImportedAnnotations","textMarkupAnnotationCollection","saveTextMarkupAnnotations","isShapeAnnotationModule","saveShapeAnnotations","calibrateAnnotations","saveMeasureShapeAnnotations","stampAnnotationCollection","saveStampAnnotations","isCommentAnnotationModule","stickyAnnotationCollection","saveStickyAnnotations","importList","freeTextAnnotationCollection","saveFreeTextAnnotations","inkSignatureData","saveInkSignature","annotationsPageList","getAnnotationsPageList","annotationInfo","flat","entries","annotCollection","annotActionCollection","actionCollection","self","fullPageList","formDesignerData","designerDataList","formFieldsCollection","totalPageList","checkFormFieldCollection","annotationID","isFormFieldAnnotation","radiobuttonItem","Key","fireDownloadStart","digitalSignature","isDocumentEdited","enableFormFieldsValidation","fireValidatedFailed","fileDownload","fireDownloadEnd","updateDocumentAnnotationCollections","getTileCount","defaultWidth","tileCount","tileValue","tileRenderingSettings","enableTileRendering","pageWidth_1","viewPortWidth_1","viewPortHeight","noTileX","noTileY","thumbnailImageElement","tileSettings","isPageRequestSent","pageRequestSent","zoomFactor_2","zoomFactor_3","pageStartIndex","pageEndIndex","textRequestHandler","renderTexts","pageTextRequestOnSuccess","getDocumentText","xCoordinate","yCoordinate","tilecount","tileXCount","tileYCount","digitalSignaturePresent","renderPages","pageRequestOnSuccess","textDetailsId","isTextNeed","canvas_3","createImageData","putImageData","imageUrl","characterBounds","hyperlinksDetails","getHyperlinks","data_1","hyperlinks","hyperlinkBounds","annotationLocation","storeTextDetails","textDetails","blobObj","storeImageData","canvas_4","w","h","noTileX_1","noTileY_1","x_1","y_1","pageIndex_2","tileWidth","tileHeight","transformationMatrix","thumbnailOnMessage","printOnMessage","isTileRender","currentPageWidth","storeWinData","requestForTextExtraction","textRequestOnSuccess","markedBounds","pageCharText","textMarkupContent","textMarkUpContent","storeAnnotations","errorMessage","restrictZoomRequest","getWindowSessionStorage","getPinchZoomPage","storedTileData","isPinchZoomStorage","pageItems","manageSessionStorage","enableZoomOptimization","textObject","maxSessionSize","annotationList","formFieldsList","storageLength","sliceSize","byteCharacters","byteArrays","byteNumbers","byteArray","blob","Blob","getRandomNumber","isNeedToSet","isScrollBar","setScrollDownValue","eventType","boolValue","isToolbarHidden","getAnnotationToolStatus","isAnnotationButtonsEnabled","isPopupNoteVisible","isFormDesignerModule","getMousePosition","targetWrapper","actualObject","findToolToActivate","selectorBnds","paddedBounds","conn","elementAngle","centerPoint","matrix_1","ten","inflate","checkResizeHandles","bound","checkForResizeHandles","forty","resizerBuffer","isNodeShape","isInk","resizerLocation","checkSignatureFormField","fieldID","isFormFieldSign","firePageMouseover","sourceDrawingElement","getTool","setCursor","disableHyperlinkNavigationUnderObjects","updateDefaultCursor","diagramMouseActionHelper","currentObject","freeTextSettings","allowEditTextOnly","obj_1","previousActivePage","lastElementChild","drawHelper","mouseMoveforce","sourceElement","initialEventArgs","cursorType","freeTextAnnotModule","setResizerCursorType","isCommentIconAdded","isNewAddedAnnot","viewerPositions","mousePositions","thicknes","isFormField","field_1","fireFormFieldMouseoverEvent","fireAnnotationMouseover","fireFormFieldMouseLeaveEvent","fireAnnotationMouseLeave","field_2","fromTarget","dataJson","field_3","resizerCursorType","inkAnnotationSettings","distanceSettings","perimeterSettings","areaSettings","radiusSettings","volumeSettings","lineSettings","arrowSettings","rectangleSettings","circleSettings","polygonSettings","isAnnotResized","onShapesMouseup","isSkipped","stampObj","customStampSettings","isStampAddMode","stampName","customStampName","customStampImageSource","enableCustomStamp","isAddToMenu","resetAnnotation","signObject","canvasPaddingLeft","canvasPaddingWidth","top_4","enableAutoFit","defautWidth","annotModule","primaryToolbar","freeTextEditItem","signatureFieldAnnotation","el","exportAnnotationsAsObject","isAnnotations","updateExportItem","createRequestForExportAnnotations","fontHeight","formFieldsSize","exportFormFieldsAsObject","importData","isXfdf","createRequestForImportAnnotations","fireExportStart","exportAnnotation","exportAnnotationFileDownload","fireExportFailed","exportObject","getSanitizedString","updateModifiedDateToLocalDate","newData","ModifiedDate","convertUTCDateTimeToLocalDateTime","Comments","date","dateTime","globalize","locale","now","now_utc","UTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","dateTimeValue","formatDate","dateTimeFormat","reRenderAnnotations","fireImportSuccess","importedData","addAnnotationOnImport","newArray_1","newData_1","errorDetails","combineImportedData","importPageCollections","textMarkupObject","shapeObject","measureShapeObject","stampObject","stickyObject","freeTextObject","signatureObject","inkObject","isAdded","checkAnnotationCollections","checkAnnotationCommentsCollections","checkSignatureCollections","annotationOrderCollection","renderAnnotationComments","updateCollections","updateTextMarkupAnnotationCollections","updateShapeAnnotationCollections","updateMeasureAnnotationCollections","updateStampAnnotationCollections","updateFreeTextAnnotationCollections","updateStickyNotesAnnotationCollections","updateInkCollections","updateImportedAnnotationsInDocumentCollections","createAnnotationsCollection","updateAnnotationsInDocumentCollections","importedAnnotations","documentAnnotationCollection","pageCollections","documetCollections","findImportedAnnotations","AnnotName","isNewlyAdded","annotationTypes","foundAnnotationType","find","isRefreshRequired","drawing","refreshCanvasDiagramLayer","annotationCollections","selectAnnotationCollections","savePageAnnotations","saveImportedTextMarkupAnnotations","saveImportedShapeAnnotations","saveImportedMeasureAnnotations","saveImportedStampAnnotations","saveImportedStickyNotesAnnotations","saveImportedFreeTextAnnotations","saveImportedInkAnnotation","createAnnotationJsonData","signaturCollection","signaturInkCollection","excistingImportAnnotation","newlyImportAnnotation","checkImportedData","measureObject","inkAnnotationObjct","resut","some","existingCollection","newCollection","getAnnotationComments","Author","review","State","stateModel","StateModel","note","Note","updateAnnotationsInSessionStorage","createCommentControlPanel","deleteAnnotations","accordionContent","accordionContentContainer","childElementCount","freeTextPageNumbers","stampPageNumber","inkAnnotationindex","annotationCollectionList","addAnnotation","importAnnotation","documentCollections","isAnnotationObject","annotationCount","newAnnotation","ShapeAnnotationType","AnnotationAddMode","annotationAddMode","AnnotationSelectorSettings","AnnotationSettings","PageNumber","Subject","IsCommentLock","isCommentLock","updateComments","CustomData","customData","Color","IsMultiSelect","isMultiSelect","TextMarkupAnnotationType","textMarkupAnnotationType","TextMarkupContent","TextMarkupStartIndex","textMarkupStartIndex","TextMarkupEndIndex","textMarkupEndIndex","convertBounds","Icon","MarkupText","TextAlign","FillColor","FontColor","Rotate","Font","icon","isDynamic","RotateAngle","StampAnnotationType","stampAnnotationType","CreationDate","creationDate","apperarance","stampAnnotationPath","Apperarance","IsDynamic","stampFillcolor","IsPathData","BorderStyle","BorderDashArray","IsCloudShape","isCloudShape","CloudIntensity","cloudIntensity","RectangleDifference","rectangleDifference","LineHeadStart","LineHeadEnd","IsLocked","isLocked","EnableShapeLabel","LabelContent","LabelFillColor","LabelBorderColor","LabelBounds","labelBounds","LabelSettings","labelSettings","LeaderLength","LeaderLineExtenstion","leaderLineExtension","convertVertexPoints","VertexPoints","calibrate","Calibrate","unit","conversionFactor","fractionalType","denominator","formatDenominator","area","targetUnitConversion","depth","Indent","indent","Caption","caption","CaptionPosition","captionPosition","LeaderLineExtension","LeaderLineOffset","leaderLineOffset","isRect","Left","Right","top_5","Top","ConvertPixelToPoint","IsLock","currentPageContainer","blur","isEdited","getWindowDevicePixelRatio","devicePixelRatio","getZoomRatio","importJsonForRotatedDocuments","originalRotation","pageDetails","getRotationAngle","calculateVertexPoints","vPoints","point_1","point_2","isSignaturePathData","pathRegex","isSignatureImageData","base64ImageRegex","sanitizedString","padStart","storedImage","storedHyperlink","storedTextDetails","mergedObj","PdfiumRunner","moduleString","pageLoaded","moduleLoaded","FPDF","pdfiumWindow","PDFiumModule","F64","Int8Array","Float32Array","Float64Array","H","heap","free","Bitmap_BGRA","initializeFPDF","Init","cwrap","RenderPageBitmap","Bitmap_FillRect","Bitmap_CreateEx","Bitmap_Destroy","LoadPage","ClosePage","LoadMemDocument","GetPageSizeByIndex","GetLastError","GetPageCount","CloseDocument","DestroyLibrary","LoadTextPage","CloseTextPage","TextCountChars","GetUnicodeChar","GetCharBox","GetPageRotation","GetCharAngle","J","E","HEAP8","HEAP16","HEAP32","HEAPU8","HEAPU16","HEAPU32","HEAPF32","HEAPF64","Z","BYTES_PER_ELEMENT","asm","malloc","checkIfEverythingWasLoaded","startApp","loaded","LCD_TEXT","NO_NATIVETEXT","GRAYSCALE","DEBUG_INFO","NO_CATCH","RENDER_LIMITEDIMAGECACHE","RENDER_FORCEHALFTONE","PRINTING","REVERSE_BYTE_ORDER","Bitmap_Gray","Bitmap_BGR","Bitmap_BGRx","LAST_ERROR","SUCCESS","UNKNOWN","FILE","FORMAT","PASSWORD","SECURITY","PAGE","onRuntimeInitialized","importScripts","fileSize","wasmBuffer","DocumentInfo","wasm","pages","processor","wasmData","setPages","createAllPages","firstPage","getPage","ImageData_1","ImageData_2","ImageData_3","printScaleFactor","printDevicePixelRatio","ImageData_4","renderTileImage","Page","RectAngle","Processor","TextBounds","TextContent","CharacterBounds","getPageSize","getCharBounds","pagePointer","getRender","flag","bmap","textExtraction","textPage","totalCharacterCount","minTop","maxBottom","minLeft","maxRight","wordBounds","word","wordMinLeft","wordMaxRight","wordMinTop","wordMaxBottom","wordRotation","wordStart","isZeroWidthSpace","isPreviousSpace","startNewLine","maximumSpaceForNewLine","charCount","rotationRadian","character","charLeft","charRight","charBottom","charTop","pointerToPixelConverter","rotationAngle","currentCharacterBounds","newWordBounds","textBoundsCalculation","newWordBounds_1","newWordBounds_2","newWordBounds_3","newWordBounds_4","newWordBounds_5","pointerValue","hasInBetweenRotation","inBetweenRotatedText","maximumSpaceBetweenWords","sentence","spaceWidth","getPageRender","pageRenderPtr","pageRenderData","thumbnailWidth","thumbnailHeight","maxPageSize","scaleFactor_1","whichIsBigger","xCount","yCount","w1","h1","getLastError","lastError","pagesCount","PdfVerticalAlignment","_PdfStreamWriter","_newLine","_whiteSpace","_stream","_writeOperator","_saveGraphicsState","_restoreGraphicsState","_writeComment","comment","_setGraphicsState","_escapePdfName","_modifyCtm","_toString","_modifyTM","_setColorSpace","forStroking","_setColor","_appendRectangle","_writePoint","_clipPath","isEvenOdd","_fillPath","_closeFillPath","_strokePath","_closeStrokePath","_fillStrokePath","_closeFillStrokePath","_endPath","_setFont","_setTextScaling","textScaling","_closePath","_startNextLine","_showText","_writeText","_write","builder","_escapeSymbols","_beginText","_endText","_beginPath","_appendLineSegment","_appendBezierSegment","x3","y3","_setTextRenderingMode","renderingMode","_setCharacterSpacing","charSpacing","_setWordSpacing","wordSpacing","_showNextLineText","unicode","_setLineDashPattern","pattern","patternOffset","tempPattern","_setMiterLimit","miterLimit","_setLineWidth","_setLineCap","lineCapStyle","_setLineJoin","lineJoinStyle","_executeObject","_beginMarkupSequence","_endMarkupSequence","_clear","_bytes","PdfStringFormat","arg1","arg2","horizontalScalingFactor","rightToLeft","_wordWrapType","lineLimit","lineAlignment","characterSpacing","lineSpacing","clipPath","firstLineIndent","_internalParagraphIndent","measureTrailingSpaces","noClip","_pdfSubSuperScript","none","_LineType","_PdfFontMetrics","_lineGap","_getAscent","_ascent","_getSize","_getDescent","_descent","_getLineGap","_getHeight","clearTypeFonts","clearTypeFontCollection","_size","subSuperScript","subScript","_subScriptSizeFactor","superScript","_superscriptSizeFactor","_WidthTable","_StandardWidthTable","widths","_itemAt","_toArray","_CjkWidthTable","_defaultWidth","entry","_from","_to","_appendToArray","_add","_CjkWidth","_CjkSameWidth","from","to","_widthFrom","_widthTo","_width","_CjkDifferentWidth","_widths","_PdfStringLayouter","_layout","_initialize","_doLayout","_font","_format","_rectangle","_reader","_StringTokenizer","_pageHeight","_close","_PdfStringLayoutResult","lineResult","lines","_peekLine","lineIndent","_getLineIndent","_layoutLine","numSymbolsInserted","returnedValue","_copyToResult","_read","_readLine","_finalizeResult","firstLine","paragraphIndent","_getLineHeight","_metrics","_getLineWidth","getLineWidth","_lineHeight","lineType","firstParagraphLine","readWord","_addToLineResult","newLineBreak","curLine","curIndent","_peekWord","_length","_position","curLineWidth","_getWrapType","wordOnly","_remainder","_peek","_wordWrap","stringValue","layoutBreak","_readWord","lastParagraphLine","_layoutLines","breakType","_LineInfo","_text","_lineType","_actualSize","allowPartialLines","_lines","expHeight","_trimLine","_end","_readToEnd","wrapType","_empty","PdfFontStyle","PdfFontFamily","PdfCjkFontFamily","ch","text2","_tab","_spaces","_TrueTypeTableInfo","_offset","_checksum","_TrueTypeOS2Table","_TrueTypePostTable","_TrueTypeNameTable","_TrueTypeMicrosoftCmapSubTable","_TrueTypeHorizontalHeaderTable","_TrueTypeHeadTable","_TrueTypeCmapTable","_TrueTypeCmapSubTable","_TrueTypeAppleCmapSubTable","_TrueTypeTrimmedCmapSubTable","_TrueTypeReader","fontData","_int32Size","_isFont","_isMacTtf","_isMacFont","_missedGlyphs","_tableNames","_entrySelectors","_fontData","_macintoshDictionary","_microsoftDictionary","_internalMacintoshGlyphs","_internalMicrosoftGlyphs","_TrueTypeMetrics","_readFontDictionary","_readNameTable","headTable","_readHeadTable","_initializeFontName","_macStyle","_check","table","_readInt16","_tableDirectory","table_1","tableKey","_readString","_readInt32","setValue","_lowestPosition","_fixOffsets","minOffset","tableKeys","shift","version","fontTag","ttcIdentificationNumber","tableInfo","_getTable","_formatSelector","_readUInt16","_recordsCount","_nameRecords","recordSize","record","_TrueTypeNameRecord","_platformID","_encodingID","_languageID","_nameID","_name","_version","_readFixed","_fontRevision","_checkSumAdjustment","_readUInt32","_magicNumber","_flags","_unitsPerEm","_created","_readInt64","_modified","_xMin","_yMin","_xMax","_yMax","_lowestReadableSize","_fontDirectionHint","_indexToLocalFormat","_glyphDataFormat","_readHorizontalHeaderTable","_ascender","_descender","_advanceWidthMax","_minLeftSideBearing","_minRightSideBearing","_xMaxExtent","_caretSlopeRise","_caretSlopeRun","_metricDataFormat","_numberOfHMetrics","_readOS2Table","_xAvgCharWidth","_usWeightClass","_usWidthClass","_fsType","_ySubscriptXSize","_ySubscriptYSize","_ySubscriptXOffset","_ySubscriptYOffset","_ySuperscriptXSize","_ySuperscriptYSize","_ySuperscriptXOffset","_ySuperscriptYOffset","_yStrikeoutSize","_yStrikeoutPosition","_sFamilyClass","_panose","_readBytes","_ulUnicodeRange1","_ulUnicodeRange2","_ulUnicodeRange3","_ulUnicodeRange4","_vendorIdentifier","_fsSelection","_usFirstCharIndex","_usLastCharIndex","_sTypoAscender","_sTypoDescender","_sTypoLineGap","_usWinAscent","_usWinDescent","_ulCodePageRange1","_ulCodePageRange2","_sxHeight","_sCapHeight","_usDefaultChar","_usBreakChar","_usMaxContext","_readPostTable","_formatType","_italicAngle","_underlinePosition","_underlineThickness","_isFixedPitch","_minType42","_maxType42","_minType1","_maxType1","_readWidthTable","glyphCount","unitsPerEm","glyph","_TrueTypeLongHorMetric","_advanceWidth","_lsb","glyphWidth","_readCmapTable","_tablesCount","subTables","subTable","_readCmapSubTable","encoding","_getCmapEncoding","unknown","apple","_readAppleCmapTable","microsoft","_readMicrosoftCmapTable","trimmed","_readTrimmedCmapTable","_maxMacIndex","glyphInfo","_TrueTypeGlyph","_index","_readByte","_getWidth","_charCode","macintosh","_addGlyph","_microsoft","_segCountX2","_searchRange","_entrySelector","_rangeShift","segCount","_endCount","_readUShortArray","_reservedPad","_startCount","_idDelta","_idRangeOffset","_glyphID","codeOffset","symbol","_firstCode","_entryCount","_fontFamily","_postScriptName","containsKey","glyphCode","platformID","encodingID","roman","_microsoftGlyphs","_macintoshGlyphs","_initializeMetrics","horizontalHeadTable","os2Table","postTable","cmapTables","bSymbol","_isSymbol","factor","_winAscent","_macAscent","_capHeight","_winDescent","_macDescent","_leading","_fontBox","_stemV","_widthTable","_updateWidth","_contains","bytes","_getGlyph","byteToProcess","space","_getString","_getDefaultGlyph","_setOffset","_readFontProgram","glyphChars","_getGlyphChars","locaTable","_readLocaTable","_bIsLocaShort","_updateGlyphChars","result1","_generateGlyphTable","glyphTableSize","newLocaTable","newGlyphTable","result2","_updateLocaTable","newLocaSize","newLocaUpdated","fontProgram","_getFontProgram","activeGlyphs","sort","glyphSize","glyphIndex","_offsets","glyphSizeAligned","_align","nextGlyphOffset","nextGlyphIndex","oldGlyphOffset","oldNextGlyphOffset","bShort","_TrueTypeLocaTable","glyphCharKeys","nextKey","_processCompositeGlyph","glyphOffset","glyphHeader","_TrueTypeGlyphHeader","numberOfContours","xMin","yMin","xMax","yMax","skipBytes","flags","MoreComponents","Arg1And2AreWords","WeHaveScale","WeHaveAnXyScale","WeHaveTwoByTwo","bLocaIsShort","_BigEndianWriter","_writeShort","_writeInt","_data","newLocaTableOut","locaTableSize","_getFontProgramLength","fontProgramLength","entrySelector","_writeCheckSums","_writeGlyphs","tableNames","tableName","usedTablesSize","dictionary","charKeys","nextTableSize","_writeString","_calculateCheckSum","_writeUInt","byte1","byte2","byte3","byte4","_writeBytes","buff","written","read","_createInternals","charCode","obj1","_isFontPresent","isUnicode","integer","sFraction","fraction","i1","i2","i3","i4","_getCharacterWidth","codeWidth","_convertString","capacity","int32Size","int16Size","int64Size","_bufferLength","_buffer","_internalPosition","_flush","_PdfBaseStream","_isCompress","getByte","peekByte","peekedByte","peekBytes","getUnsignedInteger16","b0","b1","getInt32","b2","b3","getByteRange","makeSubStream","readBlock","moveStart","isHex","_byteArrayToHexString","stringBuffer","skip","getBaseStreams","_PdfStream","isImageStream","dataStream2","strEnd","_clearStream","has","_map","Filter","_updated","_PdfContentStream","_PdfDictionary","_PdfNullStream","_UnicodeTrueTypeFont","_nameString","_isEmbedFont","_cmapPrefix","_cmapEndCodeSpaceRange","_cmapBeginRange","_cmapEndRange","_cmapSuffix","_fontSize","_fontString","_Initialize","_beginSave","_descendantFontBeginSave","_cmapBeginSave","_fontDictionaryBeginSave","_fontProgramBeginSave","_fontDescriptor","update","_fontProgram","_usedChars","_getDescendantWidth","_descendantFont","_fontDictionary","_cmap","_decode","_ttfReader","_ttfMetrics","_subsetName","_getFontName","_createDescendantFont","_createFontDictionary","_getInternals","ttfMetrics","_height","_isBold","_PdfName","_createFontDescriptor","systemInfo","_createSystemInfo","descriptor","metrics","_getDescriptorFlags","_getBoundBox","_generateFontProgram","rectangle","_generateCmap","_toHexString","isCaseChange","toUpperCase","middlePart","nextRange","_currentObj","fixedPitch","symbolic","nonSymbolic","_isItalic","forceBold","_setSymbols","chLen","firstGlyphIndex","lastGlyphIndex","firstGlyphIndexWasSet","widthDetails","_ArabicShapeRenderer","_arabicCharTable","_alef","_alefHamza","_alefHamzaBelow","_alefMadda","_lam","_hamza","_zeroWidthJoiner","_hamzaAbove","_hamzaBelow","_wawHamza","_yehHamza","_waw","_alefsura","_yeh","_farsiYeh","_shadda","_madda","_lwa","_lwawh","_lwawhb","_lwawm","_bwhb","_fathatan","_superalef","_vowel","_arabicMapTable","Map","_getCharacterShape","_shape","shapeText","_doShape","level","ligature","_ArabicShape","present","_ligature","shapeCount","_getShapeCount","_shapes","_shapeValue","_append","_shapeLigature","_shapeType","_shapeVowel","_Bidirectional","_indexes","_indexLevels","_mirroringShape","_update","_doMirrorShaping","_getLogicalToVisualString","isRtl","rtlCharacters","_RtlCharacters","_getVisualOrder","_setDefaultIndexLevel","_doOrder","resultBuilder","sIndex","eIndex","odd","even","pstart","pend","_reArrange","_type","_textOrder","_rtlCharacterTypes","L","lre","lro","R","AL","rle","rlo","pdf","EN","ES","ET","AN","CS","nsm","BN","B","S","WS","ON","_charTypes","_getCharacterCode","_doVisualOrder","_levels","characterCodes","_setDefaultLevels","_setLevels","_updateLevels","_result","_getEmbeddedCharactersLength","preview","preType","_checkEmbeddedCharacters","startType","endType","charType","_checkEuropeanDigits","_checkArabicCharacters","_checkEuropeanNumberSeparator","_checkEuropeanNumberTerminator","_getLength","_checkOtherNeutrals","_checkOtherCharacters","pst","_checkCharacters","validSet","lt","tt","rt","_RtlRenderer","_openBracket","_closeBracket","rtl","wordSpace","_isUnicode","_customLayout","_splitLayout","system","_customSplitLayout","_getGlyphIndex","glyphs","_glyphIndex","internalFont","_fontInternal","ttfReader","unicodeLine","_UnicodeLine","textDirection","bidi","layouted","_addCharacter","_stringToUnicodeArray","_bytesToString","reversedLine","_style","underline","strikeout","_fontMetrics","_setInternals","internals","_pdfFontInternals","_getCharacterCount","symbols","numSymbols","curIndex","measureString","arg3","arg4","arg5","temparg2","charactersFitted","linesFilled","layoutArea","temparg3","layouter","_applyFormatSettings","realWidth","PdfStandardFont","regular","_checkStyle","_initializeInternals","zapfDingbats","_getCharacterWidthInternal","_getMetrics","_dictionary","widthTable","PdfCjkStandardFont","_getEncoding","_getDescendantFont","hanyangSystemsGothicMedium","hanyangSystemsShinMyeongJoMedium","heiseiKakuGothicW5","heiseiMinchoW3","monotypeHeiMedium","monotypeSungLight","sinoTypeSongLight","_getFontDescriptor","_getSystemInformation","systemInformation","PdfTrueTypeFont","_createFontInternal","_calculateStyle","iStyle","_isEmbed","_isUnicodeFont","_getUnicodeLineWidth","rtlRender","_PdfStandardFontMetricsFactory","helvetica","_getHelveticaMetrics","courier","_getCourierMetrics","timesRoman","_getTimesMetrics","_getSymbolMetrics","_getZapfDingbatsMetrics","_subSuperScriptFactor","_helveticaBoldItalicAscent","_helveticaBoldItalicDescent","_helveticaBoldItalicName","_arialBoldWidth","_helveticaBoldAscent","_helveticaBoldDescent","_helveticaBoldName","_helveticaItalicAscent","_helveticaItalicDescent","_helveticaItalicName","_arialWidth","_helveticaAscent","_helveticaDescent","_helveticaName","_courierBoldItalicAscent","_courierBoldItalicDescent","_courierBoldItalicName","_fixedWidth","_courierBoldAscent","_courierBoldDescent","_courierBoldName","_courierItalicAscent","_courierItalicDescent","_courierItalicName","_courierAscent","_courierDescent","_courierName","_timesBoldItalicAscent","_timesBoldItalicDescent","_timesBoldItalicName","_timesRomanBoldItalicWidths","_timesBoldAscent","_timesBoldDescent","_timesBoldName","_timesRomanBoldWidth","_timesItalicAscent","_timesItalicDescent","_timesItalicName","_timesRomanItalicWidth","_timesAscent","_timesDescent","_timesName","_timesRomanWidth","_symbolAscent","_symbolDescent","_symbolName","_symbolWidth","_zapfDingbatsAscent","_zapfDingbatsDescent","_zapfDingbatsName","_zapfDingbatsWidth","_PdfCjkStandardFontMetricsFactory","_getHanyangSystemsGothicMedium","_getHanyangSystemsShinMyeongJoMedium","_getHeiseiKakuGothicW5","_getHeiseiMinchoW3","_getMonotypeHeiMedium","_getMonotypeSungLight","_getSinoTypeSongLight","_PdfCjkFontDescriptorFactory","_fillMonotypeSungLight","fontDescriptor","fontMetrics","fontBox","_fillFontBox","_fillKnownInformation","_fillHeiseiKakuGothicW5","fontBoxItalic","_fillHanyangSystemsShinMyeongJoMedium","_fillHeiseiMinchoW3","_fillSinoTypeSongLight","_fillMonotypeHeiMedium","_fillHanyangSystemsGothicMedium","_fromRectangle","_PathPointType","PdfTemplate","crossReference","_crossReference","_content","getArray","_toRectangle","_isReadOnly","_writeTransformation","_g","_initializeCoordinates","_isTemplateGraphics","_PdfPath","_isRoundedRectangle","_fillMode","winding","_points","_pathTypes","_isStart","_addLine","_addPoints","_addLines","linePoints","_addPoint","startIndex","endIndex","_lastPoint","_addArc","startAngle","sweepAngle","_getBezierArc","list","bezier","_addRectangle","_startFigure","_closeFigure","_addPolygon","_addEllipse","_addBezierPoints","pointsCollection","inner1","inner2","_addBezier","firstX","firstY","secondX","secondY","endX","endY","_getBounds","_TextRenderingMode","PdfImage","_imageWidth","_imageHeight","_imagePhysicalDimension","_getPointSize","_horizontalResolution","draw","graphics","needSave","translateTransform","horizontalResolution","dpiX","ucX","_PdfUnitConvertor","ucY","ptWidth","_convertUnits","pixel","ptHeight","PdfGraphics","xref","_pendingResource","_hasResourceReference","_source","_pageDictionary","_page","_template","getRaw","_PdfReference","_resourceObject","_fetch","_sw","_addProcSet","_m","_resourceMap","fonts","other","_transparencies","_setTransparencyData","PdfGraphicsState","_matrix","_textRenderingMode","_charSpacing","_characterSpacing","_textScaling","_wordSpacing","_currentBrush","_currentPen","_currentFont","_graphicsState","_doRestore","_transformationMatrix","pen","brush","_stateControl","_drawGraphicsPath","drawPolygon","drawEllipse","_constructArcPath","physicalDimension","_save","_getTranslateTransform","_getScaleTransform","sourceDictionary","keyName","isNew","_getNewGuidString","_updateImageResource","_processResources","resource","ref","_reference","_getNextReference","_cacheMap","_imageStream","_resources","_drawTemplate","cropBox","mediaBox","needScale","needTransform","_translate","_origin","_isAnnotationTemplate","_needScale","scaleApplied","templateMatrix","templateBox","templateScaleX","_numberToString","templateScaleY","roundScaleX","roundScaleY","_scale","isReference","_drawPath","_buildUpPath","drawRoundedRectangle","_writePen","_dashPattern","_dashOffset","_lineJoin","_lineCap","_miterLimit","_color","drawString","_checkCorrectLayoutRectangle","_drawStringLayoutResult","types","_getBezierPoint","_mediaBoxUpperRightBound","_clipBounds","_colorSpaceInitialized","_startCutIndex","_initializeCurrentColorSpace","_brushControl","_penControl","_fontControl","fontDict","internal","layoutRectangle","shouldClip","clipRegion","clipBounds","middle","setClip","_applyStringSettings","verticalAlignShift","_getTextVerticalAlignShift","script","_drawLayoutResult","_underlineStrikeoutText","_getNextPage","_document","_pageIndex","tm","fillStroke","clipFlag","cs","ws","ttfFont","lineInfo","hAlignShift","_getHorizontalAlignShift","_drawUnicodeLine","_drawAsciiLine","vAlignShift","baseline","useWordSpace","justify","_justifyLine","blocks","rightAlign","_drawUnicodeBlocks","_breakUnicodeLine","tokens","token","_convertToUnicode","xShift","tokenWidth","boundsHeight","boundsWidth","shouldJustify","_shouldJustify","hasWordSpacing","whitespacesCount","justifyStyle","goodWidth","hasSpaces","goodLineBreakStyle","linePen","_createUnderlineStrikeoutPen","underlineYOffset","strikeoutYOffset","_lineCount","hShift","textSize","layoutedRectangle","fillMode","needClosing","isBrush","isPen","alternate","cbox","location_1","needTransformation","mbox","_cropBox","scaleTransform","_multiply","rotateTransform","_rotate","setTransparency","normal","transparencyData","transparencyKey","_TransparencyData","transparencyDict","_reverseMapBlendMode","_key","_mapBlendMode","tkey","tdata","_PdfTransformationMatrix","_Matrix","_elements","_floatToString","arg6","_clone","_transform","_offsetX","_offsetY","PdfBrush","PdfPen","_dashStyle","solid","miter","_proportions","_updateProportions","_convertFromPixels","_convertToPixels","PdfAnnotationCollection","_isExport","_annotations","_parsedAnnotations","_comments","at","_parseAnnotation","_ref","_isLoaded","_isNew","_addCommentsAndReview","_updateCustomAppearanceResource","removeAt","_getProperty","actualIndex","delete","_reorderParsedAnnotations","_appearance","_updateChildReference","reviewHistory","childAnnotation","_collection","_isReview","_isComment","link","_load","isTextWebLink","_hasValidBorder","_getLinkAnnotation","remote","_doPostProcess","isFlatten","flatten","annotationDictionary","parentReference","PdfPopupAnnotationCollection","isReview","_annotation","_parentDictionary","_parseCommentsOrReview","locked","nextAnnotation","_get","_parseReview","_parseComments","remaining","_checkReview","PdfField","_visible","_isTransparentBackColor","_defaultFont","_appearanceFont","_defaultItemFont","_flatten","_hasData","_circleCaptionFont","_kids","_form","names","_getInheritableProperty","_actualName","name_1","_mappingName","name_2","mappingName","_alternateName","name_3","toolTip","widget","itemAt","_defaultIndex","default","_hasFlags","visibleNotPrintable","flagValue","hidden","noView","hiddenPrintable","_visibility","_updateVisibility","_calculateBounds","_getUpdatedBounds","_kidsCount","_defaultAppearance","_da","_parseBackColor","_updateBackColor","_mkDictionary","colorArray","_parseColor","mkDict","_fieldFlags","readOnly","required","dashed","beveled","inset","_dash","_updateBorder","angle0","noExport","annots","index1","_tabIndex","form","_tabOrder","manual","tabOrder","_annotationIndex","document_1","widgetRef","_findPage","_gray","_silver","_white","_black","mkDictionary","hasTransparency","_hasBackColor","backColor","bgArray","BG","_parsedItems","setAppearance","_setAppearance","removeItemAt","itemsCount","_getPage","_removeAnnotation","parsedItems_1","da","bs","_mapBorderStyle","dash","_checkFieldFlag","_initializeFont","_fontName","defaultAppearance","widgetDictionary","_drawRectangularControl","parameter","backBrush","_drawBorder","borderPen","borderWidth","_drawLeftTopShadow","_grayBrush","_drawRightBottomShadow","_silverBrush","_whiteBrush","shadowBrush","_drawRadioButton","checkSymbol","unchecked","pressedChecked","pressedUnchecked","_drawRoundBorder","_drawRoundShadow","outward","foreBrush","_drawCheckBox","inflateValue","shadowColor","leftTop","rightBottom","_blackBrush","yOffset","extraBorder","xPosition","xOffset","pageRotationAngle","state_1","size_1","angle90","angle180","angle270","_addToKid","currentIndex","_addToOptions","_listValues","_options","_value","_pdfFont","_addAppearance","appearance","_removeDuplicateReference","_rotateTextBox","_checkIndex","_getAppearanceStateValue","_getTextAlignment","_textAlignment","_setTextAlignment","_stringFormat","_parseItems","PdfTextBoxField","_autoResizeText","_defaultValue","multiLine","doNotScroll","doNotSpellCheck","comb","fileSelect","highlightMode","name_4","_mapHighlightMode","noHighlighting","_reverseMapHighlightMode","_maxLength","isInteger","_isAutoResize","_obtainFontDetails","_spellCheck","_insertSpaces","_multiline","_password","_scrollable","objId","_createItem","_create","textAlignment","actualName","_postProcess","_createAppearance","appearanceStream","_setMatrix","_PaintParameter","backcolor","_drawTextBox","scrollable","multiline","scroll","startlocation","tempheight","ascent","isAutoFontSize","PdfButtonField","_assignText","highlight","invert","fieldDictionary","pushButton","pressed","isPressed","_drawPressedButton","_drawButton","PdfCheckBoxField","_checkField","_getItemValue","V","AS","check","_getStateTemplate","_drawAppearance","_styleToString","_removeReferences","normalChecked","normalCheckedReference","normalUnchecked","normalUncheckedReference","normalDictionary","normalReference","pressChecked","pressCheckedReference","pressUnchecked","pressUncheckedReference","pressedDictionary","pressedReference","PdfRadioButtonListField","_selectedIndex","_retrieveOptionValue","_obtainSelectedIndex","name_5","_field","_setField","parsedItems_2","radio","_optionValue","checkName","asName","PdfListField","_bounds","values_1","_tryGetIndex","values_2","indices_1","multiSelect","_multiSelect","edit","_editable","_optionArray","addItem","parsedItems_3","fieldItem","_addEmptyWidget","_obtainFont","endsWith","name_6","textCollection","_getFontHeight","_obtainSelectedValue","primitive","selectedIndexes","PdfComboBoxField","combo","acroForm","fontString","stringFormat","_drawComboBox","doubleBorderWidth","defaultPadding","itemTextBound","x_2","x_3","itemFont","widths_1","PdfListBoxField","_drawListBox","location_2","PdfSignatureField","_isSigned","_checkSigned","needAppearance","firstItemTemplate","_getItemTemplate","_flattenSignature","signatureTemplate","appearanceDictionary","_calculateTemplateBounds","graphicsRotation","_obtainGraphicsRotation","_PdfDefaultAppearance","sliced","_checkRotation","_getPageIndex","loadedDocument","pageDictionary","_annotationFlagsToString","invisible","noRotate","noZoom","toggleNoView","_stringToAnnotationFlags","_stringToPdfString","TextDecoder","fatal","decode","_stringToBytes","translateTable","isDirect","_convertStringToBytes","destination","_areArrayEqual","_areNotEqual","chunkEnd","chunk","unicodeArray","nextHexByte","_hexStringToByteArray","hexString","_hexStringToString","_isWhiteSpace","chr1","chr2","chr3","enc1","enc2","enc3","enc4","resultIndex","totalLength","_encode","currentChar","stopWhenFound","parentKey","refSet","Set","hasParent","_parseRectangle","isWidget","elements","mBox","_convertToColor","_getColorValue","fBlack","dot","_mapBorderEffectStyle","cloudy","_reverseMapEndingStyle","openArrow","closedArrow","rOpenArrow","rClosedArrow","butt","diamond","square","slash","_mapLineEndingStyle","outline","multiply","screen","overlay","darken","lighten","colorDodge","colorBurn","hardLight","softLight","exclusion","hue","saturation","luminosity","returnString","procset","extent","swap","firstAngle","secondAngle","half","zero","one","cosZero","cosOne","sinZero","sinOne","actual","itemDictionary","itemValue","keys_1","colorName","box","cross","star","_stringToStyle","_mapMeasurementUnit","unitString","centimeter","inch","millimeter","pica","_mapMarkupAnnotationType","squiggly","strikeOut","_reverseMarkupAnnotationType","_mapGraphicsUnit","_mapRubberStampIcon","iconString","approved","asIs","completed","confidential","departmental","draft","experimental","expired","final","forComment","forPublicRelease","informationOnly","notApproved","notForPublicRelease","preliminaryResults","sold","topSecret","void","_mapPopupIcon","help","insert","newParagraph","paragraph","_reverseMapAnnotationState","accepted","marked","unmarked","_mapAnnotationState","_reverseMapAnnotationStateModel","_mapAnnotationStateModel","_mapAttachmentIcon","pushPin","tag","graph","paperClip","_mapAnnotationIntent","intentString","intent","freeTextCallout","freeTextTypeWriter","_reverseMapPdfFontStyle","_getSpecialCharacter","_getLatinCharacter","_checkComment","F","DV","crossTable","oldAppearance","_removeDuplicateFromResources","resources","firstKey","secondKey","normalElement","BaseException","FormatError","ParserEndOfFileException","_defaultToString","fontDictionary","baseFont","textFontStyle","_getFontStyle","_mapFont","fontFamilyString","standardName","_tryParseFontStream","widgetAnnotation","apperance","resourcesDictionary","descendant","descendantFont","fontFile","_checkInkPoints","inkPointsCollection","previousCollection","nameCache","cmdCache","refCache","_PdfCommand","objectNumber","gen","generationNumber","_PdfReferenceSet","_set","put","_PdfReferenceSetCache","Dictionary","toStringFunction","nElements","toStr","pair","ret","keysArray","namesOfKeys","pair1","retutnValue","assignXref","getRawValues","key1","key2","key3","callback","prevValue","getEmpty","emptyDict","merge","dictionaryArray","mergeSubDictionary","mergedDictionary","dictionaryArray_1","_d","_e","subDict","_f","_j","suppressEncryption","isCatalog","_PdfNull","_clearPrimitiveCaches","_isName","_isCommand","PdfPage","_isAnnotationParsed","widgets_1","_parseWidgetReferences","validAnnotations_1","_rotation","_obtainTabOrder","tabs","row","column","structure","_cBox","_mBox","_orientation","landscape","portrait","_o","_needInitializeGraphics","_parseGraphics","_addWidget","_loadContents","saveStream","saveReference","_contents","restoreStream","restoreReference","contentStream","contentReference","_initializeGraphics","contents","isInvalidCase","llx","lly","urx","ury","cx","cy","crx","cry","isValid","origin","sign","clip","_fetchResources","_getCropOrMediaBox","_destroy","PdfDestination","_location","_destinationMode","_zoom","_isValid","_destinationBounds","_array","_initializePrimitive","_setValidation","fitR","fitH","_parent","PdfAppearance","_templateNormal","PdfAnnotation","_isImported","_opacity","_isAllRotation","_popUpFont","_authorBoldFont","_lineCaptionFont","_author","hasKey","_border","_hRadius","_vRadius","hRadius","vRadius","_isWidget","_annotFlags","extColor","_innerColor","innerColor","_creationDate","_stringToDate","_dateToString","_modifiedDate","_isBounds","_caption","_cap","capType","inline","cap","_subject","prevRotate","_getRotationAngle","_isFlattenPopups","_ratio","getValues","setValues","_getBoundsValue","_validateTemplateMatrix","isRotatedMatrix","isValidMatrix","locationX","locationY","templateX","templateY","annotationBounds","_locationDisplaced","_removeAnnotationFromPage","_flattenAnnotationTemplate","isNormalMatrix","currentBounds","lineAnnotation","rubberStampAnnotation","_drawCloudStyle","overlap","isAppearance","_isClockWise","sortedPoints","circles","circleOverlap","previousPoint","currentPoint","dx","cur","_CloudStyleArc","previousCurvedStyleArc","currentCurvedStyleArc","_getIntersectionDegrees","endAngle","sweepAngel","pdfpath","tempPoints","incise","sum","radian","cosvalue","_obtainStyle","dashPattern","isDash","intensity","_createRectangleAppearance","borderEffect","rdArray","cloudRectangle","RD","nativeRectangle","_drawRectangleAppearance","graphicsPath","sublist","_createCircleAppearance","nativeBounds","_drawCircleAppearance","controlPointList","startPointList","endPointList","_createBezier","third","bezierPoints","_populateBezierPoints","currentIteration","midPoint1","_midPoint","midPoint2","midPoint3","_getAngle","angleRatio","atan","_getAxisValue","_degreeToRadian","_drawLineEndStyle","axisPoint","isBegin","arraowAngle","fourth","_pen","_drawLineStyle","lineStyle","styleArray","_getEqualPdfGraphicsUnit","measurementUnit","graphicsUnit","_createMeasureDictionary","measureDictionary","_colorToHex","col","_componentToHex","hex","_getRotatedBounds","_flattenPopUp","_flattenPop","boundsValue","clientSize","annotBounds","rectValue","track","aBrush","_getForeColor","_drawAuthor","titleRect","_saveGraphics","contentRect","_drawSubject","_flattenLoadedPopUp","_getRectangleBoundsValue","dic","fore","trackingHeight","blendMode","_getBorderColorString","dateFormat","year","month","day","hour","minute","timeZone","timeZoneHour","timeZonMinute","setTime","getMonth","getDate","hours","getHours","minutes","getMinutes","seconds","getSeconds","getFullYear","_obtainNativeRectangle","cropBoxOrMediaBox","PdfComment","_reviewHistory","PdfLineAnnotation","_unit","_unitString","_linePoints","_leaderExt","leaderExt","_leaderLine","leaderLine","_lineEndingStyle","lineStyles","_begin","lineEndingStyle","_leaderOffset","leaderOffset","_lineIntent","lineIntent","lineDimension","lineArrow","_measure","_appearanceTemplate","_createLineMeasureAppearance","boundsArray","_obtainLineBounds","updatedBounds","flattenPopups","reference_1","_isFlatten","_convertToUnit","linePoints1","_obtainLinePoints","rectPath","lineAngle","lineDistance","centerWidth","beginLineExt","endLineExt","beginLeaderLine","endLeaderLine","midpoint","nativeRectangle1","ds","_calculateAngle","_calculateLineBounds","leaderLineExt","leaderLines","x1y1","x2y2","offsetPoint1","offsetPoint2","startingPoint","endingPoint","beginLineLeader","endLineLeader","beginLinePoint","_getLinePoint","endLinePoint","widthX","heightY","_drawLine","rectangleBounds","PdfCircleAnnotation","_measureType","circleAnnotation","converter","_createCircleMeasureAppearance","reference_2","fontsize","PdfEllipseAnnotation","ellipseAnnotation","reference_3","PdfSquareAnnotation","squareAnnotation","_borderEffect","_intensity","_createSquareMeasureAppearance","reference_4","_calculateAreaOfSquare","appearanceBounds","tem","vertices","PdfRectangleAnnotation","rectangleAnnotation","_isValidTemplateMatrix","reference_5","appearanceTemplate","pointF","PdfPolygonAnnotation","polygonAnnotation","_lineExtension","lineExt","lineExtension","polygonBounds","_createPolygonAppearance","reference_6","backgroundBrush","_getLinePoints","polygonPoints","points_2","PdfPolyLineAnnotation","_beginLine","_endLine","polyLineAnnotation","endLineStyle","beginLineStyle","pathTypes","_polylinePoints","polyLineBounds","_createPolyLineAppearance","reference_7","polyLinepoints_1","PdfAngleMeasurementAnnotation","_firstIntersectionPoint","_secondIntersectionPoint","_pointArray","angleMeasurementAnnotation","_createAngleMeasureAppearance","dDictionary","tDictionary","aDictionary","vDictionary","xDictionary","_getAngleBoundsValue","graphicspath","_radius","midPoint","_startAngle","_sweepAngle","xDiff","yDiff","midpointAngle","up","down","reference1","point3","firstLineDistance","secondLineDistance","intersectionPoint1","intersectionPoint2","_findLineCircleIntersectionPoints","intersection1","intersection2","PdfInkAnnotation","_inkPointsCollection","_previousCollection","_isModified","inkAnnotation","inkList","_addInkPoints","_createInkAppearance","_obtainInkListCollection","_getInkBoundsValue","inkPoints","locx","locy","locw","loch","pathPointCont","pathPoints","p1","p2","_getControlPoints","controlP1","controlP2","path1","path2","pointCount","rightVector","xValue","_getSingleControlPoint","vector","tmpVector","divisor","inkCollection","unshift","isEqual","termsList","subList","isTwoPoints","pointCollection","_calculateInkBounds","innerList","PdfPopupAnnotation","_icon","_iconString","_stateModel","_state","_open","popupAnnotation","_obtainIconName","_createPopupAppearance","pen1","template_1","PdfFileLinkAnnotation","_fileName","fileLinkAnnotation","_action","actionDictionary","_addAction","nextAction","fileDictionary","PdfUriAnnotation","uri","_uri","uriAnnotation","linkDict","PdfDocumentLinkAnnotation","documentLinkAnnotation","_obtainDestination","_destination","_addDocument","holder","referenceArray","referenceValue","top_6","top_7","PdfTextWebLinkAnnotation","brushColor","penColor","penWidth","_isActionAdded","_textWebLink","_brush","textWebLinkAnnotation","_url","linkSource","PdfAttachmentAnnotation","fileAttachmentAnnotation","_addAttachment","fileSpecification","embeddedFile","fileSpectDictionary","paramsDictionary","toTimeString","char1","char2","_writeObject","efileDictionary","fsReference","Pdf3DAnnotation","movieAnnotation","PdfTextMarkupAnnotation","_textMarkupType","_quadPoints","_boundsCollection","_textMarkUpColor","isChanged","boundsCollection","_setQuadPoints","_createMarkupAppearance","native","pdfPath","quadPoints","textMarkUpColor","pdfPen","textMarkupType","_drawSquiggly","pathPointsCount","zigZag","textQuadLocation","noofRect","PdfWatermarkAnnotation","_watermarkText","watermarkAnnotation","_createWatermarkAppearance","_rotateAngle","PdfRubberStampAnnotation","_stampWidth","_stampAppearanceFont","innerBounds","_obtainInnerBounds","_createRubberStampAppearance","_transformBBox","bBoxValue","_transformPoint","point4","_minValue","_maxValue","minimum","maximum","isTransformBBox","isRotated","mMatrix","_drawStampAppearance","_obtainBackGroundColor","_obtainBorderColor","rubberFont","_drawRubberStamp","red","green","blue","pdfBrush","normalAppearance","normalAppearanceDictionary","PdfSoundAnnotation","soundAnnotation","PdfFreeTextAnnotation","_intentString","_markUpFont","_cropBoxValueX","_cropBoxValueY","_calloutLines","_getCalloutLinePoints","_obtainLineEndingStyle","_borderColor","_obtainColor","_annotationIntent","_obtainAnnotationIntent","_setPaddings","paddings","_paddings","_updateCropBoxValues","_saveFreeTextDictionary","cropOrMediaBox","reference_8","_obtainAppearanceBounds","_obtainText","_obtainTextAlignment","calloutLines","_drawCallOuts","_calculateRectangle","outerRectangle","_drawFreeTextRectangle","_drawFreeMarkUpText","innerRectangle","isRotation","bounds_1","_left","top_8","_top","_right","_bottom","first_1","second_1","forth","first_2","second_2","checkPaddingWithFontHeight","_drawFreeTextAnnotation","isSkipDrawRectangle","calloutLinepoints","pointArray","length_2","_obtainCallOutsNative","_calloutsClone","_expandAppearance","markUpText","_rcText","hasAlignment","annotationIntent","_getXmlFormattedString","markupText","PdfRedactionAnnotation","redactionAnnotation","_repeat","_textColor","textColor","_overlayText","_createRedactionAppearance","normalTemplate","_createNormalAppearance","borderTemplate","_createBorderAppearance","actualWidth","textcolor","overlayText","textsize","repeatText","PdfRichMediaAnnotation","richMediaAnnotation","PdfWidgetAnnotation","bcArray","_rotationAngle","_highlightMode","recreateAppearance","reference_9","document_2","_backColor","PdfStateItem","PdfRadioButtonListItem","_initializeItem","PdfListFieldItem","PdfAnnotationCaption","PdfAnnotationLineEndingStyle","PdfInteractiveBorder","PdfAnnotationBorder","PdfBorderEffect","_getBorderEffect","_styleToEffect","_ImageDecoder","_bitsPerComponent","_noOfComponents","_imageData","_checkIfJpeg","jpeg","_parseJpegImage","_reset","byteLength","imgData","_getBuffer","isLengthExceed","_seek","_readExceededJpegImage","_jpegHeader","_getImageDictionary","tempString","decodedString","_imageDataAsNumberArray","_getColorSpace","_getDecodeParams","decodeParams","_skipStream","isContinueReading","marker","_getMarker","_toUnsigned16","skippedByte","PdfBitmap","encodedString","_imageStatus","_initializeAsync","_decoder","AnnotationRenderer","formats","addShape","details","checkAnnotationLock","getSaveVertexPoints","polylineAnnotation","isTransparentColor","lineBorder","getRotateAngle","getLineEndingStyle","dateValue","commentsDetails","addCommentsCollection","reviewDetails","addReviewCollections","rectDifferences","rd","getRDValues","allowedInteractions","convertPixelToPoint","cropValues","getCropBoxValue","cropX","cropY","Boolean","inkSignatureAnnotation","stampObjects","drawingPath","newDifferenceX","newDifferenceY","isNewValues","rotatedPoints","getRotatedPath","newX_1","colors","pathCollection","graphicsPoints","pointsCollections","newX","addTextMarkup","pageNo","annotationtypes","groupedRectangles","boundsCollection_1","combinedRectangles","group","groupKey","annotationRotation","annotColor","boundArrayCollection","boundArray","isPath","cropBoxX","cropBoxY","getBothCropBoxValue","addCustomStampAnnotation","stampAnnotation","wrapperBounds","boundsXY","calculateBoundsXY","stampColor","textBrush","stampBrush","stampcolors","pens","pageRotation_1","dateValue_1","isIconExists","getIconName","drawStampAsPath","getRubberStampRotateAngle","renderDynamicStamp","retriveDefaultWidth","renderSignHereStamp","bitmap","filterAnnot","nameStamp","pngDictionary","addMeasure","circleMeasurementAnnotation","addCircleMeasurementAnnotation","measureDetail","setMeasureDictionary","getBorderStyle","getCaptionType","addStickyNotes","popUpAnnotation","addFreeText","textFont","getFontFamily","fontJson","getFontStyle","Keys","fontStream","fontAnnotation","glyphPresent","textMarkupColor","getPdfTextAlignment","defaultHeight","pointValues","stampFont","detailsFont","stampTypeBounds","stampTimeStampbounds","pdfPageBase","convertPointToPixel","setMeasurementUnit","angleString","resultObjects","transformPoints","array1","array2","array21","iconExists","xNumberFormat","createNumberFormat","dNumberFormat","aNumberFormat","tNumberFormat","volume","vNumberFormat","numberFormatList","numberFormats","numberFormatDictionary","numberFormat","pointList","endingStyle","captionType","getReviewState","reviewState","isWhite","loadSignature","inkAnnot","loadedPage","SignatureAnnotationBase","outputstring","loadInkAnnotation","InkSignatureAnnotation","getValidNoteContent","getStateString","getStateModelString","loadPopupAnnotation","cropRect","ExistingCustomData","loadSquareAnnotation","squareAnnot","shapeFreeText","ShapeAnnotationBase","getBorderStylesString","getRotateAngleString","IsPrint","AllowedInteractions","fillOpacity","loadLineAnnotation","lineAnnot","getLineEndingStyleString","getLineIndentString","getLinePoints","MeasureShapeAnnotationBase","getMeasureObject","AnnotPoint","loadEllipseAnnotation","ellipseAnnot","loadPolygonAnnotation","polygonAnnot","getVertexPoints","Depth","loadPolylineAnnotation","polyLineAnnot","loadSignatureImage","formsFields","pdfReference","m_renderer","findStampImage","xList","distanceList","areaList","angleList","volumeList","Measure","Ratio","getMeasureValues","Distance","Area","Angle","Volume","TargetUnitConversion","FloatValue","arrayValues","measureValuesArray","measureFormat","measureValue","NumberFormat","Denominator","ConversionFactor","FractionalType","FormatDenominator","Unit","AnnotBounds","popupAnnot","PopupAnnotationBase","SubType","Type","Reference","getPopupIconString","SizeBase","AnnotColor","G","loadFreeTextAnnotation","freeTextAnnot","FreeTextAnnotationBase","AnnotationIntent","getAnnotationIntentString","AnnotationFlags","getAnnotationFlagsString","FreeTextAnnotationType","BorderColor","CalloutLines","Flatten","FlattenPopups","getFontFamilyString","FontBase","Layer","Location","getTextAlignmentString","PageRotation","IsReadonly","loadSignatureText","datePadding","removeSignatureTypeAnnot","removeAnnotList","loadedPageNo","oldPageAnnotations","totalAnnotation","loadTextMarkupAnnotation","textMarkup","TextMarkupAnnotationBase","getMarkupAnnotTypeString","RectangleBase","AnnotationRotation","getTextMarkupBounds","textMarkupData","annotationBoundList","PointBase","TextMarkupColor","Border","LineEndingStyle","CreatedDate","InnerColor","PageTags","ReviewHistory","AnnotpageNumbers","AnnotNameCollection","PdfLayer","_X","_Y","_Width","_Height","IsEmpty","_R","_G","_B","pdfFont","Bold","Italic","Strikeout","Style","Underline","ImageStructureBase","m_isImageStreamParsed","m_isImageInterpolated","isDualFilter","numberOfComponents","m_imageStream","m_imageDictionary","getImageStream","ImageDictionary","getImageInterpolation","imageFilter","setImageFilter","imageUnit8Array","imageStream","m_imageFilter","colorSpace","setColorSpace","m_colorspace","getColorSpace","internalColorSpace","getImageFilter","imageDictionary","_ContentParser","_recordCollection","_operands","_lexer","_readContent","_parseObject","eof","tokenType","_getNextToken","_operatorParams","real","unicodeHexString","unicodeString","operator","_createRecord","beginArray","endArray","operand","_PdfRecord","_ContentLexer","_tokenType","_currentCharacter","_nextCharacter","_moveToNextChar","_getComment","_getName","_getLiteralString","_getNumber","_getEncodedDecimalString","_getOperator","_consumeValue","_getNextChar","_isOperator","beginChar","_getLiteralStringValue","startChar","endChar","parentLevel","parenthesesCount","operands","_operator","PageRenderer","shapeAnnotationList","textMarkupAnnotationList","measureAnnotationList","stickyAnnotationList","rubberStampAnnotationList","freeTextAnnotationList","signatureAnnotationList","signatureInkAnnotationList","isMaskedImage","annotationDestPage","annotationYPosition","isAnnotationPresent","htmldata","exportAnnotationComments","getAnnotationFromPDF","IsStampExist","annotRenderer","textLabelCollection","loadedFreetextAnnotations","getAllFreeTextAnnotations","setAnnotationName","shapeLabel","getShapeFreeText","shapes","StampAnnotationBase","rubberStampAnnotationAngle","getRubberStampBounds","_innerTemplateBounds","IconName","i_2","ap_dictionary","IsMaskedImage","stickyNote","freeTextAnnot_1","isFreeTextAnnotationType","isShapeLabelAnnot","freeText","canAdd","parser","stampAnnoattionRender","recordCollection","restorecanvas","currentFontname","currentFont","baseFontName","stdic","fontObject","name_7","refernceholder","sub","xObject","name_8","imageStucture","imagedata","Imagedata","innerTemplateBounds","centerPointX","centerPointY","boundsX","boundsY","shapeName","annotType","getArialFontData","arialFontData","FormFieldsBase","digitalSignatruePresent","formFieldLoadedDocument","m_isDigitalSignaturePresent","drawFreeTextAnnotations","textSignature","isAnnotationFlattern","textData","boundsObject","fontFamilyEnum","family","signatureImage","saveFormFieldsDesignerData","myList","initialCount","_fields","loadedForm","formFieldPage","fieldAt","signField","signed","isSigned","removeField","addFormFieldsToDocument","setDefaultAppearance","saveFormFieldsData","currentFieldName","actualFieldName","fieldName","isExists","optionArray","editable","selectedValue","fields","fieldValueString","fieldValue","readonly","checkBoxField","integerValue","checkBoxField_1","drawFieldFreeTextAnnotations","drawFieldImage","drawFieldPath","signatureFieldListCount","formFieldAttributes","saveTextBoxField","SaveCheckBoxField","saveRadioButtonField","saveDropDownField","saveListBoxField","saveSignatureField","textboxName","convertFieldBounds","isFieldRotated","fieldBounds","getTextAlignment","getFormFieldsVisibility","Multiline","pdfFontStyle","hasUnicode","getTrueFont","getFormfieldRotation","dropdownListName","dropDownListbounds","comboBox","itemName","checkboxFieldName","checkBounds","listBoxName","listBounds","listBox","isSelectedItem","radioButtonName","radioButtonItem","GetRotateAngle","signatureFieldName","signatureFieldBounds","signatureField","drawDesignerFieldFreeTextAnnotations","drawDesignerFieldImage","drawDesignerFieldPath","boundsObjects","signatureBound","freeTextBounds","setFontSize","minimumFontSize","sizeF","lineBound","fieldVisibility","convertPointtoPixel","fontConvert","parseFontStyle","numberValue","GetFormFields","orderFormFields","addTextBoxFieldItems","addTextBoxField","comboBoxField","addComboBoxField","addCheckBoxFieldItems","addCheckBoxField","listBoxField","addListBoxField","page_1","addRadioButtonField","addSigntureFieldItems","addSignatureField","retrieveInkAnnotation","textBoxField","PdfRenderedFields","ToolTip","TabIndex","BorderWidth","IsTransparent","BackColor","Alignment","MaxLength","Visible","InsertSpaces","IsRequired","TextList","IsAutoSize","_isAutoFontSize","Selected","SelectedValue","chkField","checkBoxIndex","GroupName","CheckBoxIndex","chekckboxField","itemCount","SelectedList","MultiSelect","checkTransparent","fontSizes","IsSignatureField","IsInitialField","inkListX","inkListY","ap_Dictionary","CheckBoxGroupName","SignatureBase","saveSignatureData","formfields","signatureDetails","getSignatureBounds","p_1","dataPath","currentY","newPoint2","saveSignatureAsAnnotatation","formfields_1","p_2","highestY","BookmarkBase","HasChild","BookmarkDestination","BookmarkStyles","_PdfDecodeStream","maybeMinBufferLength","_rawMinBufferLength","bufferLength","minBufferLength","ensureBuffer","requested","buffer2","bufEnd","PdfPredictorStream","maybeLength","params","predictor","readBlockTiff","readBlockPng","columns","pixBytes","rowBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","compArray","bitMask","kk","prevRow","upLeft","pa","pb","pc","codeLenCodeMap","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","_PdfFlateStream","cmf","flg","codeSize","codeBuffer","getBits","getCode","maxLen","codeLen","codeVal","generateHuffmanTable","maximumLength","code2","litCodeTable","distCodeTable","hdr","blockLen","block","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","bitsLength","bitsOffset","what","repeatLength","code1","maxCacheLength","maxNumberLength","endOfFile","specialChars","_PdfLexicalOperator","nextChar","_hexStringNumber","beginInlineImagePosition","peekChar","getNumber","eNotation","divideBy","baseValue","powerValue","powerValueSign","currentDigit","numParen","charBuffered","getName","previousCh","_toHexDigit","getHexString","firstDigit","secondDigit","isFirstHex","getObject","nextCh","possibleCommand","peekObj","nextObj","streamPos","ex","skipToNextLine","_PdfParser","lexicalOperator","allowStreams","recoveryMode","imageCache","refill","tryShift","cipherTransform","makeInlineImage","isEnd","_checkEnd","makeStream","decryptString","findDiscreteDecodeInlineStreamEnd","markerLength","startPos","foundEnd","findDefaultInlineStreamEnd","inlineStreamSkipEI","findDecodeInlineStreamEnd","tildePos","maybeEI","findHexDecodeInlineStreamEnd","dictLength","filterName","filterZero","cacheKey","imageBytes","initialStreamPos","dictBytes","_computeMaxNumber","cacheEntry","createStream","bytesLength","endStreamSignature","actualLength","_findStreamLength","truncatedSignature","lastByte","makeFilter","filterArray","paramsArray","signatureLength","scanBytes","scanLength","endImagePosition","followingBytes","ii","endOffset","_Linearization","obj2","obj3","getInt","hints","getHints","objectNumberFirst","endFirst","mainXRefEntriesOffset","pageFirst","allowZeroValue","hintsLength","hint","_PdfDecryptStream","cipher","_chunkSize","_cipher","_nextChunk","_initialized","hasMoreData","_decryptBlock","_PdfEncryptor","_isUserPassword","_hasUserPasswordOnly","_encryptOnlyAttachment","_encryptMetaData","_defaultPasswordBytes","_filterName","algorithm","_algorithm","keyLength","cfDictionary","streamCryptoName","handlerDictionary","ownerPassword","userPassword","revision","passwordBytes","encryptionKey","fileIdBytes","encodeURIComponent","_prepareKeyData","decodedPassword","_decodeUserPassword","ownerEncryptionKey","algorithm_1","ownerValidationKey","ownerValidationSalt","ownerKeySalt","userValidationKey","uBytes","userValidationSalt","userKeySalt","ownerEncryption","userEncryption","_checkUserPassword","_createEncryptionKey","_checkOwnerPassword","cipherDictionary","standardCryptFilter","event_1","_cipherDictionary","_string","_eff","_encryptionKey","_messageDigest","_MD5","isUserKey","_getUserKey","_getOwnerKey","encryptMetaData","hashData","_md5","keyLengthInBytes","checkData","_NormalCipherFour","_encryptBlock","derivedKey","_createCipherTransform","stringCipher","_buildCipherConstructor","streamCipher","_buildObjectKey","cfm","cryptFilter","_NullCipher","_AdvancedEncryption128Cipher","_AdvancedEncryption256Cipher","isAdvancedEncryption","_r","_k","h0","h2","h3","paddedLength","padded","_Sha256","_rotateRight","_sigma","_sigmaPrime","_littleSigma","_littleSigmaPrime","_hash","h4","h5","h6","h7","t1","t2","_Sha512","_Word64","rotateRight","xor","shiftRight","isMode384","buffer3","buffer1","and","not","copyTo","or","places","shiftLeft","lowAdd","highAdd","_EncryptionKey","_sha256Obj","_sha512Obj","_BasicEncryption","userBytes","_sha256","_AdvancedEncryption","encrypted","combinedLength","combinedArray","writeOffset","k1","_encrypt","remainder","_sha512","_Cipher","_AdvancedEncryptionBaseCipher","_inverseS","_mix","_mixC","_decrypt","_keySize","_cyclesOfRepetition","s0","s3","_mixCol","_decryptBlockHelper","finalize","sourceLength","iv","_iv","plain","outputLength","_expandKey","cipherKey","rcon","t3","t4","_CipherTransform","_stringCipher","_streamCipher","encryptString","pad","repeat","_PdfCrossReference","_entries","_crossReferencePosition","_pendingRefs","_setStartXRef","startXRef","_startXRefQueue","_prevStartXref","_parse","trailerDictionary","_indexObjects","_readXRef","_nextReferenceNumber","_trailer","encrypt","_isEncrypted","_ids","_permissionFlags","fileId","_fileStructure","_crossReferenceType","hasRoot","pagesEntry","_root","_getEntry","xrefEntry","uncompressed","_fetchUncompressed","_fetchCompressed","tableOffset","nums","offsets","startXRefParsedCache","_processXRefTable","_topDictionary","_processXRefStream","_readToken","lf","cr","_skipUntil","dataLength","skipped","percent","objRegExp","endobjRegExp","nestedObjRegExp","checkContentLength","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailerDict","trailers","crossReferencePosition","contentLength","updateEntries","subStream","_PdfObjectInformation","endPos","checkPos","tokenStr","objToken","xrefTagOffset","rootDict","pagesDict","_tableState","tableState","_PdfCrossTableState","entryNum","parserBuf1","parserBuf2","_readXRefTable","topDictionary","firstEntryNum","entryCount","_streamState","streamParameters","streamState","_PdfStreamState","entryRanges","byteWidths","_readXRefStream","typeFieldWidth","offsetFieldWidth","generationFieldWidth","generation","typeByte","offsetByte","generationByte","_getCatalogObj","currentLength","updatedCount","uncompressedCount","updatedStream_1","archiveXRef_1","indexes_1","collection_1","uncompressedOffsets_1","cipher_1","_allowCatalog","archiveOffset","archiveRef","newDict","cipher_2","archiveStream","newRef","newStartXref","newXref","_copyTrailer","_computeMessageDigest","newXrefData","_writeLong","newXrefStream","tempBuffer_1","offsetString","genString","_writeDictionary","time","crossReferenceInfo","isCrossReference","_writeStream","spaceChar","_writeFontDictionary","_writeValue","streamBuffer","dataArray","sw","getCompressedString","value_1","_escapeString","_PdfCatalog","_catalogDictionary","_topPagesDictionary","pageKidsCountCache","pageIndexCache","_createForm","getPageDictionary","nodesToVisit","visitedNodes","pagesRef","currentNode","count_1","kids","PdfForm","_hasKids","_exportEmptyFields","_fieldCollection","_signFlag","_parsedFields","_createFields","_needAppearances","fieldFlags","_signatureFlag","signatureExists","appendOnly","removeFieldAt","setTabOrder","_tabCollection","fieldCollection","_getFields","_sortItemByPageIndex","fieldsCount_1","pdfField1","pdfField2","_compareFields","_getOrder","nodes","fieldKids","kidsDict","isNode","_isNode","subtype","_widgetReferences","fieldReference","kidReference","kidDictionary","_getFieldIndex","_fieldNames","_indexedFieldNames","_actualFieldNames","_indexedActualFieldNames","nameIndex","field1","field2","xdiff","page1","page2","page1Index","page2Index","rectangle1","_getItemRectangle","_getRectangle","rectangle2","firstHeight","secondHeight","_compare","field1Index","field2Index","_compareKidsElement","yDictionary","xRect","yRect","hasPageTabOrder","_sortFieldItems","item1","item2","_compareFieldItem","_XmlWriter","_bufferText","_namespaceStack","_elementStack","_currentState","_skipNamespace","_Namespace","_XmlElement","_attributeStack","_writeStartDocument","standalone","_rawText","_writeStartElement","localName","prefix","namespace","_checkName","_startElementContent","_lookupPrefix","_lookupNamespace","_writeStartElementInternal","_writeEndElement","_writeEndElementInternal","_prefix","_localName","_previousTop","_writeElementString","_writeAttributeString","_writeStartAttribute","_writeStringInternal","_writeEndAttribute","_writeInternal","_writeRaw","isRawString","_writeStartAttributePrefixAndNameSpace","_writeStartAttributeSpecialAttribute","_skipPushAndWrite","_pushNamespaceExplicit","_pushNamespaceImplicit","_writeStartAttributeInternal","_writeNamespaceDeclaration","namespaceUri","_writeStartNamespaceDeclaration","inAttributeValue","_kind","_namespaceUri","_addNamespace","ns","kind","_lookupNamespaceIndex","existingNsIndex","_addAttribute","namespaceName","_XmlAttribute","_isDuplicate","previousTop","_ExportHelper","_asPerSpecification","_formKey","_groupReferences","_groupHolders","_richTextPrefix","_table","_richTextValues","_jsonData","_openingBrace","_openingBracket","_closingBrace","_closingBracket","_colon","_doubleQuotes","_comma","_space","fdfString","_xmlImport","_exportFormFieldsData","export","_getEncodedFontDictionary","_getEncodedValue","_getExportValue","radioButton","_exportFormFieldData","replaceValue","_getAnnotationType","_getValue","_getValidString","_getColor","kid","_encodeDictionary","_replaceNotUsedCharacters","pdfEncoding","encodingDictionary","fontEncodeDictionary","differencesDictionary","result_1","isSkip_1","updatedString","_fontType","_baseFontEncoding","_fontEncoding","_addReferenceToGroup","_handlePopup","popupReference","popup","_importField","richTextValue","_importFieldData","selectedValues_1","options_1","AP","lowerCase","_containsExportValue","_checkSelected","asEntry","_dispose","exportAppearance","_skipBorderStyle","_isAnnotationExport","_isAnnotationImport","_annotationTypes","_annotationAttributes","_xmlDocument","_parser","_XfdfDocument","_exportAnnotations","_exportFormFields","_checkAnnotationType","_exportAnnotationData","exportEmptyFields","_writeFormFieldData","isAcrobat","_getElements","flag_1","_writeFieldName","hasId","parentElements","newTable","_writeAnnotationData","hasAppearance","isBorderStyle","_writeAttribute","_getAppearanceString","_exportMeasureDictionary","sound","soundDictionary","fsDictionary","efDictionary","fStream","fDictionary","_writeRawData","defaultStyle","textWriter","_writeAppearanceDictionary","_writePrefix","_writeArray","streamDictionary","_getFormatedString","isParsing","_writeColor","isLowerCase","_exportMeasureFormatDetails","measurementDetails","_importAnnotations","xml","DOMParser","parseFromString","_readXmlData","_importFormData","_checkXfdf","childeNodes","_parseAnnotationData","inReplyTo","IRT","_parseFormData","fileNameElement","hasAttribute","fieldList","filedElement","_importFormNodes","textName","dataValues","richText","hasAttributes","_getAnnotationDictionary","isValidType","_addLineEndStyle","_addAnnotationData","_addBorderStyle","_applyAttributeValues","_parseInnerElements","_addMeasureDictionary","borderEffectDictionary","borderStyleDictionary","isBasicStyle","dashes_1","leaderExtend","_addString","_obtainPoints","_addInt","_addFloatPoints","_addFloat","annotFlag","flagType","_allowImportCustomData","popupDictionary","vertices_1","innerValue","verticesArray_1","_addAppearanceData","inkListCollection","_loop_2","inkChild","inkChildElement","pointsArray_1","_addStreamData","raw","_addFileAttachment","_addSound","soundStream","soundReference","fileStream","param","fileReference","rootNode","rootElement","_getAppearance","_getStream","_addKey","_getDictionary","_getArray","_getFixed","_getInt","_getBoolean","_getData","isImage","Length","_addArrayElements","floatValue","intValue","bool","measurement","xformat","dDict","aDict","xDict","dArray","aArray","xArray","_addElements","lineEndingStyles","_FontStructure","_differencesDictionary","_getDifferencesDictionary","_getFontEncoding","baseFontEncoding","fontEncoding","differences","_decodeHexFontName","hexValue","_JsonDocument","_exportAnnotation","_convertToJson","rectArray","_writeInkList","_writeVertices","styleTable","textStyle","vertice","json","parentTable","appearanceTable","_writeTable","array_1","_convertToJsonArray","dataTable","streamTable","_parseJson","stringData","pageAnnotations_1","pageCount_1","pageKeys","pageAnnotation","pageAnnotationKeys","annotationKeys","annotations_1","outColor","dataStream","_addLinePoints","color_1","_parseFloatPoints","_addBoolean","styleKeys_1","style_1","styleKey","styleValue","gestureKeys","gesture","tArray","vArray","_readDictionaryElements","soundStream_1","fileDictionary_1","fileStream_1","param_1","encoded","decoded","_parseDictionary","_parseAppearance","int","fixed","boolean","dict","_parseStream","dataKeys","byteString","_FdfDocument","_annotationObjects","_specialCharacters","objectID","objectArray","_stringToHexString","ArrayBuffer","_checkFdf","_readFdfData","FDF","Fields","mappedObjects","trailer","rootKey","fdf","genNumber","startDictionary","_FdfHelper","startObject","endObject","_annotationID","streamReference","annotValue","_getEntries","_appendStream","compressString","listDictionary","_getFormattedString","_appendArray","value_2","_appendElement","bytesValue","PdfBookmarkBase","_bookMarkList","_isExpanded","_isLoadedBookmark","_reproduceTree","bookmark","_getFirstBookmark","isBookmark","_next","bookmarkBase","bookMark","bookmarkBaseDictionary","bookMarkDictionary","PdfBookmark","destinationArray","namedDestination","_obtainNamedDestination","_namedDestination","_title","_obtainTitle","_textStyle","_obtainTextStyle","nextBookmark","destinationCollection","_destinationCollection","namedDestinations","_namedDestinations","PdfNamedDestination","_PdfNamedDestinationCollection","_addCollection","destinationElement","destinationObject","_XmlDocument","_checkXml","xmlDocument","PdfFileStructure","PdfDocument","_headerSignature","_startXrefSignature","_endObjSignature","_permissions","_allowCustomData","_pages","_checkHeader","_startXRef","_linear","err","_linearization","_find","startXRefLength","found","_pageCount","_catalog","catalog","outlines","_bookmarkBase","cachedPage","_getLinearizationPage","filename","blobData","settings","_doPostProcessOnAnnotations","dataFormat","xfdf","exportFormData","_doPostProcessOnFormFields","exportName","asPerSpecification","importFormData","_namedDestinationCollection","reason","backwards","signatureEnd","formObject","Annots","_addWatermarkText","PdfAnnotationExportSettings","_exportAppearance","PdfFormFieldExportSettings","_exportName","PdfRenderer","bookmarkStyles","bookmarkCollection","pageRotationCollection","bookmarkDictionary","annotationDetailCollection","m_isCompletePageSizeNotReceieved","securityList","_fallbackFontCollection","m_referencePath","loadedBase64String","jsonResult","getPageSizes","pdfRenderedFormFields","m_formFields","documentSecurity","digitialByteArray","isOwnerPassword","isEncrypted","isUserPassword","isOwner","permissionList","getPermissionArray","permissions","isExist","permission","permissionArray","fullQualityPrint","assembleDocument","accessibilityCopyContent","fillFields","editAnnotations","copyContent","editContent","digitalSignatureDocumentEdited","annotationRenderer","orderAnnotations","Annotations","removeAnnotationsFromCollection","returnAnnot","changeFileExtension","newExtension","lastDotIndex","nameWithoutExtension","annotationDetails","textMarkupDetails","textMarkupAnnotations","shapeDetails","stampdetails","stamp","measureShapeAnnotations","freeTextDetails","FallbackFontCollection","isFormFieldAnnotationsExist","startPageIndex","endPageIndex","getBookmarks","bookmarks","retrieveFontStyles","pdfLoadedBookmark","parentBookmarkDestination","bookmarkDestination","Zoom","parentBookmark","Id","Title","Child","FileName","getChildrenBookmark","Bookmarks","BookmarksDestination","Bookmarkstyles","listElement","isChild","currentStyles","getPdfTextStyleString","IsChild","getChildrenStyles","childBookmarkCollection","childBookmarkDestination","yPosition","childrenBookmark","childrenBookmarkDestination","exportHyperlinks","isExport","isAnnotationNeeded","pdfLoadedUriAnnotation","getHyperlinkBounds","pdfLoadedTextWebLinkAnnotation","pdfLoadedDocumentLinkAnnotation","linkPageIndex","isObjects","exportDataFormat","exportFormFieldObject","fileFormat","isBase64","isUint8Array","encoder","TextEncoder","uint8ArrayLike","base64Regex","exportFormat","fileExtention","exportAsImage","pdfiumExportAsImage","exportAsImages","pdfiumExportAsImages","imageUrls_1","extractText","isLayout","isRenderText","extractedText","textDataCollection","characterDetails","TextData","extractedTextDetails","extractTextWithPageSize","extractTextDetailsWithPageSize","pageTextDataCollection","PageTextData","IsLinuxOS","IsWindowsOS","PageSize","FormFields","maintainTabIndex","maintanMinTabindex","isSignatureField","paddingDifferenceValue","indicatorPaddingValue","isKeyDownCheck","signatureFontSizeConstent","isSignatureRendered","isImportFormField","maxTabIndex","minTabIndex","rgbaToHex","rotateFieldAngle","getAngle","foreColor","borderRGB","IsTansparentBorderColor","elementValue","fieldProperties","getListValues","fieldType","getFormFieldType","addedElement1","addFormField","addSignaturePath","renderExistingAnnnot","createFormFields","inputField","signCount","createParentElement","font_1","applyPosition","font_2","letterSpacing","setToolTip","applyCommonProperties","checkIsReadonly","applyTabIndex","checkIsRequiredField","applyDefaultColor","updateFormFieldsCollection","focusFormFields","blurFormFields","updateFormFields","changeFormFields","updateFormFieldsValue","updateSameFieldsValue","goToBookmark","rgba","inParts","outParts","part","listItem","signatureFieldNavigate","nextSign","isNextSignField","getSignatureIndex","currentSignatureIndex","isNextSign","isFirstNavigate","renderSignatureField","currentSignIndex","curSignIndex","curSignIndexId","signatureFieldData","isRender","findRenderPageList","isRender_1","retreiveFormFieldsData","retriveFieldName","retriveCurrentValue","isCollection","addedElement","updateFormFieldValues","updateDataInSession","datas","fieldDatas","CheckboxIndex","childItems","childItemsText","m_1","lineBounds","backgroundcolor","currentColor","webkitAppearance","fireButtonFieldClickEvent","fontname","targetBounds","parentElementBounds","targetName","this_2","currentField_1","signatureAdd_1","signatureField_1","nextSibling","isInitialFieldToolbarSelection","signatureFontFamily_1","signatureFontSize_1","currentValue_1","currentPage_1","signString_1","rotateAngleString","rotateAngle_1","getSignBounds","getDefaultBoundsforSign","imageOnLoad","updateSignatureDataInSession","signString","signatureFontSize","imageHeight","beforeWidth","beforeHeight","_loop_3","this_3","updateFormFieldCollections","updateFormFieldPropertiesChanges","isDraw","signIcon","signLeft","nextFields","currentFields","istabindexed","tabindex","fieldIndex_1","currentTarget_2","signaturePath","filterFields","fieldsByName","filterFieldName","filterArrayLength","FormFieldsData","currentType","targetCheckBox","filterCheckBoxSameName","sameNameCheckboxField","childrens","selectedOptions","Required","updateFormDesignerFieldInSessionStorage","buttonItem","sameButtonItemId","otherButton","inputdiv","signIconWidth","signIconHeght","hightDifference","widthDifference","printContainer","createTextBoxField","createRadioBoxField","createDropDownField","createListBoxField","createSignatureField","createButtonField","isURL","imageSrc","resize","addAlignmentPropety","enableAutoComplete","autocomplete","formFieldsReadOnly","makeformFieldsReadonly","addBorderStylePropety","multiple","signIndicator","signatureFieldIndicatorWidth","span","indicatorWidth","indicatorHeight","signData","getBoundsPosition","newBounds","updateSignatureBounds","bound_1","tempBounds","deleteAnnotationById","signatureFieldElement","resetFormFields","formFieldData","clearFormFields","isFirstRadio","ImageElement","imageScale","imageAlign","stretch","DrawingRenderer","isSvgMode","htmlLayer","createParent","indexValue","renderContainer","renderImageElement","renderPathElement","renderTextElement","renderRect","sourceWidth","sourceHeight","getBaseAttributes","contentWidth","contentHeight","heightRatio","parentG","gradient","Canvas","leftMargin","topMargin","outerBounds","childX","childY","alignChildBasedOnParent","alignChildBasedOnaPoint","parentSize","DiagramHtmlElement","nodeTemplate","templateFn","templateCompiler","getNodeTemplate","Drawing","isDynamicStamps","svgRenderer","renderLabels","initObject","createNewZindexTable","notFound","setZIndex","tabelLength","initLine","initNode","initContainer","pathContent","basicElement","initFormFields","initAnnotationObject","htmlContent","textLabel","stampStrokeColor","textele_1","pathContent1","content1","pathContent11","setNodePosition","radiusTextEle","pathContent2","rectElements","signatureText","rectElement","freeTextEle","srcDecorator","targetDecorator","anglePoints","getPageObjects","fireFormFieldRemoveEvent","removeFieldsFromAnnotationCollections","diagramLayer","objectId","lineCap","lineJoin","devicePixelRatio_1","zoomRatio","clearHighlighter","adornerSvg","getAdornerLayerSvg","highlighter","getSelectorElement","adornerLayer","elementcoll","adornerLayerSvg","clearSelectorLayer","selectionRect","isSelect","selectorModel","selectorElement","renderResizeHandle","thumbsConstraints","fireFormFieldSelectEvent","isProgrammaticSelection","renderEndPointHandle","selectSignature","rotateObjects","includeParent","objects_1","getParentSvg","shownBorder","isSelectInAllowed","allowedInteraction","updateAnnotationAllowedInteractions","checkIsLockSettings","renderBorder","enableNode","isBorderTickness","isSwimlane","shapeType","annotationSelector","selectionBorderColor","selectionBorderThickness","lineDash","selectorLineDashArray","getBorderSelector","getSignBorder","checkBorder","borderColor_1","lineDash_1","borderColor_3","lineDash_3","borderColor_4","lineDash_4","borderColor_5","lineDash_5","stickyNotesSettings","borderColor_6","lineDash_6","borderColor_7","lineDash_7","borderColor_2","lineDash_2","renderCircularHandle","connected","canMask","getResizerColors","getShapeSize","getShape","resizerSize","resizerShape","resizerBorderColor","resizerFillColor","renderRotateThumb","selectorConstraints","circleHandle","constraints","currentZoom","nodeConstraints","isFreeText","renderPivotLine","nodeWidth","nodeHeight","allowPermission","getAllowedInteractions","getResizerLocation","ResizeNorthWest","ResizeNorthEast","ResizeSouthWest","ResizeSouthEast","ResizeNorth","ResizeSouth","ResizeWest","ResizeEast","connectedSource","connectedTarget","isSegmentEditing","ConnectorSource","initSelectorWrapper","multipleSelection","preventUpdate","drag","dragAnnotation","newDiff","moveInsideViewer","dragControlPoint","segmentNumber","updateEndPoint","updateConnector","fontSizeCalculation","i_3","i_4","i_5","i_6","i_7","i_8","setLineDistance","i_9","i_10","textFromCommentPanel","i_11","childNodeHeight","heightDiff","contString","childHeight","textwidth","newsize","node1","scaleAnnotation","scaleObject","sh","refObject","isResize","refWrapper","newPosition","getShapePoint","txNew","tyNew","nodeBounds","selectorBounds","heightDifference","RestrictStamp","getShapeBounds","shapeBounds","shapeCorners","shapeMiddleLeft","shapeTopCenter","shapeBottomCenter","shapeMiddleRight","shapeTopLeft","shapeTopRight","shapeBottomLeft","shapeBottomRight","cornerPoint","pivotPoint","transformMatrix","targetPortId","rotatedPoint1","rotatedPoint2","dragSourceEnd","anglePoint","pasteIndex","copyObjects","selectedItems_1","sortByZIndex","getNewObject","newObj","newobjs","zoomfactor","copiedItems","objectTable","copiedItems_1","splitFormFieldName","maxNumber","setFormFieldIndex","events","calculateCopyPosition","newNode","updateAnnotationCollection","addedAnnot","triggerAnnotationAddEvent","removedAnnotationCollection","nodeArray","sortID","ToolbarSettings","CustomToolbarItem","AjaxRequestSettings","CustomStamp","AnnotationToolbarSettings","FormDesignerToolbarSettings","SignatureFieldSettings","InitialFieldSettings","SignatureIndicatorSettings","SignatureDialogSettings","ServerActionSettings","StrikethroughSettings","UnderlineSettings","HighlightSettings","LineSettings","ArrowSettings","RectangleSettings","CircleSettings","ShapeLabelSettings","PolygonSettings","StampSettings","CustomStampSettings","DistanceSettings","move","PerimeterSettings","AreaSettings","RadiusSettings","VolumeSettings","InkAnnotationSettings","StickyNotesSettings","MeasurementSettings","FreeTextSettings","Corners","Edges","TextSearchColorSettings","HandWrittenSignatureSettings","DocumentTextCollectionSettings","TextDataSettings","RectangleBounds","TileRenderingSettings","ScrollSettings","ContextMenuSettings","TextFieldSettings","PasswordFieldSettings","CheckBoxFieldSettings","RadioButtonFieldSettings","DropdownFieldSettings","ListBoxFieldSettings","Item","PdfViewer","isTextSelectionStarted","defaultLocale","navigationModule","getUniqueElementId","workerBob","workerBlobUrl","Worker","getScriptPathForPlatform","renderComponent","resourceUrl","protocol","host","pathname","trimmedPathname","baseUrl","isAngular","isVue","isVue3","getRunningScript","stack","scriptLinkURL","splitURL","getLocaleConstants","setJsonData","isDestroyed","applyToolbarSettings","applyAnnotationToolbarSettings","applyFormDesignerToolbarSettings","applyToolbarSettingsForMobile","applyMobileAnnotationToolbarSettings","notify","module","enableCommentPanelTool","renderCustomerStamp","customStamp","customStamps","setMode","updateTextMarkupSettings","updateSignatureSettings","updateTextFieldSettings","updatePasswordFieldSettings","updateCheckBoxFieldSettings","updateRadioButtonFieldSettings","updateDropDownFieldSettings","updateListBoxFieldSettings","resetFormDesignerToolbar","showFormDesignerToolbar","createCustomStampAnnotation","requiredModules","member","enableFormDesignerToolbar","enableBookmark","enableFormDesigner","focusElement","fieldCollections","retrieveFormFields","isformDesignerModuleListBox","radioButtonOption","updateFormField","checkBoxOption","dropDownListOption","initialType","getFormFieldByID","isSameValue","fieldData","SelectedListed","updateSignatureValue","proxy_2","refreshing","isXfdfFile","importAnnotationsAsJson","newImportData","imporedAnnotation","exportAnnotationsAsBase64String","JsonData","buttonFieldValue","buttonFieldName","isLeftClick","formFieldCollectionsValue","triggerEvent","fireFormFieldAddEvent","fireFormFieldPropertiesChangeEvent","isValueChanged","isFontFamilyChanged","isFontSizeChanged","isFontStyleChanged","isColorChanged","isBackgroundColorChanged","isBorderColorChanged","isBorderWidthChanged","isAlignmentChanged","isReadOnlyChanged","isVisibilityChanged","isMaxLengthChanged","isRequiredChanged","isPrintChanged","isToolTipChanged","oldValue","newValue","isNamechanged","isNameChanged","documentName","isPasswordRequired","errorStatusCode","previousPageNumber","fireZoomChange","fireHyperlinkClick","hyperlink","hyperlinkElement","fireHyperlinkHover","fireAnnotationAdd","tmStartIndex","tmEndIndex","multiPageCollection","annotationBound","multiplePageCollection","fireAnnotationRemove","fireBeforeAddFreeTextAnnotation","fireCommentAdd","fireCommentEdit","fireCommentDelete","fireCommentSelect","fireCommentStatusChanged","statusChange","fireAnnotationPropertiesChange","isOpacityChanged","isTextChanged","isCommentsChanged","fireSignatureRemove","fireSignatureMove","fireSignaturePropertiesChange","isStrokeColorChanged","isThicknessChanged","fireSignatureResize","fireSignatureSelect","fireAnnotationSelect","fireAnnotationDoubleClick","fireTextSelectionEnd","fireAnnotationResize","fireAnnotationMoving","fireAnnotationMove","downloadData","firePrintStart","eventName","firePrintEnd","fireThumbnailClick","fireCustomToolbarClickEvent","fireBookmarkClick","exportData","fireTextExtractionCompleted","documentCollection","fireTextSearchStart","searchText","isMatchcase","matchCase","fireTextSearchComplete","fireTextSearchHighlight","clearCurrentAnnotationSelection","selectormodel","clearCurrentSelectedAnnotation","zoomToRect","clearBulkChanges","bulkChanges","toolbarItems","annotationToolbarItems","formDesignerToolbarItems","renderThumbnail","renderComments","initialIndicatorSettings","enableMultiPageAnnotation","enableTextMarkupResizer","lineHeadStartStyle","lineHeadEndStyle","labelHeight","labelMaxWidth","dynamicStamps","Revised","Reviewed","Received","Confidential","Approved","NotApproved","signStamps","Witness","InitialHere","SignHere","Accepted","Rejected","standardBusinessStamps","Draft","Final","Completed","ForPublicRelease","NotForPublicRelease","ForComment","Void","PreliminaryResults","InformationOnly","resizeCursorType","defaultText","allowTextOnly","conversionUnit","displayUnit","scaleRatio","searchHighlightColor","searchColor","signatureItem","saveSignatureLimit","saveInitialLimit","skipPrint","skipDownload","Comment","Copy","Cut","Delete","Highlight","Paste","Properties","ScaleRatio","Strikethrough","modelProps","testProp","props","watch","emitProbs","modelProps_1","props_1","PdfViewerComponent","mixins","emits","provide","custom","ej2Instances","propKeys","models","hasChildDirective","hasInjectedModules","tagMapper","tagNameMapper","templateCollection","bindProperties","_setProperties","updated","slots","$slots","methods","templateNames","templateNames_1","tempName","elementCollection","elementCollection_1","__vue__","$destroy","muteOnChange","referModels","model","vueInstance","$emit","PdfViewerPlugin","install","Vue","component","VMENU","SCROLLABLE","HAMBURGER","Menu","tempItems","isMenu","clearChanges","updateMenuItems","orientation","hamburgerMode","previousElementSibling","enableScrolling","createMenuItems","createHeaderContainer","setBlankIconStyle","idx","pIdField","getField","getIndex","openHamburgerMenu","closeHamburgerMenu","itemId","parentId","TAGNAME","SplitButton","ejInstance","btn","nodeValue","initWrapper","createPrimaryButton","renderControl","createSecondaryButton","setActiveElem","secondaryBtnObj","setAria","addItems","removeItems","isUniqueId","btnModel","iconPosition","primaryBtnObj","btnElem","dropDownBtnModel","createPopupOnClick","relateTo","callBackPromise","Deferred","isPopupCreated","activeElem","toggle","primaryBtnClickHandler","keyAction","btnKeyBoardHandler","keyConfigs","altdownarrow","enter","clickHandler","getPopUpElement","focusIn","TicksData","ColorRangeData","LimitData","TooltipData","bootstrapTooltipOffset","bootstrap4TooltipOffset","sliderHiddenInput","controlWrapper","sliderHandle","rangeBar","sliderButton","firstButton","secondButton","tick","large","tickValue","sliderTooltip","sliderHover","sliderFirstHandle","sliderSecondHandle","sliderDisabled","sliderContainer","horizontalTooltipBefore","horizontalTooltipAfter","verticalTooltipBefore","verticalTooltipAfter","materialTooltip","materialTooltipOpen","materialTooltipActive","materialSlider","sliderTrack","sliderHorizantalColor","sliderVerticalColor","sliderHandleFocused","verticalSlider","horizontalSlider","sliderHandleStart","sliderTooltipStart","sliderTabHandle","sliderButtonIcon","sliderSmallSize","sliderTickPosition","sliderFirstTick","sliderLastTick","sliderButtonClass","sliderTooltipWrapper","sliderTabTrack","sliderTabRange","sliderActiveHandle","sliderMaterialHandle","sliderMaterialRange","sliderMaterialDefault","materialTooltipShow","materialTooltipHide","limits","limitBarDefault","limitBarFirst","limitBarSecond","dragHorizontal","dragVertical","Slider","horDir","verDir","transition","handle","transitionOnMaterialTooltip","customAriaText","isDragComplete","initialTooltip","localeText","incrementTitle","decrementTitle","l10n","isElementFocused","tickElementCollection","tooltipFormatInfo","ticksFormatInfo","initCultureInfo","initCultureFunc","formChecker","formElement","formResetValue","internationalization","ticks","formatString","formatInfo","formatValue","formatNumber","numberOfDecimals","getNumberFormat","makeRoundNumber","elementVal","maximumFractionDigits","minimumFractionDigits","useGrouping","decimalPart","precision","decimals","fractionalToInteger","noOfDecimals","tens","initRender","setZindex","setCSSClass","setElementWidth","oldCSSClass","setEnabled","isVisible","showOn","getThemeInitialization","setHandler","createRangeBar","createLimitBar","setOrientClass","hiddenInput","showButtons","setButtons","setEnableRTL","rangeValueUpdate","previousVal","checkHandleValue","previousChanged","setLimitBar","placement","renderScale","renderTooltip","isMaterial","isMaterial3","isBootstrap","isBootstrap4","isTailwind","isBootstrap5","isFluent","isMaterialTooltip","firstElementClassName","firstHandle","secondHandle","setAriaAttributes","customValues","range","createSecondHandle","createFirstHandle","materialHandle","wireFirstHandleEvt","handleFocus","transitionEnd","handleOver","handleLeave","wireSecondHandleEvt","handleStart","handlePos1","propertyName","enableAnimation","getHandle","tooltipToggle","closeTooltip","handleFocusOut","focusSliderElement","sliderBarClick","sliderBarMove","sliderBarUp","preDir","currDir","setBarColor","tooltipValue","setTooltipContent","tooltipObj","addTooltipClass","contentTemp","setAriaAttrValue","setPreviousVal","formatContent","ariaContent","handle1","handleVal1","handle2","handleVal2","oldCss","newCss","getTooltipTransformProperties","previousTooltipClass","tooltipPlacement","tooltipBeforeOpen","css","setTooltipTransform","tooltipCollision","tooltipOffsetValue","materialTooltipEventCallBack","wireMaterialTooltipEvent","tooltipPositionCalculation","transformProperties","openMaterialTooltip","refreshTooltip","tooltipContentElement","closeMaterialTooltip","tooltipTarget","checkTooltipPosition","tooltipClass","tooltipCollidedPosition","beforeCollision","tooltipBeforeClose","initializeTooltipProps","tooltipShowOn","firstBtn","secondBtn","buttonTitle","enabledRTL","setLocale","buttonFocusOut","repeatButton","hVal","handleValueUpdate","getLimitCorrectedValues","changeHandleValue","repeatHandlerMouse","buttonClick","repeatInterval","setInterval","materialChange","focusHandle","repeatHandlerUp","changeEvent","customTickCounter","bigNum","tickCount","orien","isAndroid","smallStep","showSmallTicks","largeStep","customStep","islargeTick","tickWidth","Infinity","largestep","startValue","createTick","formatTicksValue","decimalPoints","ticksAlignment","ticksWrapper","tickElements","scaleAlignment","tickText","tickElement","tickValuePosition","otherChild","ariaValueText","isTickFormatted","valuenow","activeHandle","getLimitValueAndPosition","minStart","minEnd","maxStart","maxEnd","buttonUp","openTooltip","setRangeBar","handlePos2","checkValidValueAndPos","checkHandlePosition","setLimitBarPositions","fromMinPostion","fromMaxpostion","toMinPostion","toMaxpostion","fromPosition","toPosition","minValue","maxValue","limitBar","preHandlePos1","setHandlePosition","validateRangeValue","setRangeValue","modifyZindex","updateRangeValue","changeEventArgs","previousValue","preHandlePos2","tempStartEnd","startHandleFixed","endHandleFixed","xyToPosition","stepValueCalculation","percentStep","remain","addition","positionToValue","total","handlepos","handleVal","focusedElement","behindElement","eventX","eventY","elementFromPoint","checkRepeatedValue","handleValueAdjust","handleValue","assignValue","handleNumber","minDiff","dragRangeBarMove","xPostion","yPostion","rangeBarDragged","secondPartRemain","firstPartRemain","valueAndPostion","dragRangeBarUp","wireButtonEvt","sliderFocusOut","rangeBarMousedown","elementClick","onresize","keyUp","hover","formResetHandler","curTarget","changeSliderType","updateConfig","changeRtl","changeOrientation","limitsPropertyChange","keyEntity","setMinMaxValue","setTooltip","setReadOnly","trackPosition","trackClassName","colorRange","startingPosition","endPosition","trackContainer","APPLY","CANCEL","CURRENT","CONTAINER","CTRLBTN","CTRLSWITCH","DISABLED","FORMATSWITCH","HANDLER","HEX","HIDEHEX","HIDEOPACITY","HIDERGBA","HIDEVALUE","HIDEVALUESWITCH","HSVAREA","HSVCONTAINER","INPUTWRAPPER","MODESWITCH","NOCOLOR","OPACITY","PALETTES","PALETTECONTENT","PICKERCONTENT","PREVIEW","PREVIOUS","SHOWVALUE","SELECT","SPLITPREVIEW","TILE","presets","ColorPicker","Apply","Cancel","ModeSwitcher","createWidget","createSplitBtn","enableOpacity","getWrapper","roundValue","noColor","slicedValue","initialInputValue","tileRipple","ctrlBtnRipple","createPalette","firstPaletteFocus","createPicker","getDragHandler","isRgb","createInput","createCtrlBtn","toggleDisabled","refreshPopupPos","splitButton","splitBtn","onOpen","convertToRgbString","hexToRgb","popupEle","getPopupEle","popupInst","getPopupInst","targetType","collision","bindCallBackEvent","observeOpenArgs","modal","beforeCloseArgs","observedCloseArgs","onPopupClose","destroyOtherComp","outerHTML","presetColors","paletteGroup","appendElement","appendPalette","modeSwitcher","setNoColor","borderBottomWidth","rgb","hsv","rgbToHsv","refEle","tile","roundedColor","palette","presetName","addTileSelection","noColorEle","insertPos","hsvContainer","dragHandler","setHsvContainerBg","setHandlerPosition","createSlider","createDragTooltip","getHsvContainer","hsvToRgb","hsvArea","sliderPreviewWrapper","createPreview","sliderWrapper","slider","hueSlider","hueChange","createOpacitySlider","opacitySlider","opacityChange","opacityBgTrack","updateOpacitySliderBg","opacityEle","convertToOtherFormat","pValue","rgbToHex","cValue","updateOpacityInput","updatePreview","opacityTextBoxInst","parentEle","previewContainer","colorValue","isPicker","createNumericInput","numericInput","inputHandler","inputWrap","appendValueSwitchBtn","hexInput","clsName","appendOpacityValue","targetEle","valueSwitchBtn","formatSwitchHandler","btnWrapper","controlBtnWrapper","appendModeSwitchBtn","htmlAttributes","getTooltipInst","setTooltipOffset","convertToHsvString","updateHsv","isKey","updateInput","updateValue","removeTileSelection","selectedEle","convertRgbToNumberArray","closePopup","pickerKeyDown","ctrlBtn","ctrlBtnKeyDown","handlerDown","addCtrlSwitchEvent","previewHandler","paletteClickHandler","paletteKeyDown","ctrlSwitchBtn","btnClickHandler","applyBtn","triggerChangeEvent","handlerDragPosition","enterKeyHandler","observedcloseArgs","prob","setHsv","handlerMove","handlerEnd","switchToPalette","ctrlBtnClick","refreshImageEditorPopupPos","refreshPosition","inst","noColorTile","switchToPicker","grpEle","tiles","prevSelectedEle","altKey","tilePosition","keySelectionChanges","newEle","cIdx","emptyCount","inputValueChange","isPopupOpen","numericElemColl","tooltipInst","tempValue","len_1","bigInt","q","changeModeSwitcherProp","ctrlSwitchWrapper","changeShowBtnProps","ctrlBtnWrapper","changeValueProp","setInputEleProps","changeDisabledProp","changeCssClassProps","popupWrapper","changeRtlProps","changePaletteProps","changeOpacityProps","otherCompModel","AnnotationToolbar","toolbarBorderHeight","isHighlightEnabled","isUnderlineEnabled","isStrikethroughEnabled","isHighlightBtnVisible","isCommentBtnVisible","isUnderlineBtnVisible","isStrikethroughBtnVisible","isColorToolVisible","isOpacityToolVisible","isDeleteAnnotationToolVisible","isCurrentAnnotationOpacitySet","isStampBtnVisible","isShapeBtnVisible","isSignatureBtnVisible","isInkBtnVisible","isFontFamilyToolVisible","isFontSizeToolVisible","isFontAlignToolVisible","isFontColorToolVisible","isFontStylesToolVisible","isCommentPanelBtnVisible","isFreeTextBtnVisible","isCalibrateBtnVisible","isStrokeColorToolVisible","isThicknessToolVisible","stampMenu","stampParentID","inkAnnotationSelected","openSignaturePopup","isSavedSignatureClicked","saveSignatureCount","saveInitialCount","isToolbarCreated","uploadedFileUrl","popupPosition","colorElement","buttonElement","buttonBounds","mainContainerBounds","onShapeToolbarClicked","resetFreeTextAnnot","setAnnotationType","onShapeDrawSelection","updateColorInIcon","colorDropDownElement","lineFillColor","strokeDropDownElement","lineStrokeColor","handleShapeTool","arrowFillColor","arrowStrokeColor","rectangleFillColor","rectangleStrokeColor","circleFillColor","circleStrokeColor","polygonFillColor","polygonStrokeColor","initializeAnnotationToolbar","createToolbarItems","clicked","onToolbarClicked","createDropDowns","afterToolbarCreation","createStampContainer","createSignContainer","createMobileAnnotationToolbar","createMobileToolbarItems","deleteItem","hideMobileAnnotationToolbar","toolbarCreated","editIcon","createAnnotationToolbarForMobile","adjustMobileViewer","FreeTextForMobile","hideExistingTool","freetextToolbarElement","colorTemplate","getTemplate","strokeTemplate","thicknessTemplate","opacityTemplate","fontFamilyTemplate","fontSizeTemplate","textColorTemplate","alignmentTemplate","textPropertiesTemplate","align","mobileColorpicker","showFreeTextPropertiesTool","createPropertyTools","shapeToolbarElement","createPropertyToolbarForMobile","commentIcon","showPropertyTool","existingTool","applyProperiesToolSettings","selectedAnnotation","fontFamilyElement","fontColorElement","borderBottomColor","modifyTextAlignment","updateTextAlignInIcon","stampToolMobileForMobile","stampToolbarElement","createStampToolbarItemsForMobile","showStampPropertiesTool","shapeToolMobile","createShapeToolbarItemsForMobile","afterShapeToolbarCreationForMobile","showShapeTool","calibrateToolMobile","calibrateToolbarElement","createCalibrateToolbarItemsForMobile","onCalibrateToolbarClicked","afterCalibrateToolbarCreationForMobile","textMarkupForMobile","showTextMarkupPropertiesTool","showColorEditTool","showStrokeColorEditTool","showThicknessEditTool","showOpacityEditTool","signatureInkForMobile","signatureInkToolbarElement","aign","mobileAnnotationToolbar","shapePropertiesTool","showInkPropertiesTool","showImagePropertyTool","showCommentPanelTool","showAnnotationDeleteTool","showFontFamilyAnnotationTool","showFontSizeAnnotationTool","showFontColorAnnotationTool","showFontAlignAnnotationTool","showFontStylesAnnotationTool","showFreeTextAnnotationTool","applyHideToToolbar","showShapeAnnotationTool","showStampAnnotationTool","showSignatureTool","hideToolbar","stampTemplate","signTemplate","afterMobileToolbarCreation","isPrimaryTool","updateViewerHeight","getElementHeight","resetViewerHeight","shapesTemplate","calibrateTemplate","handWrittenSignatureItem","createTooltip","saveOptions","openSignature","beforeItemRender","collectionKey","signatureID","signatureContainer","signatureSpan","alignItems","hoverSignatureImage","leaveSignatureImage","signatureDeleteSpan","addInitialSpan","clickSignature","hoverInitialBtn","flexDirection","isSignatureIteam","clickInitial","drpDownBtn","updateSignatureCount","colletionList","addedSignature","deleteSignature","backgroundClip","renderAddedSignature","deleteSavedSign","hoverSignatureDelete","leaveSignatureDelete","currentFieldID","composedPath","liElement","showSignaturepanel","RemoveSignature","elementName","dynamicStamps_1","stampItem","signStamps_1","standardsBusinessStamps_1","menuOptions","showItemOnClick","parentItem","currentElements","stampElements","liElem","menuItems","checkStampAnnotations","stampImage","triggerAnnotationUnselectEvent","retrieveDynamicStampAnnotation","retrievestampAnnotation","shapeToolbar","createShapeOptions","shapeDropDown","createDropDownButton","calibrateToolbar","calibrateDropDown","colorPalette","createColorPicker","onColorPickerChange","colorDropDown","colorDropDownBeforeOpen","colorDropDownOpen","onColorPickerCancelClick","strokeColorPicker","onStrokePickerChange","strokeDropDown","strokeDropDownBeforeOpen","strokeDropDownOpen","onStrokePickerCancelClick","thicknessElement","thicknessContainer","createThicknessSlider","thicknessDropDown","thicknessDropDownBeforeOpen","thicknessSlider","thicknessChange","changed","thicknessDropDownOpen","opacityDropDownElement","opacityDropDown","opacityDropDownBeforeOpen","opacityDropDownOpen","createDropDownListForFamily","onFontFamilyChange","fontSizeElement","createDropDownListForSize","fontColorPalette","onFontColorChange","fontColorDropDown","textAlignElement","alignmentToolbar","textAlignDropDown","textAlignDropDownBeforeOpen","textPropElement","propertiesToolbar","textPropertiesDropDown","createPropDropDownButton","textPropertiesDropDownBeforeOpen","calculateToolbarPosition","setCurrentColorInPicker","setColorInPicker","highlightColor","underlineColor","strikethroughColor","setCurrentStrokeColorInPicker","updateInkannotationItems","modifyFontColor","updateTextProperties","fontColorElementInBlazor","modifyFontFamily","onFontSizeChange","modifyFontSize","dropDownOptions","onClickTextAlignment","onClickTextProperties","fontInfo","modifyTextProperties","isStrikethrough","updateTextPropertySelection","opacityValue","modifyOpacityProperty","highlightOpacity","underlineOpacity","strikethroughOpacity","currentAnnotations","modifyOpacity","clonedObject","redoClonedObject","triggerAnnotationPropChange","lineOpacity","arrowOpacity","rectangleOpacity","circleOpacity","polygonOpacity","updateOpacityIndicator","lineThickness","arrowThickness","rectangleThickness","circleThickness","polygonThickness","updateThicknessIndicator","thicknessChangeInBlazor","modifyThickness","ShapeThickness","annotationModule_1","iconClass","dropDownButton","isShape","isAlign","isTextProp","textAlignmentToolbarItems","afterAlignmentToolbarCreation","textPropertiesToolbarItems","afterPropertiesToolbarCreation","createShapeToolbarItems","afterShapeToolbarCreation","createCalibrateToolbarItems","afterCalibrateToolbarCreation","alignLeftElement","addClassToolbarItem","alignRightElement","alignCenterElement","alignJustifyElement","boldElement","italicElement","fontStyleStrikethroughItem","fontStyleUnderlineItem","fontSelectElement","dataSource","allowCustom","showClearButton","popupWidth","isUserInteracted","query","itemTemplate","distanceFillColor","distanceStrokeColor","perimeterFillColor","perimeterStrokeColor","areaFillColor","areaStrokeColor","radiusFillColor","radiusStrokeColor","volumeFillColor","volumeStrokeColor","enableAnnotationPropertiesTools","lineElement","arrowElement","rectangleElement","circleElement","polygonElement","calibrateDistance","calibratePerimeter","calibrateArea","calibrateRadius","calibrateVolume","highlightItem","underlineItem","strikethroughItem","shapesItem","calibrateItem","commentItem","inkAnnotationItem","selectAnnotationDeleteItem","inputElement","existingInput","colorPicker","modifyColorProperty","modifyFillColor","colorDropDownElementInBlazor","modifyStrokeColor","strokeDropDownElementInBlazor","currentOption","leftAlign","centerAlign","justifyAlign","opacityIndicator","thicknessIndicator","outerContainer","sliderElement","closeItem","isKeyBoardEvent","handleHighlight","handleUnderline","handleStrikethrough","HTMLButtonElement","commentsPanel","handleFreeTextEditor","commentsButton","addComments","InkAnnotationElement","deselectInkAnnotation","drawInk","FreeTextElement","updateFontFamily","updateFontFamilyIcon","isActive","toolBarInitialStatus","enablePropertiesTool","showHighlightTool","showUnderlineTool","showStrikethroughTool","showCalibrateAnnotationTool","showInkAnnotationTool","showSeparator","showStickyNoteToolInMobile","showInkTool","showSeparatorInMobile","toolbar_1","propertyToolbarElement","hideItem","isAdjust","getToolbarHeight","commentsContainer","newToolbarHeight","getNavigationToolbarHeight","updateContentContainerHeight","isBlazor","sideBarClientRect","clearShapeMode","clearMeasureMode","HighlightElement","UnderlineElement","StrikethroughElement","clearTextMarkupMode","isBlazorPlatform","PanElement","deleteIconCicked","findCurrentAnnotation","checkAnnotationPropertiesChange","isPropertiesChanges","isButtonsEnabled","enableTextMarkupAddTools","updateAnnnotationPropertyItems","getColorHexValue","colorpick","isAnnotationToolbarOpen","destroyComponent","componentElement","destroyDependentComponent","afterAnnotationToolbarCreationInBlazor","addClassToToolbarInBlazor","handleHighlightInBlazor","handleUnderlineInBlazor","handleStrikethroughInBlazor","AnnotationSliderOpened","DropDownOpened","colorElementBounds","sidebarElement","sideBarElementWidth","FormDesignerToolbar","isTextboxBtnVisible","isPasswordBtnVisible","isCheckboxBtnVisible","isRadiobuttonBtnVisible","isDropdownBtnVisible","isListboxBtnVisible","isDeleteBtnVisible","initializeFormDesignerToolbar","formDesignerItem","filteredFields","formDesignerToolbarContainer","setFormFieldMode","textboxItem","passwordItem","dropdownItem","listboxItem","showTextboxTool","showPasswordTool","showCheckboxTool","showRadioButtonTool","showDropdownTool","showListboxTool","showDrawSignatureTool","showDeleteTool","Toolbar","isPageNavigationToolDisabled","isMagnificationToolDisabled","isScrollingToolDisabled","isOpenBtnVisible","isNavigationToolVisible","isMagnificationToolVisible","isSelectionBtnVisible","isScrollingBtnVisible","isDownloadBtnVisible","isPrintBtnVisible","isSearchBtnVisible","isTextSearchBoxDisplayed","isUndoRedoBtnsVisible","isAnnotationEditBtnVisible","isFormDesignerEditBtnVisible","isSubmitbtnvisible","toolItems","itemsIndexArray","onToolbarKeydown","targetId","customItem","toolItem","toolbarClickHandler","zoomDropdownItem","tooltipData","dataset","tooltipId","handleToolbarBtnClick","textSearchItem","fileInputElement","navigateToPage","enteredValue","textBoxFocusOut","currentPageBox","createToolbar","totalPageItem","wireEvent","initialEnableItems","bindOpenIconEvent","CommentElement","openElement","InitializeMobileToolbarInBlazor","showNavigationToolbar","navigationToolbarSplitter","showToolbarItem","showOpenOption","showPageNavigationTool","showMagnificationTool","showSelectionTool","showScrollingTool","showDownloadOption","showPrintOption","showSearchOption","showUndoRedoTool","showAnnotationEditTool","showFormDesignerEditTool","showCommentOption","showSubmitForm","enableToolbarItem","enableOpenOption","enablePageNavigationTool","enableMagnificationTool","enableSelectionTool","enableScrollingTool","enableDownloadOption","enablePrintOption","enableSearchOption","enableUndoRedoTool","enableAnnotationEditTool","enableFormDesignerEditTool","enableCommentsTool","openDocumentItem","firstPageItem","previousPageItem","nextPageItem","lastPageItem","zoomInItem","zoomOutItem","zoomDropDown","textSelectItem","panItem","downloadItem","printItem","undoItem","redoItem","updateUndoRedoButtons","updateZoomButtons","updateInteractionItems","moreOptionItem","enableCollectionAvailableInBlazor","redoCollection","enableCollectionAvailable","disableUndoRedoButtons","unWireEvent","createZoomDropdown","createNumericTextBox","createToolbarItemsForMobile","afterToolbarCreationInMobile","createCustomItem","customToolbarItem","currentPageInputTemplate","createCurrentPageInputTemplate","totalPageTemplate","createTotalPageTemplate","zoomDropDownTemplateString","createZoomDropdownElement","submitButton","defaultToolbarOrder","toolbarItemOrder","itemsContainer","addPropertiesToolItemContainer","zoomDropdownElement","createToolbarItem","popupHeight","openZoomDropdown","itemData","zoomDropDownChange","createMoreOption","dropdownButtonPosition","toolbarItem","toolbarOnMouseup","zoomPercentSelect","onZoomDropDownInput","onZoomDropDownInputClick","handleOpenIconClick","goToFirstPage","goToPreviousPage","goToNextPage","goToLastPage","zoomIn","zoomOut","getStampMode","initiateAnnotationMode","initiateFormDesignerMode","drawIcons","toolbarData","fullscreen","fullscreenElement","zoomText","updateZoomPercentage","focusOut","currentPercent","blazorZoomDropDown","showSearchBox","searchInputElement","searchItem","formDesignerMainDiv","annotationMainDiv","DisableInteractionTools","isTextSelect","toolbarSettingsItems","stampBeforeOpen","ParentItem","Items","stampBeforeClose","stampSelect","Magnification","scrollWidth","zoomPercentages","isNotPredefinedZoom","pinchStep","reRenderPageNumber","magnifyPageRerenderTimer","rerenderOnScrollTimer","rerenderInterval","touchCenterX","touchCenterY","mouseCenterX","mouseCenterY","pageRerenderCount","imageObjects","isTapToFitZoom","isDoubleTapZoom","isFitToPageMode","zoomLevel","MaximumZoomPercentage","MinmumZoomPercentage","onZoomChanged","lowerZoomLevel","higherZoomLevel","calculateFitZoomFactor","pointInViewer","positionInViewer","pinchIn","temporaryZoomFactor","pinchOut","getZoomLevel","checkZoomFactor","closePopupMenu","responsivePages","magnifyPages","zoomPercentage","pointX1","pointY1","pointX2","pointY2","zoomOverPages","clearRerenderTimer","scrollValue","updatePageLocation","resizeCanvas","calculateScrollValuesOnMouse","resizeTouchElements","updateCurrentResizerPosition","rerenderMagnifiedPages","updatePageContainer","isReRender","textLayerDiv","clearRendering","rerenderAnnotationsPinch","renderInSeparateThread","designNewCanvas","initiateRerender","clearAllOccurrences","calculateScrollValues","currentPageCanvas","currentPageBounds","currentPageBoundsLeft","currentPageBoundsTop","previousPageTop","canvasPreviousY","canvasCurrentY","pageGapValue","previousWidthFactor","scaleCorrectionFactor","scrollX_1","scrollX_2","rerenderOnScroll","pageDivs","annotationLayers","fomrFieldCollection","pageNumber_1","reRenderAfterPinch","oldCanvasCollection","inkPathDataCollection","inkAnnotationInitialZoom","addInputInZoom","isSelectionAvailable","isSelectionAvailableOnScroll","resizeAnnotations","dataScaleFactor","serverImageWidth","serverImageHeight","tilewidth","originalWidth","originalLeft","originalTop","lowerValue","higherValue","adonerLayer","diagramAdornerLayer","currentDifference","previousTouchDifference","getPinchStep","downwardScrollFitPage","upwardScrollFitPage","getMagnifiedValue","defaultPinchStep","higherPinchStep","pinchstep","zoomRect","desiredScaleFactor","desiredHorizontalScale","desiredVerticalScale","prevScrollTop","prevScrollLeft","pagepoint","mainRect","Navigation","updateScrollTopForThumbnail","LinkAnnotation","hyperlinksBounds","renderWebLink","hyperlinkObjects","isHyperlinkClicked","aTag","setHyperlinkProperties","hyperlinkText","hyperlinkOpenState","onclick","onmouseover","triggerHyperlinkEvent","destPageHeight","destLocation","modifyZindexForTextSelection","pageChildNodes","modifyZindexForHyperlink","CONTROL","COLLAPSIBLE","EXPANDABLE","LISTITEM","LISTTEXT","LISTWRAP","IELISTWRAP","PARENTITEM","HOVER","ACTIVE","LOAD","PROCESS","TEXTWRAP","INPUT","INPUTGROUP","TREEINPUT","EDITING","INTERACTION","DRAGITEM","DROPPABLE","DRAGGING","SIBLING","DROPIN","DROPNEXT","DROPOUT","NODROP","FULLROWWRAP","FULLROW","SELECTED","EXPANDED","NODECOLLAPSED","DISABLE","DROPCOUNT","CHECK","INDETERMINATE","CHECKBOXWRAP","CHECKBOXFRAME","CHECKBOXRIPPLE","RIPPLE","RIPPLEELMENT","FOCUS","IMAGE","BIGGER","SMALL","CHILD","ITEM_ANIMATION_ACTIVE","PREVENTSELECT","treeAriaAttr","treeRole","itemRole","listRole","itemText","wrapperRole","FieldsSettings","ActionSettings","NodeAnimationSettings","TreeView","isRefreshed","preventExpand","checkedElement","disableNode","validArr","validNodes","expandChildren","isFieldChange","changeDataSource","hasTemplate","isFirstRender","isNodeDropped","isRightClick","mouseDownStatus","TreeView_1","checkActionNodes","parentNodeCheck","dragStartAction","f2","home","moveDown","moveLeft","moveRight","moveUp","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","ctrlA","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","shiftSpace","ctrlSpace","listBaseOption","expandCollapse","showIcon","expandIconClass","ariaAttributes","expandIconPosition","itemCreated","beforeNodeCreate","itemNavigable","fullRowNavigable","updateListProp","aniObj","treeList","isLoaded","isInitalExpand","setTouchClass","selectedNodes","checkedNodes","expandedNodes","initialRender","setDataBinding","setDisabledMode","setExpandOnType","setRipple","wireEditingEvents","allowEditing","setDragAndDrop","allowDragAndDrop","setCssClass","setEnableRtl","setFullRow","fullRowSelect","setTextWrap","nodeTemplateFn","templateComplier","tempStr","rippleModel","ignore","rippleFn","iconModel","isCenterRipple","rippleIconFn","setMultiSelect","isOffline","offline","ready","treeData","isNumberTypeId","getType","setRootData","renderItems","executeQuery","getQuery","rootData","mapper","getActualProperties","addSorting","sortOrder","parentID","where","dataType","getDataType","groupedData","getGroupedData","rootItems","getChildNodes","isChildObject","isSorted","sortedData","getSortedData","ulElement","createList","rootNodes","loadOnDemand","renderChildNodes","finalizeNode","parentCheckData","updateCheckedStateFromDS","autoCheck","showCheckBox","updateParentCheckState","executeLocal","resultId","childData","childId","mapper_1","checkState","getCheckedNodeDetails","checkIndeterminateState","checkedId","checkedData","updateChildCheckState","checkNodes","changeState","preElement","childCheckedElement","indeterminate","nodeId","nodeCheck","ariaChecked","checkedParent","checkedChild","subChildItems","checkboxEle","touchClass","checkValue","curData","addCheck","frame","frameMouseHandler","createFullRow","allowMultiSelection","addActionClass","expanded","textEle","dataId","renderNodeTemplate","nodeData","selectable","rippleSpan","actionValue","groupBy","cusQuery","getDataSource","grpItem","itemObj","iNodes","sNodes","selectNode","cNodes","disableExpandAttr","eNodes","updateList","updateCheckedProp","ensureIndeterminate","ensureParentCheckState","ensureChildCheckState","indeterminateNodes","checkBoxEle","parentUL","currentParent","checkBoxes","parentCheck","childCheck","checkedState","currentLoadData","isNodeChecked","doCheckBoxAction","doCheck","updateFieldChecked","liEle","setValidCheckedNode","dynamicCheckState","updateField","checkBox","validateCheckNode","currLi","nodeDetails","getNodeData","parent_1","updateIndeterminate","subChild","updateChildIndeterminate","indeterminateData","getTreeData","subId","childElementCheck","innerChild","isPrevent","nodeCheckAction","getCheckEvent","ariaState","frameSpan","removeCheck","ensureStateChange","firstUl","firstNode","updateIdAttr","allowTextWrap","updateWrap","hasPid","doExpandAction","ulEle","liList","calculateWrap","eUids","expandGivenNodes","eNode","expandAction","afterFinalized","expandCallback","eUid","doSelectionAction","sUids","sNode","selectGivenNodes","isIos","preventContextMenu","rippleElement","rippleIcons","removeHover","setFocusElement","checkWrapper","checkElement","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","isCheck","expandNode","start_1","end_1","ul_1","liEle_1","setHeight","activeElement_1","animate","expand","progress","animateHeight","expandedNode","addExpand","expandArgs","getExpandEvent","colArgs","nodeCollapseAction","collapse","collapsedNode","removeExpand","toRemove","timeStamp","parentLi","expandChild","eicon","parents","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","getNodeObject","doDisableAction","getFields","nodeLevel","dataLevel","getChildMapper","isRoot","getChildGroup","objlen","tempArray","tempField","cIcons","curLi","unselectNode","getSelectEvent","nodeSelectAction","removeSelectAll","startNode","currNode","addSelect","nodeUnselectAction","removeSelect","focusedNode","getFocusedNode","selectedLI","selectedLI_1","expandOnType","expandOn","expandHandler","expandCollapseAction","nodeExpandAction","liEles","getId","icon_1","keyActionHandler","inpEle","oldText","checkNode","openNode","shiftKeySelect","navigateNode","navigateRootNode","createTextbox","navigateToFocus","isUp","parentPos","isVisibleInViewport","scrollIntoView","txtWrap","innerHeight","innerWidth","isTowards","nextNode","getNextNode","getPrevNode","checkWrap","nodeCheckingAction","allCheckNode","parentIndex","getChildItems","childStateChange","childIsCheck","newCheck","validateCheck","hierChildId","childId_1","toBeOpened","focusNextNode","isBackwards","getRootNode","getEndNode","fNode","previousSibling","endNode","preNode","onMouseOver","currentLi","setHover","onMouseLeave","hoveredNode","fromDS","getText","pNode","pid","checkboxElement","nodeFields","destroyTemplate","reRenderNodes","oldClass","newClass","editingHandler","oldInpEle","updateOldText","innerEle","getEditEvent","inpWidth","renderTextBox","inputObj","inputEle","setSelectionRange","wireInputEvents","editData","editFields","inputFocusOut","txtEle","crudOperation","appendNewText","isInput","updateText","getNode","getChildNodeObject","newList","toBind","initializeDrag","destroyDrag","virtualEle","dragObj","enableTailMode","enableAutoScroll","dragArea","dragTarget","enableTapHold","sender","dragRoot","dragWrap","dragLi","isSameNode","cloneEle","nLen","cNode","dragData","dragStart","getDragEvent","draggedNode","intDestroy","dragCancelAction","cursorAt","targetTouches","dragAction","dragStop","removeVirtualEle","dropTarget","preventTargetExpand","dropRoot","dragParent","draggedParentNode","dropObj","out","over","drop","dropAction","dropWrap","dropLi","isDescendant","templateTarget","appendIndicator","renderVirtualEle","dropIndicator","virEle","dragInstance","liArray","draggable","droppedElement","appendNode","draggedElement","dropAsChildNode","dropAsSiblingNode","pre","dropUl","dragParentUl","dragParentLi","moveData","updateElement","updateAriaLevel","updateInstance","dropParentUl","expandParent","childLi","dropParentLi","removedData","updateChildField","refId","getDataPos","currPid","removeChildNodes","addChildData","dropIcon","generateIcon","generateUL","dragIcon","updateChildAriaLevel","sibEle","dragNode","dropData","draggedNodeData","newParent","dragLiParent","targetParent","dropTar","parent_2","parent_3","clonedNode","droppedNode","droppedNodeData","dropIndex","dropLevel","addFullRow","toAdd","rowDiv","addMultiSelect","liEles_1","liEles_2","collapseByLevel","excludeHiddenNodes","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons","vNodes","removeNode","removeData","updateSelectedNodes","updateExpandedNodes","dm","newId","currId","doGivenAction","toExpand","addGivenNodes","isRemote","dropEle","updateMapper","refNode","dropIcon1","createListItemFromJson","returnValue","navigateUrl","childObj","validID","checkValidId","doEnableAction","strNodes","filterNestedChild","updatePersistProp","sleNodes","slelen","enodes","nodelen","cnodes","getMapperProp","touchEditObj","tap","isDoubleTapped","wireClickEvent","proxy_3","touchClickObj","wireExpandOnEvent","proxy_4","touchExpandObj","keyboardModule","matched","secondTap","firstTap","setCheckedNodes","uncheckAll","setIndeterminate","checkAll","setChildCheckState","parent_4","updatePosition","isRefreshChild","childValue","updateChildPosition","currID","dynamicState","operation","prevent","crud","matchedArr","addedRecords","deletedRecords","changedRecords","nodesID","fromTable","saveChanges","deleteSuccess","dmFailure","editSucess","addSuccess","updatePreviousText","getHierarchicalParentId","parentsID","collapseAll","onLoaded","addNodes","beginEdit","disableNodes","enableNodes","ensureVisible","parentsId","expandAll","reverse","behavior","getAllCheckedNodes","getDisabledNodes","disabledNodes","moveNodes","sourceNodes","refreshNode","updatedChildValue","newNodeData","parentData","refreshData","newliEle","newTextEle","newIcon","fullEle","removeNodes","updateNode","effectsConfig","effectsRTLConfig","focused","listIcon","listItemText","groupListItem","hasChild","view","headerTemplateText","disable","backIcon","backButton","checkboxWrapper","checklist","checkboxIcon","checkboxRight","checkboxLeft","listviewCheckbox","itemCheckList","virtualElementContainer","LISTVIEW_TEMPLATE_PROPERTY","LISTVIEW_GROUPTEMPLATE_PROPERTY","LISTVIEW_HEADERTEMPLATE_PROPERTY","swipeVelocity","FieldSettings","ListView","previousSelectedItems","hiddenItems","enabledItems","setHTMLAttribute","setEnable","setSize","enableVirtualization","virtualizationModule","reRenderUiVirtualization","reRender","curDSLevel","headerTitle","contentContainer","setCheckbox","curViewDS","getSubDS","resetCurrentList","isWindow","enableElement","showBack","headerEle","showHeader","innerHeaderEle","hedBackButton","headerTemplate","compiledString","headerTemplateEle","compiledElement","LISTVIEW_HEADERTEMPLATE_ID","switchView","fromView","toView","fPos_1","overflow_1","anim","slideLeft","curUL","groupTemplate","listClass","groupItemRole","renderCheckbox","templateID","groupTemplateID","initialization","animateOptions","currentLiElements","isNestedList","selectedData","selectedId","enablePersistence","LISTVIEW_TEMPLATE_ID","LISTVIEW_GROUPTEMPLATE_ID","fieldData_1","frameElement_1","checkInternally","checkBoxPosition","virtualCheckBox","checkItem","toggleCheckBase","HTMLLIElement","getLiFromObjOrElement","setSelectedItemData","updateSelectedId","uncheckItem","checkAllItems","toggleAllCheckBase","uncheckAllItems","checkIcon","checkedItem","getItemData","refreshItemHeight","closestElement","isValidLI","setCheckboxLI","selectEventData","setSelectLI","hoverHandler","setHoverLI","leaveHandler","homeKeyHandler","onArrowKeyDown","siblingLI","getSiblingLI","arrowKeyHandler","elementTop","elementHeight","firstItemBounds","groupItemBounds","siblingTop","siblingHeight","uiFirstIndex","onUIScrolled","listItemHeight","topHeight","headerBounds","spaceKeyHandler","swipeActionHandler","swipeDirection","velocity","focusout","swipe","onListScroll","focusedLI","focusedLI_1","hoverLI","textAreaFocus","renderSubList","lastLi","levelKeys","localData","levelKeys_1","curDSJSON","findItemFromDS","curDS","getElementUID","resultJSON","defaultMappedFields","setViewDataSource","sortBy","groupDataSource","isInAnimation","renderRemoteLists","listViewComponent","renderList","triggerActionFailure","setLocalData","createJsonFromElement","renderIntoDom","setAttributes","liElements","exceptionEvent","UpdateCurrentUL","uID","createListFromJson","lists","isNgTemplate","createUIItem","uiVirtualization","Element","previousScrollTop","classAr","pID","toUL","fromUL","unselectItem","uid","selectMultipleItems","getParentId","tempData","getSelectedItems","finalValue","isCompleted","liTextCollection","liDataCollection","dataParent","findItem","enableItem","setItemState","disableItem","showItem","showHideItem","addItemInternally","addItemAtIndex","targetUL","addItemIntoDom","addItemInNestedList","newDataSource","isIndexValid","targetItemData","itemQueue","targetItemId","targetChildDS","isAlreadyRenderedUL","targetLi","targetDS","isTargetEmptyChild","targetRefreshedElement","currentItem","addListItem","curItemDS","isHeader","listDataSource","removeItemFromList","groupLi","validateNestedView","foundData","findParent","dsIndex","li_1","liID","removeMultipleItems","scrollDirection","distanceY","currentScrollTop","BookmarkView","isKeyboardNavigation","bookmarkClick","bookid","navigateToBookmark","nodeClick","treeObj","bookmarkKeypress","bookmarkPanelBeforeOpen","enableBookmarkStyles","bookmarkRequestHandler","renderBookmarksOnSuccess","bookmarksDestination","bookMarkDestination","isBookmarkViewDiv","isBookmarkPanelOpen","bookmarkView","bookmarkIconView_1","bookmarkIcon","bookmarkTitle","nodeClicked","keyPress","drawNode","destPage","ThumbnailView","thumbnailLimit","thumbnailThreshold","thumbnailTopMargin","thumbnailTop","thumbnailPageSize","thumbnailOnScroll","thumbnailClick","isKeyboard","getPageNumberFromID","previousElement","setSelectionStyle","goToThumbnailPage","thumbnailKeydown","thumbnailMouseOver","setMouseOverStyle","thumbnailMouseLeave","setMouseLeaveStyle","renderThumbnailEmptyPage","isThumbnailViewOpen","thumbnailsRequestedForPage","requestedPage","lastNum","numbers","renderThumbnailImage","pageLink","thumbnail","thumbnailSelectionRing","thumbnailPageNumber","thumbnailImage","thumbnailSize","wireUpEvents","setMouseFocusToFirstPage","prox","renderDiv","currentPageImage","getThumbnailImageElement","digitalSignatureList","sizeX","sizeY","digitalSignaturePageList","thumbnailRequestHandler","updateThumbnailCollection","shouldScroll","checkThumbnailScroll","thumbnailChild","thumbnailDiv","clientTop","setFocusStyle","determineThumbnailsRequest","batchSize","numberOfBatches","visibleThumbs","getVisibleThumbs","numVisibleThumbs","views","visibleFirstPageID","visibleLastPageID","pageID","thumbPageNumber","setMouseFocusStyle","renderClientThumbnailImage","renderServerThumbnailImage","createRequestForThumbnail","thumbnailImageRender","unwireUpEvents","thumbnailElement","getVisibleElements","scrollElement","thumbnailViewChildren","isThumbnailElementBottomAfterViewTop","thumbnailViewChildrenElement","elementBottom","viewHeight","viewBottom","hiddenHeight","viewWidth","viewRight","hiddenWidth","percentVisible","firstVisibleElementInd","binarySearchFirstItem","backtrackBeforeAllVisibleElements","lastEdge","getThumbnailElement","clientLeft","condition","minIndex","maxIndex","getThumbnailLinkElement","Print","printHeight","printWidth","printViewerContainer","printMode","iframe","frameDoc","contentWindow","contentDocument","printWindow","outerHeight","outerWidth","resizeTo","availWidth","availHeight","createPrintLoadingIndicator","a4StdWidth","a4StdHeight","bufferWidth","bufferHeight","a4PrintWidth","a4PrintHeight","createRequestForPrint","printScaleRatio","printSuccess","printImage","annotationSource_1","printCollection","stickyNoteAnnotation","printTextMarkupAnnotations","currentPageNumber_1","printCanvas","printScaleValue","enablePrintRotation","pageImage_1","annotationImage_1","printWindowOpen","renderFieldsForPrint","targetField","formDesignerFieldsData","createFormDesignerFields","parentHtmlElement","parentHtmlElementAttribute","HtmlElementAttribute","disableSignatureClickEvent","createSignatureDialog","createDropDownList","createListBox","createInputElement","isFormDesignerField","actualHeight","printDocument","browserUserAgent","canvasUrl","execCommand","onafterprint","printWindowContainer","printImageContainer","printLabelContainer","TextSelection","isBackwardPropagatedSelection","contextMenuHeight","backwardStart","selectionAnchorTouch","selectionFocusTouch","scrollMoveTimer","isMouseLeaveSelection","isTouchSelection","previousScrollDifference","topStoreLeft","topStoreRight","isTextSearched","isSelectionStartTriggered","allTextContent","onLeftTouchSelectElementTouchStart","initiateSelectionByTouch","onRightTouchSelectElementTouchStart","onLeftTouchSelectElementTouchEnd","terminateSelectionByTouch","onRightTouchSelectElementTouchEnd","onLeftTouchSelectElementTouchMove","rightElement","dropDivElementRight","isTouchedWithinViewerContainer","isTouchedWithinContainer","dropBounds","xTouch","yTouch","getNodeElement","isCloserMovement","isCloserTouchScroll","dropElementLeft","dropElementRight","selectTextByTouch","elementClientRect","dropDivElementLeft","pageTopValue","topClientValue","getClientValueTop","currentPageLeft","currentRangeLeft","isHeightNeeded","onRightTouchSelectElementTouchMove","leftElement","dropPosition","touchX","touchY","isExtended","TEXT_NODE","ownerDocument","createRange","selectNodeContents","setStart","setEnd","rangeBounds","rightBounds","addRange","startOffset","extend","detach","leftDivElement","rangeCount","currentrange","getRangeAt","updateLeftposition","getSelectionRange","textSelectionOnDrag","isforward","selectTextRegion","pageNumbers","rangebounds","totalLeft","textDiVLeft","isLeftBounds","checkLeftBounds","isTopBounds","checkTopBounds","boundingRect","viewerTop","scrollForwardOnSelection","scrollBackwardOnSelection","stichSelectionOnScroll","isStoreSelection","indices","startParent","startContainer","textIds","targetRect","targetcentre","bottomValue","textId","d1","d2","lowerPageIndex","higherPageIndex","searchAfterSelection","removeTouchElements","viewerContainerLeft","dropElementHeight","leftCurrentPagePosition","rightCurrentPagePosition","indexes","getIndexes","selectEndPageIndex","selectedBounds","isBackward","isMaintainSelection","isStich","anchorPageId","getNodeElementFromNode","focusPageId","lastChildNode","ranges","applySelectionMouseScroll","applySelectionRange","getSelectionRangeFromArray","selectionRange","selectionObject","anchorPageIndex","focusPageIndex","currentAnchorIndex","extendCurrentSelection","currentAnchorOffset","currentFocusOffset","maintainSelection","backward_1","selectionBounds","getSelectionBounds","selectionRectBounds","getSelectionRectangleBounds","anchorOffsetValue","getCorrectOffset","focusOffsetValue","pushSelectionRangeObject","createRangeObjectOnScroll","stichSelection","offsetValue","currentObjectIndex","nextPageObject","prevPageObject","prevIndex","firstObject","currentFocusElement","lastElement","getTextLastLength","firstElement","extendSelectionStich","lastElement_1","maintainSelectionArray","pageNumberIndex","selectionRangeObject","getSelectionRangeObject","selectionBound","startElement","endElement","endContainer","newStartRange","startRange","createRangeForSelection","normalizeBounds","selectionTexts","currentId","anchorTextId","focusTextId","newRange","textRotate","textselection","getTextId","currentPageElement","currentTextElement","currentPageRect","anchorPage","focusPage_1","arrayObject","isFocusChanged","lastPageDiv","belowElements","elementsFromPoint","createTouchSelectElement","isForwardSelection","rangeObject","setTouchSelectionStartPosition","getTouchFocusElement","getTouchAnchorElement","isCurrentFocus","isCurrentAnchor","rangePosition","dropElementRect","viewerLeftPosition","topPositionValue","contextTop","selectedContent","spanBounds","getSpanBounds","spanWidth","spanRight","spanLeft","spanHeight","caretRangeFromPoint","onTouchElementScroll","caretPositionFromPoint","offsetNode","viewerScrollTop","isScrolledOnScrollBar","isForwardMovement","clientValue","selectionText","textArea","contentEditable","warn","searchTextCollection","TextSearch","searchCount","searchIndex","currentSearchIndex","searchPageIndex","searchString","isMatchCase","searchRequestHandler","searchMatches","searchCollection","searchedPages","isPrevSearch","searchTextDivzIndex","tempElementStorage","isTextRetrieved","isTextSearchEventTriggered","isSearchText","checkBoxOnChange","searchKeypressHandler","enableNextButton","enablePrevButton","updateSearchInputIcon","searchClickHandler","nextButtonOnClick","nextSearch","prevButtonOnClick","prevSearch","searchBox","searchElementsContainer","searchInputContainer","prevSearchBtn","createSearchBoxButtons","nextSearchBtn","matchCaseContainer","matchCaseInput","matchCaseText_1","secondaryToolbar","onTextSearchClose","initSearch","highlightOthers","onMessageBoxOpen","highlightSearchedTexts","findPreviousPageWithText","prevPageIndex","isSinglePageSearch","isCount","documentIndex","pageTextData","getSearchTextContent","getPossibleMatches","createRequestForSearch","arrayReturns","multiSearch","specialCharcterSearch","queryLength","matches","matchedArray","matchIndex","newIndex","multiSearchIndex","MultilineIndex","specialcharcterIndex","newString","correctLinetext","getSearchPage","indiuvalLineArray","searchArray","linestring","mergedText","pageCheck","searchArrayText","ArrayReturns","scrollPoint","searchingText","addDivForSearch","targetScrollElement","getScrollElement","scrollToSearchStr","element_1","nestedIndex","initial","divCount","addDivElement","isRTL","charBound","isContinuation","createSearchTextDiv","calculateBounds","textSearchColorSettings","isClassAvailable","isClass","classString","searchDivs","outputdata","isSearched","searchTextDivs","applyTextSelection","isTileRendering","searchRequestOnSuccess","createRequestForGetPdfTexts","pdfTextSearchRequestOnSuccess","orderPdfTextCollections","oldCollection","iconSpan","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_RTL","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","CLS_DISABLE","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARBTN","CLS_TBARNAV","CLS_TBARSCRLNAV","CLS_TBARRIGHT","CLS_TBARLEFT","CLS_TBARCENTER","CLS_TBARPOS","CLS_HSCROLLCNT","CLS_VSCROLLCNT","CLS_HSCROLLBAR","CLS_POPUPNAV","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARBTNTEXT","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDPOPUP","CLS_EXTENDEDPOPOPEN","resizeContext","orientationChangeContext","orientationChange","popupOpen","popupClose","btnItems","tempId","destroyItems","trgtEle","ctrlTem","popObj","activeEle","tbarAlign","tbarItemsCol","attrb","enableCollision","scrollStep","scrollModule","isVertical","isExtendedOpen","popupPriCount","allowKeyboard","wireKeyboardEvent","keyModule","docKeyDown","updateTabIndex","dataTabIndex","unwireKeyboardEvent","popCheck","keyCheck","destroyScroll","docEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","trgt","clst","keyHandling","navChk","scrollChk","rootEle","popAnimate","eleFocus","popupCheck","extendedPopup","focusFirstVisibleEle","focusLastVisibleEle","popFrstEle","ele_1","activeEleRemove","tbarScrollChk","eleContains","sib","skipEle","tbrItems","isPopupElement","clsList","popupNav","popupClickHandler","tempItem","clickedArgs","getElementOffsetY","portals","ariaAttr","renderLayout","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","showAlwaysInPopup","initScroll","innerItems","checkOverflow","scrollEle","itemWidthCal","marginBottom","getScrollCntEle","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleItem","multiVar","extendVar","eleInlineItem","innerNav","createPopupIcon","innerNavDom","checkPriority","removeProperty","createPopup","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","tbarElement","sepItem","extendEle","popupInit","eleStyles","borderRightWidth","tbarPopupHandler","isOpen","toolEle","popupElePos","popIcon","scrollVal","overflowHeight","tbEleData","popupOffset","inEle","checkoffset","popPriority","eleWid","sepCheck","itemPopCount","checkClass","rVal","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","sepEle","popedEle","nav","navItem","tbarPriRef","indx","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","elWidth","btnText","eleSplice","inlineStyles","sepBeforePri_1","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","keyVal","itemElement","getElementByIndex","extendedOpen","itemsDiv","itemsRerender","itemAgn","items_1","algIndex","removeItemByIndex","eleIdx","indexAgn","clearToolbarTemplate","btnItem","templateRender","templateProp","isComponent","itemType","eleObj","regEx","toolbarTemplateID","getDataTabindex","buttonRendering","dom","iconPos","textStr","btnTxt","suffixIcon","btnObj","tempDom","itemClick","showTextOn","sTxt","curEle","multirowele","updateHideEleTabIndex","isElement","eleIndex","nextEle","templateEle","registeredTemplate","registeredTemplates","registeredItem","closestItem","portalItem","containerInfo","tEle","changedProb","newProperty","popupPriCheck","booleanCheck","itemCol","innerItems_1","CLS_ROOT","CLS_HSCROLLCON","CLS_NAVARROW","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_HSCROLLNAVRIGHT","CLS_HSCROLLNAVLEFT","CLS_DEVICE","CLS_OVERLAY","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","OVERLAY_MAXWID","HScroll","browser","browserCheck","ieCheck","touchHandler","swipeHandler","createOverlay","createNavIcon","setScrollState","scrollDiv","innerEle_1","overflowX","scrollItems","navEles","rightOverlayEle","clsRight","rightEle","leftEle","eventBinding","rightAttributes","clsLeft","leftAttributes","navEle","navLeftItem","onKeyPress","timeoutFun_1","keyTimeout","eleScrolling","keyTimer","onKeyUp","tabHoldHandler","repeatScroll","clickEventHandler","scrollDis","timeoutFun","isContinuous","frameScrollRequest","swipeEle","distanceX","cancelAnimationFrame","requestAnimationFrame","scrollUpdating","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","disEle","getModel","upDownKeyHandler","defaultIdx","liIdx","selectedLi","blankIcon","blankIconList","iconLi","cssProp","SPINNER_CLASS","inputObject","ComboBox","getLocaleName","inputWrapper","preventBlur","onBlurHandler","dropDownClick","targetFocus","onInput","onFilterUp","onFilterDown","pasteHandler","bindCommonEvent","allowFiltering","listData","customValue","setOldText","removeSelection","setOldValue","valueMuteChange","setHiddenValue","activeIndex","dataItem","detachChangeEvent","updateValues","getElementByText","setSelection","liCollections","getElementByValue","isExistItem","virtualGroupDataSource","updateIconState","clearButton","clearIconHide","getAriaAttributes","hiddenElement","searchLists","isTyped","isFiltering","filterInput","setHoverList","preventAutoFill","incrementalSearch","getNgDirective","setSearchBox","searchBoxContainer","onActionComplete","isUpdated","isSelectCustom","inlineSearch","getFocusElement","isDropDownClick","typeOfData","typeof","activeItem","filterType","updatingincrementalindex","viewPortInfo","incrementalEndIndex","totalItemCount","incrementalStartIndex","updateIncrementalInfo","updateIncrementalView","incrementalLiCollections","getTransformValues","index_1","getIndexByValue","skeletonCount","fixedHead","selectedLiOffsetTop","virtualListInfo","removeFillSelection","autofill","checkCustomValue","getDataByValue","appendSpan","disableIcon","setAutoFill","isHover","getTextByValue","currentFillValue","getFormattedValue","updateSelectedItem","isAndroidAutoFill","setAutoFillSelection","currentPoints","getSelectionPoints","prevEnd","prevSelectPoints","curEnd","prevStart","curStart","clearAll","isSelectFocusItem","isKeyNavigate","focusItem","isCustomFilter","showPopup","getValueByText","ignoreAccent","unBindCommonEvent","selectCurrentItem","onChangeEvent","hidePopup","preventFocus","onFocus","calculateWidth","previousValue_1","updateCustomValueCallback","changeData","setUpdateInitial","setReadonly","comboProps","getPropObject","oldProperty","itemIndex","isEscape","isEscapeKey","typedString","getItems","renderHightSearch","CLS_VSCROLLBAR","CLS_VSCROLLCON","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","scrollCnt","scrollBar","navs","overlays","downOverlayEle","clsDown","downEle","upEle","clsUp","navElement","navUpItem","ev","scrollDistance","swipeElement","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","FRAME","LABEL","RIPPLECHECK","RIPPLEINDETERMINATE","WRAPPER","containerAttr","CheckBox","isFocused","isMouseClick","clickTriggered","validCheck","isInitialize","focusOutHandler","updateVueArrayModel","focusHandler","getLabel","initialCheckedValue","setDisabled","for","labelPosition","setText","keyUpHandler","labelMouseDownHandler","labelMouseLeaveHandler","rippleElem","labelMouseUpHandler","labelWrap","updateHtmlAttributeToWrapper","changeHandler","formElem","SPINICON","SPINUP","SPINDOWN","ERROR","INCREMENT","DECREMENT","INTREGEXP","DECIMALSEPARATOR","COMPONENT","NUMERIC_FOCUS","HIDDENELEMENT","wrapperAttributes","selectionTimeOut","NumericTextBox","preventChange","isDynamicChange","numericOptions","isPrevFocused","decimalSeparator","intRegExp","isCalled","cloneElement","angularTagName","formEle","attributeName","isValidState","inputStyle","inputName","cultureInfo","updateHTMLAttrToElement","checkAttributes","inputEleValue","validateMinMax","validateStep","updatePlaceholder","createWrapper","spinBtnCreation","changeValue","strictMode","trimValue","roundNumber","elementPrevValue","attributes_1","setNumber","instance","getNumberParser","stepValue","currency","currencyCode","updatedCssClassValue","getNumericValidClassList","updateHTMLAttrToWrapper","updateDataAttribute","pro","updateCssClass","numericClassName","updatedClassValue","numericStyle","spinDown","spinUp","wireSpinBtnEvents","formattedValue","isInteract","performAction","raiseChangeEvent","checkErrorClass","bindClearEvent","resetHandler","setElementValue","keyupEvent","createEvent","initEvent","dispatchEvent","resetFormHandler","setSpinButton","keyDownHandler","keyPressHandler","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveEvent","touchMoveOnSpinner","unwireSpinBtnEvents","parsedInput","beforeUpdate","numericRegex","preventHandler","iOS","selectionStart","currentPos","prevPos","valArray","numericObject","ignoreKeyCode","prevVal","cursorPosChanged","validateDecimalOnType","parseValue","numerictextboxObj","fireFox","parsedValue","localChange","nonZeroRegex","updatedValue","correctRounding","floatExp","floatStep","valueCount","stepCount","divide","updateCurrency","propVal","getNumberOfDecimals","modifyText","validateState","serverDecimalSeparator","EXPREGEXP","valueString","cancelEvent","isAlterNumPadDecimalChar","selectionEnd","fractionRule","delta","rawEvent","focusEventArgs","formatValue_1","blurEventArgs","focusEvent","getElementData","mouseUpClick","touchEvent","floatLabelTypeUpdate","removeFloating","addFloating","decrement","attrArray","insertAdjacentElement","validateInputType","setPlaceholder","updateSpinButton","updateClearButton","propValue","setClearButton","addScrolling","scrollType","containerOffset","contentOffset","parentElem","createScrollbar","scrollObj","menu","ENTER","ESCAPE","FOCUSED","HEADER","SEPARATOR","UPARROW","DOWNARROW","LEFTARROW","RIGHTARROW","HOME","END","TAB","CARET","ITEM","HIDE","ICONS","POPUP","TEMPLATE_PROPERTY","MenuItem","MenuAnimationSettings","MenuBase","navIdx","isTapHold","showSubMenuOn","ejInst","clonedElement","defaultOption","removeChildElement","createItems","targetElems","menuHeaderClickHandler","cmenuHandler","delegateMoverHandler","moverHandler","delegateMouseDownHandler","delegateClickHandler","downarrow","uparrow","leftarrow","rightarrow","keyBoardHandler","closeMenu","keyHandler","actionNeeded","removeLIStateByClass","rightEnterKeyHandler","leftEscKeyHandler","cul","getUlByNavIdx","fliIdx","fli","getLIByClass","getIdx","cli","navIdxLen","popups_1","allPopup","keyType","openMenu","aEle","sli","isCMenu","canOpen","ulIndex","isIterated","isMenuVisible","item_1","wrapper_1","popups","getPopups","cnt","liElem_1","getLI","closeArgs","trgtliId","closedLi","trgtLi","popupId","unWireKeyboardEvent","toggleAnimation","showSubMenu","updateReactTemplate","trgtpopUp","submenus","afterCloseMenu","isMenusClosed","sli_1","cliIdx","item_2","removeStateWrapper","getMenuItemModel","valueOf","lItem","elemId","uList","hdata","hli","isNestedOrVertical","generatePopup","calculateIndentSize","hoverDelay","triggerBeforeOpen","targetEvent","copyObject","liStyle","liIndent","textIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent","actionOnScroll","triggerOpen","spanElem","tempTitle","spanTitle","spanIcon","observedHamburgerCloseArgs","callFit","menuType","observedOpenArgs","checkScrollOffset","animationOptions","setPosition","eventArgs_1","collide","offWidth","iconCssProps","iconSize","offsetEle","offsetRight","px","toggleVisiblity","newTop","xCollision","hasField","listBaseOptions","moduleName","itemCreating","liTrgt","ulId","hdrWrapper","regex","isDifferentElem","isClosed","cliWrapper","isInstLI","cliWrapperId","setLISelected","culIdx","classname","getItemIndex","newItem","setItems","newItems","skipHdr","updateItemsByNavIdx","updateItem","ul_2","ul_3","getChangedItemIndex","insertAfter","wrapper1","ul1","lis","popStr","uls","targetSelctor","isMenuOpen","pUlHeight","pElement","nIndex","isCallBack","skipItem","showHideItems","ishide","validUl","iitems","insertItems","isAfter","menuitem","removeAttributes","CLS_TAB","CLS_HEADER","CLS_BLA_TEM","CLS_CONTENT","CLS_NEST","CLS_ACTIVE","CLS_FOCUS","CLS_ICONS","CLS_ICON","CLS_ICON_TAB","CLS_ICON_CLOSE","CLS_CLOSE_SHOW","CLS_TEXT","CLS_INDICATOR","CLS_WRAP","CLS_TEXT_WRAP","CLS_TAB_ICON","CLS_TB_ITEMS","CLS_TB_ITEM","CLS_TB_POP","CLS_TB_POPUP","CLS_HOR_NAV","CLS_POPUP_OPEN","CLS_POPUP_CLOSE","CLS_PROGRESS","CLS_IGNORE","CLS_HSCRCNT","CLS_VSCRCNT","CLS_VTAB","CLS_VLEFT","CLS_VRIGHT","CLS_HBOTTOM","CLS_FILL","TABITEMPREFIX","CLS_REORDER_ACTIVE_ITEM","TabActionSettings","TabAnimationSettings","Header","TabItem","Tab","isIconAlone","draggableItems","refreshActiveTabBorder","tbObj","expTemplateContent","isTemplate","cntEle","btnCls","hdrEle","tbItems","tbItem","tbPop","prevItem","bdrLine","dragItem","draggingItems","nested","isNested","isPopup","itemIndexArray","updatePopAnimationConfig","tabId","refreshActiveBorder","setOrientation","headerPlacement","renderHeader","scrCnt","scrCntClass","setContentHeight","setRTL","hdrPlace","tabItems","getTabHeader","addVerticalClass","hdrItems","tabItems_1","cont","parseObject","setCloseButton","showCloseButton","toolbarHeader","hdrItem","reRenderItems","maxId","isReplace","idList_1","getIndexFromEle","txtWrapEle","tItems","spliceArray","tbId","tHtml","txtEmpty","headerTextCompile","tCont","wrapAttrs","attrObj","tItem","spliceItemIndex","removeActiveClass","tabHeader","checkPopupOverflow","isOverflow","popupHandler","ripEle","actEleId","prevEle","trg","prevCtnAnimation","triggerPrevAnimation","oldCnt","animateObj","triggerAnimation","itemCollection","prevActiveEle","newCnt","getTrgContent","extIndex","idNo","openEff","clsEff","setActiveBorder","keyPressed","trgParent","trgIndex","getEleIndex","selectTab","eleStr","templateCompile","compileElement","templateFUN","getContent","callType","eleVal","no","findEle","tbPos","place","activeTab","changeToolbarOrientation","curActItem","headerPos","contentPos","heightAdjustMode","getHeight","trgHdrEle","reorderActiveTab","bar","tbHeight","tbWidth","setActive","skipDataBind","serverDataBind","trg_1","eleTrg","refreshItemVisibility","eventArg","previousItem","selectingID","selectEventArgs","config","tbPopObj","bindDraggable","spaceKeyDown","tabKeyModule","openPopup","shiftTab","removeTab","nestedTab","clstHead","actEle","nxtSib","scrBar","scrStart","scrEnd","eleStart","eleEnd","eleViewRange","closeButtonTitle","evalOnPropertyChangeItems","selectElement","changedProp","oldVal","newVal","cntItem","textVal","clearTabTemplate","isHiddenEle","addTab","hideTab","strVal","enableTab","templateName","clearTemplates","itemDragStart","dropItem","dragIndex","dragArgs","draggedItem","droppedItem","isEqualNode","scrollRightNavEle","scrollLeftNavEle","hscrollBar","scrollContentWidth","droppedIndex","itemDragStop","tabItemDragArgs","dragsIndex","popupContainer","lastEle","dragStopArgs","tabItemDropArgs","addArgs","addedItems","addingTabContent","tabAddingArgs","lastEleIndex","tabItems_2","textValue_1","removeArgs","removedItem","removedIndex","tabRemovingArgs","targetEleIndex","cntTrg","selectedID","selectingItem","selectingIndex","selectingContent","selectArgs","tabItemId","refreshActiveTab","detachContent","mainContents","txtString","conte","crElem","tConts","wrapAtt","wraper","classNames","VERTICAL","DropDownButton","openPopUp","getULElement","div","getTargetElement","popupContent","isColorPicker","appendItems","hasIcon","createAnchor","beforeDisabled","afterDisabled","appendArrowSpan","prevElem","classList_1","attrList","popupUnWireEvents","destroyPopup","dropDownBtn","delegateMousedownHandler","mousedownHandler","popupWireEvents","closeActionEvents","focusoutHandler","keyEventHandler","triggerSelect","liTarget","popupElem","appendReactElement","beforeOpenArgs","wrapperWidth","popupRect","popupLeft","openArgs","focusEle","arrowSpan","HIDE_CLEAR","TEXTBOX_FOCUS","TextBox","isHiddenInput","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","setWidth","prevOnChange","isProtectedOnChange","isBlank","textarea","apiAttributes","attrs_1","autoCompleteTxt","getInputValidClassList","initialValue","setInitialValue","updatedClassValues","inputClassName","keydownHandler","resetForm","animationHandler","resetValue","textboxObj","interaction","resetInputHandler","addIcon","icons","addAttributes","Save","mimeType","getMimeType","isMicrosoftBrowser","msSaveBlob","downloadLink","saveInternal","hasDownloadAttribute","dataUrl_1","revokeObjectURL","isPopupBlocked","reader_1","onloadend","Encoding","includeBom","emitBOM","encodingType","initBOM","getByteCount","validateNullOrUndefined","utf8Len","getByteCountInternal","codePoint","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","byteCount","isUtf8","RangeError","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","byteCal","getStringOfUtf8Encoding","byteUnicode","getStringofUnicodeEncoding","bufview","charcode","uint16","byteUni","byte16"],"mappings":"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IAAU,IAAU,KACzG,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KAC7F,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KAC7F,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,KACzG,CAAC,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KACzG,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KAC7F,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KAC7F,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KAC7F,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KAC7F,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KAC7F,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KAC7F,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KAC7F,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,KACzE,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KAC7F,CAAC,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KACzE,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KAC7F,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KAC7F,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KAC7F,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,IAAU,IAAU,KAC7F,CAAC,IAAU,IAAU,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,KAAW,CAAC,IAAU,IAAU,KACzG,CAAC,IAAU,IAAU,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AS,IAAK,KACnC72I,KAAK2xJ,gBAAgB9a,SAAS,IAAK,KACnC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,OACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,OACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,OACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,OACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,OACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,OACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAM,MACpC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,MACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,MACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,MACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,MACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,MACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,MACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,MACrC72I,KAAK2xJ,gBAAgB9a,SAAS,KAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SAAS,MAAO,OACrC72I,KAAK2xJ,gBAAgB9a,SA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K,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,GAExCxD,EAA+B4D,mBAAqB,CAChD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAA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/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAA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GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAClE,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAClE,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAClE,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAClE,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAClE,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAClE,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAClE,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAClE,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAClE,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAClE,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAClE,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAClE,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAClE,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAClE,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAClE,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAClE,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAClE,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAClE,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAClE,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAClE,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S,IACVohR,EAAUphR,UAAW,oBAAgB,GACxC,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,kCAA8B,GACtD,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,2BAAuB,GAC/C,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,yBAAqB,GAC7C,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,yBAAqB,GAC7C,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,sBAAkB,GAC1C,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,kCAA8B,GACtD,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,6BAAyB,GACjD,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,+BAA2B,GACnD,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,8BAA0B,GAClD,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,mCAA+B,GACvD,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,+BAA2B,GACnD,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,iCAA6B,GACrD,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,2BAAuB,GAC/C,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,sCAAkC,GAC1D,GAAW,CACP,eAAS,kBACVohR,EAAUphR,UAAW,uBAAmB,GAC3C,GAAW,CACP,eAAS,YACVohR,EAAUphR,UAAW,gBAAY,GACpC,GAAW,CACP,eAAS,YACVohR,EAAUphR,UAAW,wBAAoB,GAC5C,GAAW,CACP,eAAS,YACVohR,EAAUphR,UAAW,iBAAa,GACrC,GAAW,CACP,eAAS,IACVohR,EAAUphR,UAAW,iBAAa,GACrC,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,8BAA0B,GAClD,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,qBAAiB,GACzC,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,2BAAuB,GAC/C,GAAW,CACP,gBAAS,IACVohR,EAAUphR,UAAW,uCAAmC,GAC3D,GAAW,CACP,gBAAS,IACVo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ACP,eAAQ,GAAI,KACbohR,EAAUphR,UAAW,qBAAiB,GACzC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,eAAW,GACnC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,oBAAgB,GACxC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,sBAAkB,GAC1C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,0BAAsB,GAC9C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,yBAAqB,GAC7C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,0BAAsB,GAC9C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,0BAAsB,GAC9C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,iBAAa,GACrC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,kBAAc,GACtC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,sBAAkB,GAC1C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,0BAAsB,GAC9C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,kBAAc,GACtC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,qBAAiB,GACzC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,wBAAoB,GAC5C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,kCAA8B,GACtD,GAAW,CACP,kBACDohR,EAAUphR,UAAW,wBAAoB,GAC5C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,oBAAgB,GACxC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,uBAAmB,GAC3C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,qBAAiB,GACzC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,iCAA6B,GACrD,GAAW,CACP,kBACDohR,EAAUphR,UAAW,uBAAmB,GAC3C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,uBAAmB,GAC3C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,wBAAoB,GAC5C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,0BAAsB,GAC9C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,6BAAyB,GACjD,GAAW,CACP,kBACDohR,EAAUphR,UAAW,sBAAkB,GAC1C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,wBAAoB,GAC5C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,2BAAuB,GAC/C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,4BAAwB,GAChD,GAAW,CACP,kBACDohR,EAAUphR,UAAW,qBAAiB,GACzC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,mBAAe,GACvC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,mBAAe,GACvC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,qBAAiB,GACzC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,qBAAiB,GACzC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,oBAAgB,GACxC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,oBAAgB,GACxC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,4BAAwB,GAChD,GAAW,CACP,kBACDohR,EAAUphR,UAAW,sBAAkB,GAC1C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,qBAAiB,GACzC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,oBAAgB,GACxC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,0BAAsB,GAC9C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,wBAAoB,GAC5C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,qBAAiB,GACzC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,wBAAoB,GAC5C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,sBAAkB,GAC1C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,mBAAe,GACvC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,kBAAc,GACtC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,gBAAY,GACpC,GAAW,CACP,kBACDohR,EAAUphR,UAAW,uBAAmB,GAC3C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,0BAAsB,GAC9C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,2BAAuB,GAC/C,GAAW,CACP,kBACDohR,EAAUphR,UAAW,2BAAuB,GAC/C,GAAW,CACP,kBACDohR,EAA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","file":"js/chunk-5fef8c72.d1dd1f2d.js","sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation, animationMode } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
Show Tooltip
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getScalingFactor = function (target) {\n if (!target) {\n return { x: 1, y: 1 };\n }\n var scalingFactors = { x: 1, y: 1 };\n var elementsWithTransform = target.closest('[style*=\"transform: scale\"]');\n if (elementsWithTransform && elementsWithTransform != this.tooltipEle && elementsWithTransform.contains(this.tooltipEle)) {\n var computedStyle = window.getComputedStyle(elementsWithTransform);\n var transformValue = computedStyle.getPropertyValue(\"transform\");\n var matrixValues = transformValue.match(/matrix\\(([^)]+)\\)/)[1].split(\",\").map(parseFloat);\n scalingFactors.x = matrixValues[0];\n scalingFactors.y = matrixValues[3];\n }\n return scalingFactors;\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var parentWithZoomStyle = this.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n if (!parentWithZoomStyle.contains(this.tooltipEle)) {\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n if (!this.isBodyContainer) {\n elePos.top -= this.containerElement.getBoundingClientRect().top;\n }\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position, xScalingFactor, yScalingFactor) {\n if (xScalingFactor === void 0) { xScalingFactor = 1; }\n if (yScalingFactor === void 0) { yScalingFactor = 1; }\n var pos = { top: 0, left: 0 };\n var tipWidth, tipHeight, tooltipEleWidth, tooltipEleHeight, arrowEle;\n var tipAdjust, tipHeightAdjust, tipWidthAdjust;\n if (xScalingFactor != 1 || yScalingFactor != 1) {\n var tooltipEleRect = this.tooltipEle.getBoundingClientRect();\n var arrowEleRect = void 0;\n tooltipEleWidth = Math.round(tooltipEleRect.width);\n tooltipEleHeight = Math.round(tooltipEleRect.height);\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (arrowEle) {\n arrowEleRect = arrowEle.getBoundingClientRect();\n }\n tipWidth = arrowEle ? Math.round(arrowEleRect.width) : 0;\n tipHeight = arrowEle ? Math.round(arrowEleRect.height) : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (tooltipEleHeight - (this.tooltipEle.clientHeight * yScalingFactor));\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (tooltipEleWidth - (this.tooltipEle.clientWidth * xScalingFactor));\n }\n else {\n tooltipEleWidth = this.tooltipEle.offsetWidth;\n tooltipEleHeight = this.tooltipEle.offsetHeight;\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n }\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer === false || arrowEle === null) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n if (this.enableHtmlParse) {\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent, this.root);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n var existingCloseIcon = this.tooltipEle.querySelector('.' + ICON + '.' + CLOSE);\n if (existingCloseIcon) {\n remove(existingCloseIcon);\n }\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: (showAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeIn' : this.animation.open.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string' || this.isReact;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, eleOffset);\n this.tooltipEle.style.display = 'block';\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer && arrowEle != null && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target, e);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target, e) {\n if (target && e) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: (hideAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeOut' : this.animation.close.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n var target = this.findTarget();\n if (target) {\n this.restoreElement(target);\n }\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var scalingFactors = this.getScalingFactor(event.target);\n var pos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position, scalingFactors.x, scalingFactors.y);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n if (arrowInnerELe) {\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n }\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'isSticky':\n if (this.tooltipEle && targetElement) {\n this.renderCloseIcon();\n this.reposition(targetElement);\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target_2 = selectAll(this.target, this.element);\n if (target_2.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","/* eslint-disable */\nimport { Encoding } from '@syncfusion/ej2-file-utils';\n/**\n * array literal codes\n */\nvar ARR_LITERAL_CODES = new Int16Array(286);\nvar ARR_LITERAL_LENGTHS = new Uint8Array(286);\nvar ARR_DISTANCE_CODES = new Int16Array(30);\nvar ARR_DISTANCE_LENGTHS = new Uint8Array(30);\n/**\n * represent compression stream writer\n * ```typescript\n * let compressedWriter = new CompressedStreamWriter();\n * let text: string = 'Hello world!!!';\n * compressedWriter.write(text, 0, text.length);\n * compressedWriter.close();\n * ```\n */\nvar CompressedStreamWriter = /** @class */ (function () {\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n function CompressedStreamWriter(noWrap) {\n this.pendingBuffer = new Uint8Array(1 << 16);\n this.pendingBufLength = 0;\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.currentHash = 0;\n this.matchStart = 0;\n this.matchLength = 0;\n this.matchPrevAvail = false;\n this.blockStart = 0;\n this.stringStart = 0;\n this.lookAhead = 0;\n this.totalBytesIn = 0;\n this.inputOffset = 0;\n this.inputEnd = 0;\n this.windowSize = 1 << 15;\n this.windowMask = this.windowSize - 1;\n this.hashSize = 1 << 15;\n this.hashMask = this.hashSize - 1;\n this.hashShift = Math.floor((15 + 3 - 1) / 3);\n this.maxDist = this.windowSize - 262;\n this.checkSum = 1;\n this.noWrap = false;\n if (!CompressedStreamWriter.isHuffmanTreeInitiated) {\n CompressedStreamWriter.initHuffmanTree();\n CompressedStreamWriter.isHuffmanTreeInitiated = true;\n }\n this.treeLiteral = new CompressorHuffmanTree(this, 286, 257, 15);\n this.treeDistances = new CompressorHuffmanTree(this, 30, 1, 15);\n this.treeCodeLengths = new CompressorHuffmanTree(this, 19, 4, 7);\n this.arrDistances = new Uint16Array((1 << 14));\n this.arrLiterals = new Uint8Array((1 << 14));\n this.stream = [];\n this.dataWindow = new Uint8Array(2 * this.windowSize);\n this.hashHead = new Int16Array(this.hashSize);\n this.hashPrevious = new Int16Array(this.windowSize);\n this.blockStart = this.stringStart = 1;\n this.noWrap = noWrap;\n if (!noWrap) {\n this.writeZLibHeader();\n }\n }\n Object.defineProperty(CompressedStreamWriter.prototype, \"compressedData\", {\n /**\n * get compressed data\n */\n get: function () {\n return this.stream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressedStreamWriter.prototype, \"getCompressedString\", {\n get: function () {\n var compressedString = '';\n if (this.stream !== undefined) {\n for (var i = 0; i < this.stream.length; i++) {\n compressedString += String.fromCharCode.apply(null, this.stream[i]);\n }\n }\n return compressedString;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Compresses data and writes it to the stream.\n * @param {Uint8Array} data - data to compress\n * @param {number} offset - offset in data\n * @param {number} length - length of the data\n * @returns {void}\n */\n CompressedStreamWriter.prototype.write = function (data, offset, length) {\n if (data === undefined || data === null) {\n throw new Error('ArgumentException: data cannot null or undefined');\n }\n var end = offset + length;\n if (0 > offset || offset > end || end > data.length) {\n throw new Error('ArgumentOutOfRangeException: Offset or length is incorrect');\n }\n if (typeof data === 'string') {\n var encode = new Encoding(false);\n encode.type = 'Utf8';\n data = new Uint8Array(encode.getBytes(data, 0, data.length));\n end = offset + data.length;\n }\n this.inputBuffer = data;\n this.inputOffset = offset;\n this.inputEnd = end;\n if (!this.noWrap) {\n this.checkSum = ChecksumCalculator.checksumUpdate(this.checkSum, this.inputBuffer, this.inputOffset, end);\n }\n while (!(this.inputEnd === this.inputOffset) || !(this.pendingBufLength === 0)) {\n this.pendingBufferFlush();\n this.compressData(false);\n }\n };\n /**\n * write ZLib header to the compressed data\n * @return {void}\n */\n CompressedStreamWriter.prototype.writeZLibHeader = function () {\n /* Initialize header.*/\n var headerDate = (8 + (7 << 4)) << 8;\n /* Save compression level.*/\n headerDate |= ((5 >> 2) & 3) << 6;\n /* Align header.*/\n headerDate += 31 - (headerDate % 31);\n /* Write header to stream.*/\n this.pendingBufferWriteShortBytes(headerDate);\n };\n /**\n * Write Most Significant Bytes in to stream\n * @param {number} s - check sum value\n */\n CompressedStreamWriter.prototype.pendingBufferWriteShortBytes = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s >> 8;\n this.pendingBuffer[this.pendingBufLength++] = s;\n };\n CompressedStreamWriter.prototype.compressData = function (finish) {\n var success;\n do {\n this.fillWindow();\n var canFlush = (finish && this.inputEnd === this.inputOffset);\n success = this.compressSlow(canFlush, finish);\n } while (this.pendingBufLength === 0 && success);\n return success;\n };\n CompressedStreamWriter.prototype.compressSlow = function (flush, finish) {\n if (this.lookAhead < 262 && !flush) {\n return false;\n }\n while (this.lookAhead >= 262 || flush) {\n if (this.lookAhead === 0) {\n return this.lookAheadCompleted(finish);\n }\n if (this.stringStart >= 2 * this.windowSize - 262) {\n this.slideWindow();\n }\n var prevMatch = this.matchStart;\n var prevLen = this.matchLength;\n if (this.lookAhead >= 3) {\n this.discardMatch();\n }\n if (prevLen >= 3 && this.matchLength <= prevLen) {\n prevLen = this.matchPreviousBest(prevMatch, prevLen);\n }\n else {\n this.matchPreviousAvailable();\n }\n if (this.bufferPosition >= (1 << 14)) {\n return this.huffmanIsFull(finish);\n }\n }\n return true;\n };\n CompressedStreamWriter.prototype.discardMatch = function () {\n var hashHead = this.insertString();\n if (hashHead !== 0 && this.stringStart - hashHead <= this.maxDist && this.findLongestMatch(hashHead)) {\n if (this.matchLength <= 5 && (this.matchLength === 3 && this.stringStart - this.matchStart > 4096)) {\n this.matchLength = 3 - 1;\n }\n }\n };\n CompressedStreamWriter.prototype.matchPreviousAvailable = function () {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = true;\n this.stringStart++;\n this.lookAhead--;\n };\n CompressedStreamWriter.prototype.matchPreviousBest = function (prevMatch, prevLen) {\n this.huffmanTallyDist(this.stringStart - 1 - prevMatch, prevLen);\n prevLen -= 2;\n do {\n this.stringStart++;\n this.lookAhead--;\n if (this.lookAhead >= 3) {\n this.insertString();\n }\n } while (--prevLen > 0);\n this.stringStart++;\n this.lookAhead--;\n this.matchPrevAvail = false;\n this.matchLength = 3 - 1;\n return prevLen;\n };\n CompressedStreamWriter.prototype.lookAheadCompleted = function (finish) {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = false;\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, this.stringStart - this.blockStart, finish);\n this.blockStart = this.stringStart;\n return false;\n };\n CompressedStreamWriter.prototype.huffmanIsFull = function (finish) {\n var len = this.stringStart - this.blockStart;\n if (this.matchPrevAvail) {\n len--;\n }\n var lastBlock = (finish && this.lookAhead === 0 && !this.matchPrevAvail);\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, len, lastBlock);\n this.blockStart += len;\n return !lastBlock;\n };\n CompressedStreamWriter.prototype.fillWindow = function () {\n if (this.stringStart >= this.windowSize + this.maxDist) {\n this.slideWindow();\n }\n while (this.lookAhead < 262 && this.inputOffset < this.inputEnd) {\n var more = 2 * this.windowSize - this.lookAhead - this.stringStart;\n if (more > this.inputEnd - this.inputOffset) {\n more = this.inputEnd - this.inputOffset;\n }\n this.dataWindow.set(this.inputBuffer.subarray(this.inputOffset, this.inputOffset + more), this.stringStart + this.lookAhead);\n this.inputOffset += more;\n this.totalBytesIn += more;\n this.lookAhead += more;\n }\n if (this.lookAhead >= 3) {\n this.updateHash();\n }\n };\n CompressedStreamWriter.prototype.slideWindow = function () {\n this.dataWindow.set(this.dataWindow.subarray(this.windowSize, this.windowSize + this.windowSize), 0);\n this.matchStart -= this.windowSize;\n this.stringStart -= this.windowSize;\n this.blockStart -= this.windowSize;\n for (var i = 0; i < this.hashSize; ++i) {\n var m = this.hashHead[i] & 0xffff;\n this.hashHead[i] = (((m >= this.windowSize) ? (m - this.windowSize) : 0));\n }\n for (var i = 0; i < this.windowSize; i++) {\n var m = this.hashPrevious[i] & 0xffff;\n this.hashPrevious[i] = ((m >= this.windowSize) ? (m - this.windowSize) : 0);\n }\n };\n CompressedStreamWriter.prototype.insertString = function () {\n var match;\n var hash = ((this.currentHash << this.hashShift) ^ this.dataWindow[this.stringStart + (3 - 1)]) & this.hashMask;\n this.hashPrevious[this.stringStart & this.windowMask] = match = this.hashHead[hash];\n this.hashHead[hash] = this.stringStart;\n this.currentHash = hash;\n return match & 0xffff;\n };\n CompressedStreamWriter.prototype.findLongestMatch = function (curMatch) {\n var chainLen = 4096;\n var niceLen = 258;\n var scan = this.stringStart;\n var match;\n var bestEnd = this.stringStart + this.matchLength;\n var bestLength = Math.max(this.matchLength, 3 - 1);\n var limit = Math.max(this.stringStart - this.maxDist, 0);\n var stringEnd = this.stringStart + 258 - 1;\n var scanEnd1 = this.dataWindow[bestEnd - 1];\n var scanEnd = this.dataWindow[bestEnd];\n var data = this.dataWindow;\n if (bestLength >= 32) {\n chainLen >>= 2;\n }\n if (niceLen > this.lookAhead) {\n niceLen = this.lookAhead;\n }\n do {\n if (data[curMatch + bestLength] !== scanEnd ||\n data[curMatch + bestLength - 1] !== scanEnd1 ||\n data[curMatch] !== data[scan] ||\n data[curMatch + 1] !== data[scan + 1]) {\n continue;\n }\n match = curMatch + 2;\n scan += 2;\n /* tslint:disable */\n while (data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] && scan < stringEnd) {\n /* tslint:disable */\n }\n if (scan > bestEnd) {\n this.matchStart = curMatch;\n bestEnd = scan;\n bestLength = scan - this.stringStart;\n if (bestLength >= niceLen) {\n break;\n }\n scanEnd1 = data[bestEnd - 1];\n scanEnd = data[bestEnd];\n }\n scan = this.stringStart;\n } while ((curMatch = (this.hashPrevious[curMatch & this.windowMask] & 0xffff)) > limit && --chainLen !== 0);\n this.matchLength = Math.min(bestLength, this.lookAhead);\n return this.matchLength >= 3;\n };\n CompressedStreamWriter.prototype.updateHash = function () {\n this.currentHash = (this.dataWindow[this.stringStart] << this.hashShift) ^ this.dataWindow[this.stringStart + 1];\n };\n CompressedStreamWriter.prototype.huffmanTallyLit = function (literal) {\n this.arrDistances[this.bufferPosition] = 0;\n this.arrLiterals[this.bufferPosition++] = literal;\n this.treeLiteral.codeFrequencies[literal]++;\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanTallyDist = function (dist, len) {\n this.arrDistances[this.bufferPosition] = dist;\n this.arrLiterals[this.bufferPosition++] = (len - 3);\n var lc = this.huffmanLengthCode(len - 3);\n this.treeLiteral.codeFrequencies[lc]++;\n if (lc >= 265 && lc < 285) {\n this.extraBits += Math.floor((lc - 261) / 4);\n }\n var dc = this.huffmanDistanceCode(dist - 1);\n this.treeDistances.codeFrequencies[dc]++;\n if (dc >= 4) {\n this.extraBits += Math.floor((dc / 2 - 1));\n }\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanFlushBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.treeLiteral.codeFrequencies[256]++;\n this.treeLiteral.buildTree();\n this.treeDistances.buildTree();\n this.treeLiteral.calculateBLFreq(this.treeCodeLengths);\n this.treeDistances.calculateBLFreq(this.treeCodeLengths);\n this.treeCodeLengths.buildTree();\n var blTreeCodes = 4;\n for (var i = 18; i > blTreeCodes; i--) {\n if (this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[i]] > 0) {\n blTreeCodes = i + 1;\n }\n }\n var opt_len = 14 + blTreeCodes * 3 + this.treeCodeLengths.getEncodedLength() +\n this.treeLiteral.getEncodedLength() + this.treeDistances.getEncodedLength() + this.extraBits;\n var static_len = this.extraBits;\n for (var i = 0; i < 286; i++) {\n static_len += this.treeLiteral.codeFrequencies[i] * ARR_LITERAL_LENGTHS[i];\n }\n for (var i = 0; i < 30; i++) {\n static_len += this.treeDistances.codeFrequencies[i] * ARR_DISTANCE_LENGTHS[i];\n }\n if (opt_len >= static_len) {\n // Force static trees.\n opt_len = static_len;\n }\n if (storedOffset >= 0 && storedLength + 4 < opt_len >> 3) {\n this.huffmanFlushStoredBlock(stored, storedOffset, storedLength, lastBlock);\n }\n else if (opt_len == static_len) {\n // Encode with static tree.\n this.pendingBufferWriteBits((1 << 1) + (lastBlock ? 1 : 0), 3);\n this.treeLiteral.setStaticCodes(ARR_LITERAL_CODES, ARR_LITERAL_LENGTHS);\n this.treeDistances.setStaticCodes(ARR_DISTANCE_CODES, ARR_DISTANCE_LENGTHS);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n else {\n this.pendingBufferWriteBits((2 << 1) + (lastBlock ? 1 : 0), 3);\n this.huffmanSendAllTrees(blTreeCodes);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n };\n CompressedStreamWriter.prototype.huffmanFlushStoredBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.pendingBufferWriteBits((0 << 1) + (lastBlock ? 1 : 0), 3);\n this.pendingBufferAlignToByte();\n this.pendingBufferWriteShort(storedLength);\n this.pendingBufferWriteShort(~storedLength);\n this.pendingBufferWriteByteBlock(stored, storedOffset, storedLength);\n this.huffmanReset();\n };\n CompressedStreamWriter.prototype.huffmanLengthCode = function (len) {\n if (len === 255) {\n return 285;\n }\n var code = 257;\n while (len >= 8) {\n code += 4;\n len >>= 1;\n }\n return code + len;\n };\n CompressedStreamWriter.prototype.huffmanDistanceCode = function (distance) {\n var code = 0;\n while (distance >= 4) {\n code += 2;\n distance >>= 1;\n }\n return code + distance;\n };\n CompressedStreamWriter.prototype.huffmanSendAllTrees = function (blTreeCodes) {\n this.treeCodeLengths.buildCodes();\n this.treeLiteral.buildCodes();\n this.treeDistances.buildCodes();\n this.pendingBufferWriteBits(this.treeLiteral.treeLength - 257, 5);\n this.pendingBufferWriteBits(this.treeDistances.treeLength - 1, 5);\n this.pendingBufferWriteBits(blTreeCodes - 4, 4);\n for (var rank = 0; rank < blTreeCodes; rank++) {\n this.pendingBufferWriteBits(this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[rank]], 3);\n }\n this.treeLiteral.writeTree(this.treeCodeLengths);\n this.treeDistances.writeTree(this.treeCodeLengths);\n };\n CompressedStreamWriter.prototype.huffmanReset = function () {\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.treeLiteral.reset();\n this.treeDistances.reset();\n this.treeCodeLengths.reset();\n };\n CompressedStreamWriter.prototype.huffmanCompressBlock = function () {\n for (var i = 0; i < this.bufferPosition; i++) {\n var literalLen = this.arrLiterals[i] & 255;\n var dist = this.arrDistances[i];\n if (dist-- !== 0) {\n var lc = this.huffmanLengthCode(literalLen);\n this.treeLiteral.writeCodeToStream(lc);\n var bits = Math.floor((lc - 261) / 4);\n if (bits > 0 && bits <= 5) {\n this.pendingBufferWriteBits(literalLen & ((1 << bits) - 1), bits);\n }\n var dc = this.huffmanDistanceCode(dist);\n this.treeDistances.writeCodeToStream(dc);\n bits = Math.floor(dc / 2 - 1);\n if (bits > 0) {\n this.pendingBufferWriteBits(dist & ((1 << bits) - 1), bits);\n }\n }\n else {\n this.treeLiteral.writeCodeToStream(literalLen);\n }\n }\n this.treeLiteral.writeCodeToStream(256);\n };\n /**\n * write bits in to internal buffer\n * @param {number} b - source of bits\n * @param {number} count - count of bits to write\n */\n CompressedStreamWriter.prototype.pendingBufferWriteBits = function (b, count) {\n var uint = new Uint32Array(1);\n uint[0] = this.pendingBufCache | (b << this.pendingBufBitsInCache);\n this.pendingBufCache = uint[0];\n this.pendingBufBitsInCache += count;\n this.pendingBufferFlushBits();\n };\n CompressedStreamWriter.prototype.pendingBufferFlush = function (isClose) {\n this.pendingBufferFlushBits();\n if (this.pendingBufLength > 0) {\n var array = new Uint8Array(this.pendingBufLength);\n array.set(this.pendingBuffer.subarray(0, this.pendingBufLength), 0);\n this.stream.push(array);\n }\n this.pendingBufLength = 0;\n };\n CompressedStreamWriter.prototype.pendingBufferFlushBits = function () {\n var result = 0;\n while (this.pendingBufBitsInCache >= 8 && this.pendingBufLength < (1 << 16)) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n this.pendingBufCache >>= 8;\n this.pendingBufBitsInCache -= 8;\n result++;\n }\n return result;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteByteBlock = function (data, offset, length) {\n var array = data.subarray(offset, offset + length);\n this.pendingBuffer.set(array, this.pendingBufLength);\n this.pendingBufLength += length;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteShort = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s;\n this.pendingBuffer[this.pendingBufLength++] = (s >> 8);\n };\n CompressedStreamWriter.prototype.pendingBufferAlignToByte = function () {\n if (this.pendingBufBitsInCache > 0) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n }\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n };\n /**\n * Huffman Tree literal calculation\n * @private\n */\n CompressedStreamWriter.initHuffmanTree = function () {\n var i = 0;\n while (i < 144) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x030 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n while (i < 256) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x190 - 144 + i) << 7);\n ARR_LITERAL_LENGTHS[i++] = 9;\n }\n while (i < 280) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x000 - 256 + i) << 9);\n ARR_LITERAL_LENGTHS[i++] = 7;\n }\n while (i < 286) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x0c0 - 280 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n for (i = 0; i < 30; i++) {\n ARR_DISTANCE_CODES[i] = CompressorHuffmanTree.bitReverse(i << 11);\n ARR_DISTANCE_LENGTHS[i] = 5;\n }\n };\n /**\n * close the stream and write all pending buffer in to stream\n * @returns {void}\n */\n CompressedStreamWriter.prototype.close = function () {\n do {\n this.pendingBufferFlush(true);\n if (!this.compressData(true)) {\n this.pendingBufferFlush(true);\n this.pendingBufferAlignToByte();\n if (!this.noWrap) {\n this.pendingBufferWriteShortBytes(this.checkSum >> 16);\n this.pendingBufferWriteShortBytes(this.checkSum & 0xffff);\n }\n this.pendingBufferFlush(true);\n }\n } while (!(this.inputEnd === this.inputOffset) ||\n !(this.pendingBufLength === 0));\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n CompressedStreamWriter.prototype.destroy = function () {\n this.stream = [];\n this.stream = undefined;\n this.pendingBuffer = undefined;\n this.treeLiteral = undefined;\n this.treeDistances = undefined;\n this.treeCodeLengths = undefined;\n this.arrLiterals = undefined;\n this.arrDistances = undefined;\n this.hashHead = undefined;\n this.hashPrevious = undefined;\n this.dataWindow = undefined;\n this.inputBuffer = undefined;\n this.pendingBufLength = undefined;\n this.pendingBufCache = undefined;\n this.pendingBufBitsInCache = undefined;\n this.bufferPosition = undefined;\n this.extraBits = undefined;\n this.currentHash = undefined;\n this.matchStart = undefined;\n this.matchLength = undefined;\n this.matchPrevAvail = undefined;\n this.blockStart = undefined;\n this.stringStart = undefined;\n this.lookAhead = undefined;\n this.totalBytesIn = undefined;\n this.inputOffset = undefined;\n this.inputEnd = undefined;\n this.windowSize = undefined;\n this.windowMask = undefined;\n this.hashSize = undefined;\n this.hashMask = undefined;\n this.hashShift = undefined;\n this.maxDist = undefined;\n this.checkSum = undefined;\n this.noWrap = undefined;\n };\n CompressedStreamWriter.isHuffmanTreeInitiated = false;\n return CompressedStreamWriter;\n}());\nexport { CompressedStreamWriter };\n/**\n * represent the Huffman Tree\n */\nvar CompressorHuffmanTree = /** @class */ (function () {\n /**\n * Create new Huffman Tree\n * @param {CompressedStreamWriter} writer instance\n * @param {number} elementCount - element count\n * @param {number} minCodes - minimum count\n * @param {number} maxLength - maximum count\n */\n function CompressorHuffmanTree(writer, elementCount, minCodes, maxLength) {\n this.writer = writer;\n this.codeMinCount = minCodes;\n this.maxLength = maxLength;\n this.codeFrequency = new Uint16Array(elementCount);\n this.lengthCount = new Int32Array(maxLength);\n }\n Object.defineProperty(CompressorHuffmanTree.prototype, \"treeLength\", {\n get: function () {\n return this.codeCount;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeLengths\", {\n get: function () {\n return this.codeLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeFrequencies\", {\n get: function () {\n return this.codeFrequency;\n },\n enumerable: true,\n configurable: true\n });\n CompressorHuffmanTree.prototype.setStaticCodes = function (codes, lengths) {\n var temp = new Int16Array(codes.length);\n temp.set(codes, 0);\n this.codes = temp;\n var lengthTemp = new Uint8Array(lengths.length);\n lengthTemp.set(lengths, 0);\n this.codeLength = lengthTemp;\n };\n /**\n * reset all code data in tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.reset = function () {\n for (var i = 0; i < this.codeFrequency.length; i++) {\n this.codeFrequency[i] = 0;\n }\n this.codes = undefined;\n this.codeLength = undefined;\n };\n /**\n * write code to the compressor output stream\n * @param {number} code - code to be written\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeCodeToStream = function (code) {\n this.writer.pendingBufferWriteBits(this.codes[code] & 0xffff, this.codeLength[code]);\n };\n /**\n * calculate code from their frequencies\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildCodes = function () {\n var nextCode = new Int32Array(this.maxLength);\n this.codes = new Int16Array(this.codeCount);\n var code = 0;\n for (var bitsCount = 0; bitsCount < this.maxLength; bitsCount++) {\n nextCode[bitsCount] = code;\n code += this.lengthCount[bitsCount] << (15 - bitsCount);\n }\n for (var i = 0; i < this.codeCount; i++) {\n var bits = this.codeLength[i];\n if (bits > 0) {\n this.codes[i] = CompressorHuffmanTree.bitReverse(nextCode[bits - 1]);\n nextCode[bits - 1] += 1 << (16 - bits);\n }\n }\n };\n CompressorHuffmanTree.bitReverse = function (value) {\n return (CompressorHuffmanTree.reverseBits[value & 15] << 12\n | CompressorHuffmanTree.reverseBits[(value >> 4) & 15] << 8\n | CompressorHuffmanTree.reverseBits[(value >> 8) & 15] << 4\n | CompressorHuffmanTree.reverseBits[value >> 12]);\n };\n /**\n * calculate length of compressed data\n * @returns {number}\n */\n CompressorHuffmanTree.prototype.getEncodedLength = function () {\n var len = 0;\n for (var i = 0; i < this.codeFrequency.length; i++) {\n len += this.codeFrequency[i] * this.codeLength[i];\n }\n return len;\n };\n /**\n * calculate code frequencies\n * @param {CompressorHuffmanTree} blTree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.calculateBLFreq = function (blTree) {\n var maxCount;\n var minCount;\n var count;\n var curLen = -1;\n var i = 0;\n while (i < this.codeCount) {\n count = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxCount = 138;\n minCount = 3;\n }\n else {\n maxCount = 6;\n minCount = 3;\n if (curLen !== nextLen) {\n blTree.codeFrequency[nextLen]++;\n count = 0;\n }\n }\n curLen = nextLen;\n i++;\n while (i < this.codeCount && curLen === this.codeLength[i]) {\n i++;\n if (++count >= maxCount) {\n break;\n }\n }\n if (count < minCount) {\n blTree.codeFrequency[curLen] += count;\n }\n else if (curLen !== 0) {\n blTree.codeFrequency[16]++;\n }\n else if (count <= 10) {\n blTree.codeFrequency[17]++;\n }\n else {\n blTree.codeFrequency[18]++;\n }\n }\n };\n /**\n * @param {CompressorHuffmanTree} blTree - write tree to output stream\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeTree = function (blTree) {\n var maxRepeatCount;\n var minRepeatCount;\n var currentRepeatCount;\n var currentCodeLength = -1;\n var i = 0;\n while (i < this.codeCount) {\n currentRepeatCount = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxRepeatCount = 138;\n minRepeatCount = 3;\n }\n else {\n maxRepeatCount = 6;\n minRepeatCount = 3;\n if (currentCodeLength !== nextLen) {\n blTree.writeCodeToStream(nextLen);\n currentRepeatCount = 0;\n }\n }\n currentCodeLength = nextLen;\n i++;\n while (i < this.codeCount && currentCodeLength === this.codeLength[i]) {\n i++;\n if (++currentRepeatCount >= maxRepeatCount) {\n break;\n }\n }\n if (currentRepeatCount < minRepeatCount) {\n while (currentRepeatCount-- > 0) {\n blTree.writeCodeToStream(currentCodeLength);\n }\n }\n else if (currentCodeLength !== 0) {\n blTree.writeCodeToStream(16);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 2);\n }\n else if (currentRepeatCount <= 10) {\n blTree.writeCodeToStream(17);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 3);\n }\n else {\n blTree.writeCodeToStream(18);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 11, 7);\n }\n }\n };\n /**\n * Build huffman tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildTree = function () {\n var codesCount = this.codeFrequency.length;\n var arrTree = new Int32Array(codesCount);\n var treeLength = 0;\n var maxCount = 0;\n for (var n = 0; n < codesCount; n++) {\n var freq = this.codeFrequency[n];\n if (freq !== 0) {\n var pos = treeLength++;\n var pPos = 0;\n while (pos > 0 && this.codeFrequency[arrTree[pPos = Math.floor((pos - 1) / 2)]] > freq) {\n arrTree[pos] = arrTree[pPos];\n pos = pPos;\n }\n arrTree[pos] = n;\n maxCount = n;\n }\n }\n while (treeLength < 2) {\n arrTree[treeLength++] =\n (maxCount < 2) ? ++maxCount : 0;\n }\n this.codeCount = Math.max(maxCount + 1, this.codeMinCount);\n var leafsCount = treeLength;\n var nodesCount = leafsCount;\n var child = new Int32Array(4 * treeLength - 2);\n var values = new Int32Array(2 * treeLength - 1);\n for (var i = 0; i < treeLength; i++) {\n var node = arrTree[i];\n var iIndex = 2 * i;\n child[iIndex] = node;\n child[iIndex + 1] = -1;\n values[i] = (this.codeFrequency[node] << 8);\n arrTree[i] = i;\n }\n this.constructHuffmanTree(arrTree, treeLength, values, nodesCount, child);\n this.buildLength(child);\n };\n CompressorHuffmanTree.prototype.constructHuffmanTree = function (arrTree, treeLength, values, nodesCount, child) {\n do {\n var first = arrTree[0];\n var last = arrTree[--treeLength];\n var lastVal = values[last];\n var pPos = 0;\n var path = 1;\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n }\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n var second = arrTree[0];\n last = nodesCount++;\n child[2 * last] = first;\n child[2 * last + 1] = second;\n var minDepth = Math.min(values[first] & 0xff, values[second] & 0xff);\n values[last] = lastVal = values[first] + values[second] - minDepth + 1;\n pPos = 0;\n path = 1;\n /* tslint:disable */\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n } /* tslint:disable */\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n } while (treeLength > 1);\n };\n CompressorHuffmanTree.prototype.buildLength = function (child) {\n this.codeLength = new Uint8Array(this.codeFrequency.length);\n var numNodes = Math.floor(child.length / 2);\n var numLeafs = Math.floor((numNodes + 1) / 2);\n var overflow = 0;\n for (var i = 0; i < this.maxLength; i++) {\n this.lengthCount[i] = 0;\n }\n overflow = this.calculateOptimalCodeLength(child, overflow, numNodes);\n if (overflow === 0) {\n return;\n }\n var iIncreasableLength = this.maxLength - 1;\n do {\n while (this.lengthCount[--iIncreasableLength] === 0) {\n /* tslint:disable */\n }\n do {\n this.lengthCount[iIncreasableLength]--;\n this.lengthCount[++iIncreasableLength]++;\n overflow -= (1 << (this.maxLength - 1 - iIncreasableLength));\n } while (overflow > 0 && iIncreasableLength < this.maxLength - 1);\n } while (overflow > 0);\n this.recreateTree(child, overflow, numLeafs);\n };\n CompressorHuffmanTree.prototype.recreateTree = function (child, overflow, numLeafs) {\n this.lengthCount[this.maxLength - 1] += overflow;\n this.lengthCount[this.maxLength - 2] -= overflow;\n var nodePtr = 2 * numLeafs;\n for (var bits = this.maxLength; bits !== 0; bits--) {\n var n = this.lengthCount[bits - 1];\n while (n > 0) {\n var childPtr = 2 * child[nodePtr++];\n if (child[childPtr + 1] === -1) {\n this.codeLength[child[childPtr]] = bits;\n n--;\n }\n }\n }\n };\n CompressorHuffmanTree.prototype.calculateOptimalCodeLength = function (child, overflow, numNodes) {\n var lengths = new Int32Array(numNodes);\n lengths[numNodes - 1] = 0;\n for (var i = numNodes - 1; i >= 0; i--) {\n var childIndex = 2 * i + 1;\n if (child[childIndex] !== -1) {\n var bitLength = lengths[i] + 1;\n if (bitLength > this.maxLength) {\n bitLength = this.maxLength;\n overflow++;\n }\n lengths[child[childIndex - 1]] = lengths[child[childIndex]] = bitLength;\n }\n else {\n var bitLength = lengths[i];\n this.lengthCount[bitLength - 1]++;\n this.codeLength[child[childIndex - 1]] = lengths[i];\n }\n }\n return overflow;\n };\n CompressorHuffmanTree.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n CompressorHuffmanTree.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return CompressorHuffmanTree;\n}());\nexport { CompressorHuffmanTree };\n/**\n * Checksum calculator, based on Adler32 algorithm.\n */\nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /**\n * Updates checksum by calculating checksum of the\n * given buffer and adding it to current value.\n * @param {number} checksum - current checksum.\n * @param {Uint8Array} buffer - data byte array.\n * @param {number} offset - offset in the buffer.\n * @param {number} length - length of data to be used from the stream.\n * @returns {number}\n */\n ChecksumCalculator.checksumUpdate = function (checksum, buffer, offset, length) {\n var uint = new Uint32Array(1);\n uint[0] = checksum;\n var checksum_uint = uint[0];\n var s1 = uint[0] = checksum_uint & 65535;\n var s2 = uint[0] = checksum_uint >> ChecksumCalculator.checkSumBitOffset;\n while (length > 0) {\n var steps = Math.min(length, ChecksumCalculator.checksumIterationCount);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (uint[0] = (buffer[offset++] & 255));\n s2 = s2 + s1;\n }\n s1 %= ChecksumCalculator.checksumBase;\n s2 %= ChecksumCalculator.checksumBase;\n }\n checksum_uint = (s2 << ChecksumCalculator.checkSumBitOffset) | s1;\n return checksum_uint;\n };\n ChecksumCalculator.checkSumBitOffset = 16;\n ChecksumCalculator.checksumBase = 65521;\n ChecksumCalculator.checksumIterationCount = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n/* eslint-enable */ \n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"pdfComponent\"}},[_c('h4',{staticClass:\"titleClass\"},[_vm._v(_vm._s(_vm.title))]),_c('ejs-pdfviewer',{attrs:{\"id\":\"pdfViewer\",\"serviceUrl\":_vm.serviceUrl,\"documentPath\":_vm.documentPath}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { createElement, isNullOrUndefined, Browser, isBlazor } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\n/**\n * TextLayer module is used to handle the text content on the control.\n *\n * @hidden\n */\nvar TextLayer = /** @class */ (function () {\n /**\n * @param {PdfViewer} pdfViewer - The PdfViewer.\n * @param {PdfViewerBase} pdfViewerBase - The PdfViewerBase.\n * @private\n */\n function TextLayer(pdfViewer, pdfViewerBase) {\n var _this = this;\n // eslint-disable-next-line\n this.textBoundsArray = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.characterBound = [];\n /**\n * @returns {void}\n */\n this.closeNotification = function () {\n _this.notifyDialog.hide();\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param {number} pageNumber - The pageNumber.\n * @param {number} pageWidth - The pageWidth.\n * @param {number} pageHeight - The pageHeight.\n * @param {HTMLElement} pageDiv - The pageDiv.\n * @returns {HTMLElement} - The HTMLElement.\n * @private\n */\n TextLayer.prototype.addTextLayer = function (pageNumber, pageWidth, pageHeight, pageDiv) {\n var textDiv = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageNumber);\n var textLayer;\n if (!textDiv) {\n textLayer = createElement('div', { id: this.pdfViewer.element.id + '_textLayer_' + pageNumber, className: 'e-pv-text-layer' });\n textLayer.style.width = pageWidth + 'px';\n textLayer.style.height = pageHeight + 'px';\n if (pageDiv) {\n pageDiv.appendChild(textLayer);\n }\n }\n this.pdfViewerBase.applyElementStyles(textLayer, pageNumber);\n return textLayer;\n };\n /**\n * @param {number} pageNumber - The pageNumber.\n * @param {any} textContents - The textContents.\n * @param {any} textBounds - The textBounds.\n * @param {any} rotation - The rotation.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n TextLayer.prototype.renderTextContents = function (pageNumber, textContents, textBounds, rotation, rtldoc) {\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageNumber);\n var canvasElement = createElement(\"canvas\");\n var isRTLText;\n if (this.pdfViewerBase.clientSideRendering) {\n isRTLText = false;\n }\n var linebounds = [];\n var lineContent = [];\n var yValue;\n var heightValue;\n if (textBounds.length > 1) {\n if (textBounds[0].Width === 0 && textBounds.length > 2) {\n yValue = textBounds[1].Y;\n heightValue = textBounds[1].Height;\n }\n else {\n yValue = textBounds[0].Y;\n heightValue = textBounds[0].Height;\n }\n }\n var idNumber = 0;\n if (canvasElement && textLayer && textLayer.childNodes.length === 0) {\n for (var i = 0; i < textContents.length; i++) {\n // eslint-disable-next-line\n if ((!(textContents[i].includes(\"\\r\\n\")) && !(textContents[i].includes(\"\\u0002\"))) && i != textBounds.length - 1 && rotation === 0 && !rtldoc) {\n linebounds.push(textBounds[parseInt(i.toString(), 10)]);\n lineContent.push(textContents[parseInt(i.toString(), 10)]);\n if (yValue > textBounds[parseInt(i.toString(), 10)].Y && textBounds[parseInt(i.toString(), 10)].Width !== 0) {\n yValue = textBounds[parseInt(i.toString(), 10)].Y;\n }\n if (heightValue < textBounds[parseInt(i.toString(), 10)].Height && textBounds[parseInt(i.toString(), 10)].Width !== 0) {\n heightValue = textBounds[parseInt(i.toString(), 10)].Height;\n }\n }\n else {\n linebounds.push(textBounds[parseInt(i.toString(), 10)]);\n lineContent.push(textContents[parseInt(i.toString(), 10)]);\n if (yValue > textBounds[parseInt(i.toString(), 10)].Y && textBounds[parseInt(i.toString(), 10)].Width !== 0) {\n yValue = textBounds[parseInt(i.toString(), 10)].Y;\n }\n if (heightValue < textBounds[parseInt(i.toString(), 10)].Height && textBounds[parseInt(i.toString(), 10)].Width !== 0) {\n heightValue = textBounds[parseInt(i.toString(), 10)].Height;\n }\n for (var j = 0; j < linebounds.length; j++) {\n var bounds = linebounds[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n var textDiv = createElement('div', { id: this.pdfViewer.element.id + '_text_' + pageNumber + '_' + idNumber, className: 'e-pv-text', attrs: { 'tabindex': '-1' } });\n var textContent = lineContent[parseInt(j.toString(), 10)];\n if (textContent === \" \" && j != linebounds.length - 1 && j != 0) {\n bounds.Height = linebounds[j - 1].Height;\n bounds.Y = linebounds[j - 1].Y;\n }\n textDiv.textContent = textContent.replace(/ /g, ' ');\n // eslint-disable-next-line\n var newLine = lineContent[j].replace(/ +/g, ' ');\n if (newLine !== ' ') {\n textDiv.style.whiteSpace = 'pre';\n }\n if (this.pdfViewerBase.clientSideRendering) {\n if (textContent === ' ') {\n textDiv.style.whiteSpace = 'pre';\n }\n if (!isNullOrUndefined(textDiv.textContent) && textContent !== \" \") {\n isRTLText = this.pdfViewerBase.checkIsRtlText(textDiv.textContent);\n textDiv.style.direction = isRTLText ? 'rtl' : 'ltr';\n }\n else {\n textDiv.style.direction = isRTLText ? 'rtl' : 'ltr';\n }\n }\n if (bounds.Width === 0 && j != linebounds.length - 1 && j != 0) {\n if (linebounds[j + 1].X - (linebounds[j - 1].X + linebounds[j - 1].Width) < 30 && (!lineContent[j - 1].includes(\"\\r\\n\") && !(textContents[parseInt(j.toString(), 10)].includes(\"\\u0002\")))) {\n bounds.Width = linebounds[j + 1].X - (linebounds[j - 1].X + linebounds[j - 1].Width);\n bounds.X = linebounds[j - 1].X + linebounds[j - 1].Width;\n if (bounds.Width < 0) {\n bounds.Width = 0;\n }\n else {\n textDiv.style.whiteSpace = 'pre';\n }\n }\n }\n if ((j != 0 || linebounds.length - 1 === 0 || (bounds.Y - yValue) > 20 && bounds.Width != 0) && idNumber != 0 && ((textBounds[idNumber - 1].Y - textBounds[parseInt(idNumber.toString(), 10)].Y) > 11 || ((textBounds[parseInt(idNumber.toString(), 10)].Y - textBounds[idNumber - 1].Y) > 11)) && lineContent[parseInt(j.toString(), 10)] != \" \") {\n yValue = linebounds[parseInt(j.toString(), 10)].Y;\n heightValue = linebounds[parseInt(j.toString(), 10)].Height;\n }\n if (bounds) {\n if (bounds.Rotation !== 270) {\n bounds.Y = yValue;\n bounds.Height = heightValue;\n }\n this.setStyleToTextDiv(textDiv, bounds.X, bounds.Y, bounds.Bottom, bounds.Width, bounds.Height, bounds.Rotation);\n }\n this.setTextElementProperties(textDiv);\n var context = canvasElement.getContext('2d');\n context.font = textDiv.style.fontSize + ' ' + textDiv.style.fontFamily;\n var contextWidth = context.measureText(lineContent[parseInt(j.toString(), 10)].replace(/(\\r\\n|\\n|\\r)/gm, '')).width;\n if (bounds) {\n var scale = void 0;\n if (bounds.Rotation === 90 || (this.pdfViewerBase.clientSideRendering && bounds.Rotation === 270)) {\n scale = bounds.Height * this.pdfViewerBase.getZoomFactor() / contextWidth;\n }\n else {\n scale = bounds.Width * this.pdfViewerBase.getZoomFactor() / contextWidth;\n }\n this.applyTextRotation(scale, textDiv, rotation, bounds.Rotation, bounds);\n }\n textLayer.appendChild(textDiv);\n // EJ2-855106- Optimize performance by eliminating unnecessary getBoundingClientRect usage in this method.\n this.resizeExcessDiv(textLayer, textDiv);\n // eslint-disable-next-line max-len\n if (this.pdfViewer.textSelectionModule && this.pdfViewer.enableTextSelection && !this.pdfViewerBase.isTextSelectionDisabled && textDiv.className !== 'e-pdfviewer-formFields'\n && textDiv.className !== 'e-pdfviewer-signatureformfields' && textDiv.className !== 'e-pdfviewer-signatureformfields-signature') {\n textDiv.classList.add('e-pv-cursor');\n }\n idNumber++;\n }\n linebounds = [];\n lineContent = [];\n if (i < textBounds.length - 1) {\n if (textBounds[i + 1].Width === 0 && !isNullOrUndefined(textBounds[i + 2])) {\n yValue = textBounds[i + 2].Y;\n heightValue = textBounds[i + 2].Height;\n }\n else {\n yValue = textBounds[i + 1].Y;\n heightValue = textBounds[i + 1].Height;\n }\n }\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param textContents\n * @param textBounds\n * @param rotation\n * @param isTextSearch\n * @param pageNumber\n * @param textContents\n * @param textBounds\n * @param rotation\n * @param isTextSearch\n * @private\n */\n // eslint-disable-next-line\n TextLayer.prototype.resizeTextContents = function (pageNumber, textContents, textBounds, rotation, isTextSearch) {\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + pageNumber);\n var canvasElement = createElement(\"canvas\");\n if (canvasElement) {\n for (var i = 0; i < textLayer.childNodes.length; i++) {\n // eslint-disable-next-line\n var bounds = void 0;\n var textDiv = this.pdfViewerBase.getElement('_text_' + pageNumber + '_' + i);\n if (isNullOrUndefined(textDiv)) {\n break;\n }\n if (textBounds) {\n bounds = textBounds[parseInt(i.toString(), 10)];\n if (bounds) {\n this.setStyleToTextDiv(textDiv, bounds.X, bounds.Y, bounds.Bottom, bounds.Width, bounds.Height, bounds.Rotation);\n }\n }\n this.setTextElementProperties(textDiv);\n var context = canvasElement.getContext('2d');\n context.font = textDiv.style.fontSize + ' ' + textDiv.style.fontFamily;\n var contextWidth = void 0;\n if (textContents) {\n var textContent = textContents[parseInt(i.toString(), 10)];\n if (textContent) {\n contextWidth = context.measureText(textContent.replace(/(\\r\\n|\\n|\\r)/gm, '')).width;\n }\n }\n else {\n contextWidth = context.measureText(textDiv.textContent.replace(/(\\r\\n|\\n|\\r)/gm, '')).width;\n }\n if (bounds) {\n var scale = void 0;\n if (bounds.Rotation === 90 || (this.pdfViewerBase.clientSideRendering && bounds.Rotation === 270)) {\n scale = bounds.Height * this.pdfViewerBase.getZoomFactor() / contextWidth;\n }\n else {\n scale = bounds.Width * this.pdfViewerBase.getZoomFactor() / contextWidth;\n }\n this.applyTextRotation(scale, textDiv, rotation, bounds.Rotation, bounds);\n }\n // EJ2-855106- Optimize performance by eliminating unnecessary getBoundingClientRect usage in this method.\n this.resizeExcessDiv(textLayer, textDiv);\n }\n }\n else {\n textLayer.parentElement.removeChild(textLayer);\n }\n if (this.pdfViewer.textSearch) {\n if (!isTextSearch) {\n this.pdfViewer.textSearch.resizeSearchElements(pageNumber);\n }\n }\n };\n TextLayer.prototype.applyTextRotation = function (scale, textDiv, rotation, textRotation, bounds) {\n var scaleString = 'scaleX(' + scale + ')';\n if (this.pdfViewerBase.clientSideRendering) {\n if (rotation === 0) {\n if (textRotation === 0) {\n textDiv.style.transform = scaleString;\n }\n else if (textRotation === 90) {\n textDiv.style.left = (bounds.X + bounds.Width) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.top = bounds.Y * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n else if (textRotation === 180) {\n textDiv.style.left = (bounds.X + bounds.Width) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.top = (bounds.Y + bounds.Height) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n else if (textRotation === 270) {\n textDiv.style.left = bounds.X * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.top = (bounds.Y + bounds.Height) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n else {\n textDiv.style.transform = scaleString;\n }\n }\n else if (rotation === 1) {\n var textRotationAngle = textRotation + 90;\n if (textRotationAngle >= 360) {\n textRotationAngle -= 360;\n }\n if (textRotation === 0) {\n textDiv.style.transform = 'rotate(90deg) ' + scaleString;\n }\n else if (textRotation === 90) {\n textDiv.style.left = bounds.X * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.top = (bounds.Y + bounds.Width) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.transform = 'rotate(' + textRotationAngle + 'deg) ' + scaleString;\n }\n else if (textRotation === 180) {\n textDiv.style.left = (bounds.X - bounds.Height) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.top = (bounds.Y + bounds.Width) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.transform = 'rotate(' + textRotationAngle + 'deg) ' + scaleString;\n }\n else if (textRotation === 270) {\n textDiv.style.left = (bounds.X - bounds.Height) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.top = (bounds.Y) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.transform = 'rotate(' + textRotationAngle + 'deg) ' + scaleString;\n }\n else {\n textDiv.style.transform = 'rotate(90deg) ' + scaleString;\n }\n }\n else if (rotation === 2) {\n var textRotationAngle = textRotation + 180;\n if (textRotationAngle >= 360) {\n textRotationAngle -= 360;\n }\n if (textRotation === 0) {\n textDiv.style.transform = 'rotate(180deg) ' + scaleString;\n }\n else if (textRotation === 90) {\n textDiv.style.left = (bounds.X - bounds.Width) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.top = bounds.Y * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.transform = 'rotate(' + (textRotationAngle) + 'deg) ' + scaleString;\n }\n else if (textRotation === 180) {\n textDiv.style.left = (bounds.X - bounds.Width) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.top = (bounds.Y - bounds.Height) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.transform = 'rotate(' + (textRotationAngle) + 'deg) ' + scaleString;\n }\n else if (textRotation === 270) {\n textDiv.style.left = bounds.X * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.top = (bounds.Y - bounds.Height) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.transform = 'rotate(' + (textRotationAngle) + 'deg) ' + scaleString;\n }\n else {\n textDiv.style.transform = 'rotate(180deg) ' + scaleString;\n }\n }\n else if (rotation === 3) {\n var textRotationAngle = textRotation + 270;\n if (textRotationAngle >= 360) {\n textRotationAngle -= 360;\n }\n if (textRotation === 0) {\n textDiv.style.transform = 'rotate(270deg) ' + scaleString;\n }\n else if (textRotation === 90) {\n textDiv.style.left = bounds.X * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.top = (bounds.Y - bounds.Width) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.transform = 'rotate(' + (textRotationAngle) + 'deg) ' + scaleString;\n }\n else if (textRotation === 180) {\n textDiv.style.left = (bounds.X + bounds.Height) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.top = (bounds.Y - bounds.Width) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.transform = 'rotate(' + (textRotationAngle) + 'deg) ' + scaleString;\n }\n else if (textRotation === 270) {\n textDiv.style.left = (bounds.X + bounds.Height) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.top = (bounds.Y) * this.pdfViewerBase.getZoomFactor() + \"px\";\n textDiv.style.transform = 'rotate(' + (textRotationAngle) + 'deg) ' + scaleString;\n }\n else {\n textDiv.style.transform = 'rotate(270deg) ' + scaleString;\n }\n }\n }\n else {\n if (rotation === 0) {\n if ((textRotation >= 0 && textRotation < 90)) {\n textDiv.style.transform = scaleString;\n }\n else if ((textRotation == 90) || (textRotation == 270)) {\n if ((textRotation == 270)) {\n textDiv.style.left = (bounds.X * this.pdfViewerBase.getZoomFactor()) + \"px\";\n textDiv.style.top = ((bounds.Y + bounds.Width) * this.pdfViewerBase.getZoomFactor()) + \"px\";\n textDiv.style.height = (bounds.Height * this.pdfViewerBase.getZoomFactor()) + \"px\";\n textDiv.style.fontSize = (bounds.Height * this.pdfViewerBase.getZoomFactor()) + \"px\";\n }\n else {\n textDiv.style.left = ((bounds.X + bounds.Width) * this.pdfViewerBase.getZoomFactor()) + \"px\";\n textDiv.style.top = (bounds.Y * this.pdfViewerBase.getZoomFactor()) + \"px\";\n textDiv.style.height = (bounds.Width * this.pdfViewerBase.getZoomFactor()) + \"px\";\n textDiv.style.fontSize = (bounds.Width * this.pdfViewerBase.getZoomFactor()) + \"px\";\n textDiv.style.transformOrigin = '0% 0%';\n }\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n else {\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n }\n else if (rotation === 1) {\n if (textRotation === 0) {\n textDiv.style.transform = 'rotate(90deg) ' + scaleString;\n }\n else if (textRotation === -90) {\n textDiv.style.transform = scaleString;\n }\n else {\n textRotation = textRotation + 90;\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n }\n else if (rotation === 2) {\n if (textRotation === 0) {\n textDiv.style.transform = 'rotate(180deg) ' + scaleString;\n }\n else if (textRotation === 180) {\n textDiv.style.transform = scaleString;\n }\n else {\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n }\n else if (rotation === 3) {\n if (textRotation === 0) {\n textDiv.style.transform = 'rotate(-90deg) ' + scaleString;\n }\n else if (textRotation === 90) {\n textDiv.style.transform = scaleString;\n }\n else {\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n }\n }\n };\n TextLayer.prototype.setTextElementProperties = function (textDiv) {\n textDiv.style.fontFamily = 'serif';\n textDiv.style.transformOrigin = this.pdfViewerBase.clientSideRendering ? '0% 0%' : '0%';\n };\n /**\n * @param {number} pageNumber - The pageNumber.\n * @returns {void}\n * @private\n */\n TextLayer.prototype.resizeTextContentsOnZoom = function (pageNumber) {\n // eslint-disable-next-line max-len\n var renderObject = window.sessionStorage.getItem(this.pdfViewerBase.getDocumentId() + '_' + pageNumber + '_' + this.getPreviousZoomFactor());\n // eslint-disable-next-line\n var textBounds = [];\n var textContents = [];\n // eslint-disable-next-line\n var rotation;\n if (renderObject) {\n // eslint-disable-next-line\n var data = JSON.parse(renderObject);\n // eslint-disable-next-line\n textBounds = data['textBounds'];\n // eslint-disable-next-line\n textContents = data['textContent'];\n // eslint-disable-next-line\n rotation = data['rotation'];\n }\n if (textBounds.length !== 0) {\n this.textBoundsArray.push({ pageNumber: pageNumber, textBounds: textBounds });\n this.resizeTextContents(pageNumber, textContents, textBounds, rotation);\n }\n else {\n // eslint-disable-next-line\n var textElements = this.textBoundsArray.filter(function (obj) {\n return obj.pageNumber === pageNumber;\n });\n if (textElements) {\n if (textElements.length !== 0) {\n // eslint-disable-next-line\n textBounds = textElements[0]['textBounds'];\n this.resizeTextContents(pageNumber, null, textBounds, rotation);\n }\n }\n }\n };\n /**\n * EJ2-855106- Optimize performance by eliminating unnecessary getBoundingClientRect usage in this method.\n */\n TextLayer.prototype.resizeExcessDiv = function (textLayer, textDiv) {\n // EJ2-855106- Optimize performance by eliminating unnecessary getBoundingClientRect usage in this method.\n // const textLayerPosition: ClientRect = textLayer.getBoundingClientRect();\n // const textDivPosition: ClientRect = textDiv.getBoundingClientRect();\n // // eslint-disable-next-line max-len\n // if ((textDivPosition.width + textDivPosition.left) >= (textLayerPosition.width + textLayerPosition.left) || (textDivPosition.width > textLayerPosition.width)) {\n // // 'auto' width is set to reset the size of the div to its contents.\n // textDiv.style.width = 'auto';\n // // Client width gets reset by 'auto' width property which has the width of the content.\n // textDiv.style.width = textDiv.clientWidth + 'px';\n // }\n };\n /**\n * @private\n * @param {boolean} isPinchZoomed - The isPinchZoomed.\n * @returns {void}\n */\n TextLayer.prototype.clearTextLayers = function (isPinchZoomed) {\n var lowerPageValue = this.pdfViewerBase.currentPageNumber - 3;\n lowerPageValue = (lowerPageValue > 0) ? lowerPageValue : 0;\n var higherPageValue = this.pdfViewerBase.currentPageNumber + 1;\n higherPageValue = (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n var textLayers = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_textLayer_\"]');\n for (var i = 0; i < textLayers.length; i++) {\n textLayers[parseInt(i.toString(), 10)].style.display = 'block';\n if (this.pdfViewerBase.getMagnified() && (this.getTextSelectionStatus() || this.getTextSearchStatus())) {\n // eslint-disable-next-line radix\n var pageNumber = parseInt(textLayers[parseInt(i.toString(), 10)].id.split('_textLayer_')[1]);\n if (!(((lowerPageValue + 1) <= pageNumber) && (pageNumber <= (higherPageValue - 1)))) {\n this.removeElement(textLayers[parseInt(i.toString(), 10)], isPinchZoomed);\n }\n }\n else if (this.pdfViewerBase.getPinchZoomed()) {\n this.removeElement(textLayers[parseInt(i.toString(), 10)], isPinchZoomed);\n }\n else {\n this.removeElement(textLayers[parseInt(i.toString(), 10)], isPinchZoomed);\n }\n }\n };\n TextLayer.prototype.removeElement = function (element, isPinchZoomed) {\n if (isPinchZoomed) {\n this.removeForeignObjects(element);\n }\n else {\n if (Browser.isIE) {\n if (element.parentElement) {\n element.parentElement.removeChild(element);\n }\n else if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n else {\n element.remove();\n }\n }\n };\n TextLayer.prototype.removeForeignObjects = function (element) {\n // eslint-disable-next-line\n var childElement = element.getElementsByClassName('foreign-object');\n if (childElement) {\n for (var i = 0; i < childElement.length; i++) {\n if (Browser.isDevice) {\n //Remove the outer div element of checkbox and other formfields in pichzoom\n if (childElement[parseInt(i.toString(), 10)].parentElement.className === 'e-pv-text-layer' && childElement[0].parentElement.className !== 'e-pv-checkbox-outer-div') {\n element.removeChild(childElement[0]);\n }\n else if (childElement[parseInt(i.toString(), 10)].parentElement.className === 'e-pv-checkbox-outer-div') {\n var outerDivParent = document.getElementById(childElement[0].parentElement.id);\n if (outerDivParent) {\n outerDivParent.parentElement.remove();\n }\n }\n }\n else {\n if (childElement[parseInt(i.toString(), 10)].parentElement.className === 'e-pv-text-layer') {\n element.removeChild(childElement[0]);\n }\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param divId\n * @param fromOffset\n * @param toOffset\n * @param textString\n * @param className\n * @private\n */\n // eslint-disable-next-line max-len\n TextLayer.prototype.convertToSpan = function (pageNumber, divId, fromOffset, toOffset, textString, className, isRTLText) {\n var textDiv = this.pdfViewerBase.getElement('_text_' + pageNumber + '_' + divId);\n var textContent = textString.substring(fromOffset, toOffset);\n var node = document.createTextNode(textContent);\n if (className) {\n var spanElement = createElement('span');\n spanElement.className = className + ' e-pv-text';\n if (this.pdfViewerBase.clientSideRendering && isRTLText) {\n if (toOffset === textString.length) {\n spanElement.style.left = 0 + 'px';\n spanElement.style.top = 0 + 'px';\n }\n else {\n if (textDiv.style.direction == 'rtl') {\n var currentText = textDiv.textContent;\n textDiv.textContent = textString.substring(toOffset, textString.length);\n var textBounds = textDiv.getBoundingClientRect();\n spanElement.style.left = textBounds.width + 'px';\n spanElement.style.top = 0 + 'px';\n textDiv.textContent = currentText;\n }\n }\n }\n spanElement.appendChild(node);\n textDiv.appendChild(spanElement);\n }\n else {\n textDiv.appendChild(node);\n }\n };\n /**\n * @param startPage\n * @param endPage\n * @param anchorOffsetDiv\n * @param focusOffsetDiv\n * @param anchorOffset\n * @param focusOffset\n * @private\n */\n // eslint-disable-next-line max-len\n TextLayer.prototype.applySpanForSelection = function (startPage, endPage, anchorOffsetDiv, focusOffsetDiv, anchorOffset, focusOffset) {\n if (this.pdfViewer.textSelectionModule) {\n for (var i = startPage; i <= endPage; i++) {\n var isRTLText = void 0;\n if (this.pdfViewerBase.clientSideRendering) {\n var storedData = JSON.parse(this.pdfViewerBase.pageTextDetails[this.pdfViewerBase.documentId + '_' + i + '_textDetails']);\n var pageText = storedData[\"pageText\"];\n isRTLText = this.pdfViewerBase.checkIsRtlText(pageText);\n }\n var startId = void 0;\n var endId = void 0;\n // eslint-disable-next-line\n var textDivs = this.pdfViewerBase.getElement('_textLayer_' + i).childNodes;\n if (i === startPage) {\n startId = anchorOffsetDiv;\n endId = textDivs.length - 1;\n }\n else if (i === endPage) {\n startId = 0;\n endId = focusOffsetDiv;\n }\n else {\n startId = 0;\n endId = textDivs.length - 1;\n }\n if (startPage === endPage) {\n startId = anchorOffsetDiv;\n endId = focusOffsetDiv;\n }\n for (var j = startId; j <= endId; j++) {\n var textDiv = this.pdfViewerBase.getElement('_text_' + i + '_' + j);\n var initId = void 0;\n var lastId = void 0;\n var length_1 = void 0;\n if (textDiv && textDiv.textContent) {\n length_1 = textDiv.textContent.length;\n var textContent = textDiv.textContent;\n textDiv.textContent = '';\n if (j === startId) {\n if (i === startPage) {\n initId = anchorOffset;\n }\n else {\n initId = 0;\n }\n lastId = length_1;\n this.convertToSpan(i, j, 0, initId, textContent, null, isRTLText);\n }\n else if (j === endId && i === endPage) {\n initId = 0;\n lastId = focusOffset;\n }\n else {\n initId = 0;\n lastId = length_1;\n }\n if (startId === endId && startPage === endPage) {\n initId = anchorOffset;\n lastId = focusOffset;\n }\n this.convertToSpan(i, j, initId, lastId, textContent, 'e-pv-maintaincontent', isRTLText);\n if (j === endId && i === endPage) {\n this.convertToSpan(i, j, lastId, textContent.length, textContent, null, isRTLText);\n }\n }\n }\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n TextLayer.prototype.clearDivSelection = function () {\n var textLayers = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_textLayer_\"]');\n for (var i = 0; i < textLayers.length; i++) {\n var childNodes = textLayers[parseInt(i.toString(), 10)].childNodes;\n for (var j = 0; j < childNodes.length; j++) {\n var textDiv = childNodes[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n if (textDiv.className !== 'e-pdfviewer-formFields' && textDiv.className !== 'e-pdfviewer-signatureformfields' && textDiv.className !== 'e-pdfviewer-signatureformfields-signature') {\n var textContent = textDiv.textContent;\n // eslint-disable-next-line max-len\n if (textDiv.childNodes.length > 1 || textDiv.childNodes.length === 1 && (textDiv.childNodes[0].tagName === 'SPAN')) {\n textDiv.textContent = '';\n textDiv.textContent = textContent;\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n TextLayer.prototype.setStyleToTextDiv = function (textDiv, left, top, bottom, width, height, rotation) {\n textDiv.style.left = left * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.top = top * this.pdfViewerBase.getZoomFactor() + 'px';\n var textHeight;\n if (rotation === 90 || (this.pdfViewerBase.clientSideRendering && rotation === 270)) {\n textHeight = width * this.pdfViewerBase.getZoomFactor();\n }\n else {\n textHeight = height * this.pdfViewerBase.getZoomFactor();\n }\n textDiv.style.height = textHeight + 'px';\n textDiv.style.fontSize = textHeight + 'px';\n };\n TextLayer.prototype.getTextSelectionStatus = function () {\n if (this.pdfViewer.textSelectionModule) {\n return this.pdfViewer.textSelectionModule.isTextSelection;\n }\n else {\n return false;\n }\n };\n /**\n * @param {boolean} isAdd - The isAdd.\n * @returns {void}\n * @private\n */\n TextLayer.prototype.modifyTextCursor = function (isAdd) {\n var textLayerList = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_textLayer_\"]');\n for (var i = 0; i < textLayerList.length; i++) {\n var childNodes = textLayerList[parseInt(i.toString(), 10)].childNodes;\n for (var j = 0; j < childNodes.length; j++) {\n var textElement = childNodes[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n if (isAdd && textElement.className !== 'e-pdfviewer-formFields' && textElement.className !== 'e-pdfviewer-signatureformfields' && textElement.className !== 'e-pdfviewer-signatureformfields-signature') {\n textElement.classList.add('e-pv-cursor');\n }\n else {\n textElement.classList.remove('e-pv-cursor');\n }\n }\n }\n };\n /**\n * @param {Selection} selection - The Selection.\n * @returns {boolean} - Returns true or false.\n * @private\n */\n TextLayer.prototype.isBackWardSelection = function (selection) {\n var position = selection.anchorNode.compareDocumentPosition(selection.focusNode);\n var backward = false;\n if (!position && selection.anchorOffset > selection.focusOffset || position === Node.DOCUMENT_POSITION_PRECEDING) {\n backward = true;\n }\n return backward;\n };\n /**\n * @param {Node} element - The element.\n * @returns {number} - Returns number.\n * @private\n */\n TextLayer.prototype.getPageIndex = function (element) {\n var pageId;\n // eslint-disable-next-line\n var parentElement = element.parentElement;\n if (!parentElement) {\n parentElement = element.parentNode;\n }\n if (parentElement.className === 'e-pv-text-layer') {\n // eslint-disable-next-line radix\n pageId = parseInt(element.id.split('_text_')[1]);\n }\n else {\n // eslint-disable-next-line radix\n pageId = parseInt(parentElement.id.split('_text_')[1]);\n }\n return pageId;\n };\n /**\n * @param {Node} element - The element.\n * @param {number} pageIndex - The pageIndex.\n * @returns {number} - Returns number.\n * @private\n */\n TextLayer.prototype.getTextIndex = function (element, pageIndex) {\n var textIndex;\n // eslint-disable-next-line\n var parentElement = element.parentElement;\n if (!parentElement) {\n parentElement = element.parentNode;\n }\n if (parentElement.className === 'e-pv-text-layer') {\n // eslint-disable-next-line radix\n textIndex = parseInt(element.id.split('_text_' + pageIndex + '_')[1]);\n }\n else {\n // eslint-disable-next-line radix\n textIndex = parseInt(parentElement.id.split('_text_' + pageIndex + '_')[1]);\n }\n return textIndex;\n };\n TextLayer.prototype.getPreviousZoomFactor = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.previousZoomFactor;\n }\n else {\n return 1;\n }\n };\n /**\n * @private\n * @returns {boolean} - Returns true or false.\n */\n TextLayer.prototype.getTextSearchStatus = function () {\n if (this.pdfViewer.textSearchModule) {\n return this.pdfViewer.textSearchModule.isTextSearch;\n }\n else {\n return false;\n }\n };\n /**\n * @param {string} text - The text.\n * @returns {void}\n * @private\n */\n TextLayer.prototype.createNotificationPopup = function (text) {\n var _this = this;\n if (!this.isMessageBoxOpen) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n var popupElement_1 = createElement('div', { id: this.pdfViewer.element.id + '_notify', className: 'e-pv-notification-popup' });\n this.pdfViewerBase.viewerContainer.appendChild(popupElement_1);\n this.notifyDialog = new Dialog({\n showCloseIcon: true, closeOnEscape: false, isModal: true, header: this.pdfViewer.localeObj.getConstant('PdfViewer'),\n buttons: [{\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true },\n click: this.closeNotification.bind(this)\n }],\n // eslint-disable-next-line max-len\n content: '
' + text + '
', target: this.pdfViewer.element,\n beforeClose: function () {\n _this.notifyDialog.destroy();\n if (_this.pdfViewer.element) {\n try {\n _this.pdfViewer.element.removeChild(popupElement_1);\n }\n catch (error) {\n popupElement_1.parentElement.removeChild(popupElement_1);\n }\n }\n if (_this.pdfViewer.textSearchModule) {\n _this.pdfViewer.textSearch.isMessagePopupOpened = false;\n }\n _this.isMessageBoxOpen = false;\n }\n });\n if (this.pdfViewer.enableRtl) {\n this.notifyDialog.enableRtl = true;\n }\n this.notifyDialog.appendTo(popupElement_1);\n this.isMessageBoxOpen = true;\n }\n else {\n // eslint-disable-next-line\n var notificationElement = document.getElementById(this.pdfViewer.element.id + '_notification_popup_content');\n if (notificationElement) {\n notificationElement.textContent = text;\n notificationElement.innerHTML = text;\n }\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearch.isMessagePopupOpened = false;\n }\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenNotificationPopup', text);\n }\n }\n };\n return TextLayer;\n}());\nexport { TextLayer };\n","import { createElement } from '@syncfusion/ej2-base';\n/**\n * The 'AccessibilityTags' module helps to access the tagged layers in a PDF document for the users with disabilities.\n */\nvar AccessibilityTags = /** @class */ (function () {\n /**\n * @param {PdfViewer} pdfViewer - The PdfViewer.\n * @param {PdfViewerBase} pdfViewerBase - The PdfViewerBase.\n * @private\n */\n function AccessibilityTags(pdfViewer, pdfViewerBase) {\n this.createTag = function (taggedTextResponse) {\n var _this = this;\n var tagType = taggedTextResponse.TagType;\n var parentTagType = taggedTextResponse.ParentTagType;\n var text = taggedTextResponse.Text;\n var altText = taggedTextResponse.AltText;\n var bounds = taggedTextResponse.Bounds;\n var childTags = taggedTextResponse.ChildElements;\n var textTag = document.createElement(this.getTag(tagType));\n textTag.style = \"padding:0px;margin:0px\";\n if (parentTagType != \"Document\" && parentTagType != \"Part\") {\n textTag.style.position = 'absolute';\n }\n if (bounds) {\n this.setStyleToTaggedTextDiv(textTag, bounds, taggedTextResponse.FontSize, taggedTextResponse.FontName, taggedTextResponse.FontStyle);\n this.setTextElementProperties(textTag);\n }\n if (text.trim() != \"\") {\n textTag.innerText = text;\n }\n if (altText && altText.trim() !== \"\" && (tagType === \"Image\" || tagType === \"Figure\")) {\n textTag.alt = altText;\n textTag.src = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgYAAAAAMAASsJTYQAAAAASUVORK5CYII=\";\n }\n if (childTags && childTags.length > 0) {\n childTags.forEach(function (element) {\n if (tagType === \"Table\") {\n if (element.ChildElements) {\n element.ChildElements.forEach(function (newelement) {\n textTag.appendChild(_this.createTag(newelement));\n });\n }\n }\n else {\n textTag.appendChild(_this.createTag(element));\n }\n });\n }\n return textTag;\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n AccessibilityTags.prototype.addTaggedLayer = function (pageIndex) {\n var taggedLayer;\n if (this.pdfViewer.enableAccessibilityTags && this.pdfViewerBase.isTaggedPdf) {\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n taggedLayer = document.getElementById(this.pdfViewer.element.id + '_taggedLayer_' + pageIndex);\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n if (textLayer) {\n textLayer.setAttribute('aria-hidden', 'true');\n }\n if (!taggedLayer) {\n taggedLayer = createElement('div', { id: this.pdfViewer.element.id + '_taggedLayer_' + pageIndex, className: 'e-pv-tagged-layer e-pv-text-layer' });\n }\n taggedLayer.innerHTML = \"\";\n taggedLayer.style.width = this.pdfViewerBase.pageSize[parseInt(pageIndex.toString(), 10)].width * this.pdfViewerBase.getZoomFactor() + 'px';\n taggedLayer.style.height = this.pdfViewerBase.pageSize[parseInt(pageIndex.toString(), 10)].height * this.pdfViewerBase.getZoomFactor() + 'px';\n taggedLayer.style.pointerEvents = \"none\";\n if (pageDiv) {\n pageDiv.appendChild(taggedLayer);\n }\n }\n return taggedLayer;\n };\n /**\n * @param pageIndex\n * @private\n */\n AccessibilityTags.prototype.renderAccessibilityTags = function (pageIndex, taggedTextResponse) {\n var taggedLayer = this.addTaggedLayer(pageIndex);\n for (var i = 0; i < taggedTextResponse.length; i++) {\n var textDiv = createElement('div', { id: this.pdfViewer.element.id + '_taggedText_' + pageIndex + '_' + parseInt(i.toString(), 10), className: 'e-pv-text', attrs: { 'tabindex': '-1' } });\n var bounds = taggedTextResponse[parseInt(i.toString(), 10)].Bounds;\n if (taggedTextResponse[parseInt(parseInt(i.toString(), 10).toString(), 10)].TagType === \"Paragraph\" && taggedTextResponse[parseInt(i.toString(), 10)].ChildElements === null && taggedTextResponse[parseInt(i.toString(), 10)].Text.trim() === \"\") {\n continue;\n }\n else {\n textDiv.appendChild(this.createTag(taggedTextResponse[parseInt(i.toString(), 10)]));\n }\n textDiv.style.display = \"inline\";\n // eslint-disable-next-line max-len\n this.setStyleToTaggedTextDiv(textDiv, bounds, taggedTextResponse[parseInt(i.toString(), 10)].FontSize, taggedTextResponse[parseInt(i.toString(), 10)].FontName, taggedTextResponse[parseInt(i.toString(), 10)].FontStyle);\n this.setTextElementProperties(textDiv);\n taggedLayer.appendChild(textDiv);\n }\n };\n AccessibilityTags.prototype.getTag = function (tagType) {\n switch (tagType) {\n case \"Paragraph\":\n return \"p\";\n case \"Figure\":\n return \"img\";\n case \"Article\":\n return \"art\";\n case \"Annotation\":\n return \"annot\";\n case \"BibliographyEntry\":\n return \"bibentry\";\n case \"BlockQuotation\":\n return \"blockQuote\";\n case \"Caption\":\n return \"caption\";\n case \"Code\":\n return \"code\";\n case \"Division\":\n return \"div\";\n case \"Document\":\n return \"document\";\n case \"Form\":\n return \"form\";\n case \"Formula\":\n return \"formula\";\n case \"Index\":\n return \"index\";\n case \"Heading\":\n return \"h\";\n case \"HeadingLevel1\":\n return \"h1\";\n case \"HeadingLevel2\":\n return \"h2\";\n case \"HeadingLevel3\":\n return \"h3\";\n case \"HeadingLevel4\":\n return \"h4\";\n case \"HeadingLevel5\":\n return \"h5\";\n case \"HeadingLevel6\":\n return \"h6\";\n case \"Label\":\n return \"label\";\n case \"Link\":\n return \"a\";\n case \"List\":\n return \"ul\";\n case \"ListItem\":\n return \"li\";\n case \"ListBody\":\n return \"p\";\n case \"Note\":\n return \"note\";\n case \"Part\":\n return \"part\";\n case \"Quotation\":\n return \"quote\";\n case \"Reference\":\n return \"reference\";\n case \"Section\":\n return \"sect\";\n case \"Span\":\n return \"span\";\n case \"Table\":\n return \"table\";\n case \"TableDataCell\":\n return \"td\";\n case \"TableHeader\":\n return \"th\";\n case \"TableOfContent\":\n return \"toc\";\n case \"TableOfContentItem\":\n return \"toci\";\n case \"TableRow\":\n return \"tr\";\n case \"Image\":\n return \"img\";\n default:\n return \"p\";\n }\n };\n AccessibilityTags.prototype.setStyleToTaggedTextDiv = function (textDiv, bounds, fontSize, fontName, fontStyle) {\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n textDiv.style.left = this.pdfViewerBase.ConvertPointToPixel(bounds.X) * zoomFactor + 'px';\n textDiv.style.top = this.pdfViewerBase.ConvertPointToPixel(bounds.Y) * zoomFactor + 'px';\n textDiv.style.width = this.pdfViewerBase.ConvertPointToPixel(bounds.Width) * zoomFactor + 'px';\n var textHeight = this.pdfViewerBase.ConvertPointToPixel(bounds.Height) * zoomFactor;\n textDiv.style.height = textHeight + 'px';\n textDiv.style.fontSize = this.pdfViewerBase.ConvertPointToPixel(fontSize) * zoomFactor + 'px';\n if (fontName && (fontName === \"Wingdings\" || fontName === \"Symbol\")) {\n textDiv.style.fontFamily = \"Verdana\";\n }\n else if (fontName) {\n textDiv.style.fontFamily = fontName;\n }\n if (fontStyle) {\n textDiv.style.fontWeight = fontStyle;\n }\n textDiv.style.color = 'transparent';\n };\n AccessibilityTags.prototype.setTextElementProperties = function (textDiv) {\n textDiv.style.transformOrigin = '0%';\n };\n /**\n * @private\n */\n AccessibilityTags.prototype.getModuleName = function () {\n return 'AccessibilityTags';\n };\n /**\n * @private\n */\n AccessibilityTags.prototype.destroy = function () {\n return true;\n };\n return AccessibilityTags;\n}());\nexport { AccessibilityTags };\n","/**\n * These utility methods help to process the data and to convert it to desired dimensions\n */\n/** @private */\nexport function processPathData(data) {\n var collection = [];\n var j;\n var arrayCollection = parsePathData(data);\n if (arrayCollection.length > 0) {\n for (var i = 0; i < arrayCollection.length; i++) {\n var ob = arrayCollection[parseInt(i.toString(), 10)];\n var char = '';\n char = ob[0];\n switch (char.toLowerCase()) {\n case 'm':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x: ob[parseInt(j.toString(), 10)], y: ob[j + 1] });\n j = j + 1;\n if (char === 'm') {\n char = 'l';\n }\n else if (char === 'M') {\n char = 'L';\n }\n }\n break;\n case 'l':\n case 't':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x: ob[parseInt(j.toString(), 10)], y: ob[j + 1] });\n j = j + 1;\n }\n break;\n case 'h':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x: ob[parseInt(j.toString(), 10)] });\n }\n break;\n case 'v':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, y: ob[parseInt(j.toString(), 10)] });\n }\n break;\n case 'z':\n collection.push({ command: char });\n break;\n case 'c':\n for (j = 1; j < ob.length; j++) {\n collection.push({\n command: char, x1: ob[parseInt(j.toString(), 10)], y1: ob[j + 1], x2: ob[j + 2], y2: ob[j + 3], x: ob[j + 4], y: ob[j + 5]\n });\n j = j + 5;\n }\n break;\n case 's':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x2: ob[parseInt(j.toString(), 10)], y2: ob[j + 1], x: ob[j + 2], y: ob[j + 3] });\n j = j + 3;\n }\n break;\n case 'q':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x1: ob[parseInt(j.toString(), 10)], y1: ob[j + 1], x: ob[j + 2], y: ob[j + 3] });\n j = j + 3;\n }\n break;\n case 'a':\n for (j = 1; j < ob.length; j++) {\n collection.push({\n command: char, r1: ob[parseInt(j.toString(), 10)], r2: ob[j + 1], angle: ob[j + 2], largeArc: ob[j + 3],\n sweep: ob[j + 4], x: ob[j + 5], y: ob[j + 6]\n });\n j = j + 6;\n }\n break;\n }\n }\n }\n return collection;\n}\n/** @private */\nexport function parsePathData(data) {\n var tokenizer = /([a-z]+)|([+-]?(?:\\d+\\.?\\d*|\\.\\d+))/gi;\n var current = [];\n var commands = [];\n var match = {};\n tokenizer.lastIndex = 0;\n var isExponential = false;\n match = tokenizer.exec(data);\n while (match) {\n if (match[1] === 'e') {\n var s1 = '';\n isExponential = true;\n }\n else if (match[1]) {\n if (match[1].toLowerCase() === 'zm') {\n if (current.length) {\n commands.push(current);\n }\n commands.push(['Z']);\n current = [match[1].substring(1, 2)];\n }\n else {\n if (current.length) {\n commands.push(current);\n }\n current = [match[1]];\n }\n isExponential = false;\n }\n else {\n if (!current.length) {\n current = [];\n }\n if (!isExponential) {\n current.push(Number(match[2]));\n }\n isExponential = false;\n }\n match = tokenizer.exec(data);\n }\n if (current.length) {\n commands.push(current);\n }\n return commands;\n}\n/**\n * Used to find the path for rounded rect\n */\nexport function getRectanglePath(cornerRadius, height, width) {\n if (cornerRadius > height / 2) {\n cornerRadius = height / 2;\n }\n if (cornerRadius > width / 2) {\n cornerRadius = width / 2;\n }\n var x = 0;\n var y = 0;\n var path = '';\n var points = [{ x: x + cornerRadius, y: y }, { x: x + width - cornerRadius, y: y },\n { x: x + width, y: y + cornerRadius }, { x: x + width, y: y + height - cornerRadius },\n { x: x + width - cornerRadius, y: y + height }, { x: x + cornerRadius, y: y + height },\n { x: x, y: y + height - cornerRadius }, { x: x, y: y + cornerRadius }\n ];\n var corners = [{ x: x + width, y: y }, { x: x + width, y: y + height }, { x: x, y: y + height }, { x: x, y: y }];\n var corner = 0;\n var point2;\n var next;\n path = 'M' + points[0].x + ' ' + points[0].y;\n var i;\n for (i = 0; i < points.length; i = i + 2) {\n point2 = points[i + 1];\n path += 'L' + point2.x + ' ' + point2.y;\n next = points[i + 2] || points[0];\n // eslint-disable-next-line\n path += 'Q' + corners[corner].x + ' ' + corners[corner].y + ' ' + next.x + ' ' + next.y;\n corner++;\n }\n return path;\n}\n/** @private */\nexport function pathSegmentCollection(collection) {\n var x0;\n var y0;\n var x1;\n var y1;\n var x2;\n var y2;\n var x;\n var y;\n var length;\n var i;\n var initx;\n var inity;\n var segments = [];\n for (x = 0, y = 0, i = 0, length = collection.length; i < length; ++i) {\n var obj = collection[parseInt(i.toString(), 10)];\n var seg = obj;\n var char = '';\n char = seg.command;\n if ('y1' in seg) {\n y1 = seg.y1;\n }\n if ('y2' in seg) {\n y2 = seg.y2;\n }\n if ('x1' in seg) {\n x1 = seg.x1;\n }\n if ('x2' in seg) {\n x2 = seg.x2;\n }\n if ('x' in seg) {\n x = seg.x;\n }\n if ('y' in seg) {\n y = seg.y;\n }\n var prev = segments[segments.length - 1];\n switch (char) {\n case 'M':\n segments.push({ command: 'M', x: x, y: y });\n break;\n case 'L':\n segments.push({ command: 'L', x0: x0, y0: y0, x: x, y: y });\n break;\n case 'H':\n segments.push({ command: 'L', x0: x0, y0: y0, x: x, y: y0 });\n break;\n case 'V':\n segments.push({ command: 'L', x0: x0, y0: y0, x: x0, y: y });\n break;\n case 'C':\n segments.push({ command: 'C', x0: x0, y0: y0, x1: x1, y1: y1, x2: x2, y2: y2, x: x, y: y });\n break;\n case 'S':\n if (prev) {\n var ctrl = void 0;\n if (prev.command === 'C' || prev.command === 'S') {\n ctrl = { x: prev.x2, y: prev.y2 };\n }\n else {\n ctrl = { x: x0, y: y0 };\n }\n var cpt2 = { x: 2 * x0 - ctrl.x, y: 2 * y0 - ctrl.y };\n segments.push({ command: 'C', x0: x0, y0: y0, x1: cpt2.x, y1: cpt2.y, x2: x2, y2: y2, x: x, y: y });\n }\n break;\n case 'Q':\n //ctx.quadraticCurveTo(x1, y1, x, y);\n segments.push({ command: 'Q', x0: x0, y0: y0, x1: x1, y1: y1, x: x, y: y });\n break;\n case 'T':\n if (prev) {\n var ctrl = void 0;\n if (prev.command === 'Q') {\n ctrl = { x: prev.x1, y: prev.y1 };\n }\n else {\n ctrl = { x: x0, y: y0 };\n }\n var cpt2 = { x: 2 * x0 - ctrl.x, y: 2 * y0 - ctrl.y };\n segments.push({ command: 'Q', x0: x0, y0: y0, x1: cpt2.x, y1: cpt2.y, x: x, y: y });\n }\n break;\n case 'A':\n var newSeg = seg;\n newSeg.command = 'A';\n segments.push(newSeg);\n break;\n case 'Z':\n case 'z':\n segments.push({ command: 'Z' });\n x = x0;\n y = y0;\n break;\n }\n if (char === 'M' || char === 'm') {\n initx = x;\n inity = y;\n }\n x0 = x;\n y0 = y;\n }\n return segments;\n}\n/** @private */\nexport function transformPath(arr, sX, sY, s, bX, bY, iX, iY) {\n var x0;\n var y0;\n var x1;\n var y1;\n var x2;\n var y2;\n var x;\n var y;\n var length;\n var i;\n var newSeg;\n for (x = 0, y = 0, i = 0, length = arr.length; i < length; ++i) {\n var obj = arr[parseInt(i.toString(), 10)];\n var seg = obj;\n var char = seg.command;\n if ('x' in seg) {\n x = seg.x;\n }\n if ('y' in seg) {\n y = seg.y;\n }\n if ('y1' in seg) {\n y1 = seg.y1;\n }\n if ('y2' in seg) {\n y2 = seg.y2;\n }\n if ('x1' in seg) {\n x1 = seg.x1;\n }\n if ('x2' in seg) {\n x2 = seg.x2;\n }\n if (s) {\n if (x !== undefined) {\n x = scalePathData(x, sX, bX, iX);\n }\n if (y !== undefined) {\n y = scalePathData(y, sY, bY, iY);\n }\n if (x1 !== undefined) {\n x1 = scalePathData(x1, sX, bX, iX);\n }\n if (y1 !== undefined) {\n y1 = scalePathData(y1, sY, bY, iY);\n }\n if (x2 !== undefined) {\n x2 = scalePathData(x2, sX, bX, iX);\n }\n if (y2 !== undefined) {\n y2 = scalePathData(y2, sY, bY, iY);\n }\n }\n else {\n if (x !== undefined) {\n x = Number((x + sX).toFixed(2));\n }\n if (y !== undefined) {\n y = Number((y + sY).toFixed(2));\n }\n if (x1 !== undefined) {\n x1 = Number((x1 + sX).toFixed(2));\n }\n if (y1 !== undefined) {\n y1 = Number((y1 + sY).toFixed(2));\n }\n if (x2 !== undefined) {\n x2 = Number((x2 + sX).toFixed(2));\n }\n if (y2 !== undefined) {\n y2 = Number((y2 + sY).toFixed(2));\n }\n }\n var scaledPath = { x: x, y: y, x1: x1, y1: y1, x2: x2, y2: y2, r1: seg.r1, r2: seg.r2 };\n newSeg = updatedSegment(seg, char, scaledPath, s, sX, sY);\n if (newSeg) {\n arr[parseInt(i.toString(), 10)] = newSeg;\n }\n // Record the start of a subpath\n if (char === 'M' || char === 'm') {\n x0 = x;\n y0 = y;\n }\n }\n var pathData = getPathString(arr);\n return pathData;\n}\n/** @private */\nexport function updatedSegment(segment, char, obj, isScale, sX, sY) {\n switch (char) {\n case 'M':\n segment.x = obj.x;\n segment.y = obj.y;\n break;\n case 'L':\n segment.x = obj.x;\n segment.y = obj.y;\n break;\n case 'H':\n segment.x = obj.x;\n break;\n case 'V':\n segment.y = obj.y;\n break;\n case 'C':\n segment.x = obj.x;\n segment.y = obj.y;\n segment.x1 = obj.x1;\n segment.y1 = obj.y1;\n segment.x2 = obj.x2;\n segment.y2 = obj.y2;\n break;\n case 'S':\n segment.x = obj.x;\n segment.y = obj.y;\n segment.x2 = obj.x2;\n segment.y2 = obj.y2;\n break;\n case 'Q':\n segment.x = obj.x;\n segment.y = obj.y;\n segment.x1 = obj.x1;\n segment.y1 = obj.y1;\n break;\n case 'T':\n segment.x = obj.x;\n segment.y = obj.y;\n break;\n case 'A':\n var r1 = obj.r1;\n var r2 = obj.r2;\n if (isScale) {\n obj.r1 = r1 = (r1 * sX);\n obj.r2 = r2 = (r2 * sY);\n }\n segment.x = obj.x;\n segment.y = obj.y;\n segment.r1 = obj.r1;\n segment.r2 = obj.r2;\n break;\n case 'z':\n case 'Z':\n segment = { command: 'Z' };\n break;\n }\n return segment;\n}\n/** @private */\nexport function scalePathData(val, scaleFactor, oldOffset, newOffset) {\n if (val !== oldOffset) {\n if (newOffset !== oldOffset) {\n val = (((val * scaleFactor) - (Number(oldOffset) * scaleFactor - Number(oldOffset)))\n + (newOffset - Number(oldOffset)));\n }\n else {\n val = ((Number(val) * scaleFactor) - (Number(oldOffset) * scaleFactor - Number(oldOffset)));\n }\n }\n else {\n if (newOffset !== oldOffset) {\n val = newOffset;\n }\n }\n return Number(val.toFixed(2));\n}\n/** @private */\nexport function splitArrayCollection(arrayCollection) {\n var x0;\n var y0;\n var x1;\n var y1;\n var x2;\n var y2;\n var x;\n var y;\n var length;\n var i;\n for (x = 0, y = 0, i = 0, length = arrayCollection.length; i < length; ++i) {\n var path = arrayCollection[parseInt(i.toString(), 10)];\n var seg = path;\n var char = seg.command;\n if (/[MLHVCSQTA]/.test(char)) {\n if ('x' in seg) {\n seg.x = x = seg.x;\n }\n if ('y' in seg) {\n seg.y = y = seg.y;\n }\n }\n else {\n if ('x1' in seg) {\n seg.x1 = x1 = x + seg.x1;\n }\n if ('x2' in seg) {\n seg.x2 = x2 = x + seg.x2;\n }\n if ('y1' in seg) {\n seg.y1 = y1 = y + seg.y1;\n }\n if ('y2' in seg) {\n seg.y2 = y2 = y + seg.y2;\n }\n if ('x' in seg) {\n seg.x = x += seg.x;\n }\n if ('y' in seg) {\n seg.y = y += seg.y;\n }\n var newSeg = void 0;\n switch (char) {\n case 'm':\n case 'M':\n newSeg = { command: 'M', x: x, y: y };\n break;\n case 'l':\n case 'L':\n newSeg = { command: 'L', x: x, y: y };\n break;\n case 'h':\n case 'H':\n newSeg = { command: 'H', x: x };\n break;\n case 'v':\n case 'V':\n newSeg = { command: 'V', y: y };\n break;\n case 'c':\n case 'C':\n newSeg = { command: 'C', x: x, y: y, x1: x1, y1: y1, x2: x2, y2: y2 };\n break;\n case 's':\n case 'S':\n newSeg = { command: 'S', x: x, y: y, x2: x2, y2: y2 };\n break;\n case 'q':\n case 'Q':\n newSeg = { command: 'Q', x: x, y: y, x1: x1, y1: y1 };\n break;\n case 't':\n case 'T':\n newSeg = { command: 'T', x: x, y: y };\n break;\n case 'a':\n case 'A':\n newSeg = { command: 'A', x: x, y: y };\n newSeg.r1 = seg.r1;\n newSeg.r2 = seg.r2;\n newSeg.angle = seg.angle;\n newSeg.largeArc = seg.largeArc;\n newSeg.sweep = seg.sweep;\n break;\n case 'z':\n case 'Z':\n newSeg = { command: 'Z' };\n x = x0;\n y = y0;\n newSeg = arrayCollection[parseInt(i.toString(), 10)];\n break;\n }\n if (newSeg) {\n arrayCollection[parseInt(i.toString(), 10)] = newSeg;\n }\n }\n if (char === 'M' || char === 'm') {\n x0 = x;\n y0 = y;\n }\n }\n return arrayCollection;\n}\n/** @private */\nexport function getPathString(arrayCollection) {\n var getNewString = '';\n var i;\n for (i = 0; i < arrayCollection.length; i++) {\n if (i === 0) {\n getNewString += getString(arrayCollection[parseInt(i.toString(), 10)]);\n }\n else {\n getNewString += ' ' + getString(arrayCollection[parseInt(i.toString(), 10)]);\n }\n }\n return getNewString;\n}\n/** @private */\nexport function getString(obj) {\n var string = '';\n switch (obj.command) {\n case 'Z':\n case 'z':\n string = obj.command;\n break;\n case 'M':\n case 'm':\n case 'L':\n case 'l':\n string = obj.command + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'C':\n case 'c':\n string = obj.command + ' ' + obj.x1 + ' ' + obj.y1 + ' ' + obj.x2 + ' ' + obj.y2 + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'Q':\n case 'q':\n string = obj.command + ' ' + obj.x1 + ' ' + obj.y1 + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'A':\n case 'a':\n var cmd = obj.command;\n var ang = obj.angle;\n var l = (obj.largeArc ? '1' : '0');\n var s = (obj.sweep ? '1' : '0');\n string = cmd + ' ' + obj.r1 + ' ' + obj.r2 + ' ' + ang + ' ' + l + ' ' + s + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'H':\n case 'h':\n string = obj.command + ' ' + obj.x;\n break;\n case 'V':\n case 'v':\n string = obj.command + ' ' + obj.y;\n break;\n case 'S':\n case 's':\n string = obj.command + ' ' + obj.x2 + ' ' + obj.y2 + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'T':\n case 't':\n string = obj.command + ' ' + obj.x + ' ' + obj.y;\n }\n return string;\n}\n","/**\n * Matrix module is used to transform points based on offsets, angle\n */\n/** @private */\nexport var MatrixTypes;\n(function (MatrixTypes) {\n MatrixTypes[MatrixTypes[\"Identity\"] = 0] = \"Identity\";\n MatrixTypes[MatrixTypes[\"Translation\"] = 1] = \"Translation\";\n MatrixTypes[MatrixTypes[\"Scaling\"] = 2] = \"Scaling\";\n MatrixTypes[MatrixTypes[\"Unknown\"] = 4] = \"Unknown\";\n})(MatrixTypes || (MatrixTypes = {}));\n/** @private */\nvar Matrix = /** @class */ (function () {\n function Matrix(m11, m12, m21, m22, offsetX, offsetY, type) {\n this.m11 = m11;\n this.m12 = m12;\n this.m21 = m21;\n this.m22 = m22;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n // if (type === undefined) {\n // this.type = MatrixTypes.Unknown;\n // } else {\n // this.type = type;\n // }\n this.type = type;\n }\n return Matrix;\n}());\nexport { Matrix };\n/** @private */\nexport function identityMatrix() {\n return new Matrix(1, 0, 0, 1, 0, 0, MatrixTypes.Identity);\n}\n/** @private */\nexport function transformPointByMatrix(matrix, point) {\n var pt = multiplyPoint(matrix, point.x, point.y);\n return { x: Math.round(pt.x * 100) / 100, y: Math.round(pt.y * 100) / 100 };\n}\n/** @private */\nexport function transformPointsByMatrix(matrix, points) {\n var transformedPoints = [];\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n transformedPoints.push(transformPointByMatrix(matrix, point));\n }\n return transformedPoints;\n}\n/** @private */\nexport function rotateMatrix(matrix, angle, centerX, centerY) {\n angle %= 360.0;\n multiplyMatrix(matrix, createRotationRadians(angle * 0.017453292519943295, centerX ? centerX : 0, centerY ? centerY : 0));\n}\n/** @private */\nexport function scaleMatrix(matrix, scaleX, scaleY, centerX, centerY) {\n if (centerX === void 0) { centerX = 0; }\n if (centerY === void 0) { centerY = 0; }\n multiplyMatrix(matrix, createScaling(scaleX, scaleY, centerX, centerY));\n}\n/** @private */\nexport function translateMatrix(matrix, offsetX, offsetY) {\n if (matrix.type & MatrixTypes.Identity) {\n matrix.type = MatrixTypes.Translation;\n setMatrix(matrix, 1.0, 0.0, 0.0, 1.0, offsetX, offsetY);\n return;\n }\n if (matrix.type & MatrixTypes.Unknown) {\n matrix.offsetX += offsetX;\n matrix.offsetY += offsetY;\n return;\n }\n matrix.offsetX += offsetX;\n matrix.offsetY += offsetY;\n matrix.type |= MatrixTypes.Translation;\n}\n/** @private */\nfunction createScaling(scaleX, scaleY, centerX, centerY) {\n var result = identityMatrix();\n result.type = !(centerX || centerY) ? MatrixTypes.Scaling : MatrixTypes.Scaling | MatrixTypes.Translation;\n setMatrix(result, scaleX, 0.0, 0.0, scaleY, centerX - scaleX * centerX, centerY - scaleY * centerY);\n return result;\n}\n/** @private */\nfunction createRotationRadians(angle, centerX, centerY) {\n var result = identityMatrix();\n var num = Math.sin(angle);\n var num2 = Math.cos(angle);\n var offsetX = centerX * (1.0 - num2) + centerY * num;\n var offsetY = centerY * (1.0 - num2) - centerX * num;\n result.type = MatrixTypes.Unknown;\n setMatrix(result, num2, num, -num, num2, offsetX, offsetY);\n return result;\n}\n/** @private */\nfunction multiplyPoint(matrix, x, y) {\n switch (matrix.type) {\n case MatrixTypes.Identity: break;\n case MatrixTypes.Translation:\n x += matrix.offsetX;\n y += matrix.offsetY;\n break;\n case MatrixTypes.Scaling:\n x *= matrix.m11;\n y *= matrix.m22;\n break;\n case MatrixTypes.Translation | MatrixTypes.Scaling:\n x *= matrix.m11;\n x += matrix.offsetX;\n y *= matrix.m22;\n y += matrix.offsetY;\n break;\n default:\n var num = y * matrix.m21 + matrix.offsetX;\n var num2 = x * matrix.m12 + matrix.offsetY;\n x *= matrix.m11;\n x += num;\n y *= matrix.m22;\n y += num2;\n break;\n }\n return { x: x, y: y };\n}\n/** @private */\nexport function multiplyMatrix(matrix1, matrix2) {\n var type = matrix1.type;\n var type2 = matrix2.type;\n if (type2 === MatrixTypes.Identity) {\n return;\n }\n if (type === MatrixTypes.Identity) {\n assignMatrix(matrix1, matrix2);\n matrix1.type = matrix2.type;\n return;\n }\n if (type2 === MatrixTypes.Translation) {\n matrix1.offsetX += matrix2.offsetX;\n matrix1.offsetY += matrix2.offsetY;\n if (type !== MatrixTypes.Unknown) {\n matrix1.type |= MatrixTypes.Translation;\n }\n return;\n }\n if (type !== MatrixTypes.Translation) {\n var num = type << 4 | type2;\n switch (num) {\n case 34:\n matrix1.m11 *= matrix2.m11;\n matrix1.m22 *= matrix2.m22;\n return;\n case 35:\n matrix1.m11 *= matrix2.m11;\n matrix1.m22 *= matrix2.m22;\n matrix1.offsetX = matrix2.offsetX;\n matrix1.offsetY = matrix2.offsetY;\n matrix1.type = (MatrixTypes.Translation | MatrixTypes.Scaling);\n return;\n case 36: break;\n default:\n {\n switch (num) {\n case 50:\n matrix1.m11 *= matrix2.m11;\n matrix1.m22 *= matrix2.m22;\n matrix1.offsetX *= matrix2.m11;\n matrix1.offsetY *= matrix2.m22;\n return;\n case 51:\n matrix1.m11 *= matrix2.m11;\n matrix1.m22 *= matrix2.m22;\n matrix1.offsetX = matrix2.m11 * matrix1.offsetX + matrix2.offsetX;\n matrix1.offsetY = matrix2.m22 * matrix1.offsetY + matrix2.offsetY;\n return;\n case 52: break;\n default:\n switch (num) {\n case 66:\n case 67:\n case 68: break;\n default: return;\n }\n break;\n }\n break;\n }\n }\n var result = identityMatrix();\n var m11New = matrix1.m11 * matrix2.m11 + matrix1.m12 * matrix2.m21;\n var m12New = matrix1.m11 * matrix2.m12 + matrix1.m12 * matrix2.m22;\n var m21New = matrix1.m21 * matrix2.m11 + matrix1.m22 * matrix2.m21;\n var m22New = matrix1.m21 * matrix2.m12 + matrix1.m22 * matrix2.m22;\n var offsetX_1 = matrix1.offsetX * matrix2.m11 + matrix1.offsetY * matrix2.m21 + matrix2.offsetX;\n var offsetY_1 = matrix1.offsetX * matrix2.m12 + matrix1.offsetY * matrix2.m22 + matrix2.offsetY;\n setMatrix(result, m11New, m12New, m21New, m22New, offsetX_1, offsetY_1);\n if (result.m21 || result.m12) {\n result.type = MatrixTypes.Unknown;\n }\n else {\n if (result.m11 && result.m11 !== 1.0 || result.m22 && result.m22 !== 1.0) {\n result.type = MatrixTypes.Scaling;\n }\n if (result.offsetX || result.offsetY) {\n result.type |= MatrixTypes.Translation;\n }\n if ((result.type & (MatrixTypes.Translation | MatrixTypes.Scaling)) === MatrixTypes.Identity) {\n result.type = MatrixTypes.Identity;\n }\n result.type = MatrixTypes.Scaling | MatrixTypes.Translation;\n }\n assignMatrix(matrix1, result);\n matrix1.type = result.type;\n return;\n }\n var offsetX = matrix1.offsetX;\n var offsetY = matrix1.offsetY;\n matrix1.offsetX = offsetX * matrix2.m11 + offsetY * matrix2.m21 + matrix2.offsetX;\n matrix1.offsetY = offsetX * matrix2.m12 + offsetY * matrix2.m22 + matrix2.offsetY;\n if (type2 === MatrixTypes.Unknown) {\n matrix1.type = MatrixTypes.Unknown;\n return;\n }\n matrix1.type = (MatrixTypes.Translation | MatrixTypes.Scaling);\n}\n/** @private */\nfunction setMatrix(mat, m11, m12, m21, m22, x, y) {\n mat.m11 = m11;\n mat.m12 = m12;\n mat.m21 = m21;\n mat.m22 = m22;\n mat.offsetX = x;\n mat.offsetY = y;\n}\n/** @private */\nfunction assignMatrix(matrix1, matrix2) {\n matrix1.m11 = matrix2.m11;\n matrix1.m12 = matrix2.m12;\n matrix1.m21 = matrix2.m21;\n matrix1.m22 = matrix2.m22;\n matrix1.offsetX = matrix2.offsetX;\n matrix1.offsetY = matrix2.offsetY;\n matrix1.type = matrix2.type;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Defines and processes coordinates\n */\nvar Point = /** @class */ (function (_super) {\n __extends(Point, _super);\n function Point() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /** @private */\n Point.equals = function (point1, point2) {\n if (point1 === point2) {\n return true;\n }\n if (!point1 || !point2) {\n return false;\n }\n return !point1 || !point2 || point1.x === point2.x && point1.y === point2.y;\n };\n /**\n * check whether the points are given\n */\n Point.isEmptyPoint = function (point) {\n if (point.x && point.y) {\n return false;\n }\n return true;\n };\n /** @private */\n Point.transform = function (point, angle, length) {\n var pt = { x: 0, y: 0 };\n pt.x = Math.round((point.x + length * Math.cos(angle * Math.PI / 180)) * 100) / 100;\n pt.y = Math.round((point.y + length * Math.sin(angle * Math.PI / 180)) * 100) / 100;\n return pt;\n };\n /** @private */\n Point.findLength = function (s, e) {\n var length = Math.sqrt(Math.pow((s.x - e.x), 2) + Math.pow((s.y - e.y), 2));\n return length;\n };\n /** @private */\n Point.findAngle = function (point1, point2) {\n var angle = Math.atan2(point2.y - point1.y, point2.x - point1.x);\n angle = (180 * angle / Math.PI);\n angle %= 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n };\n /** @private */\n Point.distancePoints = function (pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n };\n /** @private */\n Point.getLengthFromListOfPoints = function (points) {\n var length = 0;\n for (var j = 0; j < points.length - 1; j++) {\n length += this.distancePoints(points[parseInt(j.toString(), 10)], points[j + 1]);\n }\n return length;\n };\n /** @private */\n Point.adjustPoint = function (source, target, isStart, length) {\n var pt = isStart ? { x: source.x, y: source.y } : { x: target.x, y: target.y };\n var angle;\n if (source.x === target.x) {\n if (source.y < target.y && isStart || source.y > target.y && !isStart) {\n pt.y += length;\n }\n else {\n pt.y -= length;\n }\n }\n else if (source.y === target.y) {\n if (source.x < target.x && isStart || source.x > target.x && !isStart) {\n pt.x += length;\n }\n else {\n pt.x -= length;\n }\n }\n else {\n if (isStart) {\n angle = this.findAngle(source, target);\n pt = this.transform(source, angle, length);\n }\n else {\n angle = this.findAngle(target, source);\n pt = this.transform(target, angle, length);\n }\n }\n return pt;\n };\n /** @private */\n Point.direction = function (pt1, pt2) {\n if (Math.abs(pt2.x - pt1.x) > Math.abs(pt2.y - pt1.y)) {\n return pt1.x < pt2.x ? 'Right' : 'Left';\n }\n else {\n return pt1.y < pt2.y ? 'Bottom' : 'Top';\n }\n };\n /**\n * @private\n * Returns the name of class Point\n */\n Point.prototype.getClassName = function () {\n return 'Point';\n };\n __decorate([\n Property(0)\n ], Point.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Point.prototype, \"y\", void 0);\n return Point;\n}(ChildProperty));\nexport { Point };\n","import { Point, rotateMatrix, identityMatrix, transformPointByMatrix } from '@syncfusion/ej2-drawings';\nimport { getValue } from '@syncfusion/ej2-base';\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the shape annotation object.\n * @hidden\n * @returns {void}\n */\nexport function isLineShapes(obj) {\n if (obj.shapeAnnotationType === 'Line' || obj.shapeAnnotationType === 'LineWidthArrowHead'\n || obj.shapeAnnotationType === 'Distance' || obj.shapeAnnotationType === 'Polygon') {\n return true;\n }\n return false;\n}\n/**\n * @param {PdfAnnotationBaseModel | PdfFormFieldBaseModel} obj - Specified the annotation or form fields object.\n * @param {DrawingElement} element - Specified the annotation drawing element.\n * @returns {void}\n * @hidden\n */\nexport function setElementStype(obj, element) {\n if (obj && element) {\n if (obj.formFieldAnnotationType) {\n if (obj.id.indexOf('diagram_helper') !== -1) {\n element.style.fill = 'transparent';\n element.style.strokeWidth = 1;\n element.style.strokeDashArray = obj.borderDashArray;\n }\n else {\n element.style.fill = 'transparent';\n element.style.strokeWidth = 0;\n }\n }\n else {\n var fillColor = (obj.fillColor === '#ffffff00' ? 'transparent' : obj.fillColor);\n element.style.fill = fillColor ? fillColor : 'white';\n // eslint-disable-next-line max-len\n element.style.strokeColor = obj.strokeColor ? obj.strokeColor : obj.borderColor;\n // eslint-disable-next-line max-len\n element.style.color = obj.strokeColor ? obj.strokeColor : obj.borderColor;\n element.style.strokeWidth = obj.thickness;\n if (obj.shapeAnnotationType === 'Image' || obj.shapeAnnotationType === 'SignatureText' || obj.shapeAnnotationType === 'SignatureImage') {\n element.style.strokeWidth = 0;\n }\n element.style.strokeDashArray = obj.borderDashArray;\n element.style.opacity = obj.opacity;\n }\n }\n}\n/**\n * @param {PointModel[]} points - Specified the annotation points value.\n * @hidden\n * @returns {number} - Returns the points length.\n */\nexport function findPointsLength(points) {\n var length = 0;\n for (var i = 0; i < points.length - 1; i++) {\n length += Point.findLength(points[parseInt(i.toString(), 10)], points[i + 1]);\n }\n return length;\n}\n/**\n * @param {PointModel[]} points - Specified the annotation points value.\n * @hidden\n * @returns {number} - Returns the points length.\n */\nexport function findPerimeterLength(points) {\n var length = Point.getLengthFromListOfPoints(points);\n return length;\n}\n/**\n * @private\n * @param {DrawingElement} element - Specified the drawing element.\n * @param {Transforms} transform - Specified the transform value.\n * @returns {BaseAttributes} - Returns the base attributes value.\n */\nexport function getBaseShapeAttributes(element, transform) {\n var baseShapeAttributes = {\n width: element.actualSize.width, height: element.actualSize.height,\n x: element.offsetX - element.actualSize.width * element.pivot.x + 0.5,\n y: element.offsetY - element.actualSize.height * element.pivot.y + 0.5,\n angle: element.rotateAngle + element.parentTransform, fill: element.style.fill, stroke: element.style.strokeColor,\n pivotX: element.pivot.x, pivotY: element.pivot.y, strokeWidth: 1,\n opacity: element.style.opacity, dashArray: element.style.strokeDashArray || '',\n visible: element.visible, id: element.id\n };\n if (transform) {\n baseShapeAttributes.x += transform.tx;\n baseShapeAttributes.y += transform.ty;\n }\n return baseShapeAttributes;\n}\n/**\n * Get function\n *\n * @private\n * @param {Function | string} value - Type of the function.\n * @returns {Function} - Returns the function.\n */\nexport function getFunction(value) {\n if (value !== undefined) {\n if (typeof value === 'string') {\n value = getValue(value, window);\n }\n }\n return value;\n}\n/**\n * @private\n * @param {any} obj - Specified the annotation object.\n * @param {Function | string} additionalProp - Specified the annotation additional properties.\n * @param {string} key - Specified the annotation key value.\n * @returns {Object} - Returns the cloned object.\n */\n// eslint-disable-next-line\nexport function cloneObject(obj, additionalProp, key) {\n // eslint-disable-next-line\n var newObject = {};\n var keys = 'properties';\n var prop = 'propName';\n if (obj) {\n key = obj[\"\" + prop];\n var sourceObject = obj[\"\" + keys] || obj;\n var properties = [];\n properties = properties.concat(Object.keys(sourceObject));\n var customProperties = [];\n properties.push('version');\n if (key) {\n var propAdditional = getFunction(additionalProp);\n if (propAdditional) {\n customProperties = propAdditional(key);\n }\n else {\n customProperties = [];\n }\n properties = properties.concat(customProperties);\n }\n var internalProp = getInternalProperties(key);\n properties = properties.concat(internalProp);\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var property = properties_1[_i];\n if (property !== 'historyManager') {\n if (property !== 'wrapper') {\n // eslint-disable-next-line\n var isEventEmmitter = obj[property] && obj.hasOwnProperty('observers') ? true : false;\n if (!isEventEmmitter) {\n if (obj[\"\" + property] instanceof Array) {\n newObject[\"\" + property] = cloneArray((internalProp.indexOf(property) === -1 && obj[\"\" + key]) ? obj[\"\" + key][\"\" + property] : obj[\"\" + property], additionalProp, property);\n }\n else if (obj[\"\" + property] instanceof Array === false && obj[\"\" + property] instanceof HTMLElement) {\n newObject[\"\" + property] = obj[\"\" + property].cloneNode(true).innerHtml;\n }\n else if (obj[\"\" + property] instanceof Array === false && obj[\"\" + property] instanceof Object) {\n newObject[\"\" + property] = cloneObject((internalProp.indexOf(property) === -1 && obj[\"\" + key]) ? obj[\"\" + key][\"\" + property] : obj[\"\" + property]);\n }\n else {\n newObject[\"\" + property] = obj[\"\" + property];\n }\n }\n }\n else {\n if (obj[\"\" + property]) {\n newObject[\"\" + property] = {\n actualSize: {\n width: obj[\"\" + property].actualSize.width, height: obj[\"\" + property].actualSize.height\n }, offsetX: obj[\"\" + property].offsetX, offsetY: obj[\"\" + property].offsetY\n };\n }\n }\n }\n }\n }\n return newObject;\n}\n/**\n * @private\n * @param {Object[]} sourceArray - Specified the annotation source collections.\n * @param {Function | string} additionalProp - Specified the annotation additional properties.\n * @param {string} key - Specified the annotation key value.\n * @returns {Object[]} - Returns the cloned object array.\n */\nexport function cloneArray(sourceArray, additionalProp, key) {\n var clonedArray;\n if (sourceArray) {\n clonedArray = [];\n for (var i = 0; i < sourceArray.length; i++) {\n if (sourceArray[parseInt(i.toString(), 10)] instanceof Array) {\n clonedArray.push(sourceArray[parseInt(i.toString(), 10)]);\n }\n else if (sourceArray[parseInt(i.toString(), 10)] instanceof Object) {\n clonedArray.push(cloneObject(sourceArray[parseInt(i.toString(), 10)], additionalProp, key));\n }\n else {\n clonedArray.push(sourceArray[parseInt(i.toString(), 10)]);\n }\n }\n }\n return clonedArray;\n}\n/**\n * @private\n * @param {string} propName - Specified the annotation property name.\n * @returns {string[]} - Returns the internal properties.\n */\nexport function getInternalProperties(propName) {\n switch (propName) {\n case 'nodes':\n case 'children':\n return ['inEdges', 'outEdges', 'parentId', 'processId', 'nodeId', 'umlIndex', 'isPhase', 'isLane'];\n case 'connectors':\n return ['parentId'];\n case 'annotation':\n return ['nodeId'];\n case 'annotations':\n return ['nodeId'];\n case 'shape':\n return ['hasHeader'];\n }\n return [];\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {string} position - Specified the annotation position.\n * @hidden\n * @returns {Leader} - Returns the leader value.\n */\nexport function isLeader(obj, position) {\n var rotatedPoint;\n if (obj.shapeAnnotationType === 'Distance') {\n var leaderCount = 0;\n var newPoint1 = void 0;\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var angle = Point.findAngle(obj.sourcePoint, obj.targetPoint);\n // eslint-disable-next-line\n var segment = obj.wrapper.children[i];\n if (segment.id.indexOf('leader') > -1) {\n var center = obj.wrapper.children[0].bounds.center;\n if (leaderCount === 0) {\n newPoint1 = { x: obj.sourcePoint.x, y: obj.sourcePoint.y - obj.leaderHeight };\n center = obj.sourcePoint;\n }\n else {\n newPoint1 = { x: obj.targetPoint.x, y: obj.targetPoint.y - obj.leaderHeight };\n center = obj.targetPoint;\n }\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, center.x, center.y);\n rotatedPoint = transformPointByMatrix(matrix, { x: newPoint1.x, y: newPoint1.y });\n if (position === 'Leader' + leaderCount) {\n return { leader: 'leader' + leaderCount, point: rotatedPoint };\n }\n leaderCount++;\n }\n }\n }\n return { leader: '', point: rotatedPoint };\n}\n","/**\n * Enum for comment status of the annotation\n */\nexport var CommentStatus;\n(function (CommentStatus) {\n CommentStatus[CommentStatus[\"None\"] = 1] = \"None\";\n CommentStatus[CommentStatus[\"Accepted\"] = 2] = \"Accepted\";\n CommentStatus[CommentStatus[\"Canceled\"] = 3] = \"Canceled\";\n CommentStatus[CommentStatus[\"Completed\"] = 4] = \"Completed\";\n CommentStatus[CommentStatus[\"Rejected\"] = 5] = \"Rejected\";\n})(CommentStatus || (CommentStatus = {}));\n/**\n * Enum for font styles\n */\nexport var FontStyle;\n(function (FontStyle) {\n FontStyle[FontStyle[\"None\"] = 0] = \"None\";\n FontStyle[FontStyle[\"Bold\"] = 1] = \"Bold\";\n FontStyle[FontStyle[\"Italic\"] = 2] = \"Italic\";\n FontStyle[FontStyle[\"Underline\"] = 4] = \"Underline\";\n FontStyle[FontStyle[\"Strikethrough\"] = 8] = \"Strikethrough\";\n})(FontStyle || (FontStyle = {}));\n/**\n * Enum for context menu items\n */\nexport var ContextMenuItem;\n(function (ContextMenuItem) {\n ContextMenuItem[ContextMenuItem[\"Copy\"] = 0] = \"Copy\";\n ContextMenuItem[ContextMenuItem[\"Highlight\"] = 1] = \"Highlight\";\n ContextMenuItem[ContextMenuItem[\"Cut\"] = 2] = \"Cut\";\n ContextMenuItem[ContextMenuItem[\"Underline\"] = 4] = \"Underline\";\n ContextMenuItem[ContextMenuItem[\"Paste\"] = 8] = \"Paste\";\n ContextMenuItem[ContextMenuItem[\"Delete\"] = 16] = \"Delete\";\n ContextMenuItem[ContextMenuItem[\"ScaleRatio\"] = 32] = \"ScaleRatio\";\n ContextMenuItem[ContextMenuItem[\"Strikethrough\"] = 64] = \"Strikethrough\";\n ContextMenuItem[ContextMenuItem[\"Properties\"] = 128] = \"Properties\";\n ContextMenuItem[ContextMenuItem[\"Comment\"] = 256] = \"Comment\";\n})(ContextMenuItem || (ContextMenuItem = {}));\n/**\n * Enum for signature type\n */\nexport var SignatureType;\n(function (SignatureType) {\n SignatureType[\"Draw\"] = \"Draw\";\n SignatureType[\"Type\"] = \"Type\";\n SignatureType[\"Image\"] = \"Image\";\n})(SignatureType || (SignatureType = {}));\n/**\n * Enum for annotation resizer location\n */\nexport var AnnotationResizerLocation;\n(function (AnnotationResizerLocation) {\n AnnotationResizerLocation[AnnotationResizerLocation[\"Corners\"] = 1] = \"Corners\";\n AnnotationResizerLocation[AnnotationResizerLocation[\"Edges\"] = 2] = \"Edges\";\n})(AnnotationResizerLocation || (AnnotationResizerLocation = {}));\n/**\n * Enum for displaying the signature dialog\n */\nexport var DisplayMode;\n(function (DisplayMode) {\n /** Draw - Display only the draw option in the signature dialog. */\n DisplayMode[DisplayMode[\"Draw\"] = 1] = \"Draw\";\n /** Text - Display only the type option in the signature dialog. */\n DisplayMode[DisplayMode[\"Text\"] = 2] = \"Text\";\n /** Upload - Display only the upload option in the signature dialog. */\n DisplayMode[DisplayMode[\"Upload\"] = 4] = \"Upload\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Enum for cursor type\n */\nexport var CursorType;\n(function (CursorType) {\n CursorType[\"auto\"] = \"auto\";\n CursorType[\"crossHair\"] = \"crosshair\";\n // eslint-disable-next-line\n CursorType[\"e_resize\"] = \"e-resize\";\n // eslint-disable-next-line\n CursorType[\"ew_resize\"] = \"ew-resize\";\n CursorType[\"grab\"] = \"grab\";\n CursorType[\"grabbing\"] = \"grabbing\";\n CursorType[\"move\"] = \"move\";\n // eslint-disable-next-line\n CursorType[\"n_resize\"] = \"n-resize\";\n // eslint-disable-next-line\n CursorType[\"ne_resize\"] = \"ne-resize\";\n // eslint-disable-next-line\n CursorType[\"ns_resize\"] = \"ns-resize\";\n // eslint-disable-next-line\n CursorType[\"nw_resize\"] = \"nw-resize\";\n CursorType[\"pointer\"] = \"pointer\";\n // eslint-disable-next-line\n CursorType[\"s_resize\"] = \"s-resize\";\n // eslint-disable-next-line\n CursorType[\"se_resize\"] = \"se-resize\";\n // eslint-disable-next-line\n CursorType[\"sw_resize\"] = \"sw-resize\";\n CursorType[\"text\"] = \"text\";\n // eslint-disable-next-line\n CursorType[\"w_resize\"] = \"w-resize\";\n})(CursorType || (CursorType = {}));\n/**\n * Enum type for Dynamic Stamp Items\n */\nexport var DynamicStampItem;\n(function (DynamicStampItem) {\n DynamicStampItem[\"Revised\"] = \"Revised\";\n DynamicStampItem[\"Reviewed\"] = \"Reviewed\";\n DynamicStampItem[\"Received\"] = \"Received\";\n DynamicStampItem[\"Approved\"] = \"Approved\";\n DynamicStampItem[\"Confidential\"] = \"Confidential\";\n DynamicStampItem[\"NotApproved\"] = \"NotApproved\";\n})(DynamicStampItem || (DynamicStampItem = {}));\n/**\n * Enum type for Sign Stamp Items\n */\nexport var SignStampItem;\n(function (SignStampItem) {\n SignStampItem[\"Witness\"] = \"Witness\";\n SignStampItem[\"InitialHere\"] = \"InitialHere\";\n SignStampItem[\"SignHere\"] = \"SignHere\";\n SignStampItem[\"Accepted\"] = \"Accepted\";\n SignStampItem[\"Rejected\"] = \"Rejected\";\n})(SignStampItem || (SignStampItem = {}));\n/**\n * Enum type for Standard Business Stamp Items\n */\nexport var StandardBusinessStampItem;\n(function (StandardBusinessStampItem) {\n StandardBusinessStampItem[\"Approved\"] = \"Approved\";\n StandardBusinessStampItem[\"NotApproved\"] = \"NotApproved\";\n StandardBusinessStampItem[\"Draft\"] = \"Draft\";\n StandardBusinessStampItem[\"Final\"] = \"Final\";\n StandardBusinessStampItem[\"Completed\"] = \"Completed\";\n StandardBusinessStampItem[\"Confidential\"] = \"Confidential\";\n StandardBusinessStampItem[\"ForPublicRelease\"] = \"ForPublicRelease\";\n StandardBusinessStampItem[\"NotForPublicRelease\"] = \"NotForPublicRelease\";\n StandardBusinessStampItem[\"ForComment\"] = \"ForComment\";\n StandardBusinessStampItem[\"Void\"] = \"Void\";\n StandardBusinessStampItem[\"PreliminaryResults\"] = \"PreliminaryResults\";\n StandardBusinessStampItem[\"InformationOnly\"] = \"InformationOnly\";\n})(StandardBusinessStampItem || (StandardBusinessStampItem = {}));\n/**\n * Enum type for allowed interactions for locked annotations\n */\nexport var AllowedInteraction;\n(function (AllowedInteraction) {\n AllowedInteraction[\"Select\"] = \"Select\";\n AllowedInteraction[\"Move\"] = \"Move\";\n AllowedInteraction[\"Resize\"] = \"Resize\";\n AllowedInteraction[\"Delete\"] = \"Delete\";\n AllowedInteraction[\"None\"] = \"None\";\n AllowedInteraction[\"PropertyChange\"] = \"PropertyChange\";\n})(AllowedInteraction || (AllowedInteraction = {}));\n/**\n * Enum type for export annotation file types\n */\nexport var AnnotationDataFormat;\n(function (AnnotationDataFormat) {\n AnnotationDataFormat[\"Json\"] = \"Json\";\n AnnotationDataFormat[\"Xfdf\"] = \"Xfdf\";\n})(AnnotationDataFormat || (AnnotationDataFormat = {}));\n/**\n * Represents the format type of form data.\n */\nexport var FormFieldDataFormat;\n(function (FormFieldDataFormat) {\n FormFieldDataFormat[\"Xml\"] = \"Xml\";\n FormFieldDataFormat[\"Fdf\"] = \"Fdf\";\n FormFieldDataFormat[\"Xfdf\"] = \"Xfdf\";\n FormFieldDataFormat[\"Json\"] = \"Json\";\n})(FormFieldDataFormat || (FormFieldDataFormat = {}));\n","import { createElement, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { splitArrayCollection, processPathData, getPathString } from '@syncfusion/ej2-drawings';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { cloneObject } from '../drawing/drawing-util';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { Tab } from '@syncfusion/ej2-navigations';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { DisplayMode } from './types';\n/**\n * @hidden\n */\nvar Signature = /** @class */ (function () {\n /**\n * Initialize the constructor of blazorUIadapater.\n * @private\n * @param { PdfViewer } pdfViewer - Specified PdfViewer class.\n * @param { PdfViewerBase } pdfViewerBase - The pdfViewerBase.\n */\n function Signature(pdfViewer, pdfViewerBase) {\n var _this = this;\n this.mouseMoving = true;\n this.canvasTouched = false;\n this.imageSignatureDataUrl = '';\n this.drawSignatureDataUrl = '';\n // eslint-disable-next-line\n this.newObject = [];\n /**\n * @private\n */\n this.outputString = '';\n /**\n * @private\n */\n this.drawOutputString = '';\n /**\n * @private\n */\n this.imageOutputString = '';\n /**\n * @private\n */\n // eslint-disable-next-line\n this.signaturecollection = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.outputcollection = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.signAnnotationIndex = [];\n // eslint-disable-next-line\n this.fontsign = [];\n // eslint-disable-next-line\n this.signfontStyle = [];\n this.isSaveSignature = false;\n this.isSaveInitial = false;\n this.isInitialFiledSaveSignature = false;\n this.isSignatureFieldsSaveSignature = false;\n this.issaveTypeSignature = false;\n this.issaveImageSignature = false;\n this.issaveTypeInitial = false;\n this.issaveImageInitial = false;\n this.saveSignatureTypeString = '';\n this.saveInitialTypeString = '';\n this.saveTypeString = '';\n this.signatureTypeString = '';\n this.initialTypeString = '';\n this.saveUploadString = '';\n this.saveSignatureUploadString = '';\n this.saveInitialUploadString = '';\n this.signatureUploadString = '';\n this.initialUploadString = '';\n this.clearUploadString = false;\n this.textValue = '';\n this.signatureDrawString = '';\n this.initialDrawString = '';\n // eslint-disable-next-line\n this.signatureTextContentTop = 0.2;\n // eslint-disable-next-line\n this.signatureTextContentLeft = 0.7;\n // eslint-disable-next-line\n this.saveSignatureString = '';\n // eslint-disable-next-line\n this.saveInitialString = '';\n /**\n * @private\n */\n // eslint-disable-next-line\n this.saveImageString = '';\n this.signatureFieldCollection = [];\n this.signatureImageString = '';\n this.initialImageString = '';\n /**\n * @private\n */\n // eslint-disable-next-line\n this.maxSaveLimit = 5;\n this.select = function (e) {\n if (this.canvasTouched) {\n this.mouseMoving = true;\n this.canvasTouched = false;\n }\n if (e.isSwiped && this.signaturetype == 'Draw' && this.mouseMoving) {\n e.cancel = true;\n this.mouseMoving = false;\n }\n };\n // eslint-disable-next-line\n this.addStampImage = function (args) {\n // eslint-disable-next-line\n var proxy = _this;\n // eslint-disable-next-line\n var upoadedFiles = args.target.files;\n if (args.target.files[0] !== null) {\n var uploadedFile = upoadedFiles[0];\n if (uploadedFile.type.split('/')[0] === 'image') {\n var reader = new FileReader();\n // eslint-disable-next-line\n reader.onload = function (e) {\n // eslint-disable-next-line\n var canvas = document.getElementById(_this.pdfViewer.element.id + '_signatureuploadCanvas_');\n // eslint-disable-next-line\n var context = canvas.getContext('2d');\n // eslint-disable-next-line\n var image = new Image();\n // eslint-disable-next-line\n var proxy = _this;\n image.onload = function () {\n // eslint-disable-next-line\n var signbutton = document.getElementById(_this.pdfViewer.element.id + '_e-pv-upload-button');\n signbutton.style.visibility = 'hidden';\n context.drawImage(image, 0, 0, canvas.width, canvas.height);\n proxy.enableCreateButton(false);\n proxy.outputString = image.src;\n proxy.signatureImageHeight = image.naturalHeight;\n proxy.signatureImageWidth = image.naturalWidth;\n };\n image.src = e.currentTarget.result;\n proxy.outputString = e.currentTarget.result;\n proxy.switchTabImageSignature = e.currentTarget.result;\n };\n reader.readAsDataURL(uploadedFile);\n }\n }\n args.target.value = '';\n args.currentTarget.value = '';\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.createSignaturePanel = function () {\n var _this = this;\n var maximumWidth = 750;\n this.imageSignatureDataUrl = \"\";\n this.drawSignatureDataUrl = \"\";\n if (!isBlazor()) {\n var elementID = this.pdfViewer.element.id;\n var dialogDiv = createElement('div', { id: elementID + '_signature_window', className: 'e-pv-signature-window' });\n dialogDiv.style.display = 'block';\n this.pdfViewerBase.pageContainer.appendChild(dialogDiv);\n var appearanceTab = this.createSignatureCanvas();\n var signaturePanelHeader = void 0;\n if (!this.pdfViewerBase.isToolbarSignClicked) {\n if (this.pdfViewerBase.isInitialField) {\n signaturePanelHeader = this.pdfViewer.localeObj.getConstant('HandwrittenInitialDialogHeaderText');\n }\n else {\n signaturePanelHeader = this.pdfViewer.localeObj.getConstant('HandwrittenSignatureDialogHeaderText');\n }\n }\n else {\n if (this.pdfViewerBase.isInitialField) {\n signaturePanelHeader = this.pdfViewer.localeObj.getConstant('InitialFieldDialogHeaderText');\n }\n else {\n signaturePanelHeader = this.pdfViewer.localeObj.getConstant('SignatureFieldDialogHeaderText');\n }\n }\n if (this.signatureDialog) {\n this.signatureDialog.content = appearanceTab;\n }\n else {\n this.signatureDialog = new Dialog({\n // eslint-disable-next-line max-len\n showCloseIcon: true, closeOnEscape: false, isModal: true, header: signaturePanelHeader, cssClass: 'e-pv-signature-dialog-height',\n target: this.pdfViewer.element, content: appearanceTab, width: '750px', visible: true, allowDragging: true,\n beforeClose: function () {\n _this.clearSignatureCanvas();\n _this.signatureDialog.destroy();\n _this.signatureDialog = null;\n if (_this.tabObj) {\n _this.tabObj.destroy();\n }\n // eslint-disable-next-line\n var signatureWindow = document.getElementById(_this.pdfViewer.element.id + '_signature_window');\n if (signatureWindow) {\n // eslint-disable-next-line\n signatureWindow.parentNode ? signatureWindow.parentNode.removeChild(signatureWindow) : signatureWindow.parentElement.removeChild(signatureWindow);\n }\n // eslint-disable-next-line max-len\n if (!_this.pdfViewerBase.isToolbarSignClicked && !_this.pdfViewerBase.drawSignatureWithTool && !isNullOrUndefined(_this.pdfViewer.formFieldsModule.currentTarget)) {\n _this.pdfViewer.fireFocusOutFormField(_this.pdfViewer.formFieldsModule.currentTarget.name, '');\n }\n _this.pdfViewerBase.isToolbarSignClicked = false;\n _this.setFocus();\n }\n });\n this.signatureDialog.buttons = [\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Clear'), disabled: true, cssClass: 'e-pv-clearbtn' }, click: this.clearSignatureCanvas.bind(this) },\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel'), cssClass: 'e-pv-cancelbtn' }, click: this.closeSignaturePanel.bind(this) },\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Create'), isPrimary: true, disabled: true, cssClass: 'e-pv-createbtn' }, click: this.addSignatureInPage.bind(this) }\n ];\n this.signatureDialog.appendTo(dialogDiv);\n }\n if (this.pdfViewer.element.offsetWidth < maximumWidth)\n this.updateCanvasSize();\n if (this.pdfViewer.enableRtl) {\n this.signatureDialog.enableRtl = this.pdfViewer.enableRtl;\n }\n var checkboxItem = this.signatureDialog.content.ej2_instances[0].items[0];\n if (checkboxItem.header.label === 'DRAW') {\n var drawCheckbox = document.getElementById(\"checkbox\");\n this.hideSignatureCheckbox(drawCheckbox);\n }\n else if (checkboxItem.header.label === 'TYPE') {\n var typeCheckbox = document.getElementById(\"checkbox1\");\n this.hideSignatureCheckbox(typeCheckbox);\n }\n else {\n var imageCheckbox = document.getElementById(\"checkbox2\");\n this.hideSignatureCheckbox(imageCheckbox);\n }\n this.setSignatureCanvasWidth();\n }\n else {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n if (canvas) {\n if (!this.pdfViewerBase.pageContainer.querySelector('.e-pv-signature-window')) {\n var elementID = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n var dialogDiv = createElement('div', { id: elementID + '_signature_window', className: 'e-pv-signature-window' });\n dialogDiv.style.display = 'block';\n this.pdfViewerBase.pageContainer.appendChild(dialogDiv);\n }\n canvas.addEventListener('mousedown', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('mousemove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('mouseup', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('mouseleave', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('touchstart', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('touchmove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('touchend', this.signaturePanelMouseUp.bind(this));\n this.clearSignatureCanvas();\n }\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenSignaturePanel', this.pdfViewerBase.isToolbarSignClicked);\n }\n this.drawSavedSignature();\n };\n Signature.prototype.setSignatureCanvasWidth = function () {\n var appearanceElement = document.getElementById(this.pdfViewer.element.id + 'Signature_appearance');\n if (appearanceElement) {\n var apperanceTabWidth = appearanceElement.clientWidth;\n var pathcanvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n if (pathcanvas) {\n pathcanvas.width = apperanceTabWidth;\n pathcanvas.style.width = apperanceTabWidth + \"px\";\n }\n var uploadCanvas = document.getElementById(this.pdfViewer.element.id + '_signatureuploadCanvas_');\n if (uploadCanvas) {\n uploadCanvas.width = apperanceTabWidth;\n uploadCanvas.style.width = apperanceTabWidth + \"px\";\n }\n var textDiv = document.getElementById(this.pdfViewer.element.id + '_font_appearance');\n if (textDiv) {\n textDiv.width = apperanceTabWidth;\n textDiv.style.width = apperanceTabWidth + \"px\";\n }\n }\n };\n Signature.prototype.drawSavedSignature = function () {\n if (!this.pdfViewerBase.isToolbarSignClicked && (this.isSaveSignature || this.isSaveInitial)) {\n if (!this.pdfViewerBase.isInitialField && this.isSaveSignature) {\n this.outputString = this.saveSignatureString;\n }\n else if (this.pdfViewerBase.isInitialField && this.isSaveInitial) {\n this.outputString = this.saveInitialString;\n }\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n // eslint-disable-next-line\n var context_1 = canvas.getContext('2d');\n // eslint-disable-next-line\n var image_1 = new Image();\n image_1.onload = function () {\n context_1.drawImage(image_1, 0, 0);\n };\n if (!this.pdfViewerBase.isInitialField && this.isSaveSignature) {\n image_1.src = this.signatureDrawString;\n }\n else if (this.pdfViewerBase.isInitialField && this.isSaveInitial) {\n image_1.src = this.initialDrawString;\n }\n // eslint-disable-next-line\n var checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n if (checkbox) {\n checkbox.checked = true;\n }\n this.enableCreateButton(false);\n this.enableClearbutton(false);\n }\n };\n Signature.prototype.drawSavedTypeSignature = function () {\n var output = '';\n if (!this.pdfViewerBase.isToolbarSignClicked && (this.issaveTypeSignature || this.issaveTypeInitial)) {\n if (!this.pdfViewerBase.isInitialField && this.issaveTypeSignature) {\n output = this.saveSignatureTypeString;\n }\n else {\n output = this.saveInitialTypeString;\n }\n }\n return output;\n };\n ;\n Signature.prototype.drawSavedImageSignature = function () {\n var output = '';\n if (!this.pdfViewerBase.isToolbarSignClicked && (this.issaveImageSignature || this.issaveImageInitial)) {\n if (!this.pdfViewerBase.isInitialField && this.issaveImageSignature) {\n output = this.saveSignatureUploadString;\n }\n else {\n output = this.saveInitialUploadString;\n }\n }\n return output;\n };\n ;\n Signature.prototype.hideSignatureCheckbox = function (checkbox) {\n if (this.pdfViewerBase.isToolbarSignClicked) {\n if (this.pdfViewerBase.isInitialField) {\n if (this.pdfViewer.handWrittenSignatureSettings.initialDialogSettings && this.pdfViewer.handWrittenSignatureSettings.initialDialogSettings.hideSaveSignature) {\n this.hideCheckboxParent(checkbox);\n }\n }\n else if (this.pdfViewer.handWrittenSignatureSettings.signatureDialogSettings && this.pdfViewer.handWrittenSignatureSettings.signatureDialogSettings.hideSaveSignature) {\n this.hideCheckboxParent(checkbox);\n }\n }\n else {\n if (this.pdfViewerBase.isInitialField) {\n if (this.pdfViewer.initialFieldSettings.initialDialogSettings && this.pdfViewer.initialFieldSettings.initialDialogSettings.hideSaveSignature) {\n this.hideCheckboxParent(checkbox);\n }\n }\n else {\n if (this.pdfViewer.signatureFieldSettings.signatureDialogSettings && this.pdfViewer.signatureFieldSettings.signatureDialogSettings.hideSaveSignature) {\n this.hideCheckboxParent(checkbox);\n }\n }\n }\n };\n Signature.prototype.saveSignatureCheckbox = function () {\n if (this.pdfViewerBase.isToolbarSignClicked) {\n return false;\n }\n else {\n if (this.pdfViewerBase.isInitialField) {\n if (this.pdfViewer.initialFieldSettings.initialDialogSettings && this.pdfViewer.initialFieldSettings.initialDialogSettings.hideSaveSignature) {\n return false;\n }\n else {\n return this.isInitialFiledSaveSignature;\n }\n }\n else {\n if (this.pdfViewer.signatureFieldSettings.signatureDialogSettings && this.pdfViewer.signatureFieldSettings.signatureDialogSettings.hideSaveSignature) {\n return false;\n }\n else {\n return this.isSignatureFieldsSaveSignature;\n }\n }\n }\n };\n Signature.prototype.hideCheckboxParent = function (checkbox) {\n if (checkbox) {\n checkbox.parentElement.style.display = 'none';\n }\n };\n Signature.prototype.saveSignatureImage = function () {\n // eslint-disable-next-line\n var checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n if (checkbox && checkbox.checked) {\n if (this.outputString !== '') {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = true;\n this.saveSignatureString = this.outputString;\n }\n else {\n this.isSaveInitial = true;\n this.saveInitialString = this.outputString;\n }\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveImageString = canvas.toDataURL();\n if (!this.pdfViewerBase.isInitialField) {\n this.signatureImageString = this.saveImageString;\n }\n else {\n this.initialImageString = this.saveImageString;\n }\n }\n }\n else {\n if (this.isSaveSignature && !this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = false;\n this.saveSignatureString = '';\n this.saveImageString = '';\n this.signatureImageString = '';\n }\n else if (this.isSaveInitial && this.pdfViewerBase.isInitialField) {\n this.isSaveInitial = false;\n this.saveInitialString = '';\n this.saveImageString = '';\n this.initialImageString = '';\n }\n this.clearSignatureCanvas();\n }\n };\n /**\n * @param type\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.addSignature = function (type) {\n var annot;\n if (this.pdfViewerBase.isToolbarSignClicked) {\n var annotationName = this.pdfViewer.annotation.createGUID();\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.isSignatureAdded = true;\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n // eslint-disable-next-line max-len\n var thickness = this.pdfViewer.handWrittenSignatureSettings.thickness ? this.pdfViewer.handWrittenSignatureSettings.thickness : 1;\n // eslint-disable-next-line max-len\n var opacity = this.pdfViewer.handWrittenSignatureSettings.opacity ? this.pdfViewer.handWrittenSignatureSettings.opacity : 1;\n // eslint-disable-next-line max-len\n var strokeColor = this.pdfViewer.handWrittenSignatureSettings.strokeColor ? this.pdfViewer.handWrittenSignatureSettings.strokeColor : '#000000';\n var fontSize = 16;\n var fontFamily = 'Helvetica';\n var signatureBounds = this.updateSignatureAspectRatio(this.outputString, true);\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveImageString = canvas.toDataURL();\n if (!this.pdfViewerBase.isInitialField) {\n this.signatureImageString = this.saveImageString;\n }\n else {\n this.initialImageString = this.saveImageString;\n }\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: signatureBounds, pageIndex: pageIndex, data: this.outputString, fontFamily: fontFamily, fontSize: fontSize,\n shapeAnnotationType: 'HandWrittenSignature', opacity: opacity, strokeColor: strokeColor, thickness: thickness, signatureName: annotationName\n };\n this.pdfViewerBase.currentSignatureAnnot = annot;\n // eslint-disable-next-line\n var checkbox = void 0;\n if (isBlazor()) {\n checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n }\n else {\n checkbox = document.getElementById('checkbox');\n }\n if (checkbox && checkbox.checked) {\n this.addSignatureCollection();\n }\n this.hideSignaturePanel();\n this.pdfViewerBase.isToolbarSignClicked = false;\n }\n else {\n // eslint-disable-next-line\n var checkbox = document.getElementById('checkbox');\n var typeCheckbox = document.getElementById('checkbox1');\n var imageCheckbox = document.getElementById('checkbox2');\n var isSignatureAdded = false;\n if (!isSignatureAdded) {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveImageString = canvas.toDataURL();\n if (checkbox) {\n if (checkbox.checked) {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = true;\n this.signatureDrawString = this.saveImageString;\n this.saveSignatureString = this.outputString;\n }\n else {\n this.isSaveInitial = true;\n this.initialDrawString = this.saveImageString;\n this.saveInitialString = this.outputString;\n }\n this.checkSaveFiledSign(this.pdfViewerBase.isInitialField, true);\n }\n else {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = false;\n this.saveSignatureString = '';\n }\n else {\n this.isSaveInitial = false;\n this.saveInitialString = '';\n }\n this.checkSaveFiledSign(this.pdfViewerBase.isInitialField, false);\n }\n }\n this.saveTypeSignature(typeCheckbox);\n this.saveUploadSignature(imageCheckbox);\n if (!this.pdfViewerBase.isInitialField) {\n this.signatureImageString = this.saveImageString;\n }\n else {\n this.initialImageString = this.saveImageString;\n }\n this.pdfViewer.formFieldsModule.drawSignature(null, null, this.pdfViewerBase.currentTarget, null);\n isSignatureAdded = true;\n }\n }\n };\n /**\n * @param data\n * @param isSignature\n * @param currentField\n * @param data\n * @param isSignature\n * @param currentField\n * @param data\n * @param isSignature\n * @param currentField\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.updateSignatureAspectRatio = function (data, isSignature, currentField, currentData) {\n // eslint-disable-next-line\n var collectionData = processPathData(data);\n // eslint-disable-next-line\n var csData = splitArrayCollection(collectionData);\n var minimumX = -1;\n var minimumY = -1;\n var maximumX = -1;\n var maximumY = -1;\n var signatureCanvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n var signatureCavasWidth = 0;\n var signatureCavasHeight = 0;\n for (var m = 0; m < csData.length; m++) {\n // eslint-disable-next-line\n var val = csData[m];\n if (minimumX === -1) {\n // eslint-disable-next-line\n minimumX = parseFloat(val['x'].toString());\n // eslint-disable-next-line\n maximumX = parseFloat(val['x'].toString());\n // eslint-disable-next-line\n minimumY = parseFloat(val['y'].toString());\n // eslint-disable-next-line\n maximumY = parseFloat(val['y'].toString());\n }\n else {\n // eslint-disable-next-line\n var point1 = parseFloat(val['x'].toString());\n // eslint-disable-next-line\n var point2 = parseFloat(val['y'].toString());\n if (minimumX >= point1) {\n minimumX = point1;\n }\n if (minimumY >= point2) {\n minimumY = point2;\n }\n if (maximumX <= point1) {\n maximumX = point1;\n }\n if (maximumY <= point2) {\n maximumY = point2;\n }\n }\n }\n signatureCavasWidth = signatureCanvas ? signatureCanvas.clientWidth : 650;\n signatureCavasHeight = signatureCanvas ? signatureCanvas.clientHeight : 300;\n var newdifferenceX = maximumX - minimumX;\n var newdifferenceY = maximumY - minimumY;\n var signBounds = this.calculateSignatureBounds(signatureCavasWidth, signatureCavasHeight, newdifferenceX, newdifferenceY, isSignature, currentField, currentData);\n if (isSignature) {\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n var currentLeft = ((parseFloat(pageDiv.style.width) / 2) - (signBounds.currentWidth / 2)) / zoomvalue;\n // eslint-disable-next-line max-len\n var currentTop = ((parseFloat(pageDiv.style.height) / 2) - (signBounds.currentHeight / 2)) / zoomvalue;\n return { x: currentLeft, y: currentTop, width: signBounds.currentWidth, height: signBounds.currentHeight };\n }\n else {\n return { left: signBounds.currentLeftDiff, top: signBounds.currentTopDiff, width: signBounds.currentWidth, height: signBounds.currentHeight };\n }\n };\n Signature.prototype.calculateSignatureBounds = function (signatureCavasWidth, signatureCavasHeight, newdifferenceX, newdifferenceY, isSignature, currentField, currentData) {\n var ratioX = newdifferenceX / signatureCavasWidth;\n var ratioY = newdifferenceY / signatureCavasHeight;\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n var currentWidth = 0;\n var currentHeight = 0;\n var isSignatureStretched = false;\n var isHeightStretched = false;\n var leftDifference = 0;\n var topDifference = 0;\n if (isSignature) {\n currentWidth = this.pdfViewer.handWrittenSignatureSettings.width ? this.pdfViewer.handWrittenSignatureSettings.width : 150;\n currentHeight = this.pdfViewer.handWrittenSignatureSettings.height ? this.pdfViewer.handWrittenSignatureSettings.height : 100;\n }\n else {\n var fieldWidth = currentField ? currentField.style.width === '100%' ? currentField.clientWidth : parseFloat(currentField.style.width) : this.ConvertPointToPixel(currentData.LineBounds.Width);\n var fieldHeight = currentField ? currentField.style.height === '100%' ? currentField.clientHeight : parseFloat(currentField.style.height) : this.ConvertPointToPixel(currentData.LineBounds.Height);\n var fieldWidthRatio = fieldWidth / fieldHeight;\n var fieldHeightRatio = fieldHeight / fieldWidth;\n var canvasWidthRatio = signatureCavasWidth / signatureCavasHeight;\n var canvasHeightRatio = signatureCavasHeight / signatureCavasWidth;\n var fieldRotation = currentField ? currentField.offsetParent.offsetParent.style.transform ? currentField.offsetParent.offsetParent.style.transform : currentField.style.transform : currentData.RotationAngle;\n if ((fieldWidthRatio > canvasWidthRatio) || (fieldHeightRatio > canvasWidthRatio) || ((Math.abs(fieldWidthRatio - fieldHeightRatio)) <= 1)) {\n var ratioDifference = 0;\n if ((fieldHeightRatio > canvasWidthRatio) || ((Math.abs(fieldWidthRatio - fieldHeightRatio)) <= 1)) {\n isHeightStretched = true;\n ratioDifference = fieldHeightRatio / canvasHeightRatio;\n }\n else {\n isSignatureStretched = true;\n ratioDifference = fieldWidthRatio / canvasWidthRatio;\n }\n if (fieldRotation === 'rotate(90deg)' || fieldRotation === 'rotate(270deg)') {\n // eslint-disable-next-line\n currentWidth = fieldHeight / zoomvalue;\n // eslint-disable-next-line\n currentHeight = fieldWidth / zoomvalue;\n }\n else {\n if (isSignatureStretched) {\n // eslint-disable-next-line\n leftDifference = fieldWidth / zoomvalue;\n // eslint-disable-next-line\n currentWidth = (fieldWidth / ratioDifference) / zoomvalue;\n // eslint-disable-next-line\n currentHeight = fieldHeight / zoomvalue;\n }\n if (isHeightStretched) {\n // eslint-disable-next-line\n topDifference = fieldHeight / zoomvalue;\n // eslint-disable-next-line\n currentWidth = fieldWidth / zoomvalue;\n // eslint-disable-next-line\n currentHeight = (fieldHeight / ratioDifference) / zoomvalue;\n }\n }\n }\n else {\n if (fieldRotation === 'rotate(90deg)' || fieldRotation === 'rotate(270deg)') {\n // eslint-disable-next-line\n currentWidth = fieldHeight / zoomvalue;\n // eslint-disable-next-line\n currentHeight = fieldWidth / zoomvalue;\n }\n else {\n // eslint-disable-next-line\n currentWidth = fieldWidth / zoomvalue;\n // eslint-disable-next-line\n currentHeight = fieldHeight / zoomvalue;\n }\n }\n }\n var currentLeftDiff = (signatureCavasWidth - newdifferenceX) / 2;\n var currentTopDiff = (signatureCavasHeight - newdifferenceY) / 2;\n if (isSignatureStretched) {\n currentLeftDiff = (currentLeftDiff / signatureCavasWidth) * leftDifference;\n var leftValueDiff = ((leftDifference * ratioX) - (currentWidth * ratioX)) / 2;\n currentLeftDiff = currentLeftDiff + leftValueDiff;\n currentTopDiff = (currentTopDiff / signatureCavasHeight) * currentHeight;\n }\n else if (isHeightStretched) {\n currentLeftDiff = (currentLeftDiff / signatureCavasWidth) * currentWidth;\n currentTopDiff = (currentTopDiff / signatureCavasHeight) * topDifference;\n var topValueDiff = ((topDifference * ratioY) - (currentHeight * ratioY)) / 2;\n currentTopDiff = currentTopDiff + topValueDiff;\n }\n else {\n currentLeftDiff = (currentLeftDiff / signatureCavasWidth) * currentWidth;\n currentTopDiff = (currentTopDiff / signatureCavasHeight) * currentHeight;\n }\n if (this.pdfViewer.signatureFitMode !== \"Stretch\") {\n currentWidth = currentWidth * ratioX;\n currentHeight = currentHeight * ratioY;\n }\n return { currentLeftDiff: currentLeftDiff, currentTopDiff: currentTopDiff, currentWidth: currentWidth, currentHeight: currentHeight };\n };\n /**\n * @private\n */\n Signature.prototype.setFocus = function (id) {\n if (!id) {\n if (this.currentTarget) {\n document.getElementById(this.currentTarget.id).focus();\n }\n }\n else {\n this.removeFocus();\n var signatureElement = document.getElementById(id);\n signatureElement.classList.add('e-pv-signature-focus');\n }\n };\n /**\n * @private\n */\n Signature.prototype.removeFocus = function () {\n if (this.signatureFieldCollection) {\n // eslint-disable-next-line\n var signatureFields = this.signatureFieldCollection;\n if (signatureFields.length === 0) {\n signatureFields = this.getSignField();\n }\n for (var i = 0; i < this.signatureFieldCollection.length; i++) {\n var signatureFieldId = this.pdfViewer.formDesignerModule ? this.signatureFieldCollection[parseInt(i.toString(), 10)].FormField.uniqueID : this.signatureFieldCollection[parseInt(i.toString(), 10)].uniqueID;\n var signatureElement = document.getElementById(signatureFieldId);\n if (signatureElement) {\n signatureElement.classList.remove('e-pv-signature-focus');\n }\n }\n if (this.pdfViewer.formFieldsModule.currentTarget) {\n this.pdfViewer.formFieldsModule.currentTarget.classList.remove('e-pv-signature-focus');\n }\n }\n };\n // eslint-disable-next-line\n Signature.prototype.getSignField = function () {\n if (this.pdfViewer.formDesignerModule) {\n this.signatureFieldCollection =\n this.pdfViewer.formDesignerModule.getFormDesignerSignField(this.signatureFieldCollection);\n }\n else {\n this.signatureFieldCollection = this.getFormFieldSignField();\n }\n return this.signatureFieldCollection;\n };\n Signature.prototype.getFormFieldSignField = function () {\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n // eslint-disable-next-line\n var currentData;\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n currentData = formFieldsData[parseInt(i.toString(), 10)];\n if (currentData.Name === 'SignatureField' || currentData.Name === 'InitialField') {\n // eslint-disable-next-line\n currentData['uniqueID'] = this.pdfViewer.element.id + 'input_' + currentData.PageIndex + '_' + i;\n this.signatureFieldCollection.push(formFieldsData[parseInt(i.toString(), 10)]);\n }\n }\n }\n return this.signatureFieldCollection;\n };\n Signature.prototype.checkSaveFiledSign = function (initialField, saveSign) {\n if (initialField) {\n this.isInitialFiledSaveSignature = saveSign;\n }\n else {\n this.isSignatureFieldsSaveSignature = saveSign;\n }\n };\n Signature.prototype.addSignatureInPage = function () {\n if (this.signaturetype === 'Draw') {\n this.addSignature();\n }\n else if (this.signaturetype === 'Type') {\n this.typeAddSignature();\n }\n else {\n this.imageAddSignature();\n }\n this.drawOutputString = '';\n this.imageOutputString = '';\n };\n Signature.prototype.typeAddSignature = function (type) {\n if (this.pdfViewerBase.isToolbarSignClicked) {\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n var annot = null;\n var annotationName = this.pdfViewer.annotation.createGUID();\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.isSignatureAdded = true;\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n var thickness = this.pdfViewer.handWrittenSignatureSettings.thickness ? this.pdfViewer.handWrittenSignatureSettings.thickness : 1;\n var opacity = this.pdfViewer.handWrittenSignatureSettings.opacity ? this.pdfViewer.handWrittenSignatureSettings.opacity : 1;\n var strokeColor = this.pdfViewer.handWrittenSignatureSettings.strokeColor ? this.pdfViewer.handWrittenSignatureSettings.strokeColor : '#000000';\n var fontSize = 16;\n var currentLeft = 0;\n var currentTop = 0;\n var currentHeight = 65;\n var currentWidth = 200;\n if (!isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.height) && (this.pdfViewer.signatureFitMode === \"Stretch\")) {\n currentHeight = this.pdfViewer.handWrittenSignatureSettings.height;\n }\n if (!isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.width) && (this.pdfViewer.signatureFitMode === \"Stretch\")) {\n currentWidth = this.pdfViewer.handWrittenSignatureSettings.width;\n }\n currentLeft = ((parseFloat(pageDiv.style.width) / 2) - (currentWidth / 2)) / zoomvalue;\n currentTop = ((parseFloat(pageDiv.style.height) / 2) - (currentHeight / 2)) / zoomvalue;\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n if (!this.signtypevalue) {\n this.updateSignatureTypeValue(true);\n }\n var inputValue = this.signtypevalue;\n annot = {\n // eslint-disable-next-line max-len\n id: 'Typesign' + this.pdfViewerBase.signatureCount, bounds: {\n left: currentLeft / zoomFactor, top: currentTop / zoomFactor, x: currentLeft / zoomFactor,\n // eslint-disable-next-line max-len\n y: currentTop / zoomFactor, width: currentWidth, height: currentHeight\n }, pageIndex: pageIndex, dynamicText: inputValue, data: this.pdfViewerBase.signatureModule.outputString, shapeAnnotationType: 'SignatureText',\n opacity: opacity, strokeColor: strokeColor, thickness: thickness, fontSize: fontSize, fontFamily: this.fontName, signatureName: annotationName\n };\n this.pdfViewerBase.currentSignatureAnnot = annot;\n // eslint-disable-next-line\n var checkbox = void 0;\n if (isBlazor()) {\n checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n }\n else {\n checkbox = document.getElementById('checkbox1');\n }\n if (checkbox && checkbox.checked) {\n this.addSignatureCollection();\n }\n this.signtypevalue = '';\n this.hideSignaturePanel();\n this.pdfViewerBase.isToolbarSignClicked = false;\n }\n else {\n var checkbox = document.getElementById('checkbox');\n var typeCheckbox = document.getElementById('checkbox1');\n var imageCheckbox = document.getElementById('checkbox2');\n var isSignatureAdded = false;\n if (!isSignatureAdded) {\n this.saveDrawSignature(checkbox);\n this.saveUploadSignature(imageCheckbox);\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveTypeString = canvas.toDataURL();\n this.updateSignatureTypeValue();\n if (typeCheckbox && typeCheckbox.checked) {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = true;\n this.signatureImageString = this.saveTypeString;\n this.saveSignatureTypeString = this.textValue;\n this.issaveTypeSignature = true;\n }\n else {\n this.isSaveInitial = true;\n this.initialImageString = this.saveTypeString;\n this.saveInitialTypeString = this.textValue;\n this.issaveTypeInitial = true;\n }\n }\n else {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = false;\n this.saveSignatureTypeString = '';\n this.issaveTypeSignature = false;\n }\n else {\n this.isSaveInitial = false;\n this.saveInitialTypeString = '';\n this.issaveTypeInitial = false;\n }\n }\n if (!this.pdfViewerBase.isInitialField) {\n this.signatureTypeString = this.saveTypeString;\n }\n else {\n this.initialTypeString = this.saveTypeString;\n }\n this.pdfViewer.formFieldsModule.drawSignature('Type', this.textValue, this.pdfViewerBase.currentTarget);\n isSignatureAdded = true;\n this.hideSignaturePanel();\n }\n }\n };\n Signature.prototype.imageAddSignature = function (type) {\n if (this.pdfViewerBase.isToolbarSignClicked) {\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n var annot = null;\n var annotationName = this.pdfViewer.annotation.createGUID();\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.isSignatureAdded = true;\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n var thickness = this.pdfViewer.handWrittenSignatureSettings.thickness ? this.pdfViewer.handWrittenSignatureSettings.thickness : 1;\n var opacity = this.pdfViewer.handWrittenSignatureSettings.opacity ? this.pdfViewer.handWrittenSignatureSettings.opacity : 1;\n var strokeColor = this.pdfViewer.handWrittenSignatureSettings.strokeColor ? this.pdfViewer.handWrittenSignatureSettings.strokeColor : '#000000';\n var fontSize = 16;\n var currentLeft = 0;\n var currentTop = 0;\n var standardImageRatio = 100;\n var currentHeight = 0;\n var currentWidth = 0;\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.height) && (this.pdfViewer.signatureFitMode === \"Stretch\")) {\n currentHeight = this.pdfViewer.handWrittenSignatureSettings.height;\n }\n else if (this.signatureImageHeight >= this.signatureImageWidth) {\n currentHeight = ((this.signatureImageHeight / this.signatureImageHeight) * standardImageRatio);\n }\n else {\n currentHeight = ((this.signatureImageHeight / this.signatureImageWidth) * standardImageRatio);\n }\n if (!isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.width) && (this.pdfViewer.signatureFitMode === \"Stretch\")) {\n currentWidth = this.pdfViewer.handWrittenSignatureSettings.width;\n }\n else if (this.signatureImageHeight >= this.signatureImageWidth) {\n currentWidth = ((this.signatureImageWidth / this.signatureImageHeight) * standardImageRatio);\n }\n else {\n currentWidth = ((this.signatureImageWidth / this.signatureImageWidth) * standardImageRatio);\n }\n currentLeft = ((parseFloat(pageDiv.style.width) / 2) - (currentWidth / 2)) / zoomvalue;\n currentTop = ((parseFloat(pageDiv.style.height) / 2) - (currentHeight / 2)) / zoomvalue;\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n var inputValue = this.signtypevalue;\n annot = {\n // eslint-disable-next-line max-len\n id: 'Typesign' + this.pdfViewerBase.signatureCount, bounds: {\n left: currentLeft / zoomFactor, top: currentTop / zoomFactor, x: currentLeft / zoomFactor,\n // eslint-disable-next-line max-len\n y: currentTop / zoomFactor, width: currentWidth, height: currentHeight\n }, pageIndex: pageIndex, dynamicText: inputValue, data: this.pdfViewerBase.signatureModule.outputString, shapeAnnotationType: 'SignatureImage',\n opacity: opacity, strokeColor: strokeColor, thickness: thickness, fontSize: fontSize, fontFamily: this.fontName, signatureName: annotationName\n };\n this.pdfViewerBase.currentSignatureAnnot = annot;\n // eslint-disable-next-line\n var checkbox = void 0;\n if (isBlazor()) {\n checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n }\n else {\n checkbox = document.getElementById('checkbox2');\n }\n if (checkbox && checkbox.checked) {\n this.addSignatureCollection();\n }\n this.hideSignaturePanel();\n this.pdfViewerBase.isToolbarSignClicked = false;\n }\n else {\n var checkbox = document.getElementById('checkbox');\n var typeCheckbox = document.getElementById('checkbox1');\n var imageCheckbox = document.getElementById('checkbox2');\n var isSignatureAdded = false;\n if (!isSignatureAdded) {\n this.saveDrawSignature(checkbox);\n this.saveTypeSignature(typeCheckbox);\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveUploadString = canvas.toDataURL();\n if (imageCheckbox && imageCheckbox.checked) {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = true;\n this.signatureImageString = this.saveUploadString;\n this.saveSignatureUploadString = this.outputString;\n this.issaveImageSignature = true;\n }\n else {\n this.isSaveInitial = true;\n this.initialImageString = this.saveUploadString;\n this.saveInitialUploadString = this.outputString;\n this.issaveImageInitial = true;\n }\n }\n else {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = false;\n this.saveSignatureUploadString = '';\n this.issaveImageSignature = false;\n }\n else {\n this.isSaveInitial = false;\n this.saveInitialUploadString = '';\n this.issaveImageInitial = false;\n }\n }\n if (!this.pdfViewerBase.isInitialField) {\n this.signatureUploadString = this.saveUploadString;\n }\n else {\n this.initialUploadString = this.saveUploadString;\n }\n this.pdfViewer.formFieldsModule.drawSignature('Image', '', this.pdfViewerBase.currentTarget);\n isSignatureAdded = true;\n this.hideSignaturePanel();\n }\n }\n };\n Signature.prototype.saveDrawSignature = function (checkbox) {\n if (checkbox) {\n if (checkbox.checked) {\n if (this.drawOutputString !== '') {\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveImageString = canvas.toDataURL();\n if (!this.pdfViewerBase.isInitialField) {\n this.saveSignatureString = this.drawOutputString;\n this.signatureDrawString = this.saveImageString;\n }\n else {\n this.saveInitialString = this.drawOutputString;\n this.initialDrawString = this.saveImageString;\n }\n this.checkSaveFiledSign(this.pdfViewerBase.isInitialField, true);\n }\n }\n else {\n if (!this.pdfViewerBase.isInitialField) {\n this.saveSignatureString = '';\n }\n else {\n this.saveInitialString = '';\n }\n this.checkSaveFiledSign(this.pdfViewerBase.isInitialField, false);\n }\n }\n };\n Signature.prototype.saveTypeSignature = function (typeCheckbox) {\n if (typeCheckbox) {\n if (typeCheckbox.checked) {\n this.updateSignatureTypeValue();\n if (this.textValue !== '') {\n if (!this.pdfViewerBase.isInitialField) {\n this.issaveTypeSignature = true;\n this.saveSignatureTypeString = this.textValue;\n }\n else {\n this.issaveTypeInitial = true;\n this.saveInitialTypeString = this.textValue;\n }\n }\n }\n else {\n if (!this.pdfViewerBase.isInitialField) {\n this.saveSignatureTypeString = '';\n this.issaveTypeSignature = false;\n }\n else {\n this.saveInitialTypeString = '';\n this.issaveTypeInitial = false;\n }\n }\n }\n };\n Signature.prototype.saveUploadSignature = function (imageCheckbox) {\n if (imageCheckbox) {\n if (imageCheckbox.checked) {\n var imageCanvas = document.getElementById(this.pdfViewer.element.id + '_signatureuploadCanvas_');\n var uploadString = imageCanvas.toDataURL();\n var imageString = document.getElementById(this.pdfViewer.element.id + '_e-pv-upload-button').style.visibility === 'hidden' ? uploadString : '';\n if (imageString !== '') {\n if (!this.pdfViewerBase.isInitialField) {\n this.issaveImageSignature = true;\n this.saveSignatureUploadString = imageString;\n }\n else {\n this.issaveImageInitial = true;\n this.saveInitialUploadString = imageString;\n }\n }\n }\n else {\n if (!this.pdfViewerBase.isInitialField) {\n this.saveSignatureUploadString = '';\n this.issaveImageSignature = false;\n }\n else {\n this.saveInitialUploadString = '';\n this.issaveImageInitial = false;\n }\n }\n }\n };\n Signature.prototype.updateSignatureTypeValue = function (isType) {\n // eslint-disable-next-line\n var fontElements = document.querySelectorAll('.e-pv-font-sign');\n if (fontElements) {\n for (var j = 0; j < fontElements.length; j++) {\n if (fontElements[parseInt(j.toString(), 10)] && fontElements[parseInt(j.toString(), 10)].style.borderColor === 'red') {\n if (this.pdfViewerBase.isToolbarSignClicked) {\n if (isType) {\n this.signtypevalue = fontElements[parseInt(j.toString(), 10)].textContent;\n this.outputString = fontElements[parseInt(j.toString(), 10)].textContent;\n }\n else {\n this.outputString = fontElements[parseInt(j.toString(), 10)].textContent;\n }\n }\n else {\n if (isType) {\n this.signtypevalue = fontElements[parseInt(j.toString(), 10)].textContent;\n this.textValue = fontElements[parseInt(j.toString(), 10)].textContent;\n }\n else {\n this.textValue = fontElements[parseInt(j.toString(), 10)].textContent;\n }\n }\n try {\n this.fontName = JSON.parse(fontElements[parseInt(j.toString(), 10)].style.fontFamily);\n }\n catch (e) {\n this.fontName = fontElements[parseInt(j.toString(), 10)].style.fontFamily;\n }\n }\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.hideSignaturePanel = function () {\n if (this.signatureDialog) {\n this.signatureDialog.hide();\n }\n };\n Signature.prototype.bindTypeSignatureClickEvent = function () {\n if (isBlazor()) {\n for (var i = 0; i < 4; i++) {\n // eslint-disable-next-line\n var fontElement = document.querySelector('#' + this.pdfViewer.element.id + '_font_signature' + i);\n if (fontElement) {\n fontElement.addEventListener('click', this.typeSignatureclicked.bind(this));\n }\n }\n }\n };\n Signature.prototype.bindDrawSignatureClickEvent = function () {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n if (canvas) {\n canvas.addEventListener('mousedown', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('mousemove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('mouseup', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('mouseleave', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('touchstart', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('touchmove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('touchend', this.signaturePanelMouseUp.bind(this));\n }\n };\n // eslint-disable-next-line\n Signature.prototype.typeSignatureclicked = function (event) {\n var eventTarget = event.target;\n if (eventTarget) {\n for (var i = 0; i < 4; i++) {\n // eslint-disable-next-line\n var fontElement = document.querySelector('#' + this.pdfViewer.element.id + '_font_signature' + i);\n if (fontElement) {\n fontElement.style.borderColor = '';\n }\n }\n eventTarget.style.borderColor = 'red';\n this.outputString = eventTarget.textContent;\n try {\n this.fontName = JSON.parse(eventTarget.style.fontFamily);\n }\n catch (e) {\n this.fontName = eventTarget.style.fontFamily;\n }\n this.enableCreateButton(false);\n }\n };\n // eslint-disable-next-line\n Signature.prototype.createSignatureCanvas = function () {\n // eslint-disable-next-line\n var previousField = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n // eslint-disable-next-line\n var field = document.getElementById(this.pdfViewer.element.id + 'Signature_appearance');\n if (previousField) {\n previousField.remove();\n }\n if (field) {\n field.remove();\n }\n // eslint-disable-next-line max-len\n var appearanceDiv = createElement('div', { id: this.pdfViewer.element.id + 'Signature_appearance', className: 'e-pv-signature-apperance', styles: 'margin-top:30px' });\n // eslint-disable-next-line max-len\n var canvas = createElement('canvas', { id: this.pdfViewer.element.id + '_signatureCanvas_', className: 'e-pv-signature-canvas' });\n canvas.classList.add('e-pv-canvas-signature');\n canvas.height = 305;\n canvas.style.height = '305px';\n canvas.style.border = '1px dotted #bdbdbd';\n canvas.style.backgroundColor = 'white';\n canvas.style.boxSizing = 'border-box';\n canvas.style.borderRadius = '2px';\n canvas.addEventListener('mousedown', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('mousemove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('mouseup', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('mouseleave', this.signaturePanelMouseLeave.bind(this));\n canvas.addEventListener('touchstart', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('touchmove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('touchend', this.signaturePanelMouseUp.bind(this));\n appearanceDiv.appendChild(canvas);\n // eslint-disable-next-line\n var checkBoxObj;\n // eslint-disable-next-line\n var input;\n var saveCheckBoxContent;\n if (this.pdfViewerBase.isToolbarSignClicked && !this.pdfViewerBase.isInitialField) {\n saveCheckBoxContent = this.pdfViewer.localeObj.getConstant('Save Signature');\n }\n else {\n saveCheckBoxContent = this.pdfViewerBase.isInitialField ? this.pdfViewer.localeObj.getConstant('Save Initial') : this.pdfViewer.localeObj.getConstant('Save Signature');\n }\n if (!this.pdfViewer.hideSaveSignature) {\n // eslint-disable-next-line\n input = document.createElement('input');\n input.type = 'checkbox';\n input.id = 'checkbox';\n appearanceDiv.appendChild(input);\n checkBoxObj = new CheckBox({ label: saveCheckBoxContent, disabled: false, checked: false });\n checkBoxObj.appendTo(input);\n }\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = this.saveSignatureCheckbox();\n }\n else {\n this.isSaveInitial = this.saveSignatureCheckbox();\n }\n if (this.isSaveSignature && !this.pdfViewerBase.isInitialField) {\n checkBoxObj.checked = true;\n }\n else if (this.isSaveInitial && this.pdfViewerBase.isInitialField) {\n checkBoxObj.checked = true;\n }\n //if (!this.pdfViewerBase.isToolbarSignClicked) {\n // eslint-disable-next-line\n var typeDiv = createElement('div', { id: this.pdfViewer.element.id + 'type_appearance', className: 'e-pv-signature-apperance', styles: 'margin-top:6px' });\n // eslint-disable-next-line\n var inputText = document.createElement('input');\n if (!this.pdfViewerBase.isInitialField && this.issaveTypeSignature && !this.pdfViewerBase.isToolbarSignClicked) {\n inputText.value = this.drawSavedTypeSignature();\n }\n else if (this.pdfViewerBase.isInitialField && this.issaveTypeInitial && !this.pdfViewerBase.isToolbarSignClicked) {\n inputText.value = this.drawSavedTypeSignature();\n }\n inputText.type = 'text';\n inputText.id = this.pdfViewer.element.id + '_e-pv-Signtext-box';\n typeDiv.appendChild(inputText);\n // eslint-disable-next-line\n var inputobj = new TextBox({\n placeholder: this.pdfViewer.localeObj.getConstant('Enter Signature as Name'),\n floatLabelType: 'Auto'\n });\n inputobj.appendTo(inputText);\n // eslint-disable-next-line\n var fontDiv = createElement('div', { id: this.pdfViewer.element.id + '_font_appearance', className: 'e-pv-font-appearance-style' });\n fontDiv.classList.add('e-pv-canvas-signature');\n fontDiv.style.height = '270px';\n fontDiv.style.border = '1px dotted #bdbdbd';\n fontDiv.style.boxSizing = 'border-box';\n fontDiv.style.borderRadius = '2px';\n fontDiv.style.backgroundColor = 'white';\n fontDiv.style.color = 'black';\n fontDiv.style.marginTop = '8px';\n fontDiv.style.paddingRight = '0px';\n typeDiv.appendChild(fontDiv);\n input = document.createElement('input');\n input.type = 'checkbox';\n input.id = 'checkbox1';\n typeDiv.appendChild(input);\n checkBoxObj = new CheckBox({ label: saveCheckBoxContent, disabled: false, checked: false });\n checkBoxObj.appendTo(input);\n if (this.issaveTypeSignature && !this.pdfViewerBase.isInitialField && !this.pdfViewerBase.isToolbarSignClicked) {\n checkBoxObj.checked = true;\n }\n else if (this.issaveTypeInitial && this.pdfViewerBase.isInitialField && !this.pdfViewerBase.isToolbarSignClicked) {\n checkBoxObj.checked = true;\n }\n inputobj.addEventListener('input', this.renderSignatureText.bind(this));\n this.enableCreateButton(true);\n // eslint-disable-next-line\n var tab = createElement('div', { id: this.pdfViewer.element.id + 'Signature_tab' });\n var uploadDiv = createElement('div', { id: this.pdfViewer.element.id + 'upload_appearance', className: 'e-pv-signature-apperance', styles: 'padding-top:30px' });\n // eslint-disable-next-line\n var button = document.createElement('div');\n button.id = this.pdfViewer.element.id + '_e-pv-upload-button';\n uploadDiv.appendChild(button);\n // eslint-disable-next-line\n var uploadButton = new Button({ cssClass: 'e-pv-sign-upload', content: this.pdfViewer.localeObj.getConstant('Browse Signature Image') });\n uploadButton.appendTo(button);\n uploadButton.element.style.position = 'absolute';\n // eslint-disable-next-line max-len\n var uploadCanvas = createElement('canvas', { id: this.pdfViewer.element.id + '_signatureuploadCanvas_', className: 'e-pv-signature-uploadcanvas' });\n if (this.pdfViewer.element.offsetWidth > 750) {\n uploadCanvas.width = 714;\n }\n else {\n uploadCanvas.width = this.pdfViewer.element.offsetWidth - 35;\n }\n uploadCanvas.classList.add('e-pv-canvas-signature');\n uploadCanvas.height = 305;\n uploadCanvas.style.height = '305px';\n uploadButton.element.style.left = ((uploadCanvas.width / 2) - 50) + 'px';\n uploadButton.element.style.top = ((parseFloat(uploadCanvas.style.height) / 2) + 20) + 'px';\n uploadCanvas.style.border = '1px dotted #bdbdbd';\n uploadCanvas.style.backgroundColor = 'white';\n uploadCanvas.style.boxSizing = 'border-box';\n uploadCanvas.style.borderRadius = '2px';\n uploadCanvas.style.zIndex = '0';\n var imageUploadString = '';\n if (!this.pdfViewerBase.isInitialField && this.issaveImageSignature && !this.pdfViewerBase.isToolbarSignClicked) {\n imageUploadString = this.drawSavedImageSignature();\n }\n else if (this.pdfViewerBase.isInitialField && this.issaveImageInitial && !this.pdfViewerBase.isToolbarSignClicked) {\n imageUploadString = this.drawSavedImageSignature();\n }\n if (imageUploadString !== '' && !this.pdfViewerBase.isToolbarSignClicked) {\n this.clearUploadString = false;\n var ctx_1 = uploadCanvas.getContext('2d');\n var image_2 = new Image();\n image_2.src = imageUploadString;\n image_2.onload = function () {\n ctx_1.drawImage(image_2, 0, 0, uploadCanvas.width, uploadCanvas.height);\n };\n uploadButton.element.style.display = 'hidden';\n }\n uploadDiv.appendChild(uploadCanvas);\n input = document.createElement('input');\n input.type = 'checkbox';\n input.id = 'checkbox2';\n uploadDiv.appendChild(input);\n checkBoxObj = new CheckBox({ label: saveCheckBoxContent, disabled: false, checked: false });\n checkBoxObj.appendTo(input);\n if (this.issaveImageSignature && !this.pdfViewerBase.isInitialField && !this.pdfViewerBase.isToolbarSignClicked) {\n checkBoxObj.checked = true;\n }\n else if (this.issaveImageInitial && this.pdfViewerBase.isInitialField && !this.pdfViewerBase.isToolbarSignClicked) {\n checkBoxObj.checked = true;\n }\n button.addEventListener('click', this.uploadSignatureImage.bind(this));\n // eslint-disable-next-line max-len\n this.signfontStyle = [{ FontName: 'Helvetica' }, { FontName: 'Times New Roman' }, { FontName: 'Courier' }, { FontName: 'Symbol' }];\n // eslint-disable-next-line\n var fontSignature = [];\n if (this.pdfViewerBase.isToolbarSignClicked && !isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.typeSignatureFonts)) {\n for (var j = 0; j < 4; j++) {\n if (!isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.typeSignatureFonts[parseInt(j.toString(), 10)])) {\n this.signfontStyle[parseInt(j.toString(), 10)].FontName = this.pdfViewer.handWrittenSignatureSettings.typeSignatureFonts[parseInt(j.toString(), 10)];\n }\n }\n }\n for (var i = 0; i < this.signfontStyle.length; i++) {\n fontSignature[parseInt(i.toString(), 10)] = document.createElement('div');\n fontSignature[parseInt(i.toString(), 10)].id = '_font_signature' + i + '';\n fontSignature[parseInt(i.toString(), 10)].classList.add('e-pv-font-sign');\n }\n this.fontsign = fontSignature;\n // eslint-disable-next-line\n var proxy = this;\n var items = [];\n if (this.pdfViewerBase.isToolbarSignClicked) {\n if (this.pdfViewerBase.isInitialField) {\n items = this.showHideSignatureTab((this.pdfViewer.handWrittenSignatureSettings.initialDialogSettings ? this.pdfViewer.handWrittenSignatureSettings.initialDialogSettings : this.pdfViewer.initialDialogSettings) && (this.pdfViewer.handWrittenSignatureSettings.initialDialogSettings ? this.pdfViewer.handWrittenSignatureSettings.initialDialogSettings.displayMode : this.pdfViewer.initialDialogSettings.displayMode), appearanceDiv, typeDiv, uploadDiv);\n }\n else {\n items = this.showHideSignatureTab((this.pdfViewer.handWrittenSignatureSettings.signatureDialogSettings ? this.pdfViewer.handWrittenSignatureSettings.signatureDialogSettings : this.pdfViewer.signatureDialogSettings) && (this.pdfViewer.handWrittenSignatureSettings.signatureDialogSettings ? this.pdfViewer.handWrittenSignatureSettings.signatureDialogSettings.displayMode : this.pdfViewer.signatureDialogSettings.displayMode), appearanceDiv, typeDiv, uploadDiv);\n }\n }\n else {\n if (this.pdfViewerBase.isInitialField) {\n items = this.showHideSignatureTab((this.pdfViewer.initialFieldSettings.initialDialogSettings ? this.pdfViewer.initialFieldSettings.initialDialogSettings.displayMode : 7), appearanceDiv, typeDiv, uploadDiv);\n }\n else {\n items = this.showHideSignatureTab((this.pdfViewer.signatureFieldSettings.signatureDialogSettings ? this.pdfViewer.signatureFieldSettings.signatureDialogSettings.displayMode : 7), appearanceDiv, typeDiv, uploadDiv);\n }\n }\n // eslint-disable-next-line\n this.tabObj = new Tab({\n selected: function (args) {\n proxy.handleSelectEvent(args);\n },\n selecting: function (args) {\n proxy.select(args);\n },\n items: items\n });\n this.tabObj.appendTo(tab);\n if (items[0].header.label === 'DRAW') {\n this.signaturetype = 'Draw';\n }\n else if (items[0].header.label === 'TYPE') {\n this.signaturetype = 'Type';\n }\n else {\n this.signaturetype = 'Image';\n }\n return tab;\n // } else {\n // return appearanceDiv;\n // }\n };\n Signature.prototype.handleSelectEvent = function (e) {\n // eslint-disable-next-line\n var headerText = '';\n var maximumWidth = 750;\n var tabInstance = document.getElementById(this.pdfViewer.element.id + 'Signature_tab').ej2_instances[0];\n if (tabInstance) {\n if (tabInstance.items.length > 0) {\n for (var i = 0; i < tabInstance.items.length; i++) {\n var headerValue = tabInstance.items[parseInt(i.toString(), 10)].header.text;\n if (headerValue === e.selectedItem.textContent) {\n headerText = tabInstance.items[parseInt(i.toString(), 10)].header.label;\n }\n }\n }\n }\n this.clearSignatureCanvas(e);\n // eslint-disable-next-line\n if (headerText.toLocaleLowerCase() === 'draw') {\n this.signaturetype = 'Draw';\n this.enableCreateSignatureButton();\n var drawCheckbox = document.getElementById(\"checkbox\");\n this.hideSignatureCheckbox(drawCheckbox);\n }\n else if (headerText.toLocaleLowerCase() === 'type') {\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.drawSignatureDataUrl = canvas.toDataURL();\n this.updateSignatureTypeValue();\n this.signaturetype = 'Type';\n this.enableCreateSignatureButton();\n var typeCheckbox = document.getElementById(\"checkbox1\");\n this.hideSignatureCheckbox(typeCheckbox);\n var textbox = document.getElementById(this.pdfViewer.element.id + '_e-pv-Signtext-box');\n if (!this.pdfViewerBase.isInitialField && this.saveSignatureTypeString !== '' && textbox.value !== '' && !this.pdfViewerBase.isToolbarSignClicked) {\n this.renderSignatureText();\n }\n else if (this.pdfViewerBase.isInitialField && this.saveInitialTypeString !== '' && textbox.value !== '' && !this.pdfViewerBase.isToolbarSignClicked) {\n this.renderSignatureText();\n }\n }\n else if (headerText.toLocaleLowerCase() === 'upload') {\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.drawSignatureDataUrl = canvas.toDataURL();\n this.signaturetype = 'Image';\n this.enableCreateSignatureButton();\n var imageCheckbox = document.getElementById(\"checkbox2\");\n this.hideSignatureCheckbox(imageCheckbox);\n var signbutton = document.getElementById(this.pdfViewer.element.id + '_e-pv-upload-button');\n if (this.saveSignatureUploadString !== \"\" && !this.pdfViewerBase.isInitialField && !this.clearUploadString && !this.pdfViewerBase.isToolbarSignClicked) {\n this.enableCreateButton(false);\n signbutton.style.visibility = 'hidden';\n this.outputString = this.saveSignatureUploadString;\n }\n if (this.saveInitialUploadString !== \"\" && this.pdfViewerBase.isInitialField && !this.clearUploadString && !this.pdfViewerBase.isToolbarSignClicked) {\n this.enableCreateButton(false);\n signbutton.style.visibility = 'hidden';\n this.outputString = this.saveInitialUploadString;\n }\n }\n if (this.pdfViewer.element.offsetWidth < maximumWidth)\n this.updateCanvasSize();\n this.drawSignOnTabSwitch();\n if (headerText.toLocaleLowerCase() === 'upload' && this.imageSignatureDataUrl) {\n this.imageSignOnTabSwitch();\n }\n };\n Signature.prototype.enableCreateSignatureButton = function () {\n if (this.pdfViewerBase.isToolbarSignClicked || this.signaturetype !== 'Type') {\n if (this.outputString !== \"\") {\n this.enableCreateButton(false);\n }\n else {\n this.enableCreateButton(true);\n }\n }\n else {\n if (this.textValue !== \"\") {\n this.enableCreateButton(false);\n }\n else {\n this.enableCreateButton(true);\n }\n }\n };\n Signature.prototype.showHideSignatureTab = function (displayMode, appearanceDiv, typeDiv, uploadDiv) {\n var items = [];\n if (displayMode & DisplayMode.Draw) {\n items.push({\n header: { 'text': this.pdfViewer.localeObj.getConstant('Draw-hand Signature'), 'label': 'DRAW' },\n content: appearanceDiv\n });\n }\n if (displayMode & DisplayMode.Text) {\n items.push({\n header: { 'text': this.pdfViewer.localeObj.getConstant('Type Signature'), 'label': 'TYPE' },\n content: typeDiv\n });\n }\n if (displayMode & DisplayMode.Upload) {\n items.push({\n header: { 'text': this.pdfViewer.localeObj.getConstant('Upload Signature'), 'label': 'UPLOAD' },\n content: uploadDiv\n });\n }\n return items;\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.createSignatureFileElement = function () {\n // eslint-disable-next-line\n var signImage = createElement('input', { id: this.pdfViewer.element.id + '_signElement', attrs: { 'type': 'file' } });\n signImage.setAttribute('accept', '.jpg,.jpeg,.png');\n signImage.style.position = 'absolute';\n signImage.style.left = '0px';\n signImage.style.top = '0px';\n signImage.style.visibility = 'hidden';\n document.body.appendChild(signImage);\n signImage.addEventListener('change', this.addStampImage);\n };\n Signature.prototype.uploadSignatureImage = function () {\n // eslint-disable-next-line\n var signImage = document.getElementById(this.pdfViewer.element.id + '_signElement');\n if (signImage) {\n signImage.click();\n }\n };\n Signature.prototype.renderSignatureText = function () {\n var maximumWidth = 750;\n // eslint-disable-next-line\n var fontDiv = document.getElementById(this.pdfViewer.element.id + '_font_appearance');\n // eslint-disable-next-line\n var textBox = document.getElementById(this.pdfViewer.element.id + '_e-pv-Signtext-box');\n for (var i = 0; i < this.signfontStyle.length; i++) {\n this.fontsign[parseInt(i.toString(), 10)].innerHTML = textBox.value;\n this.fontsign[parseInt(i.toString(), 10)].style.fontFamily = this.signfontStyle[parseInt(i.toString(), 10)].FontName;\n if (this.fontName !== \"\" && this.signfontStyle[parseInt(i.toString(), 10)].FontName === this.fontName) {\n this.fontsign[parseInt(i.toString(), 10)].style.borderColor = 'red';\n }\n else if (isNullOrUndefined(this.fontName) && this.signfontStyle[parseInt(i.toString(), 10)].FontName === 'Helvetica') {\n this.fontsign[parseInt(i.toString(), 10)].style.borderColor = 'red';\n }\n fontDiv.appendChild(this.fontsign[parseInt(i.toString(), 10)]);\n }\n for (var i = 0; i < this.signfontStyle.length; i++) {\n // eslint-disable-next-line\n var clickSign = document.getElementById('_font_signature' + i + '');\n clickSign.addEventListener('click', this.typeSignatureclick.bind(this));\n }\n this.enableCreateButton(false);\n this.enableClearbutton(false);\n if (this.pdfViewer.element.offsetWidth < maximumWidth)\n this.updateCanvasSize();\n this.drawSignOnTabSwitch();\n };\n Signature.prototype.typeSignatureclick = function () {\n var eventTarget = event.target;\n // eslint-disable-next-line\n var createButton = document.getElementsByClassName('e-pv-createbtn')[0];\n createButton.disabled = false;\n for (var i = 0; i < 4; i++) {\n // eslint-disable-next-line\n var fontElement = document.getElementById('_font_signature' + i + '');\n if (fontElement) {\n fontElement.style.borderColor = '';\n }\n }\n eventTarget.style.borderColor = 'red';\n this.outputString = eventTarget.textContent;\n try {\n this.fontName = JSON.parse(eventTarget.style.fontFamily);\n }\n catch (e) {\n this.fontName = eventTarget.style.fontFamily;\n }\n };\n /**\n * @param bounds\n * @param position\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.addSignatureCollection = function (bounds, position) {\n var minimumX = -1;\n var minimumY = -1;\n var maximumX = -1;\n var maximumY = -1;\n // eslint-disable-next-line\n var collectionData = processPathData(this.outputString);\n // eslint-disable-next-line\n var newCanvas = document.createElement('canvas');\n // eslint-disable-next-line\n var context = newCanvas.getContext('2d');\n // eslint-disable-next-line\n var imageString;\n var signatureType = this.pdfViewerBase.currentSignatureAnnot.shapeAnnotationType;\n if (signatureType === 'HandWrittenSignature') {\n if (collectionData.length !== 0) {\n // eslint-disable-next-line\n for (var k = 0; k < collectionData.length; k++) {\n // eslint-disable-next-line\n var val = collectionData[k];\n if (minimumX === -1) {\n // eslint-disable-next-line\n minimumX = (val['x']);\n // eslint-disable-next-line\n maximumX = (val['x']);\n // eslint-disable-next-line\n minimumY = (val['y']);\n // eslint-disable-next-line\n maximumY = (val['y']);\n }\n else {\n // eslint-disable-next-line\n var point1 = (val['x']);\n // eslint-disable-next-line\n var point2 = (val['y']);\n if (minimumX >= point1) {\n minimumX = point1;\n }\n if (minimumY >= point2) {\n minimumY = point2;\n }\n if (maximumX <= point1) {\n maximumX = point1;\n }\n if (maximumY <= point2) {\n maximumY = point2;\n }\n }\n }\n var newdifferenceX = maximumX - minimumX;\n var newdifferenceY = maximumY - minimumY;\n var differenceX = newdifferenceX / 100;\n var differenceY = newdifferenceY / 100;\n var left = 0;\n var top_1 = 0;\n if (bounds) {\n newCanvas.width = position.currentWidth;\n newCanvas.height = position.currentHeight;\n differenceX = newdifferenceX / (bounds.width);\n differenceY = newdifferenceY / (bounds.height);\n left = bounds.x - position.currentLeft;\n top_1 = bounds.y - position.currentTop;\n }\n else {\n newCanvas.width = 100;\n newCanvas.height = 100;\n }\n context.beginPath();\n for (var n = 0; n < collectionData.length; n++) {\n // eslint-disable-next-line\n var val = collectionData[n];\n // eslint-disable-next-line\n var point1 = ((val['x'] - minimumX) / differenceX) + left;\n // eslint-disable-next-line\n var point2 = ((val['y'] - minimumY) / differenceY) + top_1;\n // eslint-disable-next-line\n if (val['command'] === 'M') {\n context.moveTo(point1, point2);\n // eslint-disable-next-line\n }\n else if (val['command'] === 'L') {\n context.lineTo(point1, point2);\n }\n }\n context.stroke();\n context.closePath();\n imageString = newCanvas.toDataURL();\n }\n }\n else if (signatureType === 'SignatureText') {\n imageString = this.outputString;\n }\n else {\n imageString = this.outputString;\n }\n if (bounds) {\n this.saveImageString = imageString;\n }\n else {\n // eslint-disable-next-line\n var signCollection = {};\n signCollection['sign_' + this.pdfViewerBase.imageCount] = this.outputString;\n this.outputcollection.push(signCollection);\n // eslint-disable-next-line\n var signature = [];\n signature.push({ id: 'sign_' + this.pdfViewerBase.imageCount, imageData: imageString, signatureType: signatureType, fontFamily: this.pdfViewerBase.currentSignatureAnnot.fontFamily });\n this.signaturecollection.push({ image: signature, isInitial: this.pdfViewerBase.isInitialField });\n this.pdfViewerBase.imageCount++;\n }\n };\n /**\n * @private]\n * @param {number} limit - The limit.\n * @returns {number} - Returns number.\n */\n Signature.prototype.getSaveLimit = function (limit) {\n if (limit > this.maxSaveLimit) {\n limit = this.maxSaveLimit;\n }\n else if (limit < 1) {\n limit = 1;\n }\n return limit;\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.RenderSavedSignature = function () {\n this.pdfViewerBase.signatureCount++;\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n var annot;\n if (this.pdfViewerBase.isAddedSignClicked) {\n var annotationName = this.pdfViewer.annotation.createGUID();\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.isSignatureAdded = true;\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n var currentLeft = 0;\n var currentTop = 0;\n // eslint-disable-next-line max-len\n var currentWidth = this.pdfViewer.handWrittenSignatureSettings.width ? this.pdfViewer.handWrittenSignatureSettings.width : 100;\n // eslint-disable-next-line max-len\n var currentHeight = this.pdfViewer.handWrittenSignatureSettings.height ? this.pdfViewer.handWrittenSignatureSettings.height : 100;\n // eslint-disable-next-line max-len\n var thickness = this.pdfViewer.handWrittenSignatureSettings.thickness ? this.pdfViewer.handWrittenSignatureSettings.thickness : 1;\n // eslint-disable-next-line max-len\n var opacity = this.pdfViewer.handWrittenSignatureSettings.opacity ? this.pdfViewer.handWrittenSignatureSettings.opacity : 1;\n // eslint-disable-next-line max-len\n var strokeColor = this.pdfViewer.handWrittenSignatureSettings.strokeColor ? this.pdfViewer.handWrittenSignatureSettings.strokeColor : '#000000';\n currentLeft = ((parseFloat(pageDiv.style.width) / 2) - (currentWidth / 2)) / zoomvalue;\n // eslint-disable-next-line max-len\n currentTop = ((parseFloat(pageDiv.style.height) / 2) - (currentHeight / 2)) / zoomvalue;\n var keyString = '';\n var signatureType = void 0;\n var signatureFontFamily = void 0;\n for (var collection = 0; collection < this.outputcollection.length; collection++) {\n // eslint-disable-next-line\n var collectionAddedsign = this.outputcollection[collection];\n // eslint-disable-next-line\n var eventTarget = event.target;\n // eslint-disable-next-line max-len\n if (eventTarget && eventTarget.id === 'sign_' + collection || eventTarget && eventTarget.id === 'sign_border' + collection) {\n keyString = collectionAddedsign['sign_' + collection];\n break;\n }\n }\n for (var signatureIndex = 0; signatureIndex < this.signaturecollection.length; signatureIndex++) {\n var eventTarget = event.target;\n var signatureId = this.signaturecollection[parseInt(signatureIndex.toString(), 10)].image[0].id.split('_')[1];\n if (eventTarget && eventTarget.id === 'sign_' + signatureId || eventTarget && eventTarget.id === 'sign_border' + signatureId) {\n signatureType = this.signaturecollection[parseInt(signatureIndex.toString(), 10)].image[0].signatureType;\n signatureFontFamily = this.signaturecollection[parseInt(signatureIndex.toString(), 10)].image[0].fontFamily;\n break;\n }\n }\n if (signatureType === 'HandWrittenSignature') {\n // eslint-disable-next-line\n var signatureBounds = this.updateSignatureAspectRatio(keyString, true);\n // eslint-disable-next-line max-len\n currentWidth = signatureBounds.width ? signatureBounds.width : currentWidth;\n // eslint-disable-next-line max-len\n currentHeight = signatureBounds.height ? signatureBounds.height : currentHeight;\n }\n else {\n currentWidth = currentWidth === 150 ? 200 : this.pdfViewer.handWrittenSignatureSettings.width;\n // eslint-disable-next-line max-len\n currentHeight = currentHeight === 100 ? 65 : this.pdfViewer.handWrittenSignatureSettings.height;\n }\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: keyString,\n // eslint-disable-next-line max-len\n shapeAnnotationType: signatureType, opacity: opacity, fontFamily: signatureFontFamily, strokeColor: strokeColor, thickness: thickness, signatureName: annotationName\n };\n this.pdfViewerBase.currentSignatureAnnot = annot;\n this.pdfViewerBase.isAddedSignClicked = false;\n }\n else {\n this.pdfViewer.formFieldsModule.drawSignature();\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.updateCanvasSize = function () {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.setTabItemWidth(canvas);\n var uploadCanvas = document.getElementById(this.pdfViewer.element.id + '_signatureuploadCanvas_');\n this.setTabItemWidth(uploadCanvas);\n var fontAppearance = document.getElementById(this.pdfViewer.element.id + '_font_appearance');\n this.setTabItemWidth(fontAppearance);\n };\n Signature.prototype.setTabItemWidth = function (canvas) {\n var padding = 2;\n var maximumWidth = 750;\n var canvasWidth = 714;\n var margin = 50;\n var elem = document.querySelector('.e-dlg-content');\n if (elem) {\n var style = getComputedStyle(elem);\n padding = padding + parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n }\n if (canvas && this.signatureDialog && this.signatureDialog.visible) {\n if (canvas.tagName !== 'DIV') {\n var context_2 = canvas.getContext('2d');\n var canvasContent = canvas.toDataURL();\n var image_3 = new Image();\n image_3.src = canvasContent;\n image_3.onload = function () {\n context_2.drawImage(image_3, 0, 0, canvas.width, canvas.height);\n };\n }\n if (this.pdfViewer.element.parentElement.clientWidth > maximumWidth) {\n canvas.width = canvasWidth;\n canvas.style.width = canvasWidth + 'px';\n }\n else {\n canvas.width = this.pdfViewer.element.parentElement.clientWidth - padding;\n canvas.style.width = canvas.width + 'px';\n }\n }\n var fontInnerDiv = document.getElementsByClassName('e-pv-font-sign');\n if (canvas && fontInnerDiv && fontInnerDiv.length > 0) {\n for (var i = 0; i < fontInnerDiv.length; i++) {\n var fontDiv = fontInnerDiv[parseInt(i.toString(), 10)];\n fontDiv.style.width = ((canvas.width / 2) - margin) + 'px';\n }\n }\n };\n Signature.prototype.drawSignOnTabSwitch = function () {\n var proxy = this;\n var image = new Image();\n image.onload = function () {\n var canvas = document.getElementById(proxy.pdfViewer.element.id + '_signatureCanvas_');\n if (canvas) {\n var context = canvas.getContext('2d');\n context.drawImage(image, 0, 0);\n }\n };\n image.src = this.drawSignatureDataUrl;\n };\n Signature.prototype.imageSignOnTabSwitch = function () {\n var proxy = this;\n var image = new Image();\n image.onload = function () {\n var canvas = document.getElementById(proxy.pdfViewer.element.id + '_signatureuploadCanvas_');\n if (canvas) {\n var context = canvas.getContext('2d');\n var signbutton = document.getElementById(proxy.pdfViewer.element.id + '_e-pv-upload-button');\n signbutton.style.visibility = 'hidden';\n context.drawImage(image, 0, 0, canvas.width, canvas.height);\n proxy.enableCreateButton(false);\n proxy.signatureImageHeight = image.naturalHeight;\n proxy.signatureImageWidth = image.naturalWidth;\n }\n };\n image.src = this.imageSignatureDataUrl;\n };\n Signature.prototype.signaturePanelMouseDown = function (e) {\n if (e.type !== 'contextmenu') {\n e.preventDefault();\n this.findMousePosition(e);\n this.mouseDetection = true;\n this.oldX = this.mouseX;\n this.oldY = this.mouseY;\n this.newObject = [];\n this.drawMousePosition(e);\n this.mouseMoving = true;\n }\n };\n Signature.prototype.enableCreateButton = function (isEnable) {\n // eslint-disable-next-line\n var createbtn = document.getElementsByClassName('e-pv-createbtn')[0];\n if (createbtn) {\n createbtn.disabled = isEnable;\n }\n this.enableClearbutton(isEnable);\n };\n Signature.prototype.enableClearbutton = function (isEnable) {\n // eslint-disable-next-line\n var clearbtn = document.getElementsByClassName('e-pv-clearbtn')[0];\n if (clearbtn) {\n clearbtn.disabled = isEnable;\n }\n };\n Signature.prototype.signaturePanelMouseMove = function (e) {\n if (this.mouseDetection && this.signaturetype === 'Draw') {\n this.findMousePosition(e);\n this.enableCreateButton(false);\n this.drawMousePosition(e);\n }\n };\n Signature.prototype.findMousePosition = function (event) {\n var offsetX;\n var offsetY;\n if (event.type.indexOf('touch') !== -1) {\n event = event;\n var element = event.target;\n // eslint-disable-next-line\n var currentRect = element.getBoundingClientRect();\n this.mouseX = event.changedTouches[0].clientX - currentRect.left;\n this.mouseY = event.changedTouches[0].clientY - currentRect.top;\n }\n else {\n event = event;\n this.mouseX = event.offsetX;\n this.mouseY = event.offsetY;\n }\n };\n Signature.prototype.drawMousePosition = function (event) {\n if (this.mouseDetection) {\n this.drawSignatureInCanvas();\n this.oldX = this.mouseX;\n this.oldY = this.mouseY;\n }\n };\n Signature.prototype.drawSignatureInCanvas = function () {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n // eslint-disable-next-line\n var context = canvas.getContext('2d');\n context.beginPath();\n context.moveTo(this.oldX, this.oldY);\n context.lineTo(this.mouseX, this.mouseY);\n context.stroke();\n context.lineWidth = 2;\n context.arc(this.oldX, this.oldY, 2 / 2, 0, Math.PI * 2, true);\n context.closePath();\n this.newObject.push(this.mouseX, this.mouseY);\n };\n Signature.prototype.signaturePanelMouseUp = function () {\n if (this.mouseDetection) {\n this.convertToPath(this.newObject);\n }\n this.mouseDetection = false;\n if (event.type == 'touchend') {\n this.canvasTouched = true;\n }\n };\n Signature.prototype.signaturePanelMouseLeave = function () {\n if (this.mouseDetection) {\n this.convertToPath(this.newObject);\n }\n this.mouseDetection = false;\n this.mouseMoving = false;\n };\n ;\n // eslint-disable-next-line\n Signature.prototype.convertToPath = function (newObject) {\n this.movePath(newObject[0], newObject[1]);\n this.linePath(newObject[0], newObject[1]);\n for (var n = 2; n < newObject.length; n = n + 2) {\n this.linePath(newObject[parseInt(n.toString(), 10)], newObject[n + 1]);\n }\n };\n Signature.prototype.linePath = function (x, y) {\n this.outputString += 'L' + x + ',' + y + ' ';\n };\n Signature.prototype.movePath = function (x, y) {\n this.outputString += 'M' + x + ',' + y + ' ';\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.clearSignatureCanvas = function (type) {\n var isCanvasClear = true;\n var drawObject = [];\n if (type && !isNullOrUndefined(type.previousIndex) && !isNullOrUndefined(type.selectedIndex)) {\n isCanvasClear = false;\n if (type.previousIndex === 0) {\n this.drawOutputString = this.outputString;\n drawObject = this.newObject;\n }\n else if (type.previousIndex === 2) {\n this.imageOutputString = this.outputString;\n }\n this.outputString = '';\n this.newObject = [];\n if (type.selectedIndex === 0) {\n this.outputString = this.drawOutputString;\n this.newObject = drawObject;\n }\n else if (type.selectedIndex === 2) {\n this.outputString = this.imageOutputString;\n }\n }\n else {\n this.outputString = '';\n this.newObject = [];\n }\n var isClearDrawTab = false;\n var isClearTypeTab = false;\n var isClearImageTab = false;\n if (type && type.currentTarget && type.currentTarget.classList.contains(\"e-pv-clearbtn\")) {\n isCanvasClear = false;\n if (this.signaturetype === 'Draw') {\n isClearDrawTab = true;\n var checkbox = document.getElementById('checkbox');\n var checkBoxElement = document.getElementById('checkbox');\n if (checkbox && checkBoxElement.nextElementSibling) {\n checkBoxElement.nextElementSibling.classList.remove('e-check');\n checkbox.checked = false;\n }\n }\n else if (this.signaturetype === 'Type') {\n isClearTypeTab = true;\n var checkbox = document.getElementById('checkbox1');\n var checkBoxElement = document.getElementById('checkbox1');\n if (checkbox && checkBoxElement.nextElementSibling) {\n checkBoxElement.nextElementSibling.classList.remove('e-check');\n checkbox.checked = false;\n this.textValue = '';\n }\n }\n else {\n isClearImageTab = true;\n this.clearUploadString = true;\n var checkbox = document.getElementById('checkbox2');\n var checkBoxElement = document.getElementById('checkbox2');\n if (checkbox && checkBoxElement.nextElementSibling) {\n checkBoxElement.nextElementSibling.classList.remove('e-check');\n checkbox.checked = false;\n }\n }\n }\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n // eslint-disable-next-line\n if ((canvas && isCanvasClear) || (isClearDrawTab)) {\n // eslint-disable-next-line\n var context = canvas.getContext('2d');\n context.clearRect(0, 0, canvas.width, canvas.height);\n }\n // eslint-disable-next-line\n var imageCanvas = document.getElementById(this.pdfViewer.element.id + '_signatureuploadCanvas_');\n if (imageCanvas && isCanvasClear || (isClearImageTab)) {\n // eslint-disable-next-line\n var context = imageCanvas.getContext('2d');\n context.clearRect(0, 0, imageCanvas.width, imageCanvas.height);\n // eslint-disable-next-line\n var signbutton = document.getElementById(this.pdfViewer.element.id + '_e-pv-upload-button');\n if (signbutton) {\n signbutton.style.visibility = '';\n }\n }\n // eslint-disable-next-line\n var fontdiv = document.getElementById(this.pdfViewer.element.id + '_font_appearance');\n // eslint-disable-next-line\n var textbox = document.getElementById(this.pdfViewer.element.id + '_e-pv-Signtext-box');\n if ((fontdiv && textbox && isCanvasClear) || (isClearTypeTab)) {\n textbox.value = '';\n if (!isBlazor()) {\n fontdiv.innerHTML = '';\n }\n }\n this.enableCreateButton(true);\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.closeSignaturePanel = function () {\n if (this.pdfViewerBase.currentTarget) {\n this.pdfViewerBase.drawSignatureWithTool = true;\n }\n this.clearSignatureCanvas();\n if (!isBlazor()) {\n this.signatureDialog.hide();\n }\n this.pdfViewerBase.isToolbarSignClicked = false;\n this.pdfViewerBase.drawSignatureWithTool = false;\n this.drawOutputString = '';\n this.imageOutputString = '';\n };\n /**\n * @private\n * @returns {string} - Returns the string.\n */\n Signature.prototype.saveSignature = function () {\n // eslint-disable-next-line\n var storeObject = null;\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'];\n }\n else {\n storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sign');\n }\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[parseInt(j.toString(), 10)] = [];\n }\n if (storeObject) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = annotationCollection[parseInt(i.toString(), 10)];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n if (this.pdfViewer.isSignatureEditable) {\n var signatureSettings = this.pdfViewer.handWrittenSignatureSettings;\n var annotationSettings = this.pdfViewer.annotationSettings;\n var annotationAuthor = (signatureSettings.author !== 'Guest') ? signatureSettings.author : annotationSettings.author ? annotationSettings.author : 'Guest';\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[parseInt(z.toString(), 10)].author = annotationAuthor;\n }\n // eslint-disable-next-line max-len\n var strokeColorString = pageAnnotationObject.annotations[parseInt(z.toString(), 10)].strokeColor ? pageAnnotationObject.annotations[parseInt(z.toString(), 10)].strokeColor : \"black\";\n pageAnnotationObject.annotations[parseInt(z.toString(), 10)].strokeColor = JSON.stringify(this.getRgbCode(strokeColorString));\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[parseInt(z.toString(), 10)].bounds = JSON.stringify(this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[parseInt(z.toString(), 10)].bounds, pageAnnotationObject.pageIndex));\n if (pageAnnotationObject.annotations[parseInt(z.toString(), 10)].shapeAnnotationType === 'HandWrittenSignature' || pageAnnotationObject.annotations[parseInt(z.toString(), 10)].signatureName === 'ink') {\n // eslint-disable-next-line\n var collectionData = processPathData(pageAnnotationObject.annotations[parseInt(z.toString(), 10)].data);\n // eslint-disable-next-line\n var csData = splitArrayCollection(collectionData);\n pageAnnotationObject.annotations[parseInt(z.toString(), 10)].data = JSON.stringify(csData);\n }\n else {\n if (pageAnnotationObject.annotations[parseInt(z.toString(), 10)].shapeAnnotationType === 'SignatureText' && !this.checkDefaultFont(pageAnnotationObject.annotations[parseInt(z.toString(), 10)].fontFamily)) {\n var signTypeCanvas = createElement('canvas');\n var bounds = JSON.parse(pageAnnotationObject.annotations[parseInt(z.toString(), 10)].bounds);\n signTypeCanvas.width = (bounds && bounds.width) || 150;\n signTypeCanvas.height = (bounds && bounds.height) || pageAnnotationObject.annotations[parseInt(z.toString(), 10)].fontSize * 2;\n // eslint-disable-next-line\n var canvasContext = signTypeCanvas.getContext('2d');\n var x = signTypeCanvas.width / 2;\n var y = (signTypeCanvas.height / 2) + pageAnnotationObject.annotations[parseInt(z.toString(), 10)].fontSize / 2 - 10;\n canvasContext.textAlign = 'center';\n canvasContext.font = pageAnnotationObject.annotations[parseInt(z.toString(), 10)].fontSize + 'px ' + pageAnnotationObject.annotations[parseInt(z.toString(), 10)].fontFamily;\n canvasContext.fillText(pageAnnotationObject.annotations[parseInt(z.toString(), 10)].data, x, y);\n pageAnnotationObject.annotations[parseInt(z.toString(), 10)].data = JSON.stringify(signTypeCanvas.toDataURL('image/png'));\n pageAnnotationObject.annotations[parseInt(z.toString(), 10)].shapeAnnotationType = 'SignatureImage';\n }\n else {\n pageAnnotationObject.annotations[parseInt(z.toString(), 10)].data = JSON.stringify(pageAnnotationObject.annotations[parseInt(z.toString(), 10)].data);\n }\n }\n }\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n Signature.prototype.checkDefaultFont = function (fontName) {\n // eslint-disable-next-line\n [{ FontName: 'Helvetica' }, { FontName: 'Times New Roman' }, { FontName: 'Courier' }, { FontName: 'Symbol' }];\n if (fontName === 'Helvetica' || fontName === 'Times New Roman' || fontName === 'Courier' || fontName === 'Symbol') {\n return true;\n }\n return false;\n };\n /**\n * @param colorString\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.getRgbCode = function (colorString) {\n /* eslint-disable-next-line security/detect-unsafe-regex */\n if (!colorString.match(/#([a-z0-9]+)/gi) && !colorString.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)) {\n colorString = this.pdfViewer.annotationModule.nameToHash(colorString);\n }\n var stringArray = colorString.split(',');\n if (isNullOrUndefined(stringArray[1])) {\n colorString = this.pdfViewer.annotationModule.getValue(colorString, 'rgba');\n stringArray = colorString.split(',');\n }\n // eslint-disable-next-line radix\n var r = parseInt(stringArray[0].split('(')[1]);\n // eslint-disable-next-line radix\n var g = parseInt(stringArray[1]);\n // eslint-disable-next-line radix\n var b = parseInt(stringArray[2]);\n // eslint-disable-next-line radix\n var a = parseInt(stringArray[3]);\n return { r: r, g: g, b: b, a: a };\n };\n /**\n * @private\n * @param {number} left - The left.\n * @param {number} top - The top.\n * @returns {void}\n */\n Signature.prototype.renderSignature = function (left, top) {\n var annot;\n // eslint-disable-next-line\n var signatureData = '';\n var currentAnnotation = this.pdfViewerBase.currentSignatureAnnot;\n var annotationName = this.pdfViewer.annotation.createGUID();\n if (currentAnnotation) {\n if (this.pdfViewerBase.currentSignatureAnnot.shapeAnnotationType === 'HandWrittenSignature') {\n annot = {\n // eslint-disable-next-line max-len\n id: currentAnnotation.id, bounds: { x: left, y: top, width: currentAnnotation.bounds.width, height: currentAnnotation.bounds.height }, pageIndex: currentAnnotation.pageIndex, data: currentAnnotation.data,\n shapeAnnotationType: 'HandWrittenSignature', opacity: currentAnnotation.opacity, fontFamily: currentAnnotation.fontFamily, fontSize: currentAnnotation.fontSize, strokeColor: currentAnnotation.strokeColor, thickness: currentAnnotation.thickness, signatureName: annotationName\n };\n }\n if (this.pdfViewerBase.currentSignatureAnnot.shapeAnnotationType === 'SignatureText') {\n annot = {\n // eslint-disable-next-line max-len\n id: currentAnnotation.id, bounds: { x: left, y: top, width: currentAnnotation.bounds.width, height: currentAnnotation.bounds.height }, pageIndex: currentAnnotation.pageIndex, data: currentAnnotation.data,\n shapeAnnotationType: 'SignatureText', opacity: currentAnnotation.opacity, fontFamily: currentAnnotation.fontFamily, fontSize: currentAnnotation.fontSize, strokeColor: currentAnnotation.strokeColor, thickness: currentAnnotation.thickness, signatureName: annotationName\n };\n }\n else if (this.pdfViewerBase.currentSignatureAnnot.shapeAnnotationType === 'SignatureImage') {\n annot = {\n // eslint-disable-next-line max-len\n id: currentAnnotation.id, bounds: { x: left, y: top, width: currentAnnotation.bounds.width, height: currentAnnotation.bounds.height }, pageIndex: currentAnnotation.pageIndex, data: currentAnnotation.data,\n shapeAnnotationType: 'SignatureImage', opacity: currentAnnotation.opacity, fontFamily: currentAnnotation.fontFamily, fontSize: currentAnnotation.fontSize, strokeColor: currentAnnotation.strokeColor, thickness: currentAnnotation.thickness, signatureName: annotationName\n };\n }\n this.pdfViewer.add(annot);\n // eslint-disable-next-line\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + currentAnnotation.pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, currentAnnotation.pageIndex);\n this.pdfViewerBase.signatureAdded = true;\n // eslint-disable-next-line max-len\n this.storeSignatureData(currentAnnotation.pageIndex, annot);\n if (this.signaturetype === 'Draw') {\n signatureData = this.saveImageString;\n }\n else {\n signatureData = currentAnnotation.data;\n }\n // eslint-disable-next-line max-len \n this.pdfViewer.fireSignatureAdd(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, currentAnnotation.bounds, currentAnnotation.opacity, currentAnnotation.strokeColor, currentAnnotation.thickness, signatureData);\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.signatureCount++;\n }\n };\n /**\n * @param annotationCollection\n * @param pageIndex\n * @param isImport\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.renderExistingSignature = function (annotationCollection, pageIndex, isImport) {\n var annot;\n var isAnnotationAdded = false;\n if (!isImport) {\n for (var p = 0; p < this.signAnnotationIndex.length; p++) {\n if (this.signAnnotationIndex[parseInt(p.toString(), 10)] === pageIndex) {\n isAnnotationAdded = true;\n break;\n }\n }\n }\n if (annotationCollection && !isAnnotationAdded) {\n if (annotationCollection.length > 0 && this.signAnnotationIndex.indexOf(pageIndex) === -1) {\n this.signAnnotationIndex.push(pageIndex);\n }\n for (var n = 0; n < annotationCollection.length; n++) {\n // eslint-disable-next-line\n var currentAnnotation = annotationCollection[n];\n if (currentAnnotation) {\n // eslint-disable-next-line\n var data = currentAnnotation.PathData;\n if (isImport) {\n if (currentAnnotation.IsSignature) {\n data = currentAnnotation.PathData;\n }\n else if (currentAnnotation.AnnotationType === 'SignatureImage' || currentAnnotation.AnnotationType === 'SignatureText') {\n data = JSON.parse(JSON.stringify(currentAnnotation.PathData));\n }\n else {\n if (data.includes('command')) {\n data = getPathString(JSON.parse(currentAnnotation.PathData));\n }\n else {\n data = currentAnnotation.PathData;\n }\n }\n }\n this.outputString = data;\n this.outputString = '';\n var rectDiff = 0;\n var rectDifference = 1;\n var bounds = currentAnnotation.Bounds;\n var currentLeft = !isNullOrUndefined(bounds.X) ? bounds.X + (rectDiff / 2) : bounds.x + (rectDiff / 2);\n var currentTop = !isNullOrUndefined(bounds.Y) ? bounds.Y + (rectDiff / 2) : bounds.y + (rectDiff / 2);\n var currentWidth = bounds.Width ? bounds.Width - (rectDifference - 1) : bounds.width - (rectDifference - 1);\n var currentHeight = bounds.Height ? bounds.Height - (rectDifference - 1) : bounds.height - (rectDifference - 1);\n if (currentAnnotation.AnnotationType === 'SignatureText') {\n annot = {\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data, fontFamily: currentAnnotation.FontFamily, fontSize: currentAnnotation.FontSize,\n shapeAnnotationType: 'SignatureText', opacity: currentAnnotation.Opacity, strokeColor: currentAnnotation.StrokeColor, thickness: currentAnnotation.Thickness, signatureName: currentAnnotation.SignatureName\n };\n }\n else if (currentAnnotation.AnnotationType === 'SignatureImage') {\n annot = {\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data, shapeAnnotationType: 'SignatureImage', opacity: currentAnnotation.Opacity, strokeColor: currentAnnotation.StrokeColor, thickness: currentAnnotation.Thickness, signatureName: currentAnnotation.SignatureName\n };\n }\n else {\n annot = {\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data, shapeAnnotationType: 'HandWrittenSignature', opacity: currentAnnotation.Opacity, strokeColor: currentAnnotation.StrokeColor, thickness: currentAnnotation.Thickness, signatureName: currentAnnotation.SignatureName ? currentAnnotation.SignatureName : \"ink\"\n };\n }\n }\n this.pdfViewer.add(annot);\n // eslint-disable-next-line\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + currentAnnotation.pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, annot.pageIndex);\n this.storeSignatureData(annot.pageIndex, annot);\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.signatureCount++;\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.navigationPane && this.pdfViewerBase.navigationPane.annotationMenuObj && this.pdfViewer.isSignatureEditable) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], true);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export XFDF')], true);\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param annotations\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.storeSignatureData = function (pageNumber, annotations) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(annotations.pageIndex ? annotations.pageIndex : annotations.PageIndex, null, annotations, 'Addition', '', annotations, annotations);\n var annotation = null;\n var left;\n var top;\n var width;\n var height;\n var pageIndex;\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n if (annotations.bounds) {\n left = annotations.bounds.left ? annotations.bounds.left : annotations.bounds.x;\n top = annotations.bounds.top ? annotations.bounds.top : annotations.bounds.y;\n width = annotations.bounds.width;\n height = annotations.bounds.height;\n pageIndex = annotations.pageIndex;\n }\n else {\n left = annotations.Bounds.left ? annotations.Bounds.left : annotations.Bounds.x;\n top = annotations.Bounds.top ? annotations.Bounds.top : annotations.Bounds.y;\n width = annotations.LineBounds.Width;\n height = annotations.LineBounds.Height;\n pageIndex = annotations.PageIndex;\n }\n if (annotations.wrapper && annotations.wrapper.bounds) {\n left = annotations.wrapper.bounds.left;\n top = annotations.wrapper.bounds.top;\n }\n if (annotations.shapeAnnotationType === 'SignatureText' && annotations.wrapper && annotations.wrapper.children[1]) {\n left = left + annotations.wrapper.pivot.x + (this.signatureTextContentLeft - (this.signatureTextContentTop * (zoomvalue - (zoomvalue / this.signatureTextContentLeft))));\n top = top + ((annotations.wrapper.children[1].bounds.y - top) - (annotations.wrapper.children[1].bounds.y - top) / 3) + annotations.wrapper.pivot.y + (this.signatureTextContentTop * zoomvalue);\n }\n annotation = {\n id: annotations.id ? annotations.id : null, bounds: { left: left, top: top, width: width, height: height }, shapeAnnotationType: annotations.shapeAnnotationType ? annotations.shapeAnnotationType : \"ink\", opacity: annotations.opacity ? annotations.opacity : 1, thickness: annotations.thickness ? annotations.thickness : 1, strokeColor: annotations.strokeColor ? annotations.strokeColor : null, pageIndex: pageIndex, data: annotations.data ? annotations.data : annotations.Value, fontSize: annotations.fontSize ? annotations.fontSize : null, fontFamily: annotations.fontFamily ? annotations.fontFamily : null, signatureName: annotations.signatureName ? annotations.signatureName : annotations.Name\n };\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n // eslint-disable-next-line\n var currentAnnotation = Math.round(JSON.stringify(annotation).length / 1024);\n if ((sessionSize + currentAnnotation) > 4500) {\n this.pdfViewerBase.isStorageExceed = true;\n this.pdfViewer.annotationModule.clearAnnotationStorage();\n if (!(this.pdfViewerBase.isFormStorageExceed)) {\n this.pdfViewer.formFieldsModule.clearFormFieldStorage();\n }\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sign');\n var index = 0;\n if (!storeObject) {\n this.storeSignatureCollections(annotation, pageNumber);\n var shapeAnnotation = { pageIndex: pageNumber, annotations: [] };\n shapeAnnotation.annotations.push(annotation);\n index = shapeAnnotation.annotations.indexOf(annotation);\n var annotationCollection = [];\n annotationCollection.push(shapeAnnotation);\n var annotationStringified = JSON.stringify(annotationCollection);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_sign', annotationStringified);\n }\n }\n else {\n this.storeSignatureCollections(annotation, pageNumber);\n var annotObject = JSON.parse(storeObject);\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_sign');\n var pageIndex_1 = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (!isNullOrUndefined(pageIndex_1) && annotObject[parseInt(pageIndex_1.toString(), 10)]) {\n annotObject[parseInt(pageIndex_1.toString(), 10)].annotations.push(annotation);\n index = annotObject[parseInt(pageIndex_1.toString(), 10)].annotations.indexOf(annotation);\n }\n else {\n var markupAnnotation = { pageIndex: pageNumber, annotations: [] };\n markupAnnotation.annotations.push(annotation);\n index = markupAnnotation.annotations.indexOf(annotation);\n annotObject.push(markupAnnotation);\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_sign', annotationStringified);\n }\n }\n };\n /**\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isSignatureEdited\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.modifySignatureCollection = function (property, pageNumber, annotationBase, isSignatureEdited) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n var currentAnnotObject = null;\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n if (pageAnnotations != null && annotationBase) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.id === pageAnnotations[parseInt(i.toString(), 10)].id) {\n if (property === 'bounds') {\n var top_2 = void 0;\n var left = void 0;\n if (annotationBase.shapeAnnotationType === 'SignatureText' && annotationBase.wrapper && annotationBase.wrapper.children[1]) {\n top_2 = annotationBase.wrapper.children[0].bounds.y;\n left = annotationBase.wrapper.children[0].bounds.x + annotationBase.wrapper.pivot.x + (this.signatureTextContentLeft - (this.signatureTextContentTop * (zoomvalue - (zoomvalue / this.signatureTextContentLeft))));\n top_2 = top_2 + ((annotationBase.wrapper.children[1].bounds.y - top_2) - (annotationBase.wrapper.children[1].bounds.y - top_2) / 3) + annotationBase.wrapper.pivot.y + (this.signatureTextContentTop * zoomvalue);\n pageAnnotations[parseInt(i.toString(), 10)].bounds = { left: left, top: top_2, width: annotationBase.bounds.width, height: annotationBase.bounds.height };\n }\n else {\n pageAnnotations[parseInt(i.toString(), 10)].bounds = { left: annotationBase.wrapper.bounds.left, top: annotationBase.wrapper.bounds.top, width: annotationBase.bounds.width, height: annotationBase.bounds.height };\n }\n // eslint-disable-next-line max-len\n pageAnnotations[parseInt(i.toString(), 10)].fontSize = annotationBase.fontSize;\n }\n else if (property === 'stroke') {\n pageAnnotations[parseInt(i.toString(), 10)].strokeColor = annotationBase.wrapper.children[0].style.strokeColor;\n }\n else if (property === 'opacity') {\n pageAnnotations[parseInt(i.toString(), 10)].opacity = annotationBase.wrapper.children[0].style.opacity;\n }\n else if (property === 'thickness') {\n pageAnnotations[parseInt(i.toString(), 10)].thickness = annotationBase.wrapper.children[0].style.strokeWidth;\n }\n else if (property === 'delete') {\n this.updateSignatureCollection(pageAnnotations[parseInt(i.toString(), 10)]);\n currentAnnotObject = pageAnnotations.splice(i, 1)[0];\n break;\n }\n if (property && property !== 'delete') {\n this.storeSignatureCollections(pageAnnotations[parseInt(i.toString(), 10)], pageNumber);\n }\n if (isSignatureEdited) {\n pageAnnotations[parseInt(i.toString(), 10)].opacity = annotationBase.wrapper.children[0].style.opacity;\n pageAnnotations[parseInt(i.toString(), 10)].strokeColor = annotationBase.wrapper.children[0].style.strokeColor;\n pageAnnotations[parseInt(i.toString(), 10)].thickness = annotationBase.wrapper.children[0].style.strokeWidth;\n this.storeSignatureCollections(pageAnnotations[parseInt(i.toString(), 10)], pageNumber);\n break;\n }\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n return currentAnnotObject;\n };\n /**\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.storeSignatureCollections = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var collectionDetails = this.checkSignatureCollection(annotation);\n // eslint-disable-next-line\n var selectAnnotation = cloneObject(annotation);\n selectAnnotation.annotationId = annotation.signatureName;\n selectAnnotation.pageNumber = pageNumber;\n delete selectAnnotation.annotName;\n if (annotation.id) {\n selectAnnotation.uniqueKey = annotation.id;\n delete selectAnnotation.id;\n }\n if (collectionDetails.isExisting) {\n this.pdfViewer.signatureCollection.splice(collectionDetails.position, 0, selectAnnotation);\n }\n else {\n this.pdfViewer.signatureCollection.push(selectAnnotation);\n }\n };\n // eslint-disable-next-line\n Signature.prototype.checkSignatureCollection = function (signature) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.signatureCollection;\n if (collections && signature) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[parseInt(i.toString(), 10)].annotationId === signature.signatureName) {\n this.pdfViewer.signatureCollection.splice(i, 1);\n return { isExisting: true, position: i };\n }\n }\n }\n return { isExisting: false, position: null };\n };\n /**\n * @param signature\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.updateSignatureCollection = function (signature) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.signatureCollection;\n if (collections && signature) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[parseInt(i.toString(), 10)].annotationId === signature.signatureName) {\n this.pdfViewer.signatureCollection.splice(i, 1);\n break;\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param signature\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.addInCollection = function (pageNumber, signature) {\n if (signature) {\n this.storeSignatureCollections(signature, pageNumber);\n // eslint-disable-next-line\n var pageSignatures = this.getAnnotations(pageNumber, null);\n if (pageSignatures) {\n pageSignatures.push(signature);\n }\n this.manageAnnotations(pageSignatures, pageNumber);\n }\n };\n // eslint-disable-next-line\n Signature.prototype.getAnnotations = function (pageIndex, shapeAnnotations) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = null;\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'];\n }\n else {\n storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sign');\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (!isNullOrUndefined(index) && annotObject[parseInt(index.toString(), 10)]) {\n annotationCollection = annotObject[parseInt(index.toString(), 10)].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n Signature.prototype.manageAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = null;\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'];\n }\n else {\n storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sign');\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_sign');\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[parseInt(index.toString(), 10)]) {\n annotObject[parseInt(index.toString(), 10)].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_sign', annotationStringified);\n }\n }\n };\n /**\n * @private\n * @param {boolean} isShow - Returns the true or false.\n * @returns {void}\n */\n Signature.prototype.showSignatureDialog = function (isShow) {\n if (isShow) {\n this.createSignaturePanel();\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.setAnnotationMode = function () {\n this.pdfViewerBase.isToolbarSignClicked = true;\n this.pdfViewerBase.isInitialField = false;\n this.showSignatureDialog(true);\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.setInitialMode = function () {\n this.pdfViewerBase.isToolbarSignClicked = true;\n this.pdfViewerBase.isInitialField = true;\n this.showSignatureDialog(true);\n };\n /**\n * @param number\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.ConvertPointToPixel = function (number) {\n return (number * (96 / 72));\n };\n /**\n * @param signature\n * @param pageIndex\n * @param isImport\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.updateSignatureCollections = function (signature, pageIndex, isImport) {\n var annot;\n // eslint-disable-next-line\n if (signature) {\n // eslint-disable-next-line\n var bounds = signature.Bounds;\n var currentLeft = bounds.X;\n var currentTop = bounds.Y;\n var currentWidth = bounds.Width;\n var currentHeight = bounds.Height;\n // eslint-disable-next-line\n var data = signature.PathData;\n if (isImport) {\n data = getPathString(JSON.parse(signature.PathData));\n }\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + signature.SignatureName, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data,\n shapeAnnotationType: 'HandWrittenSignature', opacity: signature.Opacity, strokeColor: signature.StrokeColor, thickness: signature.Thickness, signatureName: signature.SignatureName\n };\n return annot;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.destroy = function () {\n window.sessionStorage.removeItem('_annotations_sign');\n // eslint-disable-next-line\n var signImage = document.getElementById(this.pdfViewer.element.id + '_signElement');\n if (signImage) {\n signImage.removeEventListener('change', this.addStampImage);\n if (signImage.parentElement)\n signImage.parentElement.removeChild(signImage);\n }\n if (this.signatureDialog)\n this.signatureDialog.destroy();\n };\n return Signature;\n}());\nexport { Signature };\n","/**\n * enum module defines the public enumerations\n */\n/**\n * Defines the container/canvas transform\n * Self - Sets the transform type as Self\n * Parent - Sets the transform type as Parent\n */\nexport var RotateTransform;\n(function (RotateTransform) {\n /** Self - Sets the transform type as Self */\n RotateTransform[RotateTransform[\"Self\"] = 1] = \"Self\";\n /** Parent - Sets the transform type as Parent */\n RotateTransform[RotateTransform[\"Parent\"] = 2] = \"Parent\";\n})(RotateTransform || (RotateTransform = {}));\n/** Enables/Disables The element actions\n * None - Diables all element actions are none\n * ElementIsPort - Enable element action is port\n * ElementIsGroup - Enable element action as Group\n * @private\n */\nexport var ElementAction;\n(function (ElementAction) {\n /** Disables all element actions are none */\n ElementAction[ElementAction[\"None\"] = 0] = \"None\";\n /** Enable the element action is Port */\n ElementAction[ElementAction[\"ElementIsPort\"] = 2] = \"ElementIsPort\";\n /** Enable the element action as Group */\n ElementAction[ElementAction[\"ElementIsGroup\"] = 4] = \"ElementIsGroup\";\n})(ElementAction || (ElementAction = {}));\n/**\n * Defines the constraints to enable/disable certain features of connector.\n * * None - Interaction of the connectors cannot be done.\n * * Select - Selects the connector.\n * * Delete - Delete the connector.\n * * Drag - Drag the connector.\n * * DragSourceEnd - Drag the source end of the connector.\n * * DragTargetEnd - Drag the target end of the connector.\n * * DragSegmentThump - Drag the segment thumb of the connector.\n * * AllowDrop - Allow to drop a node.\n * * Bridging - Creates bridge on intersection of two connectors.\n * * BridgeObstacle -\n * * InheritBridging - Creates bridge on intersection of two connectors.\n * * PointerEvents - Sets the pointer events.\n * * Tooltip - Displays a tooltip for the connectors.\n * * InheritToolTip - Displays a tooltip for the connectors.\n * * Interaction - Features of the connector used for interaction.\n * * ReadOnly - Enables ReadOnly\n * * Default - Default features of the connector.\n * @aspNumberEnum\n * @IgnoreSingular\n */\nexport var ConnectorConstraints;\n(function (ConnectorConstraints) {\n /** Disable all connector Constraints. */\n ConnectorConstraints[ConnectorConstraints[\"None\"] = 1] = \"None\";\n /** Enables connector to be selected. */\n ConnectorConstraints[ConnectorConstraints[\"Select\"] = 2] = \"Select\";\n /** Enables connector to be Deleted. */\n ConnectorConstraints[ConnectorConstraints[\"Delete\"] = 4] = \"Delete\";\n /** Enables connector to be Dragged. */\n ConnectorConstraints[ConnectorConstraints[\"Drag\"] = 8] = \"Drag\";\n /** Enables connectors source end to be selected. */\n ConnectorConstraints[ConnectorConstraints[\"DragSourceEnd\"] = 16] = \"DragSourceEnd\";\n /** Enables connectors target end to be selected. */\n ConnectorConstraints[ConnectorConstraints[\"DragTargetEnd\"] = 32] = \"DragTargetEnd\";\n /** Enables control point and end point of every segment in a connector for editing. */\n ConnectorConstraints[ConnectorConstraints[\"DragSegmentThumb\"] = 64] = \"DragSegmentThumb\";\n /** Enables AllowDrop constraints to the connector. */\n ConnectorConstraints[ConnectorConstraints[\"AllowDrop\"] = 128] = \"AllowDrop\";\n /** Enables bridging to the connector. */\n ConnectorConstraints[ConnectorConstraints[\"Bridging\"] = 256] = \"Bridging\";\n /** Enables or Disables Bridge Obstacles with overlapping of connectors. */\n ConnectorConstraints[ConnectorConstraints[\"BridgeObstacle\"] = 512] = \"BridgeObstacle\";\n /** Enables bridging to the connector. */\n ConnectorConstraints[ConnectorConstraints[\"InheritBridging\"] = 1024] = \"InheritBridging\";\n /** Used to set the pointer events. */\n ConnectorConstraints[ConnectorConstraints[\"PointerEvents\"] = 2048] = \"PointerEvents\";\n /** Enables or disables tool tip for the connectors */\n ConnectorConstraints[ConnectorConstraints[\"Tooltip\"] = 4096] = \"Tooltip\";\n /** Enables or disables tool tip for the connectors */\n ConnectorConstraints[ConnectorConstraints[\"InheritTooltip\"] = 8192] = \"InheritTooltip\";\n /** Enables Interaction. */\n ConnectorConstraints[ConnectorConstraints[\"Interaction\"] = 4218] = \"Interaction\";\n /** Enables ReadOnly */\n ConnectorConstraints[ConnectorConstraints[\"ReadOnly\"] = 16384] = \"ReadOnly\";\n /** Enables all constraints. */\n ConnectorConstraints[ConnectorConstraints[\"Default\"] = 11838] = \"Default\";\n})(ConnectorConstraints || (ConnectorConstraints = {}));\n/** Enables/Disables the handles of the selector\n * Rotate - Enable Rotate Thumb\n * ConnectorSource - Enable Connector source point\n * ConnectorTarget - Enable Connector target point\n * ResizeNorthEast - Enable ResizeNorthEast Resize\n * ResizeEast - Enable ResizeEast Resize\n * ResizeSouthEast - Enable ResizeSouthEast Resize\n * ResizeSouth - Enable ResizeSouth Resize\n * ResizeSouthWest - Enable ResizeSouthWest Resize\n * ResizeWest - Enable ResizeWest Resize\n * ResizeNorthWest - Enable ResizeNorthWest Resize\n * ResizeNorth - Enable ResizeNorth Resize\n * Default - Enables all constraints\n * @private\n */\nexport var ThumbsConstraints;\n(function (ThumbsConstraints) {\n /** Enable Rotate Thumb */\n ThumbsConstraints[ThumbsConstraints[\"Rotate\"] = 2] = \"Rotate\";\n /** Enable Connector source point */\n ThumbsConstraints[ThumbsConstraints[\"ConnectorSource\"] = 4] = \"ConnectorSource\";\n /** Enable Connector target point */\n ThumbsConstraints[ThumbsConstraints[\"ConnectorTarget\"] = 8] = \"ConnectorTarget\";\n /** Enable ResizeNorthEast Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeNorthEast\"] = 16] = \"ResizeNorthEast\";\n /** Enable ResizeEast Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeEast\"] = 32] = \"ResizeEast\";\n /** Enable ResizeSouthEast Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeSouthEast\"] = 64] = \"ResizeSouthEast\";\n /** Enable ResizeSouth Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeSouth\"] = 128] = \"ResizeSouth\";\n /** Enable ResizeSouthWest Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeSouthWest\"] = 256] = \"ResizeSouthWest\";\n /** Enable ResizeWest Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeWest\"] = 512] = \"ResizeWest\";\n /** Enable ResizeNorthWest Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeNorthWest\"] = 1024] = \"ResizeNorthWest\";\n /** Enable ResizeNorth Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeNorth\"] = 2048] = \"ResizeNorth\";\n /** Enables all constraints */\n ThumbsConstraints[ThumbsConstraints[\"Default\"] = 4094] = \"Default\";\n})(ThumbsConstraints || (ThumbsConstraints = {}));\n/**\n * Defines the visibility of the selector handles\n * None - Hides all the selector elements\n * ConnectorSourceThumb - Shows/hides the source thumb of the connector\n * ConnectorTargetThumb - Shows/hides the target thumb of the connector\n * ResizeSouthEast - Shows/hides the bottom right resize handle of the selector\n * ResizeSouthWest - Shows/hides the bottom left resize handle of the selector\n * ResizeNorthEast - Shows/hides the top right resize handle of the selector\n * ResizeNorthWest - Shows/hides the top left resize handle of the selector\n * ResizeEast - Shows/hides the middle right resize handle of the selector\n * ResizeWest - Shows/hides the middle left resize handle of the selector\n * ResizeSouth - Shows/hides the bottom center resize handle of the selector\n * ResizeNorth - Shows/hides the top center resize handle of the selector\n * Rotate - Shows/hides the rotate handle of the selector\n * UserHandles - Shows/hides the user handles of the selector\n * Resize - Shows/hides all resize handles of the selector\n * @aspNumberEnum\n * @IgnoreSingular\n */\nexport var SelectorConstraints;\n(function (SelectorConstraints) {\n /** Hides all the selector elements */\n SelectorConstraints[SelectorConstraints[\"None\"] = 1] = \"None\";\n /** Shows/hides the source thumb of the connector */\n SelectorConstraints[SelectorConstraints[\"ConnectorSourceThumb\"] = 2] = \"ConnectorSourceThumb\";\n /** Shows/hides the target thumb of the connector */\n SelectorConstraints[SelectorConstraints[\"ConnectorTargetThumb\"] = 4] = \"ConnectorTargetThumb\";\n /** Shows/hides the bottom right resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeSouthEast\"] = 8] = \"ResizeSouthEast\";\n /** Shows/hides the bottom left resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeSouthWest\"] = 16] = \"ResizeSouthWest\";\n /** Shows/hides the top right resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeNorthEast\"] = 32] = \"ResizeNorthEast\";\n /** Shows/hides the top left resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeNorthWest\"] = 64] = \"ResizeNorthWest\";\n /** Shows/hides the middle right resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeEast\"] = 128] = \"ResizeEast\";\n /** Shows/hides the middle left resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeWest\"] = 256] = \"ResizeWest\";\n /** Shows/hides the bottom center resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeSouth\"] = 512] = \"ResizeSouth\";\n /** Shows/hides the top center resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeNorth\"] = 1024] = \"ResizeNorth\";\n /** Shows/hides the rotate handle of the selector */\n SelectorConstraints[SelectorConstraints[\"Rotate\"] = 2048] = \"Rotate\";\n /** Shows/hides the user handles of the selector */\n SelectorConstraints[SelectorConstraints[\"UserHandle\"] = 4096] = \"UserHandle\";\n /** Shows/hides the default tooltip of nodes and connectors */\n SelectorConstraints[SelectorConstraints[\"ToolTip\"] = 8192] = \"ToolTip\";\n /** Shows/hides all resize handles of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeAll\"] = 2046] = \"ResizeAll\";\n /** Shows all handles of the selector */\n SelectorConstraints[SelectorConstraints[\"All\"] = 16382] = \"All\";\n})(SelectorConstraints || (SelectorConstraints = {}));\n/** @private */\nexport var NoOfSegments;\n(function (NoOfSegments) {\n NoOfSegments[NoOfSegments[\"Zero\"] = 0] = \"Zero\";\n NoOfSegments[NoOfSegments[\"One\"] = 1] = \"One\";\n NoOfSegments[NoOfSegments[\"Two\"] = 2] = \"Two\";\n NoOfSegments[NoOfSegments[\"Three\"] = 3] = \"Three\";\n NoOfSegments[NoOfSegments[\"Four\"] = 4] = \"Four\";\n NoOfSegments[NoOfSegments[\"Five\"] = 5] = \"Five\";\n})(NoOfSegments || (NoOfSegments = {}));\n","import { createElement, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ContextMenu as Context } from '@syncfusion/ej2-navigations';\nimport { ContextMenuItem } from './types';\n/**\n * ContextMenu module is used to handle the context menus used in the control.\n *\n * @hidden\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Initialize the constructor of ontextmenu\n *\n * @param { PdfViewer } pdfViewer - Specified PdfViewer class.\n * @param { PdfViewerBase } pdfViewerBase - The pdfViewerBase.\n */\n function ContextMenu(pdfViewer, pdfViewerBase) {\n this.copyContextMenu = [];\n this.contextMenuList = [];\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n this.copyContextMenu = [{ text: this.pdfViewer.localeObj.getConstant('Cut'), iconCss: 'e-pv-cut-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Copy'), iconCss: 'e-pv-copy-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Highlight context'), iconCss: 'e-pv-highlight-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Underline context'), iconCss: 'e-pv-underline-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Strikethrough context'), iconCss: 'e-pv-strikethrough-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Paste'), iconCss: 'e-pv-paste-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Delete Context'), iconCss: 'e-pv-delete-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Scale Ratio'), iconCss: 'e-pv-scale-ratio-icon' },\n { separator: true, id: pdfViewer.element.id + '_context_menu_comment_separator' },\n { text: this.pdfViewer.localeObj.getConstant('Comment'), iconCss: 'e-pv-comment-icon' },\n { separator: true, id: pdfViewer.element.id + '_context_menu_separator' },\n { text: this.pdfViewer.localeObj.getConstant('Properties'), iconCss: 'e-pv-property-icon' }\n ];\n }\n /**\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.createContextMenu = function () {\n this.contextMenuElement = createElement('ul', { id: this.pdfViewer.element.id + '_context_menu', className: 'e-pv-context-menu' });\n this.pdfViewer.element.appendChild(this.contextMenuElement);\n this.contextMenuObj = new Context({\n target: '#' + this.pdfViewerBase.viewerContainer.id, items: this.copyContextMenu,\n beforeOpen: this.contextMenuOnBeforeOpen.bind(this), select: this.onMenuItemSelect.bind(this),\n created: this.contextMenuOnCreated.bind(this)\n });\n if (this.pdfViewer.enableRtl) {\n this.contextMenuObj.enableRtl = true;\n }\n this.contextMenuObj.appendTo(this.contextMenuElement);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.contextMenuObj.animationSettings.effect = 'ZoomIn';\n }\n else {\n this.contextMenuObj.animationSettings.effect = 'SlideDown';\n }\n };\n ContextMenu.prototype.contextMenuOnCreated = function (args) {\n // eslint-disable-next-line max-len\n var items = [this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'),\n this.pdfViewer.localeObj.getConstant('Strikethrough context')];\n if (this.pdfViewer.annotationModule) {\n if (!this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n this.contextMenuObj.enableItems(items, false);\n }\n }\n else {\n this.contextMenuObj.enableItems(items, false);\n }\n };\n ContextMenu.prototype.setTarget = function (args) {\n var target = null;\n if (args.event && args.event.target) {\n target = args.event.target;\n this.currentTarget = target;\n }\n return target;\n };\n ContextMenu.prototype.contextMenuOnBeforeOpen = function (args) {\n if (this.pdfViewerBase.preventContextmenu) {\n args.cancel = true;\n }\n var target = this.setTarget(args);\n var currentAnnotSettings = this.pdfViewer.selectedItems.annotations.length !== 0 ? this.pdfViewer.selectedItems.annotations[0].annotationSettings : null;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus && target && target.className === 'free-text-input' && target.tagName === 'TEXTAREA') {\n this.pdfViewerBase.isFreeTextContextMenu = true;\n }\n // eslint-disable-next-line max-len\n this.contextMenuObj.showItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste'),\n // eslint-disable-next-line max-len\n this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'),\n // eslint-disable-next-line max-len\n this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Comment'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.remove('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.remove('e-menu-hide');\n // eslint-disable-next-line max-len\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context')], true);\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.checkContextMenuDeleteItem(this.contextMenuObj);\n }\n if (this.pdfViewer.textSelectionModule || this.pdfViewerBase.isShapeBasedAnnotationsEnabled()) {\n if (args.event || this.pdfViewerBase.isTouchDesignerMode) {\n var isClickWithinSelectionBounds = this.pdfViewerBase.isClickWithinSelectionBounds(args.event);\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.isFreeTextContextMenu) {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'), this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Comment'),\n this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Delete Context')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.freeTextAnnotationModule && this.pdfViewer.annotation.freeTextAnnotationModule.isTextSelected) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Copy')], true);\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Cut')], true);\n }\n else {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Copy')], false);\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Cut')], false);\n window.getSelection().removeAllRanges();\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.freeTextAnnotationModule && this.pdfViewer.annotation.freeTextAnnotationModule.selectedText !== '') {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], true);\n }\n else {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], false);\n }\n }\n else if (isClickWithinSelectionBounds && this.pdfViewer.textSelectionModule) {\n // eslint-disable-next-line max-len\n if ((!args.event.target.classList.contains('e-pv-maintaincontent') && args.event.target.classList.contains('e-pv-text') || args.event.target.classList.contains('e-pv-text-layer'))) {\n if (this.pdfViewerBase.checkIsNormalText()) {\n args.cancel = true;\n }\n // eslint-disable-next-line max-len\n }\n else if ((Browser.isIE || Browser.info.name === 'edge') && args.event.target.classList.contains('e-pv-page-container')) {\n args.cancel = true;\n }\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Comment'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Path')) {\n this.onOpeningForShape(false, true);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType !== 'Path' && !currentAnnotSettings.isLock) {\n this.onOpeningForShape(true);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.formFields.length !== 0 && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType && this.pdfViewer.designerMode) {\n this.onOpeningForShape(true);\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(this.pdfViewer.toolbar) && !isNullOrUndefined(this.pdfViewer.toolbar.formDesignerToolbarModule)) {\n this.pdfViewer.toolbar.formDesignerToolbarModule.showHideDeleteIcon(true);\n }\n }\n else {\n // eslint-disable-next-line\n var target_1 = this.pdfViewerBase.designerModetarget;\n var annotationModule = this.pdfViewer.annotationModule;\n if (args.event && args.event.target) {\n target_1 = args.event.target;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.isShapeCopied && ((target_1).classList.contains('e-pv-text-layer') ||\n (target_1).classList.contains('e-pv-text')) && !this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.onOpeningForShape(false);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.formDesigner && this.pdfViewer.formDesigner.isShapeCopied && ((target_1).classList.contains('e-pv-text-layer') ||\n (target_1).classList.contains('e-pv-text'))) {\n this.onOpeningForShape(false);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewerBase.isCalibrateAnnotationModule() && this.pdfViewer.annotationModule.measureAnnotationModule.currentAnnotationMode && !currentAnnotSettings) {\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.remove('e-menu-hide');\n // eslint-disable-next-line max-len\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Comment')], false);\n // eslint-disable-next-line max-len\n }\n else if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation && !annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation.annotationSettings.isLock) {\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'), this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Cut'),\n this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Scale Ratio')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.remove('e-menu-hide');\n // eslint-disable-next-line max-len\n this.contextMenuObj.showItems([this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Comment')], false);\n }\n else {\n args.cancel = true;\n }\n }\n }\n else if (this.pdfViewer.textSelectionModule && (this.pdfViewer.contextMenuOption === 'MouseUp')) {\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Comment'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n }\n else {\n this.hideContextItems();\n }\n this.enableCommentPanelItem();\n }\n else {\n args.cancel = true;\n }\n if (this.pdfViewer.contextMenuOption === 'None') {\n args.cancel = true;\n }\n else {\n this.contextMenuItems(args);\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.restrictContextMenu()) {\n args.cancel = true;\n }\n this.pdfViewerBase.isTouchDesignerMode = false;\n };\n ContextMenu.prototype.contextMenuItems = function (args) {\n if (this.pdfViewer.contextMenuSettings.contextMenuItems.length) {\n var hideMenuItems = [];\n var contextMenuList = this.contextMenuCollection();\n var ul = this.contextMenuObj.getRootElement();\n for (var j = 0; j < this.pdfViewer.contextMenuSettings.contextMenuItems.length; j++) {\n for (var i = 0; i < this.contextMenuList.length; i++) {\n var menuItem = this.contextMenuList[parseInt(i.toString(), 10)].text;\n switch (menuItem) {\n case 'Highlight':\n menuItem = 'Highlight context';\n break;\n case 'Underline':\n menuItem = 'Underline context';\n break;\n case 'Strikethrough':\n menuItem = 'Strikethrough context';\n break;\n case 'Delete':\n menuItem = 'Delete Context';\n break;\n case 'Scale Ratio':\n menuItem = 'Scale Ratio';\n break;\n case 'Comment':\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n break;\n case 'Properties':\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n break;\n }\n var menuName = this.contextMenuList[parseInt(i.toString(), 10)].text;\n if (j === 0 && menuName !== ContextMenuItem[this.pdfViewer.contextMenuSettings.contextMenuItems[parseInt(j.toString(), 10)]]) {\n hideMenuItems.push(menuName);\n }\n if (j > 0 && menuName === ContextMenuItem[this.pdfViewer.contextMenuSettings.contextMenuItems[parseInt(j.toString(), 10)]]) {\n for (var k = 0; k < hideMenuItems.length; k++) {\n if (hideMenuItems[parseInt(k.toString(), 10)] === menuName) {\n if (this.pdfViewer.disableContextMenuItems && this.pdfViewer.disableContextMenuItems.length > 0) {\n var isDisabled = false;\n for (var l = 0; l < this.pdfViewer.disableContextMenuItems.length; l++) {\n if (hideMenuItems[parseInt(k.toString(), 10)] === ContextMenuItem[this.pdfViewer.disableContextMenuItems[parseInt(l.toString(), 10)]]) {\n isDisabled = true;\n }\n }\n if (!isDisabled) {\n hideMenuItems.splice(k, 1);\n }\n }\n else {\n hideMenuItems.splice(k, 1);\n }\n }\n }\n }\n }\n }\n var hideLocaleItem = this.processLocaleContent(hideMenuItems);\n this.contextMenuObj.hideItems(hideLocaleItem);\n if (this.getEnabledItemCount(ul) === 0) {\n args.cancel = true;\n }\n }\n };\n ContextMenu.prototype.processLocaleContent = function (hideMenuItems) {\n var contextMenuLocaleContent = [];\n if (hideMenuItems.length > 0) {\n for (var i = 0; i < hideMenuItems.length; i++) {\n var menuItem = hideMenuItems[parseInt(i.toString(), 10)];\n switch (menuItem) {\n case 'Highlight':\n menuItem = 'Highlight context';\n break;\n case 'Underline':\n menuItem = 'Underline context';\n break;\n case 'Strikethrough':\n menuItem = 'Strikethrough context';\n break;\n case 'Delete':\n menuItem = 'Delete Context';\n break;\n case 'ScaleRatio':\n menuItem = 'Scale Ratio';\n break;\n }\n contextMenuLocaleContent.push(this.pdfViewer.localeObj.getConstant(menuItem));\n }\n }\n return contextMenuLocaleContent;\n };\n ContextMenu.prototype.contextMenuCollection = function () {\n return this.contextMenuList = [{ text: 'Cut' }, { text: 'Copy' }, { text: 'Highlight' }, { text: 'Underline' }, { text: 'Strikethrough' },\n { text: 'Paste' }, { text: 'Delete' }, { text: 'ScaleRatio' }, { text: 'Comment' }, { text: 'Properties' }];\n };\n ContextMenu.prototype.getEnabledItemCount = function (ul) {\n var enabledItemCount = this.copyContextMenu.length;\n var liCollection = ul.children;\n for (var i = 0; i < liCollection.length; i++) {\n // eslint-disable-next-line\n var li = liCollection[i];\n if (li.classList.contains('e-menu-hide') || li.classList.contains('e-disabled')) {\n enabledItemCount = enabledItemCount - 1;\n }\n }\n return enabledItemCount;\n };\n ContextMenu.prototype.hideContextItems = function () {\n if (this.pdfViewer.selectedItems.annotations.length === 0) {\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n }\n };\n ContextMenu.prototype.enableCommentPanelItem = function () {\n if (this.pdfViewer.enableCommentPanel) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Comment')], true);\n }\n else {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Comment')], false);\n }\n if (this.pdfViewer.selectedItems.formFields.length !== 0) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Comment')], false);\n }\n };\n ContextMenu.prototype.onOpeningForShape = function (isProp, isSignature) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.isShapeCopied) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], true);\n }\n else if (this.pdfViewer.formDesigner && this.pdfViewer.formDesigner.isShapeCopied) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], true);\n }\n else {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], false);\n }\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'), this.pdfViewer.localeObj.getConstant('Scale Ratio')]);\n if (isProp) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'LineWidthArrowHead' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance')) {\n this.contextMenuObj.showItems([this.pdfViewer.localeObj.getConstant('Properties')]);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.formFields.length !== 0 && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType) {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Comment')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.contextMenuObj.showItems([this.pdfViewer.localeObj.getConstant('Properties')]);\n }\n else if (isNullOrUndefined(isSignature) && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === \"Image\" && !this.pdfViewer.selectedItems.annotations[0].id.startsWith(\"stamp\")) {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Comment'), this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n }\n else {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n }\n }\n else if (isSignature) {\n if ((this.pdfViewer.selectedItems.annotations[0].annotName === \"SignatureField\" || this.pdfViewer.selectedItems.annotations[0].annotName === \"InitialField\" || this.pdfViewer.selectedItems.annotations[0].annotName === \"SignatureText\")) {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Comment'), this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n }\n else {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Comment')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n }\n }\n else {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'),\n // eslint-disable-next-line max-len\n this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Comment')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n }\n };\n ContextMenu.prototype.OnItemSelected = function (selectedMenu) {\n this.pdfViewerBase.OnItemSelected(selectedMenu);\n };\n ContextMenu.prototype.onMenuItemSelect = function (args) {\n this.pdfViewerBase.OnItemSelected(args.item.text);\n };\n /**\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.destroy = function () {\n if (this.contextMenuObj) {\n this.previousAction = '';\n this.contextMenuObj.destroy();\n }\n };\n /**\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n this.contextMenuObj.close();\n };\n /**\n * open the context menu.\n * @param {number} top - The top.\n * @param {number} left - The left.\n * @param {HTMLElement} target - The target.\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n /* eslint-disable */\n this.contextMenuObj.open(top, left, target);\n /* eslint-enable */\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Size defines and processes the size(width/height) of the objects\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n // /** @private */\n // public isEmpty(): boolean {\n // return this.height === 0 && this.width === 0;\n // }\n /** @private */\n Size.prototype.clone = function () {\n return new Size(this.width, this.height);\n };\n return Size;\n}());\nexport { Size };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex } from '@syncfusion/ej2-base';\nimport { Point } from '@syncfusion/ej2-drawings';\nimport { Size } from '@syncfusion/ej2-drawings';\n/**\n * The `PdfBounds` is base for annotation bounds.\n *\n * @hidden\n */\nvar PdfBounds = /** @class */ (function (_super) {\n __extends(PdfBounds, _super);\n function PdfBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"y\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"height\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"top\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"right\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"bottom\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Point)\n ], PdfBounds.prototype, \"location\", void 0);\n __decorate([\n Complex(new Size(0, 0), Size)\n ], PdfBounds.prototype, \"size\", void 0);\n return PdfBounds;\n}(ChildProperty));\nexport { PdfBounds };\n/**\n * The `PdfFont` is base for annotation Text styles.\n *\n * @hidden\n */\nvar PdfFont = /** @class */ (function (_super) {\n __extends(PdfFont, _super);\n function PdfFont() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], PdfFont.prototype, \"isBold\", void 0);\n __decorate([\n Property(false)\n ], PdfFont.prototype, \"isItalic\", void 0);\n __decorate([\n Property(false)\n ], PdfFont.prototype, \"isUnderline\", void 0);\n __decorate([\n Property(false)\n ], PdfFont.prototype, \"isStrikeout\", void 0);\n return PdfFont;\n}(ChildProperty));\nexport { PdfFont };\n/**\n * Defines the common behavior of PdfAnnotationBase\n *\n * @hidden\n */\nvar PdfAnnotationBase = /** @class */ (function (_super) {\n __extends(PdfAnnotationBase, _super);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function PdfAnnotationBase(parent, propName, defaultValue, isArray) {\n return _super.call(this, parent, propName, defaultValue, isArray) || this;\n }\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"id\", void 0);\n __decorate([\n Property('Rectangle')\n ], PdfAnnotationBase.prototype, \"shapeAnnotationType\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"formFieldAnnotationType\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"measureType\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"author\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"modifiedDate\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"subject\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"notes\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isCommentLock\", void 0);\n __decorate([\n Property('black')\n ], PdfAnnotationBase.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PdfAnnotationBase.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PdfAnnotationBase.prototype, \"stampFillColor\", void 0);\n __decorate([\n Property('black')\n ], PdfAnnotationBase.prototype, \"stampStrokeColor\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"data\", void 0);\n __decorate([\n Property(1)\n ], PdfAnnotationBase.prototype, \"opacity\", void 0);\n __decorate([\n Property(1)\n ], PdfAnnotationBase.prototype, \"thickness\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"borderStyle\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"borderDashArray\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"rotateAngle\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isCloudShape\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"cloudIntensity\", void 0);\n __decorate([\n Property(40)\n ], PdfAnnotationBase.prototype, \"leaderHeight\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"lineHeadStart\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"lineHeadEnd\", void 0);\n __decorate([\n Property([])\n ], PdfAnnotationBase.prototype, \"vertexPoints\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"sourcePoint\", void 0);\n __decorate([\n Property('None')\n ], PdfAnnotationBase.prototype, \"sourceDecoraterShapes\", void 0);\n __decorate([\n Property('None')\n ], PdfAnnotationBase.prototype, \"taregetDecoraterShapes\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"targetPoint\", void 0);\n __decorate([\n Property([])\n ], PdfAnnotationBase.prototype, \"segments\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, PdfBounds)\n ], PdfAnnotationBase.prototype, \"bounds\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"pageIndex\", void 0);\n __decorate([\n Property(-1)\n ], PdfAnnotationBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"wrapper\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isDynamicStamp\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"dynamicText\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"annotName\", void 0);\n __decorate([\n Property({})\n ], PdfAnnotationBase.prototype, \"review\", void 0);\n __decorate([\n Property([])\n ], PdfAnnotationBase.prototype, \"comments\", void 0);\n __decorate([\n Property('#000')\n ], PdfAnnotationBase.prototype, \"fontColor\", void 0);\n __decorate([\n Property(16)\n ], PdfAnnotationBase.prototype, \"fontSize\", void 0);\n __decorate([\n Property('Helvetica')\n ], PdfAnnotationBase.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('None')\n ], PdfAnnotationBase.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"enableShapeLabel\", void 0);\n __decorate([\n Property('label')\n ], PdfAnnotationBase.prototype, \"labelContent\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PdfAnnotationBase.prototype, \"labelFillColor\", void 0);\n __decorate([\n Property(15)\n ], PdfAnnotationBase.prototype, \"labelMaxLength\", void 0);\n __decorate([\n Property(1)\n ], PdfAnnotationBase.prototype, \"labelOpacity\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PdfAnnotationBase.prototype, \"labelBorderColor\", void 0);\n __decorate([\n Property('left')\n ], PdfAnnotationBase.prototype, \"textAlign\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"signatureName\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isLock\", void 0);\n __decorate([\n Property('UI Drawn Annotation')\n ], PdfAnnotationBase.prototype, \"annotationAddMode\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"annotationSettings\", void 0);\n __decorate([\n Property(16)\n ], PdfAnnotationBase.prototype, \"previousFontSize\", void 0);\n __decorate([\n Complex({ isBold: false, isItalic: false, isStrikeout: false, isUnderline: false }, PdfFont)\n ], PdfAnnotationBase.prototype, \"font\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, PdfBounds)\n ], PdfAnnotationBase.prototype, \"labelBounds\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], PdfAnnotationBase.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], PdfAnnotationBase.prototype, \"isPrint\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isReadonly\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"pageRotation\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"icon\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isAddAnnotationProgrammatically\", void 0);\n return PdfAnnotationBase;\n}(ChildProperty));\nexport { PdfAnnotationBase };\n/**\n * Defines the common behavior of PdfFormFieldBase\n *\n * @hidden\n */\nvar PdfFormFieldBase = /** @class */ (function (_super) {\n __extends(PdfFormFieldBase, _super);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function PdfFormFieldBase(parent, propName, defaultValue, isArray) {\n return _super.call(this, parent, propName, defaultValue, isArray) || this;\n }\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"signatureType\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], PdfFormFieldBase.prototype, \"formFieldAnnotationType\", void 0);\n __decorate([\n Property('#daeaf7ff')\n ], PdfFormFieldBase.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property('black')\n ], PdfFormFieldBase.prototype, \"color\", void 0);\n __decorate([\n Property('#303030')\n ], PdfFormFieldBase.prototype, \"borderColor\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"tooltip\", void 0);\n __decorate([\n Property(1)\n ], PdfFormFieldBase.prototype, \"opacity\", void 0);\n __decorate([\n Property(1)\n ], PdfFormFieldBase.prototype, \"thickness\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"rotateAngle\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, PdfBounds)\n ], PdfFormFieldBase.prototype, \"bounds\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"pageIndex\", void 0);\n __decorate([\n Property(1)\n ], PdfFormFieldBase.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(-1)\n ], PdfFormFieldBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], PdfFormFieldBase.prototype, \"wrapper\", void 0);\n __decorate([\n Property(16)\n ], PdfFormFieldBase.prototype, \"fontSize\", void 0);\n __decorate([\n Property('Helvetica')\n ], PdfFormFieldBase.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('None')\n ], PdfFormFieldBase.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('left')\n ], PdfFormFieldBase.prototype, \"alignment\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"maxLength\", void 0);\n __decorate([\n Property('visible')\n ], PdfFormFieldBase.prototype, \"visibility\", void 0);\n __decorate([\n Property(true)\n ], PdfFormFieldBase.prototype, \"isPrint\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isReadonly\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isChecked\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isSelected\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isMultiline\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isTransparent\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"insertSpaces\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"options\", void 0);\n __decorate([\n Property()\n ], PdfFormFieldBase.prototype, \"signatureIndicatorSettings\", void 0);\n __decorate([\n Complex({ isBold: false, isItalic: false, isStrikeout: false, isUnderline: false }, PdfFont)\n ], PdfFormFieldBase.prototype, \"font\", void 0);\n __decorate([\n Property()\n ], PdfFormFieldBase.prototype, \"selectedIndex\", void 0);\n return PdfFormFieldBase;\n}(ChildProperty));\nexport { PdfFormFieldBase };\n/**\n * @hidden\n */\nvar ZOrderPageTable = /** @class */ (function () {\n function ZOrderPageTable() {\n this.pageIdTemp = 0;\n this.zIndexTemp = -1;\n this.childNodesTemp = [];\n this.objects = [];\n this.zIndexTemp = -1;\n this.pageIdTemp = 0;\n }\n Object.defineProperty(ZOrderPageTable.prototype, \"pageId\", {\n /**\n * @private\n * @returns {number} - Returns the page Id.\n */\n get: function () {\n return this.pageIdTemp;\n },\n /**\n * @private\n * @param {number} offset - The page offset value.\n */\n set: function (offset) {\n this.pageIdTemp = offset;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZOrderPageTable.prototype, \"zIndex\", {\n /**\n * @private\n * @returns {number} - Returns the z-index value.\n */\n get: function () {\n return this.zIndexTemp;\n },\n /**\n * @private\n * @param {number} offset - The page offset value.\n */\n set: function (offset) {\n this.zIndexTemp = offset;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZOrderPageTable.prototype, \"objects\", {\n /**\n * @private\n * @returns {PdfAnnotationBaseModel[]} - Returns the annotation childNodes.\n */\n get: function () {\n return this.childNodesTemp;\n },\n /**\n * @private\n * @param {PdfAnnotationBaseModel[]} childNodes - Specified the annotation child nodes.\n */\n set: function (childNodes) {\n this.childNodesTemp = childNodes;\n },\n enumerable: true,\n configurable: true\n });\n return ZOrderPageTable;\n}());\nexport { ZOrderPageTable };\n","import { AnnotationDataFormat } from '../index';\nimport { createElement, Browser, isBlazor, initializeCSPTemplate, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Toolbar as Tool, ContextMenu as Context } from '@syncfusion/ej2-navigations';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { Toast } from '@syncfusion/ej2-notifications';\n/**\n * The `NavigationPane` module is used to handle navigation pane for thumbnail and bookmark navigation of PDF viewer.\n *\n * @hidden\n */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Initialize the constructor of navigationPane.\n *\n * @param { PdfViewer } viewer - Specified PdfViewer class.\n * @param { PdfViewerBase } base - The pdfViewerBase.\n */\n function NavigationPane(viewer, base) {\n var _this = this;\n this.thumbnailWidthMin = 200;\n this.contentContainerScrollWidth = 33;\n this.closeButtonLeft = 170;\n this.isTooltipCreated = false;\n this.isThumbnail = false;\n this.isThumbnailAddedProgrammatically = false;\n this.annotationContextMenu = [];\n this.isCommentPanelShow = false;\n this.commentPanelWidthMin = 300;\n /**\n * @private\n */\n this.isNavigationToolbarVisible = false;\n /**\n * @private\n */\n this.isBookmarkListOpen = false;\n /**\n * @private\n */\n this.isNavigationPaneResized = false;\n /**\n * @private\n */\n this.isBookmarkOpen = false;\n /**\n * @private\n */\n this.isThumbnailOpen = false;\n /**\n * @private\n */\n this.restrictUpdateZoomValue = true;\n // eslint-disable-next-line\n this.loadImportAnnotation = function (args) {\n // eslint-disable-next-line\n var upoadedFiles = args.target.files;\n if (args.target.files[0] !== null) {\n var uploadedFile = upoadedFiles[0];\n if (uploadedFile) {\n _this.pdfViewer.fireImportStart(uploadedFile);\n // eslint-disable-next-line\n var uploadedFileType = uploadedFile.type;\n if (uploadedFile.name.split('.json').length > 1 && uploadedFileType.includes('json')) {\n var reader = new FileReader();\n reader.readAsDataURL(uploadedFile);\n // eslint-disable-next-line\n reader.onload = function (e) {\n if (e.currentTarget.result) {\n var importFile = e.currentTarget.result.split(',')[1];\n // eslint-disable-next-line\n var annotationData = atob(importFile);\n if (annotationData) {\n // eslint-disable-next-line\n // Encountering a script error while attempting to import annotations from the older version JSON document. As a result, the below line has been commented: Task ID: 842694\n // annotationData = this.pdfViewerBase.getSanitizedString(annotationData);\n var jsonData = JSON.parse(annotationData);\n var firstAnnotation = jsonData.pdfAnnotation[Object.keys(jsonData.pdfAnnotation)[0]];\n if ((Object.keys(jsonData.pdfAnnotation).length >= 1) && (firstAnnotation.textMarkupAnnotation || firstAnnotation.measureShapeAnnotation || firstAnnotation.freeTextAnnotation || firstAnnotation.stampAnnotations || firstAnnotation.signatureInkAnnotation || (firstAnnotation.shapeAnnotation && firstAnnotation.shapeAnnotation[0].Bounds))) {\n _this.pdfViewerBase.isPDFViewerJson = true;\n _this.pdfViewerBase.importAnnotations(jsonData, AnnotationDataFormat.Json);\n }\n else {\n _this.pdfViewerBase.isPDFViewerJson = false;\n _this.pdfViewerBase.importAnnotations(importFile, AnnotationDataFormat.Json);\n }\n }\n }\n };\n }\n else if (uploadedFile.name.split('.xfdf').length > 1 && (uploadedFileType.includes('xfdf') || args.target.accept.includes('xfdf'))) {\n var reader = new FileReader();\n reader.readAsDataURL(uploadedFile);\n // eslint-disable-next-line\n reader.onload = function (e) {\n if (e.currentTarget.result) {\n var importFile = e.currentTarget.result.split(',')[1];\n // eslint-disable-next-line\n var annotationData = atob(importFile);\n if (annotationData) {\n // eslint-disable-next-line max-len\n _this.pdfViewerBase.importAnnotations(importFile, AnnotationDataFormat.Xfdf, true);\n }\n }\n };\n }\n else {\n _this.pdfViewer.fireImportFailed(uploadedFile, _this.pdfViewer.localeObj.getConstant('Import Failed'));\n if (isBlazor()) {\n var promise = _this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_ImportFailed');\n promise.then(function (value) {\n _this.pdfViewerBase.openImportExportNotificationPopup(value);\n });\n }\n else {\n _this.pdfViewerBase.openImportExportNotificationPopup(_this.pdfViewer.localeObj.getConstant('Import Failed'));\n }\n }\n }\n args.target.value = \"\";\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.resizeIconMouseOver = function (event) {\n event.srcElement.style.cursor = 'e-resize';\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.resizePanelMouseDown = function (event) {\n var proxy = null;\n proxy = _this;\n proxy.offset = [\n proxy.sideBarResizer.offsetLeft - event.clientX,\n proxy.sideBarResizer.offsetTop - event.clientY,\n proxy.sideBarResizer.offsetParent.clientWidth\n ];\n _this.previousX = event.clientX;\n proxy.isDown = true;\n proxy.isNavigationPaneResized = true;\n proxy.pdfViewerBase.viewerContainer.style.cursor = 'e-resize';\n if (proxy.sideBarContentContainer) {\n proxy.sideBarContentContainer.style.cursor = 'e-resize';\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.resizeViewerMouseLeave = function (event) {\n var proxy = null;\n proxy = _this;\n proxy.isDown = false;\n if (proxy.isNavigationPaneResized && proxy.sideBarContentContainer) {\n proxy.pdfViewerBase.viewerContainer.style.cursor = 'default';\n proxy.sideBarContentContainer.style.cursor = 'default';\n proxy.isNavigationPaneResized = false;\n }\n if (proxy.commentPanelContainer && proxy.isCommentPanelShow) {\n _this.commentPanelMouseLeave(event);\n proxy.isCommentPanelShow = false;\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.resizePanelMouseMove = function (event) {\n var proxy = null;\n proxy = _this;\n if (!_this.pdfViewerBase.getPopupNoteVisibleStatus()) {\n var target = event.target;\n // eslint-disable-next-line max-len\n if (_this.pdfViewerBase.skipPreventDefault(target)) {\n event.preventDefault();\n }\n if (proxy.isDown && _this.sideBarContentContainer) {\n // prevent the sidebar from becoming too narrow, or from occupying more\n // than half of the available viewer width.\n if (_this.pdfViewer.enableRtl) {\n var currentWidth = _this.previousX - event.clientX;\n var width = currentWidth + proxy.offset[2];\n var maxWidth = Math.floor(_this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < _this.thumbnailWidthMin) {\n width = _this.thumbnailWidthMin;\n }\n proxy.sideBarResizer.style.right = width + 'px';\n proxy.sideBarContentContainer.style.width = width + 'px';\n proxy.sideBarContent.style.width = width + 'px';\n proxy.sideBarContentSplitter.style.width = width + 'px';\n proxy.sideBarTitleContainer.style.width = width + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerLeft() + 'px';\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerRight() + 'px';\n }\n else {\n var width = event.clientX + proxy.offset[0];\n var maxWidth = Math.floor(_this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < _this.thumbnailWidthMin) {\n width = _this.thumbnailWidthMin;\n }\n proxy.sideBarResizer.style.left = width + 'px';\n proxy.closeDiv.style.left = width - proxy.contentContainerScrollWidth + 'px';\n proxy.sideBarContentContainer.style.width = width + 'px';\n proxy.sideBarContent.style.width = width + 'px';\n proxy.sideBarContentSplitter.style.width = width + 'px';\n proxy.sideBarTitleContainer.style.width = width + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerLeft() + 'px';\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerRight() + 'px';\n }\n // eslint-disable-next-line max-len\n var viewerWidth = (proxy.pdfViewer.element.clientWidth - proxy.getViewerContainerLeft() - proxy.getViewerContainerRight());\n proxy.pdfViewerBase.viewerContainer.style.width = viewerWidth + 'px';\n proxy.pdfViewerBase.pageContainer.style.width = proxy.pdfViewerBase.viewerContainer.clientWidth + 'px';\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.pdfViewerBase.currentPageNumber - 1);\n proxy.pdfViewer.thumbnailViewModule.renderViewPortThumbnailImage();\n proxy.pdfViewerBase.updateZoomValue();\n if (!proxy.bookmarkButton.children[0].classList.contains('e-pv-bookmark-disable-icon')) {\n proxy.pdfViewer.bookmarkViewModule.setBookmarkContentHeight();\n }\n }\n else if (proxy.isCommentPanelShow && _this.commentPanelContainer) {\n _this.updateCommentPanelContainer(event);\n }\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.sideToolbarOnClose = function (event) {\n var proxy = null;\n proxy = _this;\n proxy.removeThumbnailSelectionIconTheme();\n proxy.removeBookmarkSelectionIconTheme();\n proxy.updateViewerContainerOnClose();\n proxy.isThumbnailAddedProgrammatically = false;\n proxy.isThumbnail = false;\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.sideToolbarOnClick = function (event) {\n _this.sideBarTitle.textContent = _this.pdfViewer.localeObj.getConstant('Page Thumbnails');\n _this.sideBarContent.setAttribute('aria-label', 'Thumbnail View Panel');\n var proxy = null;\n proxy = _this;\n var isblazor = isBlazor();\n // eslint-disable-next-line max-len\n var bookmarkPane = isblazor ? _this.pdfViewer.element.querySelector('.e-pv-bookmark-view') : document.getElementById(_this.pdfViewer.element.id + '_bookmark_view');\n if (bookmarkPane) {\n proxy.removeBookmarkSelectionIconTheme();\n bookmarkPane.style.display = 'none';\n }\n document.getElementById(_this.pdfViewer.element.id + '_thumbnail_view').style.display = 'flex';\n if (proxy.sideBarContentContainer) {\n if (proxy.sideBarContentContainer.style.display !== 'none') {\n if (proxy.isBookmarkOpen) {\n proxy.isThumbnailOpen = true;\n proxy.setThumbnailSelectionIconTheme();\n proxy.updateViewerContainerOnExpand();\n document.getElementById(proxy.pdfViewer.element.id + '_thumbnail_image_' + (proxy.pdfViewerBase.currentPageNumber - 1)).focus();\n }\n else {\n proxy.isThumbnailOpen = false;\n proxy.removeThumbnailSelectionIconTheme();\n proxy.updateViewerContainerOnClose();\n proxy.isThumbnailAddedProgrammatically = false;\n proxy.isThumbnail = false;\n }\n }\n else {\n proxy.sideBarContent.focus();\n proxy.isThumbnailOpen = true;\n proxy.setThumbnailSelectionIconTheme();\n proxy.updateViewerContainerOnExpand();\n proxy.isThumbnail = true;\n if (!isNullOrUndefined(document.getElementById(proxy.pdfViewer.element.id + '_thumbnail_image_' + (proxy.pdfViewerBase.currentPageNumber - 1)))) {\n document.getElementById(proxy.pdfViewer.element.id + '_thumbnail_image_' + (proxy.pdfViewerBase.currentPageNumber - 1)).focus();\n }\n }\n }\n proxy.isBookmarkOpen = false;\n if (_this.pdfViewer.annotationModule && _this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(_this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n _this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n /**\n * @private\n * @returns {void}\n */\n this.openThumbnailPane = function () {\n var proxy = null;\n proxy = _this;\n var sideBarContent = document.getElementById(_this.pdfViewer.element.id + '_sideBarContent');\n var sideBarContentContainer = document.getElementById(_this.pdfViewer.element.id + '_sideBarContentContainer');\n var viewerContainer = document.getElementById(_this.pdfViewer.element.id + '_viewerContainer');\n var pageContainer = document.getElementById(_this.pdfViewer.element.id + '_pageViewContainer');\n document.getElementById(_this.pdfViewer.element.id + '_thumbnail_view').style.display = 'block';\n document.getElementById(_this.pdfViewer.element.id + '_sideBarResizer').style.display = 'none';\n proxy.sideBarTitle.textContent = _this.pdfViewer.localeObj.getConstant('Page Thumbnails');\n proxy.sideBarContent.setAttribute('aria-label', 'Thumbnail View Panel');\n if (sideBarContentContainer && !_this.isThumbnailAddedProgrammatically) {\n if (proxy.isThumbnail) {\n sideBarContentContainer.style.display = 'none';\n viewerContainer.style.width = proxy.pdfViewer.element.clientWidth + 'px';\n pageContainer.style.width = viewerContainer.clientWidth + 'px';\n viewerContainer.style.left = sideBarContentContainer.clientWidth + 'px';\n proxy.pdfViewerBase.updateZoomValue();\n proxy.removeThumbnailSelectionIconTheme();\n proxy.isThumbnail = false;\n }\n else {\n sideBarContent.focus();\n proxy.setThumbnailSelectionIconTheme();\n proxy.updateViewerContainerOnExpand();\n // eslint-disable-next-line max-len\n proxy.isThumbnail = true;\n proxy.pdfViewerBase.updateZoomValue();\n if (!isNullOrUndefined(proxy.pdfViewer.thumbnailViewModule)) {\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.pdfViewerBase.currentPageNumber - 1);\n }\n proxy.isThumbnailAddedProgrammatically = true;\n }\n }\n if (_this.pdfViewer.annotationModule && _this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(_this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n _this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n /**\n * @private\n * @returns {void}\n */\n this.closeThumbnailPane = function () {\n var proxy = null;\n proxy = _this;\n if (proxy.isThumbnail || !proxy.isThumbnailAddedProgrammatically) {\n proxy.removeThumbnailSelectionIconTheme();\n proxy.isThumbnailOpen = false;\n proxy.updateViewerContainerOnClose();\n proxy.isThumbnailAddedProgrammatically = false;\n proxy.isThumbnail = false;\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.bookmarkButtonOnClick = function (event) {\n _this.openBookmarkcontentInitially();\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.commentPanelMouseDown = function (event) {\n var proxy = null;\n proxy = _this;\n proxy.offset = [\n proxy.commentPanelResizer.offsetLeft - event.clientX,\n proxy.commentPanelResizer.offsetTop - event.clientY,\n proxy.getViewerContainerRight()\n ];\n _this.isCommentPanelShow = true;\n _this.previousX = event.clientX;\n proxy.pdfViewerBase.viewerContainer.style.cursor = 'e-resize';\n proxy.commentPanelResizer.style.cursor = 'e-resize';\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.updateCommentPanelContainer = function (event) {\n var proxy = null;\n proxy = _this;\n // prevent the commentPanel from becoming too narrow, or from occupying more\n // than half of the available viewer width.\n if (_this.pdfViewer.enableRtl) {\n var width = event.clientX + proxy.offset[0];\n var maxWidth = Math.floor(_this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < _this.commentPanelWidthMin) {\n width = _this.commentPanelWidthMin;\n }\n proxy.commentPanelResizer.style.left = width + 'px';\n proxy.commentPanelContainer.style.width = width + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerRight() + 'px';\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerLeft() + 'px';\n }\n else {\n var currentWidth = _this.previousX - event.clientX;\n var width = currentWidth + proxy.offset[2];\n var maxWidth = Math.floor(_this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < _this.commentPanelWidthMin) {\n width = _this.commentPanelWidthMin;\n }\n proxy.commentPanelResizer.style.right = width + 'px';\n proxy.commentPanelContainer.style.width = width + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerRight() + 'px';\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerLeft() + 'px';\n }\n _this.pdfViewer.annotation.stickyNotesAnnotationModule.updateCommentPanelTextTop();\n // eslint-disable-next-line max-len\n var viewerWidth = (proxy.pdfViewer.element.clientWidth - proxy.getViewerContainerLeft() - proxy.getViewerContainerRight());\n proxy.pdfViewerBase.viewerContainer.style.width = viewerWidth + 'px';\n proxy.pdfViewerBase.pageContainer.style.width = proxy.pdfViewerBase.viewerContainer.clientWidth + 'px';\n proxy.calculateCommentPanelWidth();\n proxy.pdfViewerBase.updateZoomValue();\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.commentPanelMouseLeave = function (event) {\n var proxy = null;\n proxy = _this;\n if (proxy.commentPanelContainer) {\n proxy.pdfViewerBase.viewerContainer.style.cursor = 'default';\n proxy.commentPanelContainer.style.cursor = 'default';\n }\n };\n this.pdfViewer = viewer;\n this.pdfViewerBase = base;\n }\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.initializeNavigationPane = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.createNavigationPane();\n }\n else {\n // eslint-disable-next-line max-len\n this.commentPanelContainer = createElement('div', { id: this.pdfViewer.element.id + '_commantPanel', className: 'e-pv-mobile-comments-container' });\n this.pdfViewerBase.mainContainer.appendChild(this.commentPanelContainer);\n if (this.pdfViewer.enableRtl) {\n this.commentPanelContainer.style.left = 0 + 'px';\n }\n else {\n this.commentPanelContainer.style.right = 0 + 'px';\n }\n this.commentPanelContainer.style.bottom = 0 + 'px';\n this.createCommentPanelTitleContainer();\n this.commentPanelContainer.style.display = 'none';\n // eslint-disable-next-line max-len\n this.commentsContentContainer = createElement('div', { id: this.pdfViewer.element.id + '_commentscontentcontainer', className: 'e-pv-comments-content-container' });\n this.commentPanelContainer.appendChild(this.commentsContentContainer);\n this.createFileElement(this.commentPanelContainer);\n this.createXFdfFileElement(this.commentPanelContainer);\n }\n };\n NavigationPane.prototype.createNavigationPane = function () {\n var isblazor = isBlazor();\n if (!isblazor) {\n // eslint-disable-next-line max-len\n this.sideBarToolbar = createElement('div', { id: this.pdfViewer.element.id + '_sideBarToolbar', className: 'e-pv-sidebar-toolbar', attrs: { 'role': 'toolbar', 'aria-orientation': 'vertical', 'tabindex': '-1', 'aria-label': 'Sidebar Toolbar' } });\n // eslint-disable-next-line max-len\n this.sideBarToolbarSplitter = createElement('div', { id: this.pdfViewer.element.id + '_sideBarToolbarSplitter', className: 'e-pv-sidebar-toolbar-splitter' });\n // eslint-disable-next-line max-len\n this.sideBarContentContainer = createElement('div', { id: this.pdfViewer.element.id + '_sideBarContentContainer', className: 'e-pv-sidebar-content-container' });\n // eslint-disable-next-line max-len\n this.sideBarContentSplitter = createElement('div', { id: this.pdfViewer.element.id + '_sideBarContentSplitter', className: 'e-pv-sidebar-content-splitter' });\n // eslint-disable-next-line max-len\n this.sideBarContent = createElement('div', { id: this.pdfViewer.element.id + '_sideBarContent', className: 'e-pv-sidebar-content' });\n // eslint-disable-next-line max-len\n this.sideBarTitleContainer = createElement('div', { id: this.pdfViewer.element.id + '_sideBarTitleContainer', className: 'e-pv-sidebar-title-container' });\n // eslint-disable-next-line max-len\n this.sideBarTitle = createElement('div', { id: this.pdfViewer.element.id + '_sideBarTitle', className: 'e-pv-sidebar-title', attrs: { 'tabindex': '-1' } });\n // eslint-disable-next-line max-len\n this.sideBarResizer = createElement('div', { id: this.pdfViewer.element.id + '_sideBarResizer', className: 'e-pv-sidebar-resizer' });\n }\n else {\n this.sideBarToolbar = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar');\n this.sideBarToolbarSplitter = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar-splitter');\n this.sideBarContentContainer = this.pdfViewer.element.querySelector('.e-pv-sidebar-content-container');\n this.sideBarContentSplitter = this.pdfViewer.element.querySelector('.e-pv-sidebar-content-splitter');\n this.sideBarContent = this.pdfViewer.element.querySelector('.e-pv-sidebar-content');\n this.sideBarTitleContainer = this.pdfViewer.element.querySelector('.e-pv-sidebar-title-container');\n this.sideBarTitle = this.pdfViewer.element.querySelector('.e-pv-sidebar-title');\n this.sideBarResizer = this.pdfViewer.element.querySelector('.e-pv-sidebar-resizer');\n }\n this.pdfViewerBase.mainContainer.appendChild(this.sideBarToolbar);\n if (this.pdfViewer.enableRtl) {\n this.sideBarToolbar.style.cssFloat = 'right';\n this.sideBarToolbar.style.right = 1 + 'px';\n this.sideBarToolbar.style.position = 'relative';\n }\n this.pdfViewerBase.mainContainer.appendChild(this.sideBarToolbarSplitter);\n if (this.pdfViewer.enableRtl) {\n this.sideBarToolbarSplitter.classList.add('e-right');\n }\n else {\n this.sideBarToolbarSplitter.classList.add('e-left');\n }\n if (this.pdfViewer.enableRtl) {\n this.sideBarContentContainer.classList.add('e-right');\n }\n else {\n this.sideBarContentContainer.classList.add('e-left');\n }\n this.pdfViewerBase.mainContainer.appendChild(this.sideBarContentContainer);\n if (this.pdfViewer.enableRtl) {\n this.sideBarContentSplitter.style.right = 0 + 'px';\n }\n this.sideBarContentContainer.appendChild(this.sideBarContentSplitter);\n if (this.pdfViewer.enableRtl) {\n this.sideBarContent.style.right = 0 + 'px';\n this.sideBarContent.style.direction = 'rtl';\n }\n this.sideBarContentContainer.appendChild(this.sideBarContent);\n if (this.pdfViewer.enableRtl) {\n this.sideBarTitleContainer.style.right = 0 + 'px';\n }\n if (this.pdfViewer.enableRtl) {\n this.sideBarTitle.classList.add('e-right');\n }\n else {\n this.sideBarTitle.classList.add('e-left');\n }\n this.sideBarTitleContainer.appendChild(this.sideBarTitle);\n this.sideBarContentContainer.appendChild(this.sideBarTitleContainer);\n this.sideBarResizer.addEventListener('mousedown', this.resizePanelMouseDown);\n this.pdfViewerBase.mainContainer.addEventListener('mousemove', this.resizePanelMouseMove);\n this.pdfViewerBase.mainContainer.addEventListener('mouseup', this.resizeViewerMouseLeave);\n if (this.pdfViewer.enableRtl) {\n this.sideBarResizer.classList.add('e-right');\n }\n else {\n this.sideBarResizer.classList.add('e-left');\n }\n this.sideBarContentContainer.appendChild(this.sideBarResizer);\n this.createCommentPanel();\n var controlLeft = this.getViewerContainerLeft();\n var controlRight = this.getViewerContainerRight();\n if (!this.pdfViewer.enableRtl) {\n this.pdfViewerBase.viewerContainer.style.left = controlLeft + 'px';\n this.pdfViewerBase.viewerContainer.style.right = controlRight + 'px';\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.width = (this.pdfViewer.element.clientWidth - controlLeft - this.commentPanelContainer.clientWidth) + 'px';\n this.sideBarContentContainer.style.display = 'none';\n this.createSidebarToolBar();\n this.createSidebarTitleCloseButton();\n this.createResizeIcon();\n this.sideBarToolbar.addEventListener('mouseup', this.sideToolbarOnMouseup.bind(this));\n this.sideBarContentContainer.addEventListener('mouseup', this.sideBarTitleOnMouseup.bind(this));\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.adjustPane = function () {\n if (isBlazor()) {\n var splitterElement = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar-splitter');\n var sideToolbarElement = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar');\n var sideToolbarContent = this.pdfViewer.element.querySelector('.e-pv-sidebar-content-container');\n var toolbarContainer = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n var toolbarHeight = toolbarContainer.getBoundingClientRect().height;\n if (toolbarHeight === 0) {\n // eslint-disable-next-line\n toolbarHeight = parseFloat(window.getComputedStyle(toolbarContainer)['height']) + 1;\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n sideToolbarElement.style.top = toolbarHeight + 'px';\n sideToolbarContent.style.top = toolbarHeight + 'px';\n splitterElement.style.top = toolbarHeight + 'px';\n sideToolbarElement.style.height = this.getSideToolbarHeight(toolbarHeight);\n sideToolbarContent.style.height = this.getSideToolbarHeight(toolbarHeight);\n splitterElement.style.height = this.getSideToolbarHeight(toolbarHeight);\n this.pdfViewerBase.viewerContainer.style.height = this.getSideToolbarHeight(toolbarHeight);\n }\n else {\n var splitterElement = this.pdfViewerBase.getElement('_sideBarToolbarSplitter');\n var toolbarContainer = this.pdfViewerBase.getElement('_toolbarContainer');\n var toolbarHeight = toolbarContainer.getBoundingClientRect().height;\n if (toolbarHeight === 0) {\n // eslint-disable-next-line\n toolbarHeight = parseFloat(window.getComputedStyle(toolbarContainer)['height']) + 1;\n }\n // eslint-disable-next-line max-len\n this.sideBarToolbar.style.top = toolbarHeight + 'px';\n this.sideBarContentContainer.style.top = toolbarHeight + 'px';\n splitterElement.style.top = toolbarHeight + 'px';\n }\n };\n NavigationPane.prototype.getSideToolbarHeight = function (toolbarHeight) {\n var height = this.pdfViewer.element.getBoundingClientRect().height;\n return (height !== 0) ? height - toolbarHeight + 'px' : '';\n };\n NavigationPane.prototype.createCommentPanel = function () {\n // eslint-disable-next-line max-len\n this.commentPanelContainer = createElement('div', { id: this.pdfViewer.element.id + '_commantPanel', className: 'e-pv-comment-panel' });\n this.pdfViewerBase.mainContainer.appendChild(this.commentPanelContainer);\n if (this.pdfViewer.enableRtl) {\n this.commentPanelContainer.style.left = 0 + 'px';\n }\n else {\n this.commentPanelContainer.style.right = 0 + 'px';\n }\n this.commentPanelContainer.style.bottom = 0 + 'px';\n this.createCommentPanelTitleContainer();\n this.commentPanelContainer.style.display = 'none';\n // eslint-disable-next-line max-len\n this.commentsContentContainer = createElement('div', { id: this.pdfViewer.element.id + '_commentscontentcontainer', className: 'e-pv-comments-content-container' });\n this.commentPanelContainer.appendChild(this.commentsContentContainer);\n // eslint-disable-next-line max-len\n this.commentPanelResizer = createElement('div', { id: this.pdfViewer.element.id + '_commentPanelResizer', className: 'e-pv-comment-panel-resizer' });\n if (this.pdfViewer.enableRtl) {\n this.commentPanelResizer.classList.add('e-left');\n }\n else {\n this.commentPanelResizer.classList.add('e-right');\n }\n this.commentPanelResizer.style.display = 'none';\n this.commentPanelResizer.addEventListener('mousedown', this.commentPanelMouseDown);\n this.pdfViewerBase.mainContainer.appendChild(this.commentPanelResizer);\n this.createCommentPanelResizeIcon();\n this.createFileElement(this.commentPanelContainer);\n this.createXFdfFileElement(this.commentPanelContainer);\n };\n NavigationPane.prototype.createCommentPanelTitleContainer = function () {\n // eslint-disable-next-line max-len\n var commentPanelTitleContainer = createElement('div', { id: this.pdfViewer.element.id + '_commentPanelTitleContainer', className: 'e-pv-comment-panel-title-container' });\n // eslint-disable-next-line max-len\n var commentpanelTilte = createElement('div', { id: this.pdfViewer.element.id + '_commentPanelTitle', className: 'e-pv-comment-panel-title', attrs: { 'tabindex': '-1' } });\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Comments');\n promise.then(function (value) {\n commentpanelTilte.innerText = value;\n });\n }\n else {\n commentpanelTilte.innerText = this.pdfViewer.localeObj.getConstant('Comments');\n }\n var annotationButton = createElement('button', { id: this.pdfViewer.element.id + '_annotations_btn' });\n annotationButton.setAttribute('aria-label', 'annotation button');\n annotationButton.setAttribute('type', 'button');\n annotationButton.className = 'e-btn e-pv-tbar-btn e-pv-comment-panel-title-close-div e-btn';\n // eslint-disable-next-line max-len\n var moreOptionButtonSpan = createElement('span', { id: this.pdfViewer.element.id + '_annotation_more_icon', className: 'e-pv-more-icon e-pv-icon' });\n annotationButton.appendChild(moreOptionButtonSpan);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode && !isBlazor()) {\n var commentCloseIconDiv = createElement('button');\n commentCloseIconDiv.setAttribute('aria-label', 'annotation button');\n commentCloseIconDiv.setAttribute('type', 'button');\n commentCloseIconDiv.style.borderColor = 'transparent';\n commentCloseIconDiv.style.paddingTop = '11px';\n commentCloseIconDiv.style.paddingBottom = '11px';\n commentCloseIconDiv.style.backgroundColor = 'transparent';\n commentCloseIconDiv.addEventListener('click', this.closeCommentPanelContainer.bind(this));\n commentpanelTilte.style.left = '37px';\n var commentCloseIcon = createElement('span', { className: 'e-pv-annotation-tools-close-icon e-pv-icon' });\n commentCloseIconDiv.appendChild(commentCloseIcon);\n commentPanelTitleContainer.appendChild(commentCloseIconDiv);\n }\n commentPanelTitleContainer.appendChild(commentpanelTilte);\n commentPanelTitleContainer.appendChild(annotationButton);\n this.commentPanelContainer.appendChild(commentPanelTitleContainer);\n this.createAnnotationContextMenu();\n annotationButton.addEventListener('click', this.openAnnotationContextMenu.bind(this));\n };\n NavigationPane.prototype.createCommentPanelResizeIcon = function () {\n // eslint-disable-next-line max-len\n this.commentPanelResizeIcon = createElement('div', { id: this.pdfViewer.element.id + '_commentPanel_resize', className: 'e-pv-resize-icon e-pv-icon' });\n this.setCommentPanelResizeIconTop();\n this.commentPanelResizeIcon.style.position = 'absolute';\n this.commentPanelResizer.appendChild(this.commentPanelResizeIcon);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.openAnnotationContextMenu = function (event) {\n /* eslint-disable */\n this.annotationMenuObj.open(event.clientY, event.clientX, event.currentTarget);\n /* eslint-enable */\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.createAnnotationContextMenu = function () {\n // eslint-disable-next-line max-len\n this.annotationContextMenu = [\n { text: this.pdfViewer.localeObj.getConstant('Export Annotations') },\n { text: this.pdfViewer.localeObj.getConstant('Import Annotations') },\n { text: this.pdfViewer.localeObj.getConstant('Export XFDF') },\n { text: this.pdfViewer.localeObj.getConstant('Import XFDF') }\n ];\n var annotationMenuElement = createElement('ul', { id: this.pdfViewer.element.id + '_annotation_context_menu' });\n this.pdfViewer.element.appendChild(annotationMenuElement);\n this.annotationMenuObj = new Context({\n target: '#' + this.pdfViewer.element.id + '_annotations_btn', items: this.annotationContextMenu,\n select: this.annotationMenuItemSelect.bind(this)\n });\n if (this.pdfViewer.enableRtl) {\n this.annotationMenuObj.enableRtl = true;\n }\n this.annotationMenuObj.appendTo(annotationMenuElement);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.annotationMenuObj.animationSettings.effect = 'ZoomIn';\n }\n else {\n this.annotationMenuObj.animationSettings.effect = 'SlideDown';\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.annotationMenuItemSelect = function (args) {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n if (args.item) {\n switch (args.item.text) {\n case this.pdfViewer.localeObj.getConstant('Export Annotations'):\n this.pdfViewerBase.exportAnnotations(AnnotationDataFormat.Json);\n break;\n case this.pdfViewer.localeObj.getConstant('Import Annotations'):\n this.importAnnotationIconClick(args);\n break;\n case this.pdfViewer.localeObj.getConstant('Export XFDF'):\n this.pdfViewerBase.exportAnnotations(AnnotationDataFormat.Xfdf);\n break;\n case this.pdfViewer.localeObj.getConstant('Import XFDF'):\n this.importXFdfAnnotationIconClick(args);\n break;\n default:\n break;\n }\n }\n };\n NavigationPane.prototype.createFileElement = function (toolbarElement) {\n // eslint-disable-next-line max-len\n this.annotationInputElement = createElement('input', { id: this.pdfViewer.element.id + '_annotationUploadElement', styles: 'position:fixed; left:-100em', attrs: { 'type': 'file', 'aria-label': 'upload elements' } });\n this.annotationInputElement.setAttribute('accept', '.json');\n toolbarElement.appendChild(this.annotationInputElement);\n this.annotationInputElement.addEventListener('change', this.loadImportAnnotation);\n };\n NavigationPane.prototype.createXFdfFileElement = function (toolbarElement) {\n // eslint-disable-next-line max-len\n this.annotationXFdfInputElement = createElement('input', { id: this.pdfViewer.element.id + '_annotationXFdfUploadElement', styles: 'position:fixed; left:-100em', attrs: { 'type': 'file', 'aria-label': 'upload elements' } });\n this.annotationXFdfInputElement.setAttribute('accept', '.xfdf');\n toolbarElement.appendChild(this.annotationXFdfInputElement);\n this.annotationXFdfInputElement.addEventListener('change', this.loadImportAnnotation);\n };\n NavigationPane.prototype.importAnnotationIconClick = function (args) {\n this.annotationInputElement.click();\n };\n NavigationPane.prototype.importXFdfAnnotationIconClick = function (args) {\n this.annotationXFdfInputElement.click();\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.closeCommentPanelContainer = function () {\n var proxy = null;\n proxy = this;\n var viewerContainer = document.getElementById(this.pdfViewer.element.id + '_viewerContainer');\n var pageContainer = document.getElementById(this.pdfViewer.element.id + '_pageViewContainer');\n var commentPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentPanel) {\n commentPanel.style.display = 'none';\n if (proxy.commentPanelResizer) {\n proxy.commentPanelResizer.style.display = 'none';\n }\n if (viewerContainer) {\n if (this.pdfViewer.enableRtl) {\n viewerContainer.style.left = proxy.getViewerContainerRight() + 'px';\n }\n else {\n viewerContainer.style.right = proxy.getViewerContainerRight() + 'px';\n }\n // eslint-disable-next-line max-len\n viewerContainer.style.width = (proxy.pdfViewer.element.clientWidth - proxy.getViewerContainerLeft() - proxy.getViewerContainerRight()) + 'px';\n pageContainer.style.width = (proxy.pdfViewerBase.viewerContainer.offsetWidth - proxy.getViewerContainerScrollbarWidth()) + 'px';\n }\n if (proxy.pdfViewerBase) {\n proxy.pdfViewerBase.updateZoomValue();\n }\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.textMarkupAnnotationModule) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n if (Browser.isDevice && !isBlazor()) {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.element.style.display = 'block';\n if (this.pdfViewer.toolbarModule.annotationToolbarModule.propertyToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.propertyToolbar.element.style.display = 'block';\n }\n }\n }\n }\n };\n /**\n * @private\n * @param {string} option - The option.\n * @returns {void}\n */\n NavigationPane.prototype.createNavigationPaneMobile = function (option) {\n var _this = this;\n this.isNavigationToolbarVisible = true;\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_navigationToolbar', className: 'e-pv-nav-toolbar' });\n this.pdfViewerBase.viewerMainContainer.insertBefore(this.toolbarElement, this.pdfViewerBase.viewerContainer);\n var items;\n if (option === 'search') {\n var searchTemplate = '
';\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { template: searchTemplate },\n {\n prefixIcon: 'e-pv-search-icon e-pv-icon', id: this.pdfViewer.element.id + '_search_box-icon',\n click: function () {\n var iconElement = _this.pdfViewerBase.getElement('_search_box-icon').firstElementChild;\n if (iconElement.classList.contains('e-pv-search-close')) {\n _this.enableSearchItems(false);\n }\n _this.pdfViewer.textSearchModule.searchButtonClick(iconElement, _this.searchInput);\n }\n },\n {\n prefixIcon: 'e-pv-prev-search-icon e-pv-icon', id: this.pdfViewer.element.id + '_prev_occurrence',\n click: function (args) {\n _this.pdfViewer.textSearchModule.searchPrevious();\n }\n },\n {\n prefixIcon: 'e-pv-next-search-icon e-pv-icon', id: this.pdfViewer.element.id + '_next_occurrence',\n click: function (args) {\n _this.pdfViewer.textSearchModule.searchNext();\n }\n }\n ];\n }\n else {\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { text: this.pdfViewer.localeObj.getConstant('Bookmarks') }\n ];\n }\n this.toolbar = new Tool({ items: items, width: '', height: '', overflowMode: 'Popup' });\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.toolbarElement);\n if (option === 'search') {\n this.initiateSearchBox();\n }\n else {\n this.initiateBookmarks();\n }\n };\n NavigationPane.prototype.initiateSearchBox = function () {\n var _this = this;\n this.searchInput = this.pdfViewerBase.getElement('_search_input');\n this.pdfViewer.textSearchModule.searchBtn = this.pdfViewerBase.getElement('_search_box-icon').firstElementChild;\n this.searchInput.addEventListener('keyup', function (event) {\n _this.enableSearchItems(true);\n var searchString = _this.searchInput.value;\n if (event.which === 13) {\n _this.initiateTextSearch();\n }\n else {\n _this.pdfViewer.textSearchModule.resetVariables();\n }\n });\n this.pdfViewer.textSearchModule.searchInput = this.searchInput;\n this.setSearchInputWidth();\n this.enableSearchItems(false);\n this.searchInput.focus();\n };\n NavigationPane.prototype.enableSearchItems = function (isEnable) {\n if (!isBlazor()) {\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_prev_occurrence').parentElement, isEnable);\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_next_occurrence').parentElement, isEnable);\n }\n else {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableSearchItems', isEnable);\n }\n };\n NavigationPane.prototype.initiateBookmarks = function () {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewerBase.mobileScrollerContainer.style.display = 'none';\n // eslint-disable-next-line\n var mobileTool = document.querySelectorAll('.e-pv-mobile-annotation-toolbar');\n for (var i = 0; i < mobileTool.length; i++) {\n mobileTool[parseInt(i.toString(), 10)].style.display = 'none';\n }\n }\n // eslint-disable-next-line max-len\n var bookmarkContainer = createElement('div', { id: this.pdfViewer.element.id + '_bookmarks_container', className: 'e-pv-bookmark-container' });\n bookmarkContainer.style.width = '100%';\n bookmarkContainer.style.height = this.pdfViewerBase.viewerContainer.style.height;\n this.pdfViewerBase.getElement('_viewerMainContainer').appendChild(bookmarkContainer);\n this.pdfViewerBase.viewerContainer.style.display = 'none';\n this.isBookmarkListOpen = true;\n this.pdfViewer.bookmarkViewModule.renderBookmarkContentMobile();\n };\n NavigationPane.prototype.initiateTextSearch = function () {\n var inputString = this.searchInput.value;\n this.pdfViewer.textSearchModule.initiateSearch(inputString);\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.goBackToToolbar = function () {\n this.isNavigationToolbarVisible = false;\n if (isBlazor() && (!Browser.isDevice || this.pdfViewer.enableDesktopMode) || !isBlazor()) {\n this.pdfViewer.textSearchModule.cancelTextSearch();\n }\n this.searchInput = null;\n if (this.pdfViewer.bookmarkViewModule.childNavigateCount !== 0) {\n this.pdfViewer.bookmarkViewModule.bookmarkList.back();\n this.pdfViewer.bookmarkViewModule.childNavigateCount--;\n }\n else {\n if (this.toolbar != null) {\n this.toolbar.destroy();\n this.toolbar = null;\n }\n var bookmarkContainer = this.pdfViewerBase.getElement('_bookmarks_container');\n if (bookmarkContainer) {\n bookmarkContainer.parentElement.removeChild(bookmarkContainer);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewerBase.mobileScrollerContainer.style.display = '';\n }\n }\n if (this.toolbarElement && this.toolbarElement.parentElement != null) {\n this.toolbarElement.parentElement.removeChild(this.toolbarElement);\n }\n this.pdfViewerBase.viewerContainer.style.display = 'block';\n this.isBookmarkListOpen = false;\n if (!isBlazor()) {\n if (!this.pdfViewer.toolbar.annotationToolbarModule.isMobileAnnotEnabled) {\n this.pdfViewer.toolbarModule.showToolbar(true);\n }\n }\n else {\n this.pdfViewerBase.onWindowResize();\n }\n }\n };\n NavigationPane.prototype.setSearchInputWidth = function () {\n var searchInputParent = this.searchInput.parentElement;\n var padding = window.getComputedStyle(searchInputParent.parentElement, null).getPropertyValue('padding-left');\n if (isBlazor() && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n this.toolbarElement = this.pdfViewerBase.getElement('_navigationToolbar');\n }\n // eslint-disable-next-line max-len\n var width = this.toolbarElement.clientWidth - this.getParentElementSearchBox('_backward').clientWidth\n - this.getParentElementSearchBox('_search_box-icon').clientWidth - this.getParentElementSearchBox('_prev_occurrence').clientWidth\n - this.getParentElementSearchBox('_next_occurrence').clientWidth - 6;\n if (padding !== '') {\n width = width - (parseFloat(padding) * 2);\n }\n searchInputParent.style.width = width + 'px';\n };\n NavigationPane.prototype.getParentElementSearchBox = function (idString) {\n return this.pdfViewerBase.getElement(idString).parentElement;\n };\n /**\n * @private\n * @param {string} text - The text.\n * @returns {void}\n */\n NavigationPane.prototype.createTooltipMobile = function (text) {\n if (!this.isTooltipCreated) {\n //boolean to prevent again toast creation.\n this.createMobileTooltip(text);\n }\n else {\n if (this.toastObject) {\n this.toastObject.title = text;\n var tooltipElement = this.pdfViewerBase.getElement('_container_tooltip');\n var tooltipChild = tooltipElement.firstElementChild;\n if (tooltipChild) {\n tooltipChild.style.width = 'auto';\n tooltipChild.firstElementChild.firstElementChild.textContent = text;\n }\n else {\n this.isTooltipCreated = false;\n var tooltipElement_1 = this.pdfViewerBase.getElement('_container_tooltip');\n if (this.toastObject) {\n this.toastObject.destroy();\n }\n tooltipElement_1.parentElement.removeChild(tooltipElement_1);\n this.toastObject = null;\n this.createMobileTooltip(text);\n }\n }\n }\n };\n NavigationPane.prototype.createMobileTooltip = function (text) {\n // eslint-disable-next-line max-len\n var tooltipDiv = createElement('div', { className: 'e-pv-container-tooltip', id: this.pdfViewer.element.id + '_container_tooltip' });\n this.pdfViewer.element.appendChild(tooltipDiv);\n // eslint-disable-next-line max-len\n this.toastObject = new Toast({ title: text, target: this.pdfViewer.element, close: this.onTooltipClose.bind(this), position: { X: 0, Y: 0 }, animation: { hide: { duration: 200, effect: 'FadeOut' } } });\n this.toastObject.appendTo(tooltipDiv);\n var y = this.pdfViewer.element.clientHeight * 0.65;\n var x = (this.pdfViewer.element.clientWidth - tooltipDiv.clientWidth) / 2;\n this.isTooltipCreated = true;\n this.toastObject.show({ position: { X: x, Y: y } });\n var tooltipChild = tooltipDiv.firstElementChild;\n if (tooltipChild) {\n tooltipChild.style.width = 'auto';\n }\n };\n NavigationPane.prototype.onTooltipClose = function (args) {\n if (this.pdfViewer.textSearchModule) {\n this.isTooltipCreated = false;\n var tooltipElement = this.pdfViewerBase.getElement('_container_tooltip');\n this.pdfViewer.textSearchModule.isMessagePopupOpened = false;\n if (this.toastObject) {\n this.toastObject.destroy();\n }\n tooltipElement.parentElement.removeChild(tooltipElement);\n this.toastObject = null;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.toolbarResize = function () {\n if (this.searchInput) {\n this.searchInput.style.width = 'auto';\n this.setSearchInputWidth();\n }\n };\n NavigationPane.prototype.createSidebarToolBar = function () {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n this.thumbnailButton = createElement('button', { id: this.pdfViewer.element.id + '_thumbnail-view', attrs: { 'disabled': 'disabled', 'aria-label': 'Page Thumbnails', 'tabindex': '-1' } });\n this.thumbnailButton.className = 'e-pv-tbar-btn e-pv-thumbnail-view-button e-btn';\n this.thumbnailButton.setAttribute('type', 'button');\n // eslint-disable-next-line max-len\n var thumbnailButtonSpan = createElement('span', { id: this.pdfViewer.element.id + '_thumbnail-view' + '_icon', className: 'e-pv-thumbnail-view-disable-icon e-pv-icon' });\n this.thumbnailButton.appendChild(thumbnailButtonSpan);\n // eslint-disable-next-line max-len\n var thumbnailTooltip = new Tooltip({ content: initializeCSPTemplate(function () { return this.pdfViewer.localeObj.getConstant('Page Thumbnails'); }, this), opensOn: 'Hover', beforeOpen: this.onTooltipBeforeOpen.bind(this) });\n thumbnailTooltip.appendTo(this.thumbnailButton);\n // eslint-disable-next-line max-len\n this.bookmarkButton = createElement('button', { id: this.pdfViewer.element.id + '_bookmark', attrs: { 'disabled': 'disabled', 'aria-label': 'Bookmarks', 'tabindex': '-1' } });\n this.bookmarkButton.setAttribute('type', 'button');\n this.bookmarkButton.className = 'e-pv-tbar-btn e-pv-bookmark-button e-btn';\n // eslint-disable-next-line max-len\n var buttonSpan = createElement('span', { id: this.pdfViewer.element.id + '_bookmark' + '_icon', className: 'e-pv-bookmark-disable-icon e-pv-icon' });\n this.bookmarkButton.appendChild(buttonSpan);\n // eslint-disable-next-line max-len\n var bookMarkTooltip = new Tooltip({ content: initializeCSPTemplate(function () { return this.pdfViewer.localeObj.getConstant('Bookmarks'); }, this), opensOn: 'Hover', beforeOpen: this.onTooltipBeforeOpen.bind(this) });\n bookMarkTooltip.appendTo(this.bookmarkButton);\n this.sideBarToolbar.appendChild(this.thumbnailButton);\n this.sideBarToolbar.appendChild(this.bookmarkButton);\n }\n else {\n this.thumbnailButton = this.pdfViewer.element.querySelector('.e-pv-thumbnail-view-button');\n this.bookmarkButton = this.pdfViewer.element.querySelector('.e-pv-bookmark-button');\n }\n this.thumbnailButton.addEventListener('click', this.sideToolbarOnClick);\n this.bookmarkButton.addEventListener('click', this.bookmarkButtonOnClick);\n };\n NavigationPane.prototype.onTooltipBeforeOpen = function (args) {\n if (!this.pdfViewer.toolbarSettings.showTooltip) {\n args.cancel = true;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.enableThumbnailButton = function () {\n if (this.thumbnailButton) {\n this.thumbnailButton.removeAttribute('disabled');\n this.thumbnailButton.children[0].classList.remove('e-pv-thumbnail-view-disable-icon');\n this.thumbnailButton.children[0].classList.add('e-pv-thumbnail-view-icon');\n this.thumbnailButton.setAttribute('tabindex', '0');\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.enableBookmarkButton = function () {\n if (this.bookmarkButton) {\n this.bookmarkButton.removeAttribute('disabled');\n this.bookmarkButton.children[0].classList.remove('e-pv-bookmark-disable-icon');\n this.bookmarkButton.children[0].classList.add('e-pv-bookmark-icon');\n this.bookmarkButton.setAttribute('tabindex', '0');\n }\n };\n NavigationPane.prototype.createSidebarTitleCloseButton = function () {\n this.closeDiv = createElement('button', { id: this.pdfViewer.element.id + '_close_btn' });\n this.closeDiv.setAttribute('aria-label', 'close button');\n this.closeDiv.setAttribute('type', 'button');\n this.closeDiv.className = 'e-btn e-pv-tbar-btn e-pv-title-close-div e-btn';\n if (this.pdfViewer.enableRtl) {\n this.closeDiv.style.left = 8 + 'px';\n }\n else {\n this.closeDiv.style.left = this.closeButtonLeft + 'px';\n }\n // eslint-disable-next-line max-len\n var buttonSpan = createElement('span', { id: this.pdfViewer.element.id + '_close' + '_icon', className: 'e-pv-title-close-icon e-pv-icon' });\n this.closeDiv.appendChild(buttonSpan);\n this.sideBarTitleContainer.appendChild(this.closeDiv);\n this.closeDiv.addEventListener('click', this.sideToolbarOnClose);\n };\n NavigationPane.prototype.createResizeIcon = function () {\n // eslint-disable-next-line max-len\n this.resizeIcon = createElement('div', { id: this.pdfViewer.element.id + '_resize', className: 'e-pv-resize-icon e-pv-icon' });\n this.setResizeIconTop();\n this.resizeIcon.style.position = 'absolute';\n this.resizeIcon.addEventListener('click', this.sideToolbarOnClose);\n this.resizeIcon.addEventListener('mouseover', this.resizeIconMouseOver);\n this.sideBarResizer.appendChild(this.resizeIcon);\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.setResizeIconTop = function () {\n // eslint-disable-next-line max-len\n if (this.sideBarToolbar && this.sideBarToolbar.clientHeight && this.resizeIcon.style.top === '') {\n this.resizeIcon.style.top = (this.sideBarToolbar.clientHeight) / 2 + 'px';\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.setCommentPanelResizeIconTop = function () {\n // eslint-disable-next-line max-len\n if (this.commentPanelContainer && this.commentPanelContainer.clientHeight && this.commentPanelResizeIcon && this.commentPanelResizeIcon.style.top === '') {\n this.commentPanelResizeIcon.style.top = (this.commentPanelContainer.clientHeight) / 2 + 'px';\n }\n };\n Object.defineProperty(NavigationPane.prototype, \"outerContainerWidth\", {\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n get: function () {\n if (!this.mainContainerWidth) {\n this.mainContainerWidth = this.pdfViewerBase.mainContainer.clientWidth;\n }\n return this.mainContainerWidth;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n NavigationPane.prototype.getViewerContainerScrollbarWidth = function () {\n // eslint-disable-next-line max-len\n return (this.pdfViewerBase.viewerContainer.offsetWidth + this.pdfViewerBase.viewerContainer.offsetLeft) - (this.pdfViewerBase.viewerContainer.clientWidth + this.pdfViewerBase.viewerContainer.offsetLeft);\n };\n Object.defineProperty(NavigationPane.prototype, \"sideToolbarWidth\", {\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n get: function () {\n if (this.sideBarToolbar) {\n return this.sideBarToolbar.clientWidth;\n }\n else {\n return 0;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigationPane.prototype, \"sideBarContentContainerWidth\", {\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n get: function () {\n if (this.sideBarContentContainer) {\n return this.sideBarContentContainer.clientWidth;\n }\n else {\n return 0;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigationPane.prototype, \"commentPanelContainerWidth\", {\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n get: function () {\n if (this.commentPanelContainer) {\n return this.commentPanelContainer.offsetWidth;\n }\n else {\n return 0;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.updateViewerContainerOnClose = function () {\n var proxy = null;\n proxy = this;\n if (proxy.sideBarContentContainer) {\n proxy.sideBarContentContainer.style.display = 'none';\n if (this.pdfViewer.enableRtl) {\n proxy.pdfViewerBase.viewerContainer.style.right = (proxy.sideToolbarWidth) + 'px';\n }\n else {\n proxy.pdfViewerBase.viewerContainer.style.left = (proxy.sideToolbarWidth) + 'px';\n }\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.width = (proxy.pdfViewer.element.clientWidth - proxy.sideToolbarWidth - proxy.getViewerContainerRight()) + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.pageContainer.style.width = (proxy.pdfViewerBase.viewerContainer.offsetWidth - proxy.getViewerContainerScrollbarWidth()) + 'px';\n if (this.restrictUpdateZoomValue) {\n proxy.pdfViewerBase.updateZoomValue();\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.updateViewerContainerOnExpand = function () {\n var proxy = null;\n proxy = this;\n if (proxy.sideBarContentContainer) {\n proxy.sideBarContentContainer.style.display = 'block';\n if (this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerLeft() + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerLeft() + 'px';\n }\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.width = (proxy.pdfViewer.element.clientWidth - this.getViewerContainerLeft() - this.getViewerContainerRight()) + 'px';\n proxy.pdfViewerBase.pageContainer.style.width = proxy.pdfViewerBase.viewerContainer.clientWidth + 'px';\n proxy.pdfViewerBase.updateZoomValue();\n if (proxy.pdfViewer.enableThumbnail) {\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.pdfViewerBase.currentPageNumber - 1);\n proxy.pdfViewer.thumbnailViewModule.renderViewPortThumbnailImage();\n }\n }\n };\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n NavigationPane.prototype.getViewerContainerLeft = function () {\n if (this.sideToolbarWidth) {\n return (this.sideToolbarWidth + this.sideBarContentContainerWidth);\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n NavigationPane.prototype.getViewerContainerRight = function () {\n if (this.commentPanelResizer) {\n return (this.commentPanelContainerWidth + this.commentPanelResizer.clientWidth);\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n NavigationPane.prototype.getViewerMainContainerWidth = function () {\n return this.pdfViewer.element.clientWidth - this.sideToolbarWidth;\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.setThumbnailSelectionIconTheme = function () {\n if (this.thumbnailButton) {\n this.thumbnailButton.children[0].classList.remove('e-pv-thumbnail-view-icon');\n this.thumbnailButton.children[0].classList.add('e-pv-thumbnail-view-selection-icon');\n this.thumbnailButton.classList.add('e-pv-thumbnail-view-button-selection');\n }\n };\n NavigationPane.prototype.removeThumbnailSelectionIconTheme = function () {\n if (this.thumbnailButton && this.thumbnailButton.children[0]) {\n this.thumbnailButton.children[0].classList.add('e-pv-thumbnail-view-icon');\n this.thumbnailButton.children[0].classList.remove('e-pv-thumbnail-view-selection-icon');\n this.thumbnailButton.classList.remove('e-pv-thumbnail-view-button-selection');\n }\n };\n NavigationPane.prototype.resetThumbnailIcon = function () {\n if (this.thumbnailButton && this.thumbnailButton.children[0]) {\n this.thumbnailButton.children[0].classList.remove('e-pv-thumbnail-view-icon');\n this.thumbnailButton.children[0].classList.add('e-pv-thumbnail-view-disable-icon');\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.resetThumbnailView = function () {\n if (this.sideBarContentContainer) {\n this.sideBarContentContainer.style.display = 'none';\n if (this.pdfViewer.enableRtl) {\n this.pdfViewerBase.viewerContainer.style.left = 1 + 'px';\n }\n else {\n this.pdfViewerBase.viewerContainer.style.left = (this.sideToolbarWidth) + 'px';\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.width = (this.pdfViewer.element.clientWidth - this.sideToolbarWidth - this.getViewerContainerRight()) + 'px';\n if (this.pdfViewerBase.pageContainer) {\n this.pdfViewerBase.pageContainer.style.width = this.pdfViewerBase.viewerContainer.clientWidth + 'px';\n }\n this.thumbnailButton.setAttribute('disabled', 'disabled');\n this.removeThumbnailSelectionIconTheme();\n this.resetThumbnailIcon();\n }\n };\n NavigationPane.prototype.setBookmarkSelectionIconTheme = function () {\n if (this.bookmarkButton) {\n this.bookmarkButton.children[0].classList.remove('e-pv-bookmark-icon');\n this.bookmarkButton.children[0].classList.add('e-pv-bookmark-selection-icon');\n this.bookmarkButton.classList.add('e-pv-bookmark-button-selection');\n }\n };\n NavigationPane.prototype.removeBookmarkSelectionIconTheme = function () {\n if (this.bookmarkButton && this.bookmarkButton.children[0]) {\n this.bookmarkButton.children[0].classList.add('e-pv-bookmark-icon');\n this.bookmarkButton.children[0].classList.remove('e-pv-bookmark-selection-icon');\n this.bookmarkButton.classList.remove('e-pv-bookmark-button-selection');\n }\n };\n NavigationPane.prototype.sideToolbarOnMouseup = function (event) {\n if (event.target === this.sideBarToolbar) {\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n NavigationPane.prototype.sideBarTitleOnMouseup = function (event) {\n this.pdfViewerBase.focusViewerContainer();\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.openBookmarkcontentInitially = function () {\n var proxy = null;\n proxy = this;\n if (document.getElementById(this.pdfViewer.element.id + '_thumbnail_view')) {\n document.getElementById(this.pdfViewer.element.id + '_thumbnail_view').style.display = 'none';\n }\n this.removeThumbnailSelectionIconTheme();\n this.sideBarTitle.textContent = this.pdfViewer.localeObj.getConstant('Bookmarks');\n this.sideBarContent.setAttribute('aria-label', 'Bookmark View Panel');\n this.pdfViewer.bookmarkViewModule.renderBookmarkcontent();\n if (this.sideBarContentContainer) {\n if (proxy.sideBarContentContainer.style.display !== 'none') {\n if (this.isThumbnailOpen) {\n this.setBookmarkSelectionIconTheme();\n this.isBookmarkOpen = true;\n this.updateViewerContainerOnExpand();\n }\n else {\n this.removeBookmarkSelectionIconTheme();\n this.isBookmarkOpen = false;\n this.updateViewerContainerOnClose();\n }\n }\n else {\n this.sideBarContent.focus();\n this.setBookmarkSelectionIconTheme();\n this.isBookmarkOpen = true;\n this.updateViewerContainerOnExpand();\n }\n }\n this.isThumbnailOpen = false;\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.disableBookmarkButton = function () {\n if (this.sideBarContentContainer && this.bookmarkButton && this.bookmarkButton.children[0]) {\n // this.sideBarContentContainer.style.display = 'none';\n var bookmarkContent = this.pdfViewer.element.querySelector('.e-pv-bookmark-view');\n if (bookmarkContent) {\n bookmarkContent.style.display = 'none';\n }\n this.bookmarkButton.setAttribute('disabled', 'disabled');\n this.bookmarkButton.children[0].classList.add('e-pv-bookmark-disable-icon');\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.calculateCommentPanelWidth = function () {\n var commentTitleCollections = document.getElementsByClassName(\"e-pv-comment-title\");\n var commentTitleMoreIconCollections = document.getElementsByClassName(\"e-pv-more-options-button e-btn\");\n for (var i = 0; i < commentTitleCollections.length; i++) {\n var commentTitleElement = commentTitleCollections[parseInt(i.toString(), 10)];\n var moreIconElement = commentTitleMoreIconCollections[parseInt(i.toString(), 10)];\n commentTitleElement.style.maxWidth = (commentTitleElement.parentElement.clientWidth - moreIconElement.clientWidth) + \"px\";\n }\n var replyTitleCollections = document.getElementsByClassName(\"e-pv-reply-title\");\n var replyTitleMoreIconCollections = document.getElementsByClassName(\"e-pv-more-options-button e-btn\");\n for (var j = 0; j < replyTitleCollections.length; j++) {\n var replyTitleElement = replyTitleCollections[parseInt(j.toString(), 10)];\n var elementOfMoreIcon = replyTitleMoreIconCollections[parseInt(j.toString(), 10)];\n replyTitleElement.style.maxWidth = (replyTitleElement.parentElement.clientWidth - elementOfMoreIcon.clientWidth) + \"px\";\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.clear = function () {\n if (!Browser.isDevice) {\n this.removeBookmarkSelectionIconTheme();\n this.removeThumbnailSelectionIconTheme();\n this.closeCommentPanelContainer();\n }\n if (this.commentsContentContainer) {\n this.commentsContentContainer.innerHTML = '';\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.destroy = function () {\n var bookmarkButtonInstance = this.bookmarkButton;\n var thumbnailButtonInstance = this.thumbnailButton;\n if (bookmarkButtonInstance && bookmarkButtonInstance.ej2_instances && bookmarkButtonInstance.ej2_instances.length > 0) {\n bookmarkButtonInstance.ej2_instances[0].destroy();\n }\n if (thumbnailButtonInstance && thumbnailButtonInstance.ej2_instances && thumbnailButtonInstance.ej2_instances.length > 0) {\n thumbnailButtonInstance.ej2_instances[0].destroy();\n }\n if (this.annotationMenuObj) {\n var annotationMenuElement = this.annotationMenuObj.element;\n annotationMenuElement && annotationMenuElement.ej2_instances && annotationMenuElement.ej2_instances.length > 0 ? this.annotationMenuObj.destroy() : null;\n }\n };\n /**\n * @returns {string} - Returns the string.\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'NavigationPane';\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","/**\n * @hidden\n */\nvar AjaxHandler = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n * @param {PdfViewer} pdfviewer - The pdfviewer.\n * @private\n */\n function AjaxHandler(pdfviewer) {\n /**\n * Specifies the URL to which request to be sent.\n *\n * @default 'POST'\n */\n this.type = 'POST';\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n * @private\n */\n this.mode = true;\n /**\n * Specifies the ContentType to which request to be sent\n *\n * @default null\n * @private\n */\n this.contentType = 'application/json;charset=UTF-8';\n this.retryTimeout = 0;\n this.pdfViewer = pdfviewer;\n this.retryCount = pdfviewer.retryCount;\n this.retryStatusCodes = pdfviewer.retryStatusCodes;\n this.retryTimeout = 1000 * pdfviewer.retryTimeout;\n }\n /**\n * Send the request to server\n *\n * @param {object} jsonObj - To send to service\n * @returns {void}\n * @private\n */\n AjaxHandler.prototype.send = function (jsonObj) {\n var _this = this;\n this.httpRequest = new XMLHttpRequest();\n this.httpRequest.timeout = this.retryTimeout;\n if (!this.mode) {\n setTimeout(function () {\n _this.sendRequest(jsonObj);\n });\n }\n else {\n this.sendRequest(jsonObj);\n }\n this.httpRequest.onreadystatechange = function () {\n var isSkip = false;\n // eslint-disable-next-line\n var viewerBase = _this.pdfViewer.viewerBase;\n if (viewerBase && viewerBase.isPasswordAvailable && viewerBase.passwordData === '') {\n isSkip = true;\n _this.retryCount = 0;\n }\n if (_this.retryCount > 0) {\n isSkip = _this.resendRequest(_this, jsonObj, false);\n }\n if (!isSkip) {\n _this.stateChange(_this);\n }\n };\n this.httpRequest.ontimeout = function () {\n var isSkip = false;\n // tslint:disable-next-line\n var viewerBase = _this.pdfViewer.viewerBase;\n if (viewerBase && viewerBase.isPasswordAvailable && viewerBase.passwordData === '') {\n isSkip = true;\n _this.retryCount = 0;\n }\n if (_this.retryCount > 0) {\n isSkip = _this.resendRequest(_this, jsonObj, true);\n }\n if (!isSkip) {\n _this.stateChange(_this);\n }\n };\n this.httpRequest.onerror = function () {\n _this.error(_this);\n };\n };\n /**\n * Clear the http request\n * @returns {void}\n * @private\n */\n AjaxHandler.prototype.clear = function () {\n this.httpRequest && this.httpRequest.abort();\n this.onSuccess = null;\n this.onFailure = null;\n this.onError = null;\n };\n // eslint-disable-next-line\n AjaxHandler.prototype.resendRequest = function (proxy, jsonObj, isTimeout) {\n var isSkip = false;\n var status = proxy.httpRequest.status;\n var statusString = this.retryStatusCodes.indexOf(status) !== -1;\n if (proxy.httpRequest.readyState === 4 && status === 200) {\n // eslint-disable-next-line\n var data = void 0;\n if (this.responseType !== null) {\n data = proxy.httpRequest.response;\n }\n else {\n data = proxy.httpRequest.responseText;\n }\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // eslint-disable-next-line max-len\n if (data === 'Document stream does not exist in the cache' || data === 'Document Reference pointer does not exist in the cache') {\n isSkip = true;\n }\n }\n }\n }\n }\n if (statusString || isSkip || isTimeout) {\n isSkip = true;\n this.retryCount--;\n proxy.pdfViewer.fireAjaxRequestFailed(status, proxy.httpRequest.statusText, jsonObj.action, true);\n proxy.send(jsonObj);\n }\n return isSkip;\n };\n AjaxHandler.prototype.sendRequest = function (jsonObj) {\n /* eslint-disable */\n this.httpRequest.open(this.type, this.url, this.mode);\n /* eslint-enable */\n this.httpRequest.withCredentials = this.pdfViewer.ajaxRequestSettings.withCredentials;\n this.httpRequest.setRequestHeader('Content-Type', this.contentType);\n jsonObj = this.addExtraData(jsonObj);\n this.setCustomAjaxHeaders();\n if (this.responseType !== null) {\n this.httpRequest.responseType = this.responseType;\n }\n this.httpRequest.send(JSON.stringify(jsonObj)); // jshint ignore:line\n };\n AjaxHandler.prototype.addExtraData = function (jsonObject) {\n this.pdfViewer.viewerBase.ajaxData = '';\n this.pdfViewer.fireAjaxRequestInitiate(jsonObject);\n if (this.pdfViewer.viewerBase.ajaxData && this.pdfViewer.viewerBase.ajaxData !== '') {\n jsonObject = this.pdfViewer.viewerBase.ajaxData;\n }\n return jsonObject;\n };\n AjaxHandler.prototype.stateChange = function (proxy) {\n var status = proxy.httpRequest.status;\n var statusString = status.toString().split('')[0];\n if (proxy.httpRequest.readyState === 4 && status === 200) {\n // eslint-disable-next-line\n var data = void 0;\n if (this.responseType !== null) {\n data = proxy.httpRequest.response;\n }\n else {\n data = proxy.httpRequest.responseText;\n }\n // eslint-disable-next-line\n var result = {\n name: 'onSuccess',\n data: data,\n readyState: proxy.httpRequest.readyState,\n status: proxy.httpRequest.status\n };\n proxy.successHandler(result);\n }\n else if (proxy.httpRequest.readyState === 4 && (statusString === '4' || statusString === '5')) { // jshint ignore:line)\n // For handling 4xx and 5xx errors.\n // eslint-disable-next-line\n var result = {\n name: 'onFailure',\n status: proxy.httpRequest.status,\n statusText: proxy.httpRequest.statusText\n };\n proxy.failureHandler(result);\n }\n };\n AjaxHandler.prototype.error = function (proxy) {\n // eslint-disable-next-line\n var result = {\n name: 'onError',\n status: this.httpRequest.status,\n statusText: this.httpRequest.statusText\n };\n proxy.errorHandler(result);\n };\n // eslint-disable-next-line\n AjaxHandler.prototype.successHandler = function (response) {\n if (this.onSuccess) {\n this.onSuccess(response);\n }\n return response;\n };\n // eslint-disable-next-line\n AjaxHandler.prototype.failureHandler = function (response) {\n if (this.onFailure) {\n this.onFailure(response);\n }\n return response;\n };\n // eslint-disable-next-line\n AjaxHandler.prototype.errorHandler = function (response) {\n if (this.onError) {\n this.onError(response);\n }\n return response;\n };\n AjaxHandler.prototype.setCustomAjaxHeaders = function () {\n for (var i = 0; i < this.pdfViewer.ajaxRequestSettings.ajaxHeaders.length; i++) {\n // eslint-disable-next-line max-len\n this.httpRequest.setRequestHeader(this.pdfViewer.ajaxRequestSettings.ajaxHeaders[parseInt(i.toString(), 10)].headerName, this.pdfViewer.ajaxRequestSettings.ajaxHeaders[parseInt(i.toString(), 10)].headerValue);\n }\n };\n return AjaxHandler;\n}());\nexport { AjaxHandler };\n","/**\n * Rect defines and processes rectangular regions\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n /**\n * Sets the x-coordinate of the starting point of a rectangular region\n * @default 0\n */\n this.x = Number.MAX_VALUE;\n /**\n * Sets the y-coordinate of the starting point of a rectangular region\n * @default 0\n */\n this.y = Number.MAX_VALUE;\n /**\n * Sets the width of a rectangular region\n * @default 0\n */\n this.width = 0;\n /**\n * Sets the height of a rectangular region\n * @default 0\n */\n this.height = 0;\n if (x === undefined || y === undefined) {\n x = y = Number.MAX_VALUE;\n width = height = 0;\n }\n else {\n if (width === undefined) {\n width = 0;\n }\n if (height === undefined) {\n height = 0;\n }\n }\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n Object.defineProperty(Rect.prototype, \"left\", {\n /** @private */\n get: function () {\n return this.x;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"right\", {\n /** @private */\n get: function () {\n return this.x + this.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"top\", {\n /** @private */\n get: function () {\n return this.y;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"bottom\", {\n /** @private */\n get: function () {\n return this.y + this.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"topLeft\", {\n /** @private */\n get: function () {\n return { x: this.left, y: this.top };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"topRight\", {\n /** @private */\n get: function () {\n return { x: this.right, y: this.top };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"bottomLeft\", {\n /** @private */\n get: function () {\n return { x: this.left, y: this.bottom };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"bottomRight\", {\n /** @private */\n get: function () {\n return { x: this.right, y: this.bottom };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"middleLeft\", {\n /** @private */\n get: function () {\n return { x: this.left, y: this.y + this.height / 2 };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"middleRight\", {\n /** @private */\n get: function () {\n return { x: this.right, y: this.y + this.height / 2 };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"topCenter\", {\n /** @private */\n get: function () {\n return { x: this.x + this.width / 2, y: this.top };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"bottomCenter\", {\n /** @private */\n get: function () {\n return { x: this.x + this.width / 2, y: this.bottom };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"center\", {\n /** @private */\n get: function () {\n return { x: this.x + this.width / 2, y: this.y + this.height / 2 };\n },\n enumerable: true,\n configurable: true\n });\n /** @private */\n Rect.prototype.equals = function (rect1, rect2) {\n return rect1.x === rect2.x && rect1.y === rect2.y && rect1.width === rect2.width && rect1.height === rect2.height;\n };\n /** @private */\n Rect.prototype.uniteRect = function (rect) {\n var right = Math.max(Number.NaN === this.right || this.x === Number.MAX_VALUE ? rect.right : this.right, rect.right);\n var bottom = Math.max(Number.NaN === this.bottom || this.y === Number.MAX_VALUE ? rect.bottom : this.bottom, rect.bottom);\n this.x = Math.min(this.left, rect.left);\n this.y = Math.min(this.top, rect.top);\n this.width = right - this.x;\n this.height = bottom - this.y;\n return this;\n };\n /** @private */\n Rect.prototype.unitePoint = function (point) {\n if (this.x === Number.MAX_VALUE) {\n this.x = point.x;\n this.y = point.y;\n return;\n }\n var x = Math.min(this.left, point.x);\n var y = Math.min(this.top, point.y);\n var right = Math.max(this.right, point.x);\n var bottom = Math.max(this.bottom, point.y);\n this.x = x;\n this.y = y;\n this.width = right - this.x;\n this.height = bottom - this.y;\n };\n Rect.prototype.intersection = function (rect) {\n if (this.intersects(rect)) {\n var left = Math.max(this.left, rect.left);\n var top_1 = Math.max(this.top, rect.top);\n var right = Math.min(this.right, rect.right);\n var bottom = Math.min(this.bottom, rect.bottom);\n return new Rect(left, top_1, right - left, bottom - top_1);\n }\n return Rect.empty;\n };\n /** @private */\n Rect.prototype.Inflate = function (padding) {\n this.x -= padding;\n this.y -= padding;\n this.width += padding * 2;\n this.height += padding * 2;\n return this;\n };\n // public Inflate(size: Size): Rect {\n // this.x -= size.Width;\n // this.y -= size.Height;\n // this.width += size.Width * 2;\n // this.height += size.Height * 2;\n // return this;\n // }\n // public inflate(width: number, height: number): void {\n // this.x -= width;\n // this.y -= height;\n // this.width += width * 2;\n // this.height += height * 2;\n // }\n /** @private */\n Rect.prototype.intersects = function (rect) {\n if (this.right < rect.left || this.left > rect.right || this.top > rect.bottom || this.bottom < rect.top) {\n return false;\n }\n return true;\n };\n /** @private */\n Rect.prototype.containsRect = function (rect) {\n return this.left <= rect.left && this.right >= rect.right && this.top <= rect.top && this.bottom >= rect.bottom;\n };\n /** @private */\n Rect.prototype.containsPoint = function (point, padding) {\n if (padding === void 0) { padding = 0; }\n return this.left - padding <= point.x && this.right + padding >= point.x\n && this.top - padding <= point.y && this.bottom + padding >= point.y;\n };\n Rect.prototype.toPoints = function () {\n var points = [];\n points.push(this.topLeft);\n points.push(this.topRight);\n points.push(this.bottomLeft);\n points.push(this.bottomRight);\n return points;\n };\n /** @private */\n Rect.toBounds = function (points) {\n var rect = new Rect();\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var pt = points_1[_i];\n rect.unitePoint(pt);\n }\n return rect;\n };\n Rect.prototype.scale = function (scaleX, scaleY) {\n this.width *= scaleX;\n this.height *= scaleY;\n };\n Rect.prototype.offset = function (offsetX, offsetY) {\n this.x += offsetX;\n this.y += offsetY;\n };\n /** @private */\n Rect.empty = new Rect(Number.MAX_VALUE, Number.MIN_VALUE, 0, 0);\n return Rect;\n}());\nexport { Rect };\n","import { Rect } from '../primitives/rect';\nimport { Size } from '../primitives/size';\nimport { whiteSpaceToString, wordBreakToString, textAlignToString, bBoxText } from './base-util';\nimport { identityMatrix, transformPointByMatrix, rotateMatrix } from '../primitives/matrix';\nimport { createElement, Browser } from '@syncfusion/ej2-base';\n/**\n * Defines the functionalities that need to access DOM\n */\nexport function getChildNode(node) {\n var child;\n var collection = [];\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n for (var i = 0; i < node.childNodes.length; i++) {\n child = node.childNodes[parseInt(i.toString(), 10)];\n if (child.nodeType === 1) {\n collection.push(child);\n }\n }\n }\n else {\n collection = node.children;\n }\n return collection;\n}\nexport function translatePoints(element, points) {\n var translatedPts = [];\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n var pt1 = {\n x: element.offsetX - element.actualSize.width * element.pivot.x + point.x,\n y: element.offsetY - element.actualSize.height * element.pivot.y + point.y\n };\n var matrix = void 0;\n var angle = element.rotateAngle + element.parentTransform;\n if (angle) {\n matrix = identityMatrix();\n rotateMatrix(matrix, angle, element.offsetX, element.offsetY);\n }\n if (matrix) {\n pt1 = transformPointByMatrix(matrix, pt1);\n }\n translatedPts.push(pt1);\n }\n return translatedPts;\n}\n/** @private */\nexport function measurePath(data) {\n var path = 'pathTable';\n // eslint-disable-next-line\n if (!window[path]) {\n // eslint-disable-next-line\n window[path] = {};\n }\n if (data) {\n var measureElement = 'measureElement';\n // eslint-disable-next-line\n window[measureElement].style.visibility = 'visible';\n // eslint-disable-next-line\n var svg = window[measureElement].children[2];\n var element = getChildNode(svg)[0];\n element.setAttribute('d', data);\n //let bounds: SVGRect = element.getBBox();\n var bounds = void 0;\n // eslint-disable-next-line\n if (window[path][data]) {\n // eslint-disable-next-line\n bounds = window[path][data];\n }\n else {\n // eslint-disable-next-line\n window[path][data] = bounds = element.getBBox();\n if ((bounds.x === 0 || bounds.y === 0) && (bounds.width === 0 || bounds.height === 0)) {\n // eslint-disable-next-line\n window[path][data] = bounds = getBBox(data);\n }\n }\n var svgBounds = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n // eslint-disable-next-line\n window[measureElement].style.visibility = 'hidden';\n return svgBounds;\n }\n return new Rect(0, 0, 0, 0);\n}\n// tslint:disable-next-line\nfunction getBBox(path) {\n var xmin = 0;\n var xmax = 0;\n var ymin = 0;\n var ymax = 0;\n // tslint:disable-next-line\n var currentValue;\n // tslint:disable-next-line\n var currentpath = path;\n currentpath = currentpath.replace(/[a-z].*/g, ' ').replace(/[\\sA-Z]+/gi, ' ').trim().split(' ');\n for (var i = 0; i < currentpath.length; i++) {\n if (currentpath[parseInt(i.toString(), 10)].length > 1) {\n currentValue = currentpath[parseInt(i.toString(), 10)].split(',');\n xmin = xmax = currentValue[0];\n ymin = ymax = currentValue[1];\n }\n }\n for (var i = 0; i < currentpath.length; i++) {\n currentValue = currentpath[parseInt(i.toString(), 10)].split(',');\n if (!currentValue[1]) {\n currentValue[0] = xmin;\n currentValue[1] = ymin;\n }\n xmin = Math.min(xmin, currentValue[0]);\n xmax = Math.max(xmax, currentValue[0]);\n ymin = Math.min(ymin, currentValue[1]);\n ymax = Math.max(ymax, currentValue[1]);\n }\n return { x: xmin, y: ymin, width: xmax - xmin, height: ymax - ymin };\n}\nfunction getTextOptions(element, maxWidth) {\n var options = {\n fill: element.style.fill, stroke: element.style.strokeColor, angle: element.rotateAngle + element.parentTransform,\n pivotX: element.pivot.x, pivotY: element.pivot.y, strokeWidth: element.style.strokeWidth,\n dashArray: element.style.strokeDashArray, opacity: element.style.opacity,\n visible: element.visible, id: element.id,\n width: maxWidth || element.actualSize.width, height: element.actualSize.height,\n x: element.offsetX - element.actualSize.width * element.pivot.x + 0.5,\n y: element.offsetY - element.actualSize.height * element.pivot.y + 0.5\n };\n options.fontSize = element.style.fontSize;\n options.fontFamily = element.style.fontFamily;\n options.textOverflow = element.style.textOverflow;\n options.textDecoration = element.style.textDecoration;\n options.doWrap = element.doWrap;\n options.whiteSpace = whiteSpaceToString(element.style.whiteSpace, element.style.textWrapping);\n options.content = element.content;\n options.textWrapping = element.style.textWrapping;\n options.breakWord = wordBreakToString(element.style.textWrapping);\n options.textAlign = textAlignToString(element.style.textAlign);\n options.color = element.style.color;\n options.italic = element.style.italic;\n options.bold = element.style.bold;\n options.dashArray = '';\n options.strokeWidth = 0;\n options.fill = '';\n return options;\n}\nfunction wrapSvgText(text, textValue) {\n var childNodes = [];\n var k = 0;\n var txtValue;\n var bounds1;\n var content = textValue || text.content;\n if (text.whiteSpace !== 'nowrap' && text.whiteSpace !== 'pre') {\n if (text.breakWord === 'breakall') {\n txtValue = '';\n txtValue += content[0];\n for (k = 0; k < content.length; k++) {\n bounds1 = bBoxText(txtValue, text);\n if (bounds1 >= text.width && txtValue.length > 0) {\n childNodes[childNodes.length] = { text: txtValue, x: 0, dy: 0, width: bounds1 };\n txtValue = '';\n }\n else {\n txtValue = txtValue + (content[k + 1] || '');\n // if (txtValue.indexOf('\\n') > -1) {\n // txtValue = txtValue.replace('\\n', '');\n // }\n var width = bBoxText(txtValue, text);\n if ((Math.ceil(width) + 2 >= text.width && txtValue.length > 0) || (txtValue.indexOf('\\n') > -1)) {\n childNodes[childNodes.length] = { text: txtValue, x: 0, dy: 0, width: width };\n txtValue = '';\n }\n if (k === content.length - 1 && txtValue.length > 0) {\n childNodes[childNodes.length] = { text: txtValue, x: 0, dy: 0, width: width };\n txtValue = '';\n }\n }\n }\n }\n else {\n childNodes = wordWrapping(text, textValue);\n }\n }\n else {\n childNodes[childNodes.length] = { text: content, x: 0, dy: 0, width: bBoxText(content, text) };\n }\n return childNodes;\n}\nfunction wordWrapping(text, textValue) {\n var childNodes = [];\n var txtValue = '';\n var j = 0;\n var i = 0;\n var wrap = text.whiteSpace !== 'nowrap' ? true : false;\n var content = textValue || text.content;\n var bounds1;\n var eachLine = content.split('\\n');\n var txt;\n var words;\n var newText;\n var existingWidth;\n var existingText;\n for (j = 0; j < eachLine.length; j++) {\n txt = '';\n words = text.textWrapping !== 'NoWrap' ? eachLine[parseInt(j.toString(), 10)].split(' ') : eachLine;\n for (i = 0; i < words.length; i++) {\n bounds1 = bBoxText(words[parseInt(i.toString(), 10)], text);\n if (bounds1 > text.width && words[parseInt(i.toString(), 10)].length > 0 && text.textWrapping !== 'NoWrap') {\n if (eachLine.length > 1) {\n words[parseInt(i.toString(), 10)] = words[parseInt(i.toString(), 10)] + '\\n';\n }\n text.content = words[parseInt(i.toString(), 10)];\n childNodes = wrapText(text, txtValue, childNodes);\n }\n else {\n txtValue += (((i !== 0 || words.length === 1) && wrap && txtValue.length > 0) ? ' ' : '') + words[parseInt(i.toString(), 10)];\n newText = txtValue + (words[i + 1] || '');\n var width = bBoxText(newText, text);\n if (eachLine.length > 1 && i === words.length - 1) {\n txtValue = txtValue + '\\n';\n }\n if (Math.floor(width) > text.width - 2 && txtValue.length > 0) {\n textValue = txtValue;\n childNodes[childNodes.length] = {\n text: (txtValue.indexOf('\\n') === -1) ? txtValue + ' ' : textValue, x: 0, dy: 0,\n width: newText === txtValue ? width : (txtValue === existingText) ? existingWidth : bBoxText(txtValue, text)\n };\n txtValue = '';\n }\n else {\n if (i === words.length - 1) {\n childNodes[childNodes.length] = { text: txtValue, x: 0, dy: 0, width: width };\n txtValue = '';\n }\n }\n existingText = newText;\n existingWidth = width;\n }\n }\n }\n return childNodes;\n}\nfunction wrapText(txt, textValue, childNode) {\n var k = 0;\n var txtValue;\n var bounds1;\n var content = textValue || txt.content;\n txtValue = '';\n txtValue += content[0];\n for (k = 0; k < content.length; k++) {\n bounds1 = bBoxText(txtValue, txt);\n if (bounds1 >= txt.width && txtValue.length > 0) {\n childNode[childNode.length] = { text: txtValue, x: 0, dy: 0, width: bounds1 };\n txtValue = '';\n }\n else {\n txtValue = txtValue + (content[k + 1] || '');\n var width = bBoxText(txtValue, txt);\n if ((Math.ceil(width) + 2 >= txt.width && txtValue.length > 0) || (txtValue.indexOf('\\n') > -1)) {\n txtValue = txtValue.slice(0, -1);\n childNode[childNode.length] = { text: txtValue, x: 0, dy: 0, width: width };\n txtValue = content[k + 1] || '';\n }\n if (k === content.length - 1 && txtValue.length > 0) {\n childNode[childNode.length] = { text: txtValue, x: 0, dy: 0, width: width };\n txtValue = '';\n }\n }\n }\n return childNode;\n}\nfunction wrapSvgTextAlign(text, childNodes) {\n var wrapBounds = { x: 0, width: 0 };\n var k = 0;\n var txtWidth;\n var width;\n for (k = 0; k < childNodes.length; k++) {\n txtWidth = childNodes[parseInt(k.toString(), 10)].width;\n width = txtWidth;\n if (text.textAlign === 'left') {\n txtWidth = 0;\n }\n else if (text.textAlign === 'center') {\n if (txtWidth > text.width && (text.textOverflow === 'Ellipsis' || text.textOverflow === 'Clip')) {\n txtWidth = 0;\n }\n else {\n txtWidth = -txtWidth / 2;\n }\n }\n else if (text.textAlign === 'right') {\n txtWidth = -txtWidth;\n }\n else {\n txtWidth = childNodes.length > 1 ? 0 : -txtWidth / 2;\n }\n childNodes[parseInt(k.toString(), 10)].dy = text.fontSize * 1.2;\n childNodes[parseInt(k.toString(), 10)].x = txtWidth;\n if (!wrapBounds) {\n wrapBounds = {\n x: txtWidth,\n width: width\n };\n }\n else {\n wrapBounds.x = Math.min(wrapBounds.x, txtWidth);\n wrapBounds.width = Math.max(wrapBounds.width, width);\n }\n }\n return wrapBounds;\n}\n/** @private */\nexport function measureText(text, style, content, maxWidth, textValue) {\n var bounds = new Size(0, 0);\n var childNodes;\n var wrapBounds;\n var options = getTextOptions(text, maxWidth);\n text.childNodes = childNodes = wrapSvgText(options, textValue);\n text.wrapBounds = wrapBounds = wrapSvgTextAlign(options, childNodes);\n bounds.width = wrapBounds.width;\n if (text.wrapBounds.width >= maxWidth && options.textOverflow !== 'Wrap') {\n bounds.width = maxWidth;\n }\n bounds.height = childNodes.length * text.style.fontSize * 1.2;\n return bounds;\n}\n/** @private */\nexport function getDiagramElement(elementId, contentId) {\n var diagramElement;\n var element;\n if (contentId && (typeof document !== 'undefined')) {\n element = document.getElementById(contentId);\n }\n diagramElement = (element) ? element.querySelector('#' + elementId) : (typeof document !== 'undefined') ? document.getElementById(elementId) : null;\n return diagramElement;\n}\n/** @private */\nexport function createHtmlElement(elementType, attribute) {\n var element = createElement(elementType);\n setAttributeHtml(element, attribute);\n return element;\n}\n/** @private */\nexport function setAttributeHtml(element, attributes) {\n var keys = Object.keys(attributes);\n for (var i = 0; i < keys.length; i++) {\n element.setAttribute(keys[parseInt(i.toString(), 10)], attributes[keys[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @private\n */\nexport function getAdornerLayerSvg(diagramId, index) {\n var adornerLayerSvg = null;\n var diagramElement = getDiagramElement(diagramId + index + '_diagramAdornerLayer');\n var elementcoll;\n if (diagramElement) {\n elementcoll = diagramElement.getElementsByClassName('e-adorner-layer' + index);\n adornerLayerSvg = elementcoll[0];\n }\n return adornerLayerSvg;\n}\n/** @private */\nexport function getSelectorElement(diagramId, index) {\n var adornerLayer = null;\n var adornerSvg = getAdornerLayerSvg(diagramId, index);\n if (adornerSvg) {\n adornerLayer = adornerSvg.getElementById(diagramId + '_SelectorElement');\n }\n return adornerLayer;\n}\n/** @private */\nexport function createMeasureElements() {\n var measureElement = 'measureElement';\n // eslint-disable-next-line\n if (!window[measureElement]) {\n var divElement = createHtmlElement('div', {\n id: 'measureElement',\n style: 'visibility:hidden ; height: 0px ; width: 0px; overflow: hidden;'\n });\n var text = createHtmlElement('span', { 'style': 'display:inline-block ; line-height: normal' });\n divElement.appendChild(text);\n var imageElement = void 0;\n imageElement = createHtmlElement('img', {});\n divElement.appendChild(imageElement);\n if (typeof document !== 'undefined') {\n var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('xlink', 'http://www.w3.org/1999/xlink');\n divElement.appendChild(svg);\n var element = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svg.appendChild(element);\n var data = document.createTextNode('');\n var tSpan = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n svg.appendChild(tSpan);\n // eslint-disable-next-line\n window[measureElement] = divElement;\n // eslint-disable-next-line\n window[measureElement].usageCount = 1;\n document.body.appendChild(divElement);\n }\n }\n else {\n // eslint-disable-next-line\n window[measureElement].usageCount += 1;\n }\n}\n/** @private */\nexport function measureImage(source, contentSize) {\n var measureElement = 'measureElement';\n // eslint-disable-next-line\n window[measureElement].style.visibility = 'visible';\n // eslint-disable-next-line\n var imageElement = window[measureElement].children[1];\n imageElement.setAttribute('src', source);\n var bounds = imageElement.getBoundingClientRect();\n var width = bounds.width;\n var height = bounds.height;\n contentSize = new Size(width, height);\n // eslint-disable-next-line\n window[measureElement].style.visibility = 'hidden';\n return contentSize;\n}\n","import { Rect } from '../primitives/rect';\nimport { identityMatrix, transformPointByMatrix, rotateMatrix } from '../primitives/matrix';\nimport { getChildNode } from './dom-util';\nimport { Size } from '../primitives/size';\n/**\n * Implements the basic functionalities\n */\n/** @private */\nexport function randomId() {\n var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';\n var id = '';\n var num;\n for (var i = 0; i < 5; i++) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var count = new Uint16Array(1);\n // tslint:disable-next-line:no-any\n var intCrypto = window.msCrypto || window.crypto;\n num = intCrypto.getRandomValues(count)[0] % (chars.length - 1);\n }\n else {\n num = Math.floor(Math.random() * chars.length);\n }\n if (i === 0 && num < 10) {\n i--;\n continue;\n }\n id += chars.substring(num, num + 1);\n }\n return id;\n}\n/** @private */\nexport function cornersPointsBeforeRotation(ele) {\n var bounds = new Rect();\n var top = ele.offsetY - ele.actualSize.height * ele.pivot.y;\n var bottom = ele.offsetY + ele.actualSize.height * (1 - ele.pivot.y);\n var left = ele.offsetX - ele.actualSize.width * ele.pivot.x;\n var right = ele.offsetX + ele.actualSize.width * (1 - ele.pivot.x);\n var topLeft = { x: left, y: top };\n var topCenter = { x: (left + right) / 2, y: top };\n var topRight = { x: right, y: top };\n var middleLeft = { x: left, y: (top + bottom) / 2 };\n var middleRight = { x: right, y: (top + bottom) / 2 };\n var bottomLeft = { x: left, y: bottom };\n var bottomCenter = { x: (left + right) / 2, y: bottom };\n var bottomRight = { x: right, y: bottom };\n bounds = Rect.toBounds([topLeft, topRight, bottomLeft, bottomRight]);\n return bounds;\n}\n/** @private */\nexport function rotateSize(size, angle) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, 0, 0);\n var topLeft = transformPointByMatrix(matrix, { x: 0, y: 0 });\n var topRight = transformPointByMatrix(matrix, { x: size.width, y: 0 });\n var bottomLeft = transformPointByMatrix(matrix, { x: 0, y: size.height });\n var bottomRight = transformPointByMatrix(matrix, { x: size.width, y: size.height });\n var minX = Math.min(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x);\n var minY = Math.min(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y);\n var maxX = Math.max(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x);\n var maxY = Math.max(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y);\n return new Size(maxX - minX, maxY - minY);\n}\n/** @private */\nexport function getBounds(element) {\n var bounds = new Rect();\n var corners;\n corners = cornersPointsBeforeRotation(element);\n var middleLeft = corners.middleLeft;\n var topCenter = corners.topCenter;\n var bottomCenter = corners.bottomCenter;\n var middleRight = corners.middleRight;\n var topLeft = corners.topLeft;\n var topRight = corners.topRight;\n var bottomLeft = corners.bottomLeft;\n var bottomRight = corners.bottomRight;\n element.corners = {\n topLeft: topLeft, topCenter: topCenter, topRight: topRight, middleLeft: middleLeft,\n middleRight: middleRight, bottomLeft: bottomLeft, bottomCenter: bottomCenter, bottomRight: bottomRight\n };\n if (element.rotateAngle !== 0 || element.parentTransform !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, element.rotateAngle + element.parentTransform, element.offsetX, element.offsetY);\n element.corners.topLeft = topLeft = transformPointByMatrix(matrix, topLeft);\n element.corners.topCenter = topCenter = transformPointByMatrix(matrix, topCenter);\n element.corners.topRight = topRight = transformPointByMatrix(matrix, topRight);\n element.corners.middleLeft = middleLeft = transformPointByMatrix(matrix, middleLeft);\n element.corners.middleRight = middleRight = transformPointByMatrix(matrix, middleRight);\n element.corners.bottomLeft = bottomLeft = transformPointByMatrix(matrix, bottomLeft);\n element.corners.bottomCenter = bottomCenter = transformPointByMatrix(matrix, bottomCenter);\n element.corners.bottomRight = bottomRight = transformPointByMatrix(matrix, bottomRight);\n //Set corners based on rotate angle\n }\n bounds = Rect.toBounds([topLeft, topRight, bottomLeft, bottomRight]);\n element.corners.left = bounds.left;\n element.corners.right = bounds.right;\n element.corners.top = bounds.top;\n element.corners.bottom = bounds.bottom;\n element.corners.center = bounds.center;\n element.corners.width = bounds.width;\n element.corners.height = bounds.height;\n return bounds;\n}\n/** @private */\nexport function textAlignToString(value) {\n var state = '';\n switch (value) {\n case 'Center':\n state = 'center';\n break;\n case 'Left':\n state = 'left';\n break;\n case 'Right':\n state = 'right';\n break;\n }\n return state;\n}\n/** @private */\nexport function wordBreakToString(value) {\n var state = '';\n switch (value) {\n case 'Wrap':\n state = 'breakall';\n break;\n case 'NoWrap':\n state = 'keepall';\n break;\n case 'WrapWithOverflow':\n state = 'normal';\n break;\n case 'LineThrough':\n state = 'line-through';\n break;\n }\n return state;\n}\nexport function bBoxText(textContent, options) {\n var measureElement = 'measureElement';\n // eslint-disable-next-line\n window[measureElement].style.visibility = 'visible';\n // eslint-disable-next-line\n var svg = window[measureElement].children[2];\n var text = getChildNode(svg)[1];\n text.textContent = textContent;\n text.setAttribute('style', 'font-size:' + options.fontSize + 'px; font-family:'\n + options.fontFamily + ';font-weight:' + (options.bold ? 'bold' : 'normal'));\n var bBox = text.getBBox().width;\n // eslint-disable-next-line\n window[measureElement].style.visibility = 'hidden';\n return bBox;\n}\n/** @private */\nexport function middleElement(i, j) {\n var m = 0;\n m = (i + j) / 2;\n return m;\n}\n/** @private */\nexport function whiteSpaceToString(value, wrap) {\n if (wrap === 'NoWrap' && value === 'PreserveAll') {\n return 'pre';\n }\n var state = '';\n switch (value) {\n case 'CollapseAll':\n state = 'nowrap';\n break;\n case 'CollapseSpace':\n state = 'pre-line';\n break;\n case 'PreserveAll':\n state = 'pre-wrap';\n break;\n }\n return state;\n}\n/** @private */\nexport function rotatePoint(angle, pivotX, pivotY, point) {\n if (angle !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, pivotX, pivotY);\n return transformPointByMatrix(matrix, point);\n }\n return point;\n}\n/** @private */\nexport function getOffset(topLeft, obj) {\n var offX = topLeft.x + obj.desiredSize.width * obj.pivot.x;\n var offY = topLeft.y + obj.desiredSize.height * obj.pivot.y;\n return {\n x: offX, y: offY\n };\n}\n","import { RotateTransform, ElementAction } from '../../enum/enum';\nimport { Size } from '../../primitives/size';\nimport { Rect } from '../../primitives/rect';\nimport { getBounds } from '../../utility/base-util';\n/**\n * DiagramElement module defines the basic unit of diagram\n */\nvar DrawingElement = /** @class */ (function () {\n function DrawingElement() {\n /**\n * Sets/Gets the reference point of the element\n * ```html\n *
\n * ```\n * ```typescript\n * let stackPanel: StackPanel = new StackPanel();\n * stackPanel.offsetX = 300; stackPanel.offsetY = 200;\n * stackPanel.width = 100; stackPanel.height = 100;\n * stackPanel.style.fill = 'red';\n * stackPanel.pivot = { x: 0.5, y: 0.5 };\n * let diagram: Diagram = new Diagram({\n * ...\n * basicElements: [stackPanel],\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\n */\n this.pivot = { x: 0.5, y: 0.5 };\n this.rotateValue = { x: 0, y: 0, angle: 0 };\n /**\n * Sets or gets whether the content of the element needs to be measured\n */\n this.isDirt = true;\n /**\n * Sets/Gets the x-coordinate of the element\n */\n this.offsetX = 0;\n /**\n * Sets/Gets the y-coordinate of the element\n */\n this.offsetY = 0;\n /**\n * Set the corner of the element\n */\n this.cornerRadius = 0;\n /**\n * Sets/Gets the minimum height of the element\n */\n this.minHeight = undefined;\n /**\n * Sets/Gets the minimum width of the element\n */\n this.minWidth = undefined;\n /**\n * Sets/Gets the maximum width of the element\n */\n this.maxWidth = undefined;\n /**\n * Sets/Gets the maximum height of the element\n */\n this.maxHeight = undefined;\n /**\n * Sets/Gets the width of the element\n */\n this.width = undefined;\n /**\n * Sets/Gets the height of the element\n */\n this.height = undefined;\n /**\n * Sets/Gets how the element has to be horizontally arranged with respect to its immediate parent\n * * Stretch - Stretches the diagram element throughout its immediate parent\n * * Left - Aligns the diagram element at the left of its immediate parent\n * * Right - Aligns the diagram element at the right of its immediate parent\n * * Center - Aligns the diagram element at the center of its immediate parent\n * * Auto - Aligns the diagram element based on the characteristics of its immediate parent\n */\n this.horizontalAlignment = 'Auto';\n /**\n * Sets/Gets how the element has to be vertically arranged with respect to its immediate parent\n * * Stretch - Stretches the diagram element throughout its immediate parent\n * * Top - Aligns the diagram element at the top of its immediate parent\n * * Bottom - Aligns the diagram element at the bottom of its immediate parent\n * * Center - Aligns the diagram element at the center of its immediate parent\n * * Auto - Aligns the diagram element based on the characteristics of its immediate parent\n */\n this.verticalAlignment = 'Auto';\n /**\n * Sets or gets whether the content of the element to be visible\n */\n this.visible = true;\n /**\n * Sets/Gets the rotate angle of the element\n */\n this.rotateAngle = 0;\n /**\n * Sets/Gets the margin of the element\n */\n this.margin = { left: 0, right: 0, top: 0, bottom: 0 };\n /**\n * Sets whether the element has to be aligned with respect to a point/with respect to its immediate parent\n * * Point - Diagram elements will be aligned with respect to a point\n * * Object - Diagram elements will be aligned with respect to its immediate parent\n */\n this.relativeMode = 'Point';\n /**\n * Sets whether the element has to be transformed based on its parent or not\n * * Self - Sets the transform type as Self\n * * Parent - Sets the transform type as Parent\n */\n /** @private */\n this.transform = RotateTransform.Self | RotateTransform.Parent;\n /**\n * Sets the style of the element\n */\n this.style = { fill: 'white', strokeColor: 'black', opacity: 1, strokeWidth: 1 };\n /**\n * Gets the minimum size that is required by the element\n */\n this.desiredSize = new Size();\n /**\n * Gets the size that the element will be rendered\n */\n this.actualSize = new Size();\n /**\n * Gets the rotate angle that is set to the immediate parent of the element\n */\n this.parentTransform = 0;\n /** @private */\n this.preventContainer = false;\n /**\n * Gets/Sets the boundary of the element\n */\n this.bounds = new Rect(0, 0, 0, 0);\n /**\n * Defines whether the element has to be measured or not\n */\n this.staticSize = false;\n /**\n * check whether the element is rect or not\n */\n /** @private */\n this.isRectElement = false;\n /** @private */\n this.isCalculateDesiredSize = true;\n /**\n * Defines whether the element is group or port\n */\n /** @private */\n this.elementActions = ElementAction.None;\n //private variables\n this.position = undefined;\n this.unitMode = undefined;\n /** @private */\n this.float = false;\n this.floatingBounds = undefined;\n }\n // public constructor() {\n // this.id = randomId();\n // }\n /**\n * Sets the offset of the element with respect to its parent\n * @param x\n * @param y\n * @param mode\n */\n DrawingElement.prototype.setOffsetWithRespectToBounds = function (x, y, mode) {\n this.unitMode = mode;\n this.position = { x: x, y: y };\n };\n /**\n * Gets the position of the element with respect to its parent\n * @param size\n */\n DrawingElement.prototype.getAbsolutePosition = function (size) {\n if (this.position !== undefined) {\n if (this.unitMode === 'Absolute') {\n return this.position;\n }\n else {\n return {\n x: this.position.x * size.width, y: this.position.y * size.height\n };\n }\n }\n return undefined;\n };\n Object.defineProperty(DrawingElement.prototype, \"outerBounds\", {\n get: function () {\n return this.floatingBounds || this.bounds;\n },\n /**\n * used to set the outer bounds value\n * @private\n */\n set: function (bounds) {\n this.floatingBounds = bounds;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Measures the minimum space that the element requires\n * @param availableSize\n */\n DrawingElement.prototype.measure = function (availableSize) {\n var width = this.width !== undefined ? this.width : (availableSize.width || 0) - this.margin.left - this.margin.right;\n var height = this.height !== undefined ? this.height : (availableSize.height || 0) - this.margin.top - this.margin.bottom;\n this.desiredSize = new Size(width, height);\n if (this.isCalculateDesiredSize) {\n this.desiredSize = this.validateDesiredSize(this.desiredSize, availableSize);\n }\n return this.desiredSize;\n };\n /**\n * Arranges the element\n * @param desiredSize\n */\n DrawingElement.prototype.arrange = function (desiredSize) {\n this.actualSize = desiredSize;\n this.updateBounds();\n return this.actualSize;\n };\n /**\n * Updates the bounds of the element\n */\n DrawingElement.prototype.updateBounds = function () {\n this.bounds = getBounds(this);\n };\n /**\n * Validates the size of the element with respect to its minimum and maximum size\n * @param desiredSize\n * @param availableSize\n */\n DrawingElement.prototype.validateDesiredSize = function (desiredSize, availableSize) {\n //Empty canvas\n if (this.isRectElement && !this.width && !this.minWidth && !this.maxWidth) {\n desiredSize.width = 50;\n }\n if (this.isRectElement && !this.height && !this.minHeight && !this.maxHeight) {\n desiredSize.height = 50;\n }\n if (desiredSize === undefined || this.width !== undefined &&\n this.height !== undefined) {\n desiredSize = desiredSize || new Size();\n desiredSize.width = this.width === undefined ? (availableSize.width || 0)\n - this.margin.left - this.margin.right : this.width;\n desiredSize.height = this.height === undefined ? (availableSize.height || 0)\n - this.margin.top - this.margin.bottom : this.height;\n }\n //Considering min values\n if (this.minWidth !== undefined) {\n desiredSize.width = Math.max(desiredSize.width, this.minWidth);\n }\n if (this.minHeight !== undefined) {\n desiredSize.height = Math.max(desiredSize.height, this.minHeight);\n }\n //Considering max values\n if (this.maxWidth !== undefined) {\n desiredSize.width = Math.min(desiredSize.width, this.maxWidth);\n }\n if (this.maxHeight !== undefined) {\n desiredSize.height = Math.min(desiredSize.height, this.maxHeight);\n }\n return desiredSize;\n };\n return DrawingElement;\n}());\nexport { DrawingElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { DrawingElement } from '../elements/drawing-element';\nimport { Size } from '../../primitives/size';\nimport { Rect } from '../../primitives/rect';\nimport { rotatePoint, getOffset } from '../../utility/base-util';\n/**\n * Container module is used to group related objects\n */\nvar Container = /** @class */ (function (_super) {\n __extends(Container, _super);\n function Container() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n //private members \n _this.desiredBounds = undefined;\n /** @private */\n _this.measureChildren = true;\n /** @private */\n _this.prevRotateAngle = 0;\n return _this;\n }\n /**\n * returns whether the container has child elements or not\n */\n Container.prototype.hasChildren = function () {\n if (this.children !== undefined && this.children.length > 0) {\n return true;\n }\n return false;\n };\n /**\n * Measures the minimum space that the container requires\n *\n * @param availableSize\n */\n Container.prototype.measure = function (availableSize) {\n // measure the element and find the desired size\n this.desiredBounds = undefined;\n var desired = undefined;\n var child;\n var center = { x: 0, y: 0 };\n var y;\n var x;\n var childBounds;\n if (this.hasChildren()) {\n //Measuring the children\n for (var i = 0; i < this.children.length; i++) {\n child = this.children[parseInt(i.toString(), 10)];\n if (child.horizontalAlignment === 'Stretch' && !availableSize.width) {\n availableSize.width = child.bounds.width;\n }\n if (child.verticalAlignment === 'Stretch' && !availableSize.height) {\n availableSize.height = child.bounds.height;\n }\n var force = child.horizontalAlignment === 'Stretch' || child.verticalAlignment === 'Stretch';\n if (this.measureChildren || force || (child instanceof Container && child.measureChildren !== undefined)) {\n child.measure(availableSize);\n }\n childBounds = this.GetChildrenBounds(child);\n if (child.horizontalAlignment !== 'Stretch' && child.verticalAlignment !== 'Stretch') {\n if (this.desiredBounds === undefined) {\n this.desiredBounds = childBounds;\n }\n else {\n this.desiredBounds.uniteRect(childBounds);\n }\n }\n else if (this.actualSize && !this.actualSize.width && !this.actualSize.height &&\n !child.preventContainer && child.horizontalAlignment === 'Stretch' && child.verticalAlignment === 'Stretch') {\n if (this.desiredBounds === undefined) {\n this.desiredBounds = child.bounds;\n }\n else {\n this.desiredBounds.uniteRect(child.bounds);\n }\n }\n }\n if (this.desiredBounds !== undefined && this.rotateAngle !== 0) {\n var offsetPt = {\n x: this.desiredBounds.x + this.desiredBounds.width * this.pivot.x,\n y: this.desiredBounds.y + this.desiredBounds.height * this.pivot.y\n };\n var newPoint = rotatePoint(this.rotateAngle, undefined, undefined, offsetPt);\n this.desiredBounds.x = newPoint.x - this.desiredBounds.width * this.pivot.x;\n this.desiredBounds.y = newPoint.y - this.desiredBounds.height * this.pivot.y;\n }\n if (this.desiredBounds) {\n desired = new Size(this.desiredBounds.width, this.desiredBounds.height);\n }\n }\n desired = this.validateDesiredSize(desired, availableSize);\n this.stretchChildren(desired);\n this.desiredSize = desired;\n return desired;\n };\n /**\n * Arranges the container and its children\n * @param desiredSize\n */\n Container.prototype.arrange = function (desiredSize) {\n var child;\n var bounds;\n var childBounds = this.desiredBounds;\n if (childBounds) {\n var x = this.offsetX;\n var y = this.offsetY;\n this.offsetX = childBounds.x + childBounds.width * this.pivot.x;\n this.offsetY = childBounds.y + childBounds.height * this.pivot.y;\n // container has rotateAngle\n if (this.hasChildren()) {\n //Measuring the children\n for (var i = 0; i < this.children.length; i++) {\n child = this.children[parseInt(i.toString(), 10)];\n var arrange = false;\n if (child.horizontalAlignment === 'Stretch') {\n child.offsetX = this.offsetX;\n child.parentTransform = this.parentTransform + this.rotateAngle;\n arrange = true;\n }\n if (child.verticalAlignment === 'Stretch') {\n child.offsetY = this.offsetY;\n child.parentTransform = this.parentTransform + this.rotateAngle;\n arrange = true;\n }\n if (arrange || this.measureChildren || (child instanceof Container && child.measureChildren !== undefined)) {\n child.arrange(child.desiredSize);\n }\n }\n }\n }\n this.actualSize = desiredSize;\n this.updateBounds();\n this.prevRotateAngle = this.rotateAngle;\n return desiredSize;\n };\n //protected methods\n /**\n * Stretches the child elements based on the size of the container\n * @param size\n */\n Container.prototype.stretchChildren = function (size) {\n if (this.hasChildren()) {\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if (child.horizontalAlignment === 'Stretch' || child.desiredSize.width === undefined) {\n child.desiredSize.width = size.width - child.margin.left - child.margin.right;\n }\n if (child.verticalAlignment === 'Stretch' || child.desiredSize.height === undefined) {\n child.desiredSize.height = size.height - child.margin.top - child.margin.bottom;\n }\n if (child instanceof Container) {\n child.stretchChildren(child.desiredSize);\n }\n }\n }\n };\n /**\n * Finds the offset of the child element with respect to the container\n * @param child\n * @param center\n */\n Container.prototype.findChildOffsetFromCenter = function (child, center) {\n var topLeft = { x: center.x - child.desiredSize.width / 2, y: center.y - child.desiredSize.height / 2 };\n var offset = getOffset(topLeft, child);\n //Rotate based on child rotate angle\n offset = rotatePoint(child.rotateAngle, center.x, center.y, offset);\n //Rotate based on parent pivot\n offset = rotatePoint(this.rotateAngle + this.parentTransform, this.offsetX, this.offsetY, offset);\n child.offsetX = offset.x;\n child.offsetY = offset.y;\n };\n //private methods - check its need\n Container.prototype.GetChildrenBounds = function (child) {\n var childBounds;\n var childSize;\n childSize = child.desiredSize.clone();\n var diffAngle = child.rotateAngle - this.rotateAngle;\n var refPoint = { x: child.offsetX, y: child.offsetY };\n var left = refPoint.x - childSize.width * child.pivot.x;\n var top = refPoint.y - childSize.height * child.pivot.y;\n var right = left + childSize.width;\n var bottom = top + childSize.height;\n var topLeft = { x: left, y: top };\n var topRight = { x: right, y: top };\n var bottomLeft = { x: left, y: bottom };\n var bottomRight = { x: right, y: bottom };\n topLeft = rotatePoint(child.rotateAngle, child.offsetX, child.offsetY, topLeft);\n topRight = rotatePoint(child.rotateAngle, child.offsetX, child.offsetY, topRight);\n bottomLeft = rotatePoint(child.rotateAngle, child.offsetX, child.offsetY, bottomLeft);\n bottomRight = rotatePoint(child.rotateAngle, child.offsetX, child.offsetY, bottomRight);\n if (this.rotateAngle !== 0) {\n topLeft = rotatePoint(-this.rotateAngle, undefined, undefined, topLeft);\n topRight = rotatePoint(-this.rotateAngle, undefined, undefined, topRight);\n bottomLeft = rotatePoint(-this.rotateAngle, undefined, undefined, bottomLeft);\n bottomRight = rotatePoint(-this.rotateAngle, undefined, undefined, bottomRight);\n }\n return Rect.toBounds([topLeft, topRight, bottomLeft, bottomRight]);\n };\n return Container;\n}(DrawingElement));\nexport { Container };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Collection, ComplexFactory } from '@syncfusion/ej2-base';\n/** @private */\nvar getGradientType = function (obj) {\n switch (obj.type) {\n case 'Linear':\n return LinearGradient;\n case 'Radial':\n return RadialGradient;\n default:\n return LinearGradient;\n }\n};\n/**\n * Layout Model module defines the styles and types to arrange objects in containers\n */\nvar Thickness = /** @class */ (function () {\n function Thickness(left, right, top, bottom) {\n this.left = left;\n this.right = right;\n this.top = top;\n this.bottom = bottom;\n }\n return Thickness;\n}());\nexport { Thickness };\n/**\n * Defines the space to be left between an object and its immediate parent\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(0)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(0)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Defines the different colors and the region of color transitions\n * ```html\n *
\n * ```\n * ```typescript\n * let stopscol: StopModel[] = [];\n * let stops1: StopModel = { color: 'white', offset: 0, opacity: 0.7 };\n * stopscol.push(stops1);\n * let stops2: StopModel = { color: 'red', offset: 0, opacity: 0.3 };\n * stopscol.push(stops2);\n * let gradient: RadialGradientModel = { cx: 50, cy: 50, fx: 50, fy: 50, stops: stopscol, type: 'Radial' };\n * let nodes: NodeModel[] = [{ id: 'node1', width: 100, height: 100,\n * style: { gradient: gradient }\n * }];\n * let diagram: Diagram = new Diagram({\n * ...\n * nodes: nodes,\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\n */\nvar Stop = /** @class */ (function (_super) {\n __extends(Stop, _super);\n function Stop() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @private\n * Returns the name of class Stop\n */\n Stop.prototype.getClassName = function () {\n return 'Stop';\n };\n __decorate([\n Property('')\n ], Stop.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Stop.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], Stop.prototype, \"opacity\", void 0);\n return Stop;\n}(ChildProperty));\nexport { Stop };\n/**\n * Paints the node with a smooth transition from one color to another color\n */\nvar Gradient = /** @class */ (function (_super) {\n __extends(Gradient, _super);\n function Gradient() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Stop)\n ], Gradient.prototype, \"stops\", void 0);\n __decorate([\n Property('None')\n ], Gradient.prototype, \"type\", void 0);\n __decorate([\n Property('')\n ], Gradient.prototype, \"id\", void 0);\n return Gradient;\n}(ChildProperty));\nexport { Gradient };\n/**\n * Defines the linear gradient of styles\n * ```html\n *
\n * ```\n * ```typescript\n * let stopscol: StopModel[] = [];\n * let stops1: StopModel = { color: 'white', offset: 0, opacity: 0.7 };\n * stopscol.push(stops1);\n * let stops2: StopModel = { color: 'red', offset: 0, opacity: 0.3 };\n * stopscol.push(stops2);\n * let gradient: LinearGradientModel = { x1: 0, x2: 50, y1: 0, y2: 50, stops: stopscol, type: 'Linear' };\n * let nodes: NodeModel[] = [{ id: 'node1', width: 100, height: 100,\n * style: { gradient: gradient }\n * }];\n * let diagram: Diagram = new Diagram({\n * ...\n * nodes: nodes,\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\n */\n/**\n * Paints the node with linear color transitions\n */\nvar LinearGradient = /** @class */ (function (_super) {\n __extends(LinearGradient, _super);\n function LinearGradient() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], LinearGradient.prototype, \"x1\", void 0);\n __decorate([\n Property(0)\n ], LinearGradient.prototype, \"x2\", void 0);\n __decorate([\n Property(0)\n ], LinearGradient.prototype, \"y1\", void 0);\n __decorate([\n Property(0)\n ], LinearGradient.prototype, \"y2\", void 0);\n return LinearGradient;\n}(Gradient));\nexport { LinearGradient };\n/**\n * A focal point defines the beginning of the gradient, and a circle defines the end point of the gradient\n * ```html\n *
\n * ```\n * ```typescript\n * let stopscol: StopModel[] = [];\n * let stops1: StopModel = { color: 'white', offset: 0, opacity: 0.7 };\n * stopscol.push(stops1);\n * let stops2: StopModel = { color: 'red', offset: 0, opacity: 0.3 };\n * stopscol.push(stops2);\n * let gradient: RadialGradientModel = { cx: 50, cy: 50, fx: 50, fy: 50, stops: stopscol, type: 'Radial' };\n * let nodes: NodeModel[] = [{ id: 'node1', width: 100, height: 100,\n * style: { gradient: gradient }\n * }];\n * let diagram: Diagram = new Diagram({\n * ...\n * nodes: nodes,\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\n */\nvar RadialGradient = /** @class */ (function (_super) {\n __extends(RadialGradient, _super);\n function RadialGradient() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], RadialGradient.prototype, \"cx\", void 0);\n __decorate([\n Property(0)\n ], RadialGradient.prototype, \"cy\", void 0);\n __decorate([\n Property(0)\n ], RadialGradient.prototype, \"fx\", void 0);\n __decorate([\n Property(0)\n ], RadialGradient.prototype, \"fy\", void 0);\n __decorate([\n Property(50)\n ], RadialGradient.prototype, \"r\", void 0);\n return RadialGradient;\n}(Gradient));\nexport { RadialGradient };\n/**\n * Defines the style of shape/path\n */\nvar ShapeStyle = /** @class */ (function (_super) {\n __extends(ShapeStyle, _super);\n function ShapeStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('white')\n ], ShapeStyle.prototype, \"fill\", void 0);\n __decorate([\n Property('black')\n ], ShapeStyle.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('')\n ], ShapeStyle.prototype, \"strokeDashArray\", void 0);\n __decorate([\n Property(1)\n ], ShapeStyle.prototype, \"strokeWidth\", void 0);\n __decorate([\n Property(1)\n ], ShapeStyle.prototype, \"opacity\", void 0);\n __decorate([\n ComplexFactory(getGradientType)\n ], ShapeStyle.prototype, \"gradient\", void 0);\n return ShapeStyle;\n}(ChildProperty));\nexport { ShapeStyle };\n/**\n * Defines the stroke style of a path\n */\nvar StrokeStyle = /** @class */ (function (_super) {\n __extends(StrokeStyle, _super);\n function StrokeStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('transparent')\n ], StrokeStyle.prototype, \"fill\", void 0);\n return StrokeStyle;\n}(ShapeStyle));\nexport { StrokeStyle };\n/**\n * Defines the appearance of text\n * ```html\n *
\n * ```\n * ```typescript\n * let style: TextStyleModel = { strokeColor: 'black', opacity: 0.5, strokeWidth: 1 };\n * let node: NodeModel;\n * node = {\n * ...\n * id: 'node', width: 100, height: 100, offsetX: 100, offsetY: 100,\n * annotations : [{\n * content: 'text', style: style }];\n * ...\n * };\n * let diagram: Diagram = new Diagram({\n * ...\n * nodes: [node],\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\n */\nvar TextStyle = /** @class */ (function (_super) {\n __extends(TextStyle, _super);\n function TextStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('black')\n ], TextStyle.prototype, \"color\", void 0);\n __decorate([\n Property('Arial')\n ], TextStyle.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(12)\n ], TextStyle.prototype, \"fontSize\", void 0);\n __decorate([\n Property(false)\n ], TextStyle.prototype, \"italic\", void 0);\n __decorate([\n Property(false)\n ], TextStyle.prototype, \"bold\", void 0);\n __decorate([\n Property('CollapseSpace')\n ], TextStyle.prototype, \"whiteSpace\", void 0);\n __decorate([\n Property('WrapWithOverflow')\n ], TextStyle.prototype, \"textWrapping\", void 0);\n __decorate([\n Property('Center')\n ], TextStyle.prototype, \"textAlign\", void 0);\n __decorate([\n Property('None')\n ], TextStyle.prototype, \"textDecoration\", void 0);\n __decorate([\n Property('Wrap')\n ], TextStyle.prototype, \"textOverflow\", void 0);\n __decorate([\n Property('transparent')\n ], TextStyle.prototype, \"fill\", void 0);\n return TextStyle;\n}(ShapeStyle));\nexport { TextStyle };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Size } from '../../primitives/size';\nimport { DrawingElement } from './drawing-element';\nimport { measureText } from './../../utility/dom-util';\n/**\n * TextElement is used to display text/annotations\n */\nvar TextElement = /** @class */ (function (_super) {\n __extends(TextElement, _super);\n /**\n * set the id for each element\n */\n function TextElement() {\n var _this = _super.call(this) || this;\n /**\n * sets or gets the image source\n */\n _this.textContent = '';\n /** @private */\n _this.canMeasure = true;\n /** @private */\n _this.canConsiderBounds = true;\n /** @private */\n _this.doWrap = true;\n _this.textNodes = [];\n /**\n * Defines the appearance of the text element\n */\n _this.style = {\n color: 'black', fill: 'transparent', strokeColor: 'black',\n strokeWidth: 1, fontFamily: 'Arial', fontSize: 12, whiteSpace: 'CollapseSpace',\n textWrapping: 'WrapWithOverflow', textAlign: 'Center', italic: false, bold: false,\n textDecoration: 'None', strokeDashArray: '', opacity: 1,\n textOverflow: 'Wrap'\n };\n _this.style.fill = 'transparent';\n _this.style.strokeColor = 'transparent';\n return _this;\n }\n Object.defineProperty(TextElement.prototype, \"content\", {\n /**\n * gets the content for the text element\n */\n get: function () {\n return this.textContent;\n },\n /**\n * sets the content for the text element\n */\n set: function (value) {\n if (this.textContent !== value) {\n this.textContent = value;\n this.isDirt = true;\n this.doWrap = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TextElement.prototype, \"childNodes\", {\n /**\n * sets the content for the text element\n */\n get: function () {\n return this.textNodes;\n },\n /**\n * gets the content for the text element\n */\n set: function (value) {\n this.textNodes = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TextElement.prototype, \"wrapBounds\", {\n /**\n * gets the wrapBounds for the text\n */\n get: function () {\n return this.textWrapBounds;\n },\n /**\n * sets the wrapBounds for the text\n */\n set: function (value) {\n this.textWrapBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n /** @private */\n TextElement.prototype.refreshTextElement = function () {\n this.isDirt = true;\n };\n /**\n * Measures the minimum size that is required for the text element\n * @param availableSize\n */\n TextElement.prototype.measure = function (availableSize) {\n var size;\n if (this.isDirt && this.canMeasure) {\n size = measureText(this, this.style, this.content, this.width || availableSize.width);\n }\n else {\n size = this.desiredSize;\n }\n if (this.width === undefined || this.height === undefined) {\n this.desiredSize = new Size(size.width, size.height);\n }\n else {\n this.desiredSize = new Size(this.width, this.height);\n }\n this.desiredSize = this.validateDesiredSize(this.desiredSize, availableSize);\n return this.desiredSize;\n };\n /**\n * Arranges the text element\n * @param desiredSize\n */\n TextElement.prototype.arrange = function (desiredSize) {\n if (desiredSize.width !== this.actualSize.width || desiredSize.height !== this.actualSize.height || this.isDirt) {\n this.doWrap = true;\n }\n this.actualSize = desiredSize;\n this.updateBounds();\n this.isDirt = false;\n return this.actualSize;\n };\n return TextElement;\n}(DrawingElement));\nexport { TextElement };\n","import { identityMatrix, rotateMatrix, transformPointByMatrix } from './../primitives/matrix';\nimport { Container } from './../core/containers/container';\nimport { StrokeStyle } from './../core/appearance';\nimport { Point } from './../primitives/point';\nimport { TextElement } from '../core/elements/text-element';\nimport { rotatePoint } from './base-util';\n/**\n * Implements the drawing functionalities\n */\n/** @private */\nexport function findNearestPoint(reference, start, end) {\n var shortestPoint;\n var shortest = Point.findLength(start, reference);\n var shortest1 = Point.findLength(end, reference);\n if (shortest > shortest1) {\n shortestPoint = end;\n }\n else {\n shortestPoint = start;\n }\n var angleBWStAndEnd = Point.findAngle(start, end);\n var angleBWStAndRef = Point.findAngle(shortestPoint, reference);\n var r = Point.findLength(shortestPoint, reference);\n var vaAngle = angleBWStAndRef + ((angleBWStAndEnd - angleBWStAndRef) * 2);\n return {\n x: (shortestPoint.x + r * Math.cos(vaAngle * Math.PI / 180)),\n y: (shortestPoint.y + r * Math.sin(vaAngle * Math.PI / 180))\n };\n}\n/** @private */\nexport function findElementUnderMouse(obj, position, padding) {\n return findTargetElement(obj.wrapper, position, padding);\n}\n/** @private */\nexport function findTargetElement(container, position, padding) {\n for (var i = container.children.length - 1; i >= 0; i--) {\n var element = container.children[parseInt(i.toString(), 10)];\n if (element && element.bounds.containsPoint(position, 0)) {\n if (element instanceof Container) {\n var target = this.findTargetElement(element, position);\n if (target) {\n return target;\n }\n }\n if (element.bounds.containsPoint(position, 0)) {\n return element;\n }\n }\n }\n if (container.bounds.containsPoint(position, padding) && container.style.fill !== 'none') {\n return container;\n }\n return null;\n}\n/** @private */\nexport function intersect3(lineUtil1, lineUtil2) {\n var point = { x: 0, y: 0 };\n var l1 = lineUtil1;\n var l2 = lineUtil2;\n var d = (l2.y2 - l2.y1) * (l1.x2 - l1.x1) - (l2.x2 - l2.x1) * (l1.y2 - l1.y1);\n var na = (l2.x2 - l2.x1) * (l1.y1 - l2.y1) - (l2.y2 - l2.y1) * (l1.x1 - l2.x1);\n var nb = (l1.x2 - l1.x1) * (l1.y1 - l2.y1) - (l1.y2 - l1.y1) * (l1.x1 - l2.x1);\n if (d === 0) {\n return { enabled: false, intersectPt: point };\n }\n var ua = na / d;\n var ub = nb / d;\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n point.x = l1.x1 + (ua * (l1.x2 - l1.x1));\n point.y = l1.y1 + (ua * (l1.y2 - l1.y1));\n return { enabled: true, intersectPt: point };\n }\n return { enabled: false, intersectPt: point };\n}\n/** @private */\nexport function intersect2(start1, end1, start2, end2) {\n var point = { x: 0, y: 0 };\n var lineUtil1 = getLineSegment(start1.x, start1.y, end1.x, end1.y);\n var lineUtil2 = getLineSegment(start2.x, start2.y, end2.x, end2.y);\n var line3 = intersect3(lineUtil1, lineUtil2);\n if (line3.enabled) {\n return line3.intersectPt;\n }\n else {\n return point;\n }\n}\n/** @private */\nexport function getLineSegment(x1, y1, x2, y2) {\n return { 'x1': Number(x1) || 0, 'y1': Number(y1) || 0, 'x2': Number(x2) || 0, 'y2': Number(y2) || 0 };\n}\n/** @private */\nexport function getPoints(element, corners, padding) {\n var line = [];\n padding = padding || 0;\n var left = { x: corners.topLeft.x - padding, y: corners.topLeft.y };\n var right = { x: corners.topRight.x + padding, y: corners.topRight.y };\n var top = { x: corners.bottomRight.x, y: corners.bottomRight.y - padding };\n var bottom = { x: corners.bottomLeft.x, y: corners.bottomLeft.y + padding };\n line.push(left);\n line.push(right);\n line.push(top);\n line.push(bottom);\n return line;\n}\n/** @private */\nexport function getBezierDirection(src, tar) {\n if (Math.abs(tar.x - src.x) > Math.abs(tar.y - src.y)) {\n return src.x < tar.x ? 'right' : 'left';\n }\n else {\n return src.y < tar.y ? 'bottom' : 'top';\n }\n}\n/** @private */\nexport function updateStyle(changedObject, target) {\n //since text style model is the super set of shape style model, we used text style model\n var style = target.style;\n var textElement = target;\n for (var _i = 0, _a = Object.keys(changedObject); _i < _a.length; _i++) {\n var key = _a[_i];\n switch (key) {\n case 'fill':\n style.fill = changedObject.fill;\n if (style instanceof StrokeStyle) {\n /* tslint:disable:no-string-literal */\n style['fill'] = 'transparent';\n }\n break;\n case 'textOverflow':\n style.textOverflow = changedObject.textOverflow;\n break;\n case 'opacity':\n style.opacity = changedObject.opacity;\n break;\n case 'strokeColor':\n style.strokeColor = changedObject.strokeColor;\n break;\n case 'strokeDashArray':\n style.strokeDashArray = changedObject.strokeDashArray;\n break;\n case 'strokeWidth':\n style.strokeWidth = changedObject.strokeWidth;\n break;\n case 'bold':\n style.bold = changedObject.bold;\n break;\n case 'color':\n style.color = changedObject.color;\n break;\n case 'textWrapping':\n style.textWrapping = changedObject.textWrapping;\n break;\n case 'fontFamily':\n style.fontFamily = changedObject.fontFamily;\n break;\n case 'fontSize':\n style.fontSize = changedObject.fontSize;\n break;\n case 'italic':\n style.italic = changedObject.italic;\n break;\n case 'textAlign':\n style.textAlign = changedObject.textAlign;\n break;\n case 'whiteSpace':\n style.whiteSpace = changedObject.whiteSpace;\n break;\n case 'textDecoration':\n style.textDecoration = changedObject.textDecoration;\n break;\n }\n }\n if (target instanceof TextElement) {\n textElement.refreshTextElement();\n }\n}\n/** @private */\nexport function scaleElement(element, sw, sh, refObject) {\n if (element.width !== undefined && element.height !== undefined) {\n element.width *= sw;\n element.height *= sh;\n }\n if (element instanceof Container) {\n var matrix = identityMatrix();\n var width = refObject.width || refObject.actualSize.width;\n var height = refObject.height || refObject.actualSize.height;\n if (width !== undefined && height !== undefined) {\n var x = refObject.offsetX - width * refObject.pivot.x;\n var y = refObject.offsetY - height * refObject.pivot.y;\n var refPoint = {\n x: x + width * refObject.pivot.x,\n y: y + height * refObject.pivot.y\n };\n refPoint = rotatePoint(refObject.rotateAngle, refObject.offsetX, refObject.offsetY, refPoint);\n rotateMatrix(matrix, -refObject.rotateAngle, refPoint.x, refPoint.y);\n // scaleMatrix(matrix, sw, sh, refPoint.x, refPoint.y);\n rotateMatrix(matrix, refObject.rotateAngle, refPoint.x, refPoint.y);\n for (var _i = 0, _a = element.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if (child.width !== undefined && child.height !== undefined) {\n var newPosition = transformPointByMatrix(matrix, { x: child.offsetX, y: child.offsetY });\n child.offsetX = newPosition.x;\n child.offsetY = newPosition.y;\n scaleElement(child, sw, sh, refObject);\n }\n }\n }\n }\n}\n/** @private */\nexport function contains(mousePosition, corner, padding) {\n if (mousePosition.x >= corner.x - padding && mousePosition.x <= corner.x + padding) {\n if (mousePosition.y >= corner.y - padding && mousePosition.y <= corner.y + padding) {\n return true;\n }\n }\n return false;\n}\n/** @private */\nexport function getPoint(x, y, w, h, angle, offsetX, offsetY, cornerPoint) {\n var pivot = { x: 0, y: 0 };\n var trans = identityMatrix();\n rotateMatrix(trans, angle, offsetX, offsetY);\n switch (cornerPoint.x) {\n case 0:\n switch (cornerPoint.y) {\n case 0:\n pivot = transformPointByMatrix(trans, ({ x: x, y: y }));\n break;\n case 0.5:\n pivot = transformPointByMatrix(trans, ({ x: x, y: y + h / 2 }));\n break;\n case 1:\n pivot = transformPointByMatrix(trans, ({ x: x, y: y + h }));\n break;\n }\n break;\n case 0.5:\n switch (cornerPoint.y) {\n case 0:\n pivot = transformPointByMatrix(trans, ({ x: x + w / 2, y: y }));\n break;\n case 0.5:\n pivot = transformPointByMatrix(trans, ({ x: x + w / 2, y: y + h / 2 }));\n break;\n case 1:\n pivot = transformPointByMatrix(trans, ({ x: x + w / 2, y: y + h }));\n break;\n }\n break;\n case 1:\n switch (cornerPoint.y) {\n case 0:\n pivot = transformPointByMatrix(trans, ({ x: x + w, y: y }));\n break;\n case 0.5:\n pivot = transformPointByMatrix(trans, ({ x: x + w, y: y + h / 2 }));\n break;\n case 1:\n pivot = transformPointByMatrix(trans, ({ x: x + w, y: y + h }));\n break;\n }\n break;\n }\n return { x: pivot.x, y: pivot.y };\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Collection, Complex, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Container } from '@syncfusion/ej2-drawings';\nimport { Point } from '@syncfusion/ej2-drawings';\nimport { PdfAnnotationBase, PdfFormFieldBase } from './pdf-annotation';\n/**\n * Defines the size and position of selected items and defines the appearance of selector\n *\n * @hidden\n */\nvar Selector = /** @class */ (function (_super) {\n __extends(Selector, _super);\n function Selector() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Initializes the UI of the container\n *\n * @param {any} diagram - diagram element.\n * @returns {Container} - Returns the container element.\n */\n // eslint-disable-next-line\n Selector.prototype.init = function (diagram) {\n var container = new Container();\n container.measureChildren = false;\n container.children = [];\n if (this.formFields && this.formFields.length > 0) {\n for (var i = 0; i < this.formFields.length; i++) {\n var node = diagram.pdfViewer.nameTable[this.formFields[parseInt(i.toString(), 10)].id];\n var wrapper = node.wrapper;\n container.children.push(wrapper);\n }\n }\n else if (this.annotations) {\n for (var i = 0; i < this.annotations.length; i++) {\n if (!isNullOrUndefined(this.annotations[parseInt(i.toString(), 10)])) {\n var node = diagram.pdfViewer.nameTable[this.annotations[parseInt(i.toString(), 10)].id];\n var wrapper = node.wrapper;\n container.children.push(wrapper);\n }\n }\n }\n this.wrapper = container;\n return container;\n };\n __decorate([\n Property(null)\n ], Selector.prototype, \"wrapper\", void 0);\n __decorate([\n Collection([], PdfAnnotationBase)\n ], Selector.prototype, \"annotations\", void 0);\n __decorate([\n Collection([], PdfFormFieldBase)\n ], Selector.prototype, \"formFields\", void 0);\n __decorate([\n Property()\n ], Selector.prototype, \"width\", void 0);\n __decorate([\n Property()\n ], Selector.prototype, \"height\", void 0);\n __decorate([\n Property(0)\n ], Selector.prototype, \"rotateAngle\", void 0);\n __decorate([\n Property(0)\n ], Selector.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Selector.prototype, \"offsetY\", void 0);\n __decorate([\n Complex({ x: 0.5, y: 0.5 }, Point)\n ], Selector.prototype, \"pivot\", void 0);\n return Selector;\n}(ChildProperty));\nexport { Selector };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Size } from '../../primitives/size';\nimport { DrawingElement } from './drawing-element';\nimport { Rect } from '../../primitives/rect';\nimport { measurePath } from './../../utility/dom-util';\nimport { processPathData, splitArrayCollection, transformPath, getPathString } from '../../utility/path-util';\n/**\n * PathElement takes care of how to align the path based on offsetX and offsetY\n */\nvar PathElement = /** @class */ (function (_super) {\n __extends(PathElement, _super);\n /**\n * set the id for each element\n */\n function PathElement() {\n var _this = _super.call(this) || this;\n /**\n * Gets or sets the geometry of the path element\n */\n _this.pathData = '';\n /**\n * Gets/Sets whether the path has to be transformed to fit the given x,y, width, height\n */\n _this.transformPath = true;\n /**\n * Gets/Sets the equivalent path, that will have the origin as 0,0\n */\n _this.absolutePath = '';\n /** @private */\n _this.canMeasurePath = false;\n //Private variables\n /** @private */\n _this.absoluteBounds = new Rect();\n return _this;\n }\n Object.defineProperty(PathElement.prototype, \"data\", {\n /**\n * Gets the geometry of the path element\n */\n get: function () {\n return this.pathData;\n },\n /**\n * Sets the geometry of the path element\n */\n set: function (value) {\n if (this.pathData !== value) {\n this.pathData = value;\n this.isDirt = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Measures the minimum space that is required to render the element\n * @param availableSize\n */\n PathElement.prototype.measure = function (availableSize) {\n //Performance issue - Avoiding measuring the connector path\n if (this.staticSize && this.width !== undefined && this.height !== undefined) {\n this.absoluteBounds = new Rect(this.offsetX - this.width * this.pivot.x, this.offsetY - this.height * this.pivot.y, this.width, this.height);\n }\n else if (this.isDirt && (this.transformPath || (this.width === undefined || this.height === undefined))\n && (!this.absoluteBounds || this.absoluteBounds.height === 0) || this.canMeasurePath) {\n //Measure the element only whent the path data is changed/ size is not specified\n this.absoluteBounds = measurePath(this.data ? this.data : '');\n }\n if (this.width === undefined) {\n this.desiredSize = new Size(this.absoluteBounds.width, this.height || this.absoluteBounds.height);\n }\n else if (this.height === undefined) {\n this.desiredSize = new Size(this.width || this.absoluteBounds.width, this.absoluteBounds.height);\n }\n else {\n this.desiredSize = new Size(this.width, this.height);\n }\n this.desiredSize = this.validateDesiredSize(this.desiredSize, availableSize);\n this.canMeasurePath = false;\n return this.desiredSize;\n };\n /**\n * Arranges the path element\n * @param desiredSize\n */\n PathElement.prototype.arrange = function (desiredSize) {\n if (this.isDirt || this.actualSize.width !== desiredSize.width || this.actualSize.height !== desiredSize.height) {\n this.isDirt = true;\n this.absolutePath = this.updatePath(this.data, this.absoluteBounds, desiredSize);\n if (!this.staticSize) {\n this.points = null;\n }\n }\n this.actualSize = this.desiredSize;\n this.updateBounds();\n this.isDirt = false;\n return this.actualSize;\n };\n /**\n * Translates the path to 0,0 and scales the path based on the actual size\n * @param pathData\n * @param bounds\n * @param actualSize\n */\n PathElement.prototype.updatePath = function (pathData, bounds, actualSize) {\n var isScale = false;\n var newPathString = '';\n var scaleX = -bounds.x;\n var scaleY = -bounds.y;\n var arrayCollection = [];\n if (actualSize.width !== bounds.width || actualSize.height !== bounds.height) {\n scaleX = actualSize.width / Number(bounds.width ? bounds.width : 1);\n scaleY = actualSize.height / Number(bounds.height ? bounds.height : 1);\n isScale = true;\n }\n arrayCollection = processPathData(pathData);\n arrayCollection = splitArrayCollection(arrayCollection);\n if ((isScale || this.isDirt) && this.transformPath) {\n newPathString = transformPath(arrayCollection, scaleX, scaleY, isScale, bounds.x, bounds.y, 0, 0);\n }\n else {\n newPathString = getPathString(arrayCollection);\n }\n isScale = false;\n return newPathString;\n };\n return PathElement;\n}(DrawingElement));\nexport { PathElement };\n","import { PathElement, Rect, Point, Size, RotateTransform, TextElement, randomId, identityMatrix, rotateMatrix, transformPointByMatrix, intersect3 } from '@syncfusion/ej2-drawings';\nimport { setElementStype, findPointsLength } from './drawing-util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel[]} points - Specified the annotation points.\n * @returns {PointModel[]} - Returns the annotation points model array.\n */\nexport function getConnectorPoints(obj, points) {\n points = obj.vertexPoints;\n var newPoints = points.slice(0);\n if (newPoints && newPoints.length > 0) {\n obj.sourcePoint = newPoints[0];\n obj.targetPoint = newPoints[newPoints.length - 1];\n }\n return newPoints;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the annotation connector model.\n * @param {PointModel[]} points - Specified the annotation points.\n * @returns {string} - Returns the annotation path value.\n */\nexport function getSegmentPath(connector, points) {\n var path = '';\n var getPt;\n var pts = [];\n var j = 0;\n while (j < points.length) {\n pts.push({ x: points[parseInt(j.toString(), 10)].x, y: points[parseInt(j.toString(), 10)].y });\n j++;\n }\n pts = clipDecorators(connector, pts);\n for (var k = 0; k < pts.length; k++) {\n getPt = pts[parseInt(k.toString(), 10)];\n if (k === 0) {\n path = 'M' + getPt.x + ' ' + getPt.y;\n }\n if (k > 0) {\n path += ' ' + 'L' + getPt.x + ' ' + getPt.y;\n }\n }\n return path;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the annotation connector model.\n * @param {PointModel[]} points - Specified the annotation points.\n * @param {PathElement} element - Specified the annotation element.\n * @returns {PathElement} - Returns the annotation path element.\n */\nexport function updateSegmentElement(connector, points, element) {\n var bounds = new Rect();\n var segmentPath = getSegmentPath(connector, points);\n bounds = Rect.toBounds(points);\n element.width = bounds.width;\n element.height = bounds.height;\n element.offsetX = bounds.x + element.width / 2;\n element.offsetY = bounds.y + element.height / 2;\n element.data = segmentPath;\n if (connector.wrapper) {\n connector.wrapper.offsetX = element.offsetX;\n connector.wrapper.offsetY = element.offsetY;\n connector.wrapper.width = bounds.width;\n connector.wrapper.height = bounds.height;\n }\n return element;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the annotation connector model.\n * @param {PathElement} segmentElement - Specified the annotation segment element.\n * @returns {PathElement} - Returns the annotation path element.\n */\nexport function getSegmentElement(connector, segmentElement) {\n var points = [];\n points = getConnectorPoints(connector);\n segmentElement.staticSize = true;\n segmentElement = updateSegmentElement(connector, points, segmentElement);\n setElementStype(connector, segmentElement);\n return segmentElement;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {DrawingElement} element - Specified the annotation drawing element.\n * @param {PointModel} pt - Specified the annotation point.\n * @param {PointModel} adjacentPoint - Specified the annotation adjacent point.\n * @param {boolean} isSource - Specified the is source value or not.\n * @returns {void}\n */\nexport function updateDecoratorElement(obj, element, pt, adjacentPoint, isSource) {\n element.offsetX = pt.x;\n element.offsetY = pt.y;\n var angle = Point.findAngle(pt, adjacentPoint);\n var getPath = getDecoratorShape(isSource ? obj.sourceDecoraterShapes : obj.taregetDecoraterShapes);\n var thickness = 0;\n var size;\n if (obj.shapeAnnotationType === 'LineWidthArrowHead') {\n thickness = obj.thickness;\n size = new Size(thickness * 12, thickness * 12);\n }\n else {\n thickness = obj.thickness <= 5 ? 5 : obj.thickness;\n size = new Size(thickness * 2, thickness * 2);\n }\n element.transform = RotateTransform.Self;\n setElementStype(obj, element);\n element.style.fill = (obj.fillColor !== 'tranparent') ? obj.fillColor : 'white';\n element.rotateAngle = angle;\n element.data = getPath;\n element.canMeasurePath = true;\n element.width = size.width;\n element.height = size.height;\n if (obj.sourceDecoraterShapes === 'Butt') {\n element.width = size.width - 10;\n element.height = size.height + 10;\n }\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel} offsetPoint - Specified the annotation offset point.\n * @param {PointModel} adjacentPoint - Specified the annotation adjacent point.\n * @param {boolean} isSource - Specified the is source value or not.\n * @returns {PathElement} - Returns the annotation path element.\n */\nexport function getDecoratorElement(obj, offsetPoint, adjacentPoint, isSource) {\n var decEle = new PathElement();\n updateDecoratorElement(obj, decEle, offsetPoint, adjacentPoint, isSource);\n return decEle;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the annotation object.\n * @param {PointModel[]} pts - Specified the annotation point model array.\n * @returns {PointModel[]} - Returns the annotation point model array.\n */\nexport function clipDecorators(connector, pts) {\n pts[0] = clipDecorator(connector, pts, true);\n pts[pts.length - 1] = clipDecorator(connector, pts, false);\n return pts;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the annotation connector object.\n * @param {PointModel[]} points - Specified the annotation offset point.\n * @param {boolean} isSource - Specified the is source value or not.\n * @returns {PointModel} - Returns the annotation point model.\n */\nexport function clipDecorator(connector, points, isSource) {\n var point = { x: 0, y: 0 };\n var start = { x: 0, y: 0 };\n var end = { x: 0, y: 0 };\n var length = points.length;\n start = !isSource ? points[length - 1] : points[0];\n end = !isSource ? points[length - 2] : points[1];\n var len = Point.distancePoints(start, end);\n len = (len === 0) ? 1 : len;\n var width = connector.thickness;\n point.x = (Math.round(start.x + width * (end.x - start.x) / len));\n point.y = (Math.round(start.y + width * (end.y - start.y) / len));\n var strokeWidth = 1;\n point = Point.adjustPoint(point, end, true, (strokeWidth / 2));\n return point;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel[]} points - Specified the annotation point model array.\n * @param {MeasureAnnotation} measure - Specified the measure annotation object.\n * @param {PdfViewer} pdfviewer - Specified the pdfviewer element.\n * @hidden\n * @returns {TextElement[]} - Returns the text element collections.\n */\n// eslint-disable-next-line max-len\nexport function initDistanceLabel(obj, points, measure, pdfviewer) {\n var labels = [];\n var angle = Point.findAngle(points[0], points[1]);\n var textele = textElement(obj, angle);\n if (!pdfviewer.enableImportAnnotationMeasurement && obj.notes && obj.notes !== '') {\n textele.content = obj.notes;\n }\n else {\n textele.content = measure.setConversion(findPointsLength([points[0], points[1]]) * measure.pixelToPointFactor, obj);\n }\n textele.rotateValue = { y: -10, angle: angle };\n if (obj.enableShapeLabel === true) {\n textele.style.strokeColor = obj.labelBorderColor;\n textele.style.fill = obj.labelFillColor;\n textele.style.fontSize = obj.fontSize;\n textele.style.color = obj.fontColor;\n textele.style.fontFamily = obj.fontFamily;\n }\n labels.push(textele);\n return labels;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel[]} points - Specified the annotation point model array.\n * @param {MeasureAnnotation} measure - Specified the measure annotation object.\n * @hidden\n * @returns {string} - Returns the distance value.\n */\nexport function updateDistanceLabel(obj, points, measure) {\n var distance;\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var textElement_1 = obj.wrapper.children[parseInt(i.toString(), 10)];\n if (textElement_1 && !isNullOrUndefined(textElement_1.content)) {\n distance = measure.setConversion(findPointsLength([points[0], points[1]]) * measure.pixelToPointFactor, obj);\n textElement_1.content = distance;\n textElement_1.childNodes[0].text = textElement_1.content;\n textElement_1.refreshTextElement();\n }\n }\n return distance;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {MeasureAnnotation} measure - Specified the measure annotation object.\n * @hidden\n * @returns {string} - Returns the radius label value.\n */\nexport function updateRadiusLabel(obj, measure) {\n var radius;\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var textElement_2 = obj.wrapper.children[parseInt(i.toString(), 10)];\n if (textElement_2 && !isNullOrUndefined(textElement_2.content)) {\n radius = measure.setConversion((obj.bounds.width / 2) * measure.pixelToPointFactor, obj);\n textElement_2.content = radius;\n if (textElement_2.childNodes.length === 2) {\n textElement_2.childNodes[0].text = radius;\n textElement_2.childNodes.splice(textElement_2.childNodes.length - 1, 1);\n }\n else {\n textElement_2.childNodes[0].text = radius;\n }\n textElement_2.refreshTextElement();\n }\n }\n return radius;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel[]} points - Specified the annotation point model array.\n * @param {MeasureAnnotation} measure - Specified the measure annotation object.\n * @param {PdfViewer} pdfviewer - Specified the pdfviewer element.\n * @hidden\n * @returns {TextElement[]} - Returns the text element collections.\n */\n// eslint-disable-next-line max-len\nexport function initPerimeterLabel(obj, points, measure, pdfviewer) {\n var labels = [];\n var angle = Point.findAngle(points[0], points[1]);\n var textele = textElement(obj, angle);\n if (!pdfviewer.enableImportAnnotationMeasurement && obj.notes && obj.notes !== '') {\n textele.content = obj.notes;\n }\n else {\n textele.content = measure.calculatePerimeter(obj);\n }\n if (obj.enableShapeLabel === true) {\n textele.style.strokeColor = obj.labelBorderColor;\n textele.style.fill = obj.labelFillColor;\n textele.style.fontSize = obj.fontSize;\n textele.style.color = obj.fontColor;\n textele.style.fontFamily = obj.fontFamily;\n }\n textele.rotateValue = { y: -10, angle: angle };\n labels.push(textele);\n return labels;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel[]} points - Specified the annotation point model array.\n * @param {MeasureAnnotation} measure - Specified the measure annotation object.\n * @hidden\n * @returns {string} - Returns the perimeter label value.\n */\nexport function updatePerimeterLabel(obj, points, measure) {\n var perimeter;\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var textElement_3 = obj.wrapper.children[parseInt(i.toString(), 10)];\n if (textElement_3 && !isNullOrUndefined(textElement_3.content)) {\n perimeter = measure.calculatePerimeter(obj);\n textElement_3.content = perimeter;\n textElement_3.childNodes[0].text = textElement_3.content;\n textElement_3.refreshTextElement();\n }\n }\n return perimeter;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @hidden\n * @returns {void}\n */\nexport function removePerimeterLabel(obj) {\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var textElement_4 = obj.wrapper.children[parseInt(i.toString(), 10)];\n if (textElement_4 && !isNullOrUndefined(textElement_4.content)) {\n obj.wrapper.children.splice(i, 1);\n }\n }\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @hidden\n * @returns {void}\n */\nexport function updateCalibrateLabel(obj) {\n if (obj.wrapper && obj.wrapper.children) {\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var textElement_5 = obj.wrapper.children[parseInt(i.toString(), 10)];\n if (textElement_5 && !isNullOrUndefined(textElement_5.content)) {\n textElement_5.content = obj.notes;\n textElement_5.childNodes[0].text = textElement_5.content;\n textElement_5.refreshTextElement();\n }\n }\n }\n}\n/**\n * Used to find the path for polygon shapes\n *\n * @param {PointModel[]} collection - Specified the polygon annotaion points collection.\n * @hidden\n * @returns {string} - Returns the polygon annotation path.\n */\nexport function getPolygonPath(collection) {\n var path = '';\n var seg;\n path = 'M' + collection[0].x + ' ' + collection[0].y;\n var i;\n for (i = 1; i < collection.length; i++) {\n seg = collection[parseInt(i.toString(), 10)];\n path += 'L' + seg.x + ' ' + seg.y;\n }\n path += 'Z';\n return path;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {number} angle - Specified the annotaion rotation angle.\n * @hidden\n * @returns {TextElement} - Returns the annotation text element.\n */\nexport function textElement(obj, angle) {\n var textele = new TextElement();\n setElementStype(obj, textele);\n textele.style.fill = 'transparent';\n textele.id = randomId();\n textele.horizontalAlignment = 'Center';\n textele.rotateValue = { y: 10, angle: angle };\n textele.verticalAlignment = 'Top';\n textele.relativeMode = 'Object';\n textele.setOffsetWithRespectToBounds(.5, .5, 'Absolute');\n // eslint-disable-next-line\n textele.offsetX;\n textele.style.textWrapping = 'NoWrap';\n return textele;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel[]} points - Specified the annotaion leader points.\n * @hidden\n * @returns {PathElement[]} - Returns the annotation path elements.\n */\nexport function initLeaders(obj, points) {\n var leaders = [];\n var leader = initLeader(obj, points[0], points[1]);\n leaders.push(leader);\n leader = initLeader(obj, points[1], points[0], true);\n leaders.push(leader);\n return leaders;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel} point1 - Specified the annotaion leader point1.\n * @param {PointModel} point2 - Specified the annotaion leader point2.\n * @param {boolean} isSecondLeader - Specified the is second leader or not.\n * @hidden\n * @returns {PathElement} - Returns the annotation path element.\n */\nexport function initLeader(obj, point1, point2, isSecondLeader) {\n var element = new PathElement();\n element.offsetX = point1.x;\n element.offsetY = point1.y;\n var angle = Point.findAngle(point1, point2);\n var center = { x: (point1.x + point2.x) / 2, y: (point1.y + point2.y) / 2 };\n var matrix = identityMatrix();\n rotateMatrix(matrix, 0 - angle, center.x, center.y);\n var rotatedPoint = transformPointByMatrix(matrix, point1);\n var newPoint1 = { x: rotatedPoint.x, y: rotatedPoint.y - obj.leaderHeight };\n matrix = identityMatrix();\n rotateMatrix(matrix, angle, element.offsetX, element.offsetY);\n rotatedPoint = transformPointByMatrix(matrix, newPoint1);\n var finalPoint = { x: point1.x, y: point1.y };\n element.offsetX = finalPoint.x;\n element.offsetY = finalPoint.y;\n element.transform = RotateTransform.Self;\n var getPath = 'M' + point1.x + ',' + point1.y + ',L' + rotatedPoint.x + ',' + rotatedPoint.y + 'Z';\n var size = new Size(0, obj.leaderHeight);\n element.pivot.x = .5;\n if (isSecondLeader) {\n element.id = 'leader2_' + randomId();\n element.pivot.y = 0;\n }\n else {\n element.id = 'leader1_' + randomId();\n element.pivot.y = 1;\n }\n setElementStype(obj, element);\n element.rotateAngle = angle;\n element.data = getPath;\n element.canMeasurePath = true;\n element.width = size.width;\n element.height = size.height;\n return element;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the annotation connector object.\n * @param {PointModel} reference - Specified the pointer reference value.\n * @returns {boolean} - Returns true or false.\n */\nexport function isPointOverConnector(connector, reference) {\n var vertexPoints = connector.vertexPoints;\n if (!isNullOrUndefined(vertexPoints)) {\n for (var i = 0; i < vertexPoints.length - 1; i++) {\n var start = vertexPoints[parseInt(i.toString(), 10)];\n var end = vertexPoints[i + 1];\n var rect = Rect.toBounds([start, end]);\n rect.Inflate(10);\n if (rect.containsPoint(reference)) {\n var intersectinPt = findNearestPoint(reference, start, end);\n var segment1 = { x1: start.x, x2: end.x, y1: start.y, y2: end.y };\n var segment2 = { x1: reference.x, x2: intersectinPt.x, y1: reference.y, y2: intersectinPt.y };\n var intersectDetails = intersect3(segment1, segment2);\n if (intersectDetails.enabled) {\n var distance = Point.findLength(reference, intersectDetails.intersectPt);\n if (Math.abs(distance) < 10) {\n return true;\n }\n }\n else {\n var rect_1 = Rect.toBounds([reference, reference]);\n rect_1.Inflate(3);\n if (rect_1.containsPoint(start) || rect_1.containsPoint(end)) {\n return true;\n }\n }\n if (Point.equals(reference, intersectinPt)) {\n return true;\n }\n }\n }\n }\n return false;\n}\n/**\n * @param {PointModel} reference - Specified the pointer reference value.\n * @param {PointModel} start - Specified the pointer start value.\n * @param {PointModel} end - Specified the pointer end value.\n * @private\n * @returns {PointModel} - Returns annotation point model.\n */\nexport function findNearestPoint(reference, start, end) {\n var shortestPoint;\n var shortest = Point.findLength(start, reference);\n var shortest1 = Point.findLength(end, reference);\n if (shortest > shortest1) {\n shortestPoint = end;\n }\n else {\n shortestPoint = start;\n }\n var angleBWStAndEnd = Point.findAngle(start, end);\n var angleBWStAndRef = Point.findAngle(shortestPoint, reference);\n var r = Point.findLength(shortestPoint, reference);\n var vaAngle = angleBWStAndRef + ((angleBWStAndEnd - angleBWStAndRef) * 2);\n return {\n x: (shortestPoint.x + r * Math.cos(vaAngle * Math.PI / 180)),\n y: (shortestPoint.y + r * Math.sin(vaAngle * Math.PI / 180))\n };\n}\n/**\n * @param {DecoratorShapes} shape - Specified the annotation decorator shapes.\n * @hidden\n * @returns {string} - Returns the annotation decorator shape value.\n */\nexport function getDecoratorShape(shape) {\n // eslint-disable-next-line\n return decoratorShapes[shape];\n}\nvar decoratorShapes = {\n 'OpenArrow': 'M15.9,23 L5,16 L15.9,9 L17,10.7 L8.7,16 L17,21.3Z',\n 'Square': 'M0,0 L10,0 L10,10 L0,10 z',\n 'Fletch': 'M14.8,10c0,0-3.5,6,0.2,12c0,0-2.5-6-10.9-6C4.1,16,11.3,16,14.8,10z',\n 'OpenFetch': 'M6,17c-0.6,0-1-0.4-1-1s0.4-1,1-1c10.9,0,11-5,11-5' +\n 'c0-0.6,0.4-1,1-1s1,0.4,1,1C19,10.3,18.9,17,6,17C6,17,6,17,6,17z ' +\n 'M18,23c-0.5,0-1-0.4-1-1c0-0.2-0.3-5-11-5c-0.6,0-1-0.5-1-1s0.4-1,1-1c0,0,0,0,0,0' +\n 'c12.9,0,13,6.7,13,7 C19,22.6,18.6,23,18,23z',\n 'IndentedArrow': 'M17,10c0,0-4.5,5.5,0,12L5,16L17,10z',\n 'OutdentedArrow': 'M14.6,10c0,0,5.4,6,0,12L5,16L14.6,10z',\n 'DoubleArrow': 'M19,10 L19,22 L13,16Z M12,10 L12,22 L6,16Z',\n 'Arrow': 'M15,10 L15,22 L5,16Z',\n 'Diamond': 'M12,23l-7-7l7-7l6.9,7L12,23z',\n 'Circle': 'M0,50 A50,50,0 1 1 100,50 A50,50,0 1 1 0,50 Z',\n 'Butt': 'M0,0 L0,90'\n};\n","import { contains } from '@syncfusion/ej2-drawings';\nimport { Rect } from '@syncfusion/ej2-drawings';\nimport { Point, identityMatrix, rotateMatrix } from '@syncfusion/ej2-drawings';\nimport { Container, transformPointByMatrix } from '@syncfusion/ej2-drawings';\nimport { isPointOverConnector } from './connector-util';\nimport { LineTool, NodeDrawingTool, StampTool } from './tools';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @private\n * @param {MouseEvent | TouchEvent} event - Specified the annotaion event.\n * @param {PdfViewerBase} pdfBase - Specified the pdfviewer base element.\n * @param {PdfViewer} pdfViewer - Specified the pdfviewer element.\n * @param {boolean} isOverlapped - Specified the overlapped element or not.\n * @returns {any} - Returns the active element.\n */\n// eslint-disable-next-line\nexport function findActiveElement(event, pdfBase, pdfViewer, isOverlapped) {\n if (pdfViewer && pdfBase.activeElements.activePageID > -1) {\n var objects = findObjectsUnderMouse(pdfBase, pdfViewer, event);\n var object = findObjectUnderMouse(objects, event, pdfBase, pdfViewer);\n if (isOverlapped) {\n return objects;\n }\n return object;\n }\n return undefined;\n}\n/**\n * @private\n * @param {PdfViewerBase} pdfBase - Specified the pdfviewer base element.\n * @param {PdfViewer} pdfViewer - Specified the pdfviewer element.\n * @param {MouseEvent} event - Specified the annotaion event.\n * @returns {IElement[]} - Returns the annotaion elements.\n */\nexport function findObjectsUnderMouse(pdfBase, pdfViewer, event) {\n var pt = pdfBase.currentPosition || { x: event.offsetX, y: event.offsetY };\n pt = { x: pt.x / pdfBase.getZoomFactor(), y: pt.y / pdfBase.getZoomFactor() };\n var pageTable = pdfViewer.getPageTable(pdfBase.activeElements.activePageID);\n var objArray = findObjects(pt, pageTable.objects, pdfViewer.touchPadding);\n return objArray;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel[]} objects - Specified the annotaion object model.\n * @param {any} event - Specified the annotaion event.\n * @param {PdfViewerBase} pdfBase - Specified the pdfviewer base element.\n * @param {PdfViewer} pdfViewer - Specified the pdfviewer element.\n * @returns {IElement} - Returns the annotaion element.\n */\nexport function findObjectUnderMouse(\n// eslint-disable-next-line\nobjects, event, pdfBase, pdfViewer) {\n var actualTarget = null;\n var touchArg;\n var offsetX;\n var offsetY;\n if (event && event.type && event.type.indexOf('touch') !== -1) {\n touchArg = event;\n if (pdfViewer.annotation) {\n var pageDiv = pdfBase.getElement('_pageDiv_' + pdfViewer.annotation.getEventPageNumber(event));\n if (pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n offsetX = touchArg.changedTouches[0].clientX - pageCurrentRect.left;\n offsetY = touchArg.changedTouches[0].clientY - pageCurrentRect.top;\n }\n }\n // eslint-disable-next-line\n }\n else if (event && event.target && event.path && event.target.parentElement && event.target.parentElement.classList.contains('foreign-object')) {\n // eslint-disable-next-line\n var targetParentRect = event.path[4].getBoundingClientRect();\n offsetX = event.clientX - targetParentRect.left;\n offsetY = event.clientY - targetParentRect.top;\n }\n else if (event.target && event.target.parentElement && event.target.parentElement.classList.contains('foreign-object')) {\n // eslint-disable-next-line\n var targetParentRect = event.target.offsetParent.offsetParent.offsetParent.getBoundingClientRect();\n offsetX = event.clientX - targetParentRect.left;\n offsetY = event.clientY - targetParentRect.top;\n // eslint-disable-next-line\n }\n else if (event.target && event.target.parentElement && event.target.parentElement.parentElement && event.target.parentElement.parentElement.classList.contains('foreign-object')) {\n var targetParentRect = void 0;\n if (event.target.offsetParent && event.target.offsetParent.offsetParent && event.target.offsetParent.offsetParent.offsetParent && event.target.offsetParent.offsetParent.offsetParent.offsetParent) {\n // eslint-disable-next-line\n targetParentRect = event.target.offsetParent.offsetParent.offsetParent.offsetParent.getBoundingClientRect();\n offsetX = event.clientX - targetParentRect.left;\n offsetY = event.clientY - targetParentRect.top;\n }\n else if (event.target.parentElement.offsetParent && event.target.parentElement.offsetParent.offsetParent) {\n // eslint-disable-next-line\n targetParentRect = event.target.parentElement.offsetParent.offsetParent.getBoundingClientRect();\n offsetX = event.clientX - targetParentRect.left;\n offsetY = event.clientY - targetParentRect.top;\n // eslint-disable-next-line\n }\n }\n else {\n offsetX = !isNaN(event.offsetX) ? event.offsetX : (event.position ? event.position.x : 0);\n offsetY = !isNaN(event.offsetY) ? event.offsetY : (event.position ? event.position.y : 0);\n }\n //EJ2-63562 - Reduced the offset selector by half to improve selection of fields in mobile devices\n var offsetForSelector = pdfViewer.touchPadding / 2;\n var boundsDiff = 0;\n for (var i = 0; i < objects.length; i++) {\n if (!(objects[parseInt(i.toString(), 10)].shapeAnnotationType === 'Distance' || objects[parseInt(i.toString(), 10)].shapeAnnotationType === 'Line' || objects[parseInt(i.toString(), 10)].shapeAnnotationType === 'LineWidthArrowHead' || pdfBase.tool instanceof LineTool)) {\n var bounds = objects[parseInt(i.toString(), 10)].wrapper.bounds;\n var rotationValue = 0;\n if (objects[parseInt(i.toString(), 10)].shapeAnnotationType === 'Stamp' || objects[parseInt(i.toString(), 10)].shapeAnnotationType === 'Image') {\n rotationValue = 25;\n }\n // eslint-disable-next-line max-len\n if ((((bounds.x - offsetForSelector) * pdfBase.getZoomFactor()) < offsetX) && (((bounds.x + bounds.width + offsetForSelector) * pdfBase.getZoomFactor()) > offsetX) &&\n // eslint-disable-next-line max-len\n (((bounds.y - offsetForSelector - rotationValue) * pdfBase.getZoomFactor()) < offsetY) && (((bounds.y + bounds.height + offsetForSelector) * pdfBase.getZoomFactor()) > offsetY)) {\n if (pdfBase.tool instanceof NodeDrawingTool || pdfBase.tool instanceof StampTool) {\n actualTarget = objects[parseInt(i.toString(), 10)];\n }\n else {\n if (!boundsDiff) {\n actualTarget = objects[parseInt(i.toString(), 10)];\n // eslint-disable-next-line max-len\n boundsDiff = (offsetX - ((bounds.x - offsetForSelector) * pdfBase.getZoomFactor())) + (((bounds.x + bounds.width + offsetForSelector) * pdfBase.getZoomFactor()) - offsetX) +\n // eslint-disable-next-line max-len\n (offsetY - ((bounds.y - offsetForSelector - rotationValue) * pdfBase.getZoomFactor())) + (((bounds.y + bounds.height + offsetForSelector) * pdfBase.getZoomFactor()) - offsetY);\n }\n else {\n // eslint-disable-next-line max-len\n var objectBounds = (offsetX - ((bounds.x - offsetForSelector) * pdfBase.getZoomFactor())) + (((bounds.x + bounds.width + offsetForSelector) * pdfBase.getZoomFactor()) - offsetX) +\n // eslint-disable-next-line max-len\n (offsetY - ((bounds.y - offsetForSelector - rotationValue) * pdfBase.getZoomFactor())) + (((bounds.y + bounds.height + offsetForSelector) * pdfBase.getZoomFactor()) - offsetY);\n if (boundsDiff > objectBounds) {\n actualTarget = objects[parseInt(i.toString(), 10)];\n boundsDiff = objectBounds;\n }\n else if (boundsDiff === objectBounds) {\n actualTarget = objects[parseInt(i.toString(), 10)];\n boundsDiff = objectBounds;\n }\n else if ((objects[parseInt(i.toString(), 10)].shapeAnnotationType === \"Image\") || (objects[parseInt(i.toString(), 10)].shapeAnnotationType === \"Stamp\")) {\n actualTarget = objects[parseInt(i.toString(), 10)];\n }\n }\n }\n }\n }\n else {\n var pt = { x: offsetX / pdfBase.getZoomFactor(), y: offsetY / pdfBase.getZoomFactor() };\n var obj = findElementUnderMouse(objects[parseInt(i.toString(), 10)], pt, offsetForSelector);\n var isOver = isPointOverConnector(objects[parseInt(i.toString(), 10)], pt);\n if (obj && !isOver) {\n var newpoint = CalculateLeaderPoints(objects[parseInt(i.toString(), 10)], obj);\n if (newpoint) {\n var rect = Rect.toBounds([newpoint, newpoint]);\n rect.Inflate(10);\n if (rect.containsPoint(pt)) {\n isOver = true;\n }\n }\n }\n if (obj && isOver) {\n actualTarget = objects[parseInt(i.toString(), 10)];\n }\n }\n }\n return actualTarget;\n}\n/**\n * @private\n * @param {any} selector - Specified the annotaion selctor.\n * @param {any} currentobject - Specified the current annotaion object.\n * @returns {any} - Returns the leader points.\n */\n// eslint-disable-next-line\nexport function CalculateLeaderPoints(selector, currentobject) {\n var leaderCount = 0;\n var sourcePoint = selector.sourcePoint;\n var targetPoint = selector.targetPoint;\n if (selector.shapeAnnotationType === 'Distance') {\n var segment = currentobject;\n var newPoint1 = void 0;\n var angle = Point.findAngle(selector.sourcePoint, selector.targetPoint);\n if (segment.id.indexOf('leader') > -1) {\n var center = selector.wrapper.children[0].bounds.center;\n if (leaderCount === 0 && segment.id.indexOf('leader1') > -1) {\n newPoint1 = { x: selector.sourcePoint.x, y: selector.sourcePoint.y - selector.leaderHeight };\n center = sourcePoint;\n }\n else {\n newPoint1 = { x: selector.targetPoint.x, y: selector.targetPoint.y - selector.leaderHeight };\n center = targetPoint;\n }\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, center.x, center.y);\n var rotatedPoint = transformPointByMatrix(matrix, { x: newPoint1.x, y: newPoint1.y });\n return rotatedPoint;\n }\n }\n}\n/**\n * @private\n * @param {IElement} obj - Specified the annotation element.\n * @param {PointModel} position - Specified the annotation position value.\n * @param {number} padding - Specified the annotation padding.\n * @returns {DrawingElement} - Returns the annotation drawing element.\n */\nexport function findElementUnderMouse(obj, position, padding) {\n return findTargetShapeElement(obj.wrapper, position, padding);\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object model.\n * @param {string} key - Specified the annotation key value.\n * @param {Object[]} collection - Specified the annotation collection.\n * @returns {void}\n */\nexport function insertObject(obj, key, collection) {\n if (collection.length === 0) {\n collection.push(obj);\n }\n else if (collection.length === 1) {\n // eslint-disable-next-line\n if (collection[0][key] > obj[key]) {\n collection.splice(0, 0, obj);\n }\n else {\n collection.push(obj);\n }\n }\n else if (collection.length > 1) {\n var low = 0;\n var high = collection.length - 1;\n var mid = Math.floor((low + high) / 2);\n while (mid !== low) {\n // eslint-disable-next-line\n if (collection[mid][key] < obj[key]) {\n low = mid;\n mid = Math.floor((low + high) / 2);\n // eslint-disable-next-line\n }\n else if (collection[mid][key] > obj[key]) {\n high = mid;\n mid = Math.floor((low + high) / 2);\n }\n }\n // eslint-disable-next-line\n if (collection[high][key] < obj[key]) {\n collection.push(obj);\n // eslint-disable-next-line\n }\n else if (collection[low][key] > obj[key]) {\n collection.splice(low, 0, obj);\n // eslint-disable-next-line\n }\n else if ((collection[low][key] < obj[key]) && collection[high][key] > obj[key]) {\n collection.splice(high, 0, obj);\n }\n }\n}\n/**\n * @private\n * @param {Container} container - Specified the annotaion container.\n * @param {PointModel} position - Specified the annotation position.\n * @param {number} padding - Specified the annotaion padding value.\n * @returns {DrawingElement} - Returns the annotation drawing element.\n */\nexport function findTargetShapeElement(container, position, padding) {\n if (container && container.children) {\n for (var i = container.children.length - 1; i >= 0; i--) {\n var shapeElement = container.children[parseInt(i.toString(), 10)];\n var touchPadding = padding;\n // eslint-disable-next-line\n if (!isNullOrUndefined(shapeElement.children) && shapeElement.children.length > 0) {\n // eslint-disable-next-line\n for (var j = shapeElement.children.length - 1; j >= 0; j--) {\n // eslint-disable-next-line\n var currentTarget = shapeElement.children[j];\n if (currentTarget && currentTarget.bounds.containsPoint(position, touchPadding)) {\n if (currentTarget instanceof Container) {\n var targetElement = this.findTargetElement(currentTarget, position);\n if (targetElement) {\n return targetElement;\n }\n }\n if (currentTarget.bounds.containsPoint(position, touchPadding)) {\n return currentTarget;\n }\n }\n }\n }\n else {\n if (shapeElement && shapeElement.bounds.containsPoint(position, touchPadding)) {\n if (shapeElement instanceof Container) {\n var targetElement = this.findTargetElement(shapeElement, position);\n if (targetElement) {\n return targetElement;\n }\n }\n if (shapeElement.bounds.containsPoint(position, touchPadding)) {\n return shapeElement;\n }\n }\n }\n }\n }\n if (container && container.bounds.containsPoint(position, padding) && container.style.fill !== 'none') {\n var element = container;\n var paddingValue = 10;\n var rotateThumbDistance = 30;\n var matrix = identityMatrix();\n rotateMatrix(matrix, element.parentTransform, element.offsetX, element.offsetY);\n var x = element.offsetX - element.pivot.x * element.actualSize.width;\n var y = element.offsetY - element.pivot.y * element.actualSize.height;\n var rotateThumb = {\n x: x + ((element.pivot.x === 0.5 ? element.pivot.x * 2 : element.pivot.x) * element.actualSize.width / 2),\n y: y - rotateThumbDistance\n };\n rotateThumb = transformPointByMatrix(matrix, rotateThumb);\n if (contains(position, rotateThumb, paddingValue)) {\n return container;\n }\n }\n return null;\n}\n/**\n * @private\n * @param {PointModel} region - Specified the annotation region point model.\n * @param {PdfAnnotationBaseModel[]} objCollection - Specified the annotation object collections.\n * @returns {PdfAnnotationBaseModel[]} - Returns the annotation object collections.\n */\nexport function findObjects(region, objCollection, touchPadding) {\n var objects = [];\n for (var _i = 0, objCollection_1 = objCollection; _i < objCollection_1.length; _i++) {\n var obj = objCollection_1[_i];\n if (findElementUnderMouse(obj, region, touchPadding) || ((obj.shapeAnnotationType === 'Stamp') && findElementUnderMouse(obj, region, 40))) {\n insertObject(obj, 'zIndex', objects);\n }\n }\n return objects;\n}\n/**\n * @private\n * @param {MouseEvent} event - Specified the annotaion mouse event.\n * @param {PdfViewerBase} pdfBase - Specified the pdfBase element.\n * @returns {number} - Returns the active page Id.\n */\nexport function findActivePage(event, pdfBase) {\n var activePageID = undefined;\n if (event.target && event.target.wrapper) {\n return event.target.pageIndex;\n }\n if (event.target) {\n var elementIdColl = event.target.id.split('_');\n if (elementIdColl.length > 0) {\n // eslint-disable-next-line radix\n activePageID = parseInt(elementIdColl[elementIdColl.length - 1]);\n }\n }\n return activePageID;\n}\n/**\n * @hidden\n */\nvar ActiveElements = /** @class */ (function () {\n function ActiveElements() {\n this.activePage = undefined;\n this.activePageID = undefined;\n }\n Object.defineProperty(ActiveElements.prototype, \"activePageID\", {\n /**\n * @private\n * @returns {number} - Returns the active page Id.\n */\n get: function () {\n return this.activePage;\n },\n /**\n * @private\n * @param {number} offset - The page offset value.\n */\n set: function (offset) {\n this.activePage = offset;\n // eslint-disable-next-line\n if (offset !== this.activePage) { }\n },\n enumerable: true,\n configurable: true\n });\n return ActiveElements;\n}());\nexport { ActiveElements };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { randomId, Point } from '@syncfusion/ej2-drawings';\nimport { rotatePoint } from '@syncfusion/ej2-drawings';\nimport { Rect } from '@syncfusion/ej2-drawings';\nimport { transformPointByMatrix, rotateMatrix, identityMatrix } from '@syncfusion/ej2-drawings';\nimport { TextElement } from '@syncfusion/ej2-drawings';\nimport { Selector } from './selector';\nimport { findActiveElement } from './action';\nimport { cloneObject, isLineShapes } from './drawing-util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { updatePerimeterLabel } from './connector-util';\nimport { Browser } from '@syncfusion/ej2-base';\n/**\n * Defines the interactive tools\n *\n * @hidden\n */\nvar ToolBase = /** @class */ (function () {\n /**\n * Initializes the tool\n *\n * @param {PdfViewer} pdfViewer - Specified the pdfviewer component.\n * @param {PdfViewerBase} pdfViewerBase - Specified the pdfViewer base component.\n * @param {boolean} protectChange - Set the default value as false.\n */\n function ToolBase(pdfViewer, pdfViewerBase, protectChange) {\n if (protectChange === void 0) { protectChange = false; }\n /**\n * Command that is corresponding to the current action\n */\n this.commandHandler = null;\n /**\n * Sets/Gets whether the interaction is being done\n */\n this.inAction = false;\n /**\n * Sets/Gets the protect change\n */\n this.pdfViewerBase = null;\n /**\n * Sets/Gets the current element that is under mouse\n */\n /** @private */\n this.currentElement = null;\n /** @private */\n this.blocked = false;\n this.isTooltipVisible = false;\n /** @private */\n this.childTable = {};\n /** @private */\n this.helper = undefined;\n /**\n * Sets/Gets the previous object when mouse down\n */\n this.undoElement = { annotations: [] };\n this.undoParentElement = { annotations: [] };\n this.commandHandler = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param {IElement} currentElement - Specified the current element.\n * @returns {void}\n */\n ToolBase.prototype.startAction = function (currentElement) {\n this.currentElement = currentElement;\n this.inAction = true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse up event arguments.\n * @returns {void}\n */\n ToolBase.prototype.mouseDown = function (args) {\n this.currentElement = args.source;\n this.startPosition = this.currentPosition = this.prevPosition = args.position;\n this.isTooltipVisible = true;\n this.startAction(args.source);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse up event arguments.\n * @returns {boolean} - Returns true or false.\n */\n ToolBase.prototype.mouseMove = function (args) {\n this.currentPosition = args.position;\n //this.currentElement = currentElement;\n this.prevPageId = this.pdfViewerBase.activeElements.activePageID;\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse up event arguments.\n * @returns {void}\n */\n ToolBase.prototype.mouseUp = function (args) {\n this.currentPosition = args.position;\n // this.currentElement = currentElement;\n this.isTooltipVisible = false;\n //At the end\n this.endAction();\n this.helper = null;\n };\n ToolBase.prototype.endAction = function () {\n //remove helper\n if (this.commandHandler) {\n this.commandHandler.tool = '';\n if (this.helper) {\n this.commandHandler.remove(this.helper);\n }\n }\n this.commandHandler = null;\n this.currentElement = null;\n this.currentPosition = null;\n this.inAction = false;\n this.blocked = false;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse wheel event arguments.\n * @returns {void}\n */\n ToolBase.prototype.mouseWheel = function (args) {\n this.currentPosition = args.position;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse leave event arguments.\n * @returns {void}\n */\n ToolBase.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n // eslint-disable-next-line\n ToolBase.prototype.updateSize = function (shape, startPoint, endPoint, corner, initialBounds, angle, isMouseUp) {\n var zoom = this.commandHandler.viewerBase.getZoomFactor();\n var difx = this.currentPosition.x / zoom - this.startPosition.x / zoom;\n var dify = this.currentPosition.y / zoom - this.startPosition.y / zoom;\n var rotateAngle = (shape instanceof TextElement) ? angle : shape.rotateAngle;\n var matrix = identityMatrix();\n rotateMatrix(matrix, -rotateAngle, 0, 0);\n var deltaWidth = 0;\n var deltaHeight = 0;\n var diff;\n var width = (shape instanceof TextElement) ? shape.actualSize.width : shape.wrapper.bounds.width;\n var height = (shape instanceof TextElement) ? shape.actualSize.height : shape.wrapper.bounds.height;\n // eslint-disable-next-line\n var obj = shape;\n if (!shape.formFieldAnnotationType) {\n if (!shape.annotName && !shape.shapeAnnotationType) {\n if (shape) {\n // eslint-disable-next-line\n obj = shape.annotations[0];\n }\n }\n }\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule ? this.commandHandler.annotationModule.findAnnotationSettings(obj) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n var isAnnotationSet = false;\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n isAnnotationSet = true;\n }\n if (isAnnotationSet && isMouseUp) {\n // eslint-disable-next-line\n var size = this.getPositions(corner, difx, dify);\n var newWidth = width + size.x;\n var newHeight = height + size.y;\n // eslint-disable-next-line max-len\n if ((newHeight > annotationMinHeight && newHeight < annotationMaxHeight) && (newWidth > annotationMinWidth && newWidth < annotationMaxWidth)) {\n // eslint-disable-next-line\n difx = difx;\n // eslint-disable-next-line\n dify = dify;\n }\n else {\n if (newHeight < annotationMinHeight || newHeight > annotationMaxHeight) {\n if (newHeight < annotationMinHeight) {\n dify = annotationMinHeight - height;\n }\n else {\n dify = annotationMaxHeight - height;\n }\n }\n if (newWidth < annotationMinWidth || newWidth > annotationMaxWidth) {\n if (newWidth < annotationMinWidth) {\n difx = annotationMinWidth - width;\n }\n else {\n difx = annotationMaxWidth - width;\n }\n }\n }\n }\n switch (corner) {\n case 'ResizeWest':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n deltaHeight = 1;\n // eslint-disable-next-line\n difx = difx;\n dify = 0;\n if (isAnnotationSet) {\n if (initialBounds.width - difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n }\n deltaWidth = (initialBounds.width - difx) / width;\n break;\n case 'ResizeEast':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n dify = 0;\n if (isAnnotationSet) {\n if (initialBounds.width + difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n }\n deltaWidth = (initialBounds.width + difx) / width;\n deltaHeight = 1;\n break;\n case 'ResizeNorth':\n deltaWidth = 1;\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.height - dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaHeight = (initialBounds.height - dify) / height;\n break;\n case 'ResizeSouth':\n deltaWidth = 1;\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.height + dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaHeight = (initialBounds.height + dify) / height;\n break;\n case 'ResizeNorthEast':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.width + difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n if (initialBounds.height - dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaWidth = (initialBounds.width + difx) / width;\n deltaHeight = (initialBounds.height - dify) / height;\n break;\n case 'ResizeNorthWest':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.width - difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n if (initialBounds.height - dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaWidth = (initialBounds.width - difx) / width;\n deltaHeight = (initialBounds.height - dify) / height;\n break;\n case 'ResizeSouthEast':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.width + difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n if (initialBounds.height + dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaHeight = (initialBounds.height + dify) / height;\n deltaWidth = (initialBounds.width + difx) / width;\n break;\n case 'ResizeSouthWest':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.width - difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n if (initialBounds.height + dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaWidth = (initialBounds.width - difx) / width;\n deltaHeight = (initialBounds.height + dify) / height;\n break;\n }\n return { width: deltaWidth, height: deltaHeight };\n };\n ToolBase.prototype.getPivot = function (corner) {\n switch (corner) {\n case 'ResizeWest':\n return { x: 1, y: 0.5 };\n case 'ResizeEast':\n return { x: 0, y: 0.5 };\n case 'ResizeNorth':\n return { x: 0.5, y: 1 };\n case 'ResizeSouth':\n return { x: 0.5, y: 0 };\n case 'ResizeNorthEast':\n return { x: 0, y: 1 };\n case 'ResizeNorthWest':\n return { x: 1, y: 1 };\n case 'ResizeSouthEast':\n return { x: 0, y: 0 };\n case 'ResizeSouthWest':\n return { x: 1, y: 0 };\n }\n return { x: 0.5, y: 0.5 };\n };\n ToolBase.prototype.getPositions = function (corner, x, y) {\n switch (corner) {\n case 'ResizeEast':\n return { x: x, y: 0 };\n case 'ResizeSouthEast':\n return { x: x, y: y };\n case 'ResizeSouth':\n return { x: 0, y: y };\n case 'ResizeNorth':\n return { x: 0, y: -y };\n case 'ResizeNorthEast':\n return { x: x, y: -y };\n case 'ResizeNorthWest':\n return { x: -x, y: -y };\n case 'ResizeWest':\n return { x: -x, y: 0 };\n case 'ResizeSouthWest':\n return { x: -x, y: y };\n }\n return { x: x, y: y };\n };\n return ToolBase;\n}());\nexport { ToolBase };\n/**\n * Helps to select the objects\n *\n * @hidden\n */\nvar SelectTool = /** @class */ (function (_super) {\n __extends(SelectTool, _super);\n function SelectTool(commandHandler, base) {\n return _super.call(this, commandHandler, base, true) || this;\n // this.action = action;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse down event arguments.\n * @returns {void}\n */\n SelectTool.prototype.mouseDown = function (args) {\n this.inAction = true;\n this.mouseEventHelper(args);\n _super.prototype.mouseDown.call(this, args);\n };\n SelectTool.prototype.mouseEventHelper = function (args) {\n if (this.commandHandler && this.commandHandler.annotationModule) {\n // eslint-disable-next-line\n this.commandHandler.annotationModule.overlappedCollections = findActiveElement(args, this.pdfViewerBase, this.commandHandler, true);\n }\n // eslint-disable-next-line\n var object = findActiveElement(args, this.pdfViewerBase, this.commandHandler);\n // if (!isNullOrUndefined(object) && (object as any).shapeAnnotationType != 'Path'){\n var isLock = false;\n // eslint-disable-next-line\n if (object && object.shapeAnnotationType === 'StickyNotes') {\n // eslint-disable-next-line\n if (object.annotationSettings && object.annotationSettings.isLock) {\n if (this.commandHandler.annotationModule.checkAllowedInteractions('Select', object)) {\n isLock = false;\n }\n else {\n isLock = true;\n }\n }\n }\n if (!isLock) {\n // eslint-disable-next-line\n var currentSelctor = void 0;\n if (args.source && args.annotationSelectorSettings !== null) {\n currentSelctor = args.source.annotationSelectorSettings;\n }\n else {\n currentSelctor = '';\n }\n if (this.commandHandler) {\n var selectedObject = this.commandHandler.selectedItems;\n if (selectedObject) {\n // eslint-disable-next-line\n var annotation = selectedObject.annotations[0];\n // eslint-disable-next-line\n var formField = selectedObject.formFields[0];\n var currentAnnot = this.commandHandler.selectedItems.annotations[0];\n var currentSource = args.source;\n if ((selectedObject.annotations.length) && args.info && !args.info.ctrlKey\n // eslint-disable-next-line\n && this.commandHandler.annotationModule && this.commandHandler.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus === false) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n }\n else if (args.info && args.info.ctrlKey && ((currentSource && currentSource.shapeAnnotationType === 'FreeText') || (currentAnnot && currentAnnot.shapeAnnotationType === 'FreeText'))) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n }\n else if (isNullOrUndefined(object) && (this.commandHandler.annotationModule && !isNullOrUndefined(this.commandHandler.annotation.textMarkupAnnotationModule) && isNullOrUndefined(this.commandHandler.annotation.textMarkupAnnotationModule.currentTextMarkupAnnotation)) && this.commandHandler.formDesignerModule && !((currentSource && currentSource.shapeAnnotationType === 'FreeText') || (currentAnnot && (currentAnnot.shapeAnnotationType === 'FreeText' || currentAnnot.shapeAnnotationType === 'Image' || currentAnnot.shapeAnnotationType === 'StickyNotes')))) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n }\n if (object) {\n if ((isNullOrUndefined(formField) || (formField && formField.id !== object.id)) && !isNullOrUndefined(this.pdfViewerBase.isFreeTextSelected) && !this.pdfViewerBase.isFreeTextSelected) {\n this.commandHandler.select([object.id], currentSelctor);\n this.commandHandler.viewerBase.isAnnotationMouseDown = true;\n }\n this.pdfViewerBase.isFreeTextSelected = false;\n this.commandHandler.viewerBase.isFormFieldMouseDown = true;\n }\n if (selectedObject.annotations.length === 0 && annotation && annotation.shapeAnnotationType !== 'HandWrittenSignature' && annotation.shapeAnnotationType !== 'SignatureText' && annotation.shapeAnnotationType !== 'SignatureImage' && annotation.shapeAnnotationType !== 'Path' && !annotation.formFieldAnnotationType) {\n if (this.commandHandler.enableToolbar && Browser.isDevice && !this.commandHandler.enableDesktopMode) {\n this.commandHandler.toolbarModule.showToolbar(true);\n }\n this.commandHandler.fireAnnotationUnSelect(annotation.annotName, annotation.pageIndex, annotation);\n }\n // eslint-disable-next-line max-len\n if (selectedObject.formFields.length === 0 && this.commandHandler.formDesignerModule && formField && formField.formFieldAnnotationType) {\n // eslint-disable-next-line\n var field = { name: formField.name, id: formField.id, value: formField.value, fontFamily: formField.fontFamily, fontSize: formField.fontSize, fontStyle: formField.fontStyle,\n // eslint-disable-next-line\n color: formField.color, backgroundColor: formField.backgroundColor, alignment: formField.alignment, isReadonly: formField.isReadOnly, visibility: formField.visibility,\n // eslint-disable-next-line\n maxLength: formField.maxLength, isRequired: formField.isRequired, isPrint: formField.isPrint, rotation: formField.rotation, tooltip: formField.tooltip,\n // eslint-disable-next-line\n options: formField.options, isChecked: formField.isChecked, isSelected: formField.isSelected };\n this.commandHandler.fireFormFieldUnselectEvent('formFieldUnselect', field, formField.pageIndex);\n }\n else if (this.pdfViewerBase.currentTarget && this.pdfViewerBase.currentTarget.id && this.commandHandler.formFields && event.type === 'mousedown') {\n for (var i = 0; i < this.commandHandler.formFields.length; i++) {\n var formField_1 = this.commandHandler.formFields[parseInt(i.toString(), 10)];\n if (this.pdfViewerBase.currentTarget && this.pdfViewerBase.currentTarget.id === formField_1.id) {\n // eslint-disable-next-line\n var field = {\n value: formField_1.value, fontFamily: formField_1.fontFamily, fontSize: formField_1.fontSize, fontStyle: formField_1.fontStyle,\n // eslint-disable-next-line\n color: formField_1.color, backgroundColor: formField_1.backgroundColor, alignment: formField_1.alignment, isReadonly: formField_1.isReadonly, visibility: formField_1.visibility,\n // eslint-disable-next-line\n maxLength: formField_1.maxLength, isRequired: formField_1.isRequired, isPrint: formField_1.isPrint, rotation: formField_1.rotateAngle, tooltip: formField_1.tooltip,\n // eslint-disable-next-line\n options: formField_1.options, isChecked: formField_1.isChecked, isSelected: formField_1.isSelected\n };\n if (!object) {\n this.commandHandler.fireFocusOutFormField(field, formField_1.pageIndex);\n this.pdfViewerBase.currentTarget = null;\n }\n else {\n if (this.pdfViewerBase.currentTarget.id != event.target.id && event.target.className != 'e-pv-text-layer') {\n this.commandHandler.fireFocusOutFormField(field, formField_1.pageIndex);\n this.pdfViewerBase.currentTarget = null;\n }\n }\n }\n }\n }\n }\n }\n }\n // } else {\n // if (!isNullOrUndefined(this.commandHandler))\n // this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n // }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse move event arguments.\n * @returns {boolean} - Returns true or false.\n */\n SelectTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n //draw selected region\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse up event arguments.\n * @returns {void}\n */\n SelectTool.prototype.mouseUp = function (args) {\n this.mouseEventHelper(args);\n this.inAction = false;\n _super.prototype.mouseUp.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse leave event arguments.\n * @returns {void}\n */\n SelectTool.prototype.mouseLeave = function (args) {\n if (this.inAction) {\n this.mouseUp(args);\n }\n };\n return SelectTool;\n}(ToolBase));\nexport { SelectTool };\n/** @hidden */\nvar MoveTool = /** @class */ (function (_super) {\n __extends(MoveTool, _super);\n function MoveTool(commandHandler, base) {\n var _this = _super.call(this, commandHandler, base) || this;\n /** @private */\n _this.currentTarget = null;\n /** @private */\n _this.prevNode = null;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse down event arguments.\n * @returns {void}\n */\n MoveTool.prototype.mouseDown = function (args) {\n _super.prototype.mouseDown.call(this, args);\n this.offset = { x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY };\n this.startPosition = args.position;\n var nodeMouseDown = cloneObject(args.source);\n this.redoElement = {\n bounds: {\n x: nodeMouseDown.wrapper.offsetX, y: nodeMouseDown.wrapper.offsetY,\n width: nodeMouseDown.wrapper.actualSize.width, height: nodeMouseDown.wrapper.actualSize.height\n }\n // eslint-disable-next-line\n };\n if (isLineShapes(nodeMouseDown)) {\n this.redoElement.vertexPoints = nodeMouseDown.vertexPoints;\n this.redoElement.leaderHeight = nodeMouseDown.leaderHeight;\n }\n this.inAction = true;\n };\n /**\n * @private\n * @param {any} args - Specified the mouse event arguments.\n * @returns {void}\n */\n // eslint-disable-next-line\n MoveTool.prototype.mouseUp = function (args) {\n if (this.commandHandler && args.source) {\n this.checkisAnnotationMove(args);\n var isDragged = false;\n var currentSelctor = args.source.annotationSelectorSettings;\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([args.source.id], currentSelctor);\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.activeElements.activePageID == args.source.pageIndex) {\n this.commandHandler.dragSelectedObjects(this.calculateMouseActionXDiff(args), this.calculateMouseActionYDiff(args), this.pdfViewerBase.activeElements.activePageID, currentSelctor, null);\n }\n if (args.source && (args.source.formFieldAnnotationType === 'Textbox' || args.source.formFieldAnnotationType === 'Checkbox'\n || args.source.formFieldAnnotationType === 'RadioButton' || args.source.formFieldAnnotationType === 'ListBox'\n || args.source.formFieldAnnotationType === 'SignatureField' || args.source.formFieldAnnotationType === 'InitialField' || args.source.formFieldAnnotationType === 'DropdownList'\n || args.source.formFieldAnnotationType === 'PasswordField')) {\n this.commandHandler.formDesignerModule.updateHTMLElement(args.source);\n }\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelctor);\n this.commandHandler.viewerBase.isAnnotationMouseMove = false;\n this.commandHandler.viewerBase.isFormFieldMouseMove = false;\n // eslint-disable-next-line\n var newShapeObject = {\n bounds: {\n x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY,\n width: args.source.wrapper.actualSize.width, height: args.source.wrapper.actualSize.height\n }, modifiedDate: args.source.modifiedDate\n };\n if (isLineShapes(args.source)) {\n newShapeObject.vertexPoints = args.source.vertexPoints;\n newShapeObject.leaderHeight = args.source.leaderHeight;\n }\n if (args.target && args.target.formFieldAnnotationType) {\n var node = args.target;\n var field = {\n // eslint-disable-next-line\n value: node.value, fontFamily: node.fontFamily, fontSize: node.fontSize, fontStyle: node.fontStyle,\n // eslint-disable-next-line\n color: node.color, backgroundColor: node.backgroundColor, borderColor: node.borderColor,\n // eslint-disable-next-line\n thickness: node.thickness, alignment: node.alignment, isReadonly: node.isReadonly, visibility: node.visibility,\n // eslint-disable-next-line\n maxLength: node.maxLength, isRequired: node.isRequired, isPrint: node.isPrint, rotation: node.rotateAngle, tooltip: node.tooltip, options: node.options,\n // eslint-disable-next-line\n isChecked: node.isChecked, isSelected: node.isSelected\n };\n // eslint-disable-next-line max-len\n var currentPosition = { X: args.source.wrapper.offsetX, Y: args.source.wrapper.offsetY, Width: args.source.wrapper.actualSize.width, Height: args.source.wrapper.actualSize.height };\n // eslint-disable-next-line max-len\n var previousPosition = { X: this.offset.x, Y: this.offset.y, Width: args.source.wrapper.actualSize.width, Height: args.source.wrapper.actualSize.height };\n this.commandHandler.fireFormFieldMoveEvent('formFieldMove', field, node.pageIndex, previousPosition, currentPosition);\n }\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(this.redoElement) && (this.redoElement.bounds.height !== newShapeObject.bounds.height || this.redoElement.bounds.width !== newShapeObject.bounds.width || this.redoElement.bounds.x !== newShapeObject.bounds.x || this.redoElement.bounds.y !== newShapeObject.bounds.y)) {\n isDragged = true;\n }\n if (this.commandHandler.annotation && isDragged) {\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, args.source, 'Drag', '', this.redoElement, newShapeObject);\n this.commandHandler.annotation.stampAnnotationModule.updateSessionStorage(args.source, null, 'Drag');\n this.commandHandler.annotation.stickyNotesAnnotationModule.updateStickyNotes(args.source, null);\n }\n }\n var shapeAnnotationType = this.commandHandler && this.commandHandler.selectedItems && this.commandHandler.selectedItems.annotations && this.commandHandler.selectedItems.annotations.length > 0 ? this.commandHandler.selectedItems.annotations[0].shapeAnnotationType : null;\n if (shapeAnnotationType && shapeAnnotationType !== 'Image' && shapeAnnotationType !== 'SignatureImage') {\n _super.prototype.mouseUp.call(this, args);\n }\n else if (shapeAnnotationType === 'Image' || shapeAnnotationType === 'SignatureImage') {\n this.inAction = false;\n }\n else if (this.commandHandler && this.commandHandler.selectedItems && this.commandHandler.selectedItems.formFields && this.commandHandler.selectedItems.formFields.length > 0) {\n _super.prototype.mouseUp.call(this, args);\n }\n };\n MoveTool.prototype.calculateMouseXDiff = function () {\n if (this.currentPosition && this.startPosition) {\n return this.currentPosition.x - this.startPosition.x;\n }\n else {\n return 0;\n }\n };\n MoveTool.prototype.calculateMouseYDiff = function () {\n if (this.currentPosition && this.startPosition) {\n return this.currentPosition.y - this.startPosition.y;\n }\n else {\n return 0;\n }\n };\n MoveTool.prototype.calculateMouseActionXDiff = function (args) {\n var x = this.calculateMouseXDiff() / this.commandHandler.viewerBase.getZoomFactor();\n // let y: number = this.calculateMouseYDiff() / this.commandHandler.magnification.zoomFactor;\n if (this.offset) {\n var requiredX = this.offset.x + x;\n // let requiredY: number = this.offset.y + y;\n return requiredX - args.source.wrapper.offsetX;\n //let diffY: number = requiredY - args.source.wrapper.offsetY;\n }\n else {\n return 0;\n }\n };\n MoveTool.prototype.calculateMouseActionYDiff = function (args) {\n // let x: number = this.calculateMouseXDiff() / this.commandHandler.magnification.zoomFactor;\n var y = this.calculateMouseYDiff() / this.commandHandler.viewerBase.getZoomFactor();\n if (this.offset) {\n // let requiredX: number = this.offset.x + x;\n var requiredY = this.offset.y + y;\n // let diffX: number = requiredX - args.source.wrapper.offsetX;\n return requiredY - args.source.wrapper.offsetY;\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @param {boolean} isStamp - Specified the stamp annotation or not.\n * @param {boolean} isSkip - Specified the annotation skip or not.\n * @returns {boolean} - Returns the true or false.\n */\n MoveTool.prototype.mouseMove = function (args, isStamp, isSkip) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction) {\n this.currentPosition = args.position;\n this.currentTarget = args.target;\n var currentSelctor = args.source.annotationSelectorSettings;\n var x = this.calculateMouseXDiff() / this.commandHandler.viewerBase.getZoomFactor();\n var y = this.calculateMouseYDiff() / this.commandHandler.viewerBase.getZoomFactor();\n var requiredX = this.offset.x + x;\n var requiredY = this.offset.y + y;\n var diffX = this.calculateMouseActionXDiff(args);\n var diffY = this.calculateMouseActionYDiff(args);\n var selectedItem = this.commandHandler.selectedItems.annotations[0];\n var cobject = void 0;\n if (!this.helper) {\n // eslint-disable-next-line\n cobject = this.commandHandler.selectedItems.annotations.length > 0 ? cloneObject(this.commandHandler.selectedItems.annotations[0]) : cloneObject(this.commandHandler.selectedItems.formFields[0]);\n if (cobject.wrapper) {\n diffX = requiredX - cobject.wrapper.offsetX;\n diffY = requiredY - cobject.wrapper.offsetY;\n // eslint-disable-next-line max-len\n cobject.bounds = this.commandHandler.selectedItems.annotations.length > 0 ? this.commandHandler.selectedItems.annotations[0].wrapper.bounds : this.commandHandler.selectedItems.formFields[0].wrapper.bounds;\n }\n cobject.wrapper = undefined;\n cobject.id = 'diagram_helper';\n if (cobject.shapeAnnotationType === 'Stamp') {\n cobject.strokeColor = '';\n cobject.borderDashArray = '';\n cobject.fillColor = 'transparent';\n cobject.stampFillColor = 'transparent';\n cobject.data = '';\n }\n else if (cobject.shapeAnnotationType === 'FreeText') {\n cobject.strokeColor = 'blue';\n cobject.fillColor = 'transparent';\n cobject.thickness = 1;\n cobject.opacity = 1;\n cobject.dynamicText = '';\n }\n else if (cobject.shapeAnnotationType === 'SignatureText') {\n cobject.strokeColor = 'red';\n cobject.borderDashArray = '5,5';\n cobject.fillColor = 'transparent';\n cobject.thickness = 2;\n cobject.opacity = 1;\n cobject.data = '';\n }\n else {\n cobject.strokeColor = 'red';\n cobject.borderDashArray = '5,5';\n cobject.fillColor = 'transparent';\n cobject.thickness = 2;\n cobject.opacity = 1;\n }\n if (cobject.enableShapeLabel === true) {\n cobject.labelContent = '';\n }\n var shapeAnnotationType = cobject.shapeAnnotationType;\n if (!isStamp && shapeAnnotationType !== 'Image' && shapeAnnotationType !== 'SignatureImage') {\n this.helper = cobject = this.commandHandler.add(cobject);\n }\n else {\n cobject = this.helper = args.source;\n }\n if (this.commandHandler.selectedItems.annotations.length > 0) {\n this.commandHandler.selectedItems.annotations = [cobject];\n }\n else {\n this.commandHandler.selectedItems.formFields = [cobject];\n }\n }\n else {\n diffX = requiredX - this.helper.wrapper.offsetX;\n diffY = requiredY - this.helper.wrapper.offsetY;\n }\n if (this.helper && this.helper.shapeAnnotationType === 'Stamp') {\n isStamp = true;\n }\n // eslint-disable-next-line max-len\n if (this.commandHandler.checkBoundaryConstraints(diffX, diffY, this.pdfViewerBase.activeElements.activePageID, this.helper.wrapper.bounds, isStamp, isSkip)) {\n var shapeAnnotationType = this.helper.shapeAnnotationType;\n if (this.helper && (shapeAnnotationType === 'Image' || shapeAnnotationType === 'SignatureImage')) {\n this.checkisAnnotationMove(args);\n // eslint-disable-next-line max-len\n var currentSelctor_1 = args.source.annotationSelectorSettings;\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([args.source.id], currentSelctor_1);\n // eslint-disable-next-line max-len\n this.commandHandler.dragSelectedObjects(diffX, diffY, this.pdfViewerBase.activeElements.activePageID, currentSelctor_1, this.helper);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelctor_1);\n }\n else {\n this.commandHandler.dragSelectedObjects(diffX, diffY, this.pdfViewerBase.activeElements.activePageID, currentSelctor, this.helper);\n }\n this.prevNode = this.helper;\n this.prevPosition = this.currentPosition;\n }\n else {\n this.currentPosition = this.prevPosition;\n }\n if (selectedItem && selectedItem.annotName) {\n this.commandHandler.annotation.triggerAnnotationMove(selectedItem, true);\n }\n }\n return true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n MoveTool.prototype.mouseLeave = function (args) {\n var currentSelctor = args.source.annotationSelectorSettings;\n var requiredX = this.offset.x + this.calculateMouseXDiff();\n var requiredY = this.offset.y + this.calculateMouseYDiff();\n var diffX = requiredX - args.source.wrapper.offsetX;\n var diffY = requiredY - args.source.wrapper.offsetY;\n this.commandHandler.dragSelectedObjects(diffX, diffY, this.prevPageId, currentSelctor, null);\n this.commandHandler.renderSelector(this.prevPageId, currentSelctor);\n _super.prototype.mouseLeave.call(this, args);\n };\n /**\n * @private\n * @returns {void}\n */\n MoveTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n this.currentTarget = null;\n this.prevPosition = null;\n };\n MoveTool.prototype.checkisAnnotationMove = function (args) {\n // eslint-disable-next-line max-len\n if (this.commandHandler.selectedItems && this.commandHandler.selectedItems.annotations && this.commandHandler.selectedItems.annotations.length > 0) {\n if (this.commandHandler.selectedItems.annotations[0].annotName === args.source.annotName) {\n this.commandHandler.viewerBase.isAnnotationMouseMove = true;\n }\n }\n else {\n this.commandHandler.viewerBase.isAnnotationMouseMove = false;\n }\n // eslint-disable-next-line max-len\n if (this.commandHandler.selectedItems && this.commandHandler.selectedItems.formFields && this.commandHandler.selectedItems.formFields.length > 0) {\n if (this.commandHandler.selectedItems.formFields[0].name === args.source.name) {\n this.commandHandler.viewerBase.isFormFieldMouseMove = true;\n }\n }\n else {\n this.commandHandler.viewerBase.isFormFieldMouseMove = false;\n }\n };\n return MoveTool;\n}(ToolBase));\nexport { MoveTool };\n/** @hidden */\nvar StampTool = /** @class */ (function (_super) {\n __extends(StampTool, _super);\n function StampTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {any} - Returns the mouse up event.\n */\n // eslint-disable-next-line\n StampTool.prototype.mouseDown = function (args) {\n _super.prototype.mouseUp.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns the true or false.\n */\n StampTool.prototype.mouseMove = function (args) {\n // eslint-disable-next-line\n var newObject;\n if (!this.inAction) {\n var pageIndex = this.pdfViewerBase.activeElements.activePageID;\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n // eslint-disable-next-line max-len\n var nodeElement = this.commandHandler.annotation.stampAnnotationModule.moveStampElement(args.position.x, args.position.y, pageIndex);\n if (nodeElement.shapeAnnotationType === 'SignatureText') {\n var textWidth = this.getTextWidth(nodeElement.data, nodeElement.fontSize, nodeElement.fontFamily);\n var widthRatio = 1;\n if (textWidth > nodeElement.bounds.width)\n widthRatio = nodeElement.bounds.width / textWidth;\n nodeElement.fontSize = this.getFontSize(Math.floor((nodeElement.fontSize * widthRatio)));\n var defaultFontSize = 32; // default font size.\n nodeElement.bounds.height = nodeElement.fontSize < defaultFontSize ? nodeElement.fontSize * 2 : nodeElement.bounds.height;\n nodeElement.thickness = 0;\n }\n newObject = this.commandHandler.add(nodeElement);\n args.source = this.commandHandler.annotations[this.commandHandler.annotations.length - 1];\n args.sourceWrapper = args.source.wrapper;\n this.inAction = true;\n // eslint-disable-next-line\n var currentSource = args.source;\n if (currentSource && (currentSource.shapeAnnotationType === 'HandWrittenSignature' || currentSource.shapeAnnotationType === 'SignatureText' || currentSource.shapeAnnotationType === 'SignatureImage')) {\n this['offset'] = { x: args.source.wrapper.offsetX - (args.source.wrapper.bounds.width / 2), y: args.source.wrapper.offsetY - (args.source.wrapper.bounds.height / 2) };\n }\n else {\n this['offset'] = { x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY };\n }\n this.startPosition = args.position;\n this.commandHandler.select([newObject.id]);\n }\n var currentSelctor = args.source.annotationSelectorSettings;\n _super.prototype.mouseMove.call(this, args, true, true);\n this.commandHandler.renderSelector(args.source.pageIndex, currentSelctor);\n return this.inAction;\n };\n StampTool.prototype.getTextWidth = function (text, font, fontFamily) {\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var fontName;\n if (font) {\n fontName = font + 'px' + ' ' + fontFamily;\n }\n context.font = fontName || getComputedStyle(document.body).font;\n return context.measureText(text).width;\n };\n /**\n * @param {number} fontSize - Font size.\n * @returns {number} - Returns the font size.\n */\n StampTool.prototype.getFontSize = function (fontSize) {\n return (fontSize % 2 === 0) ? fontSize : --fontSize;\n };\n return StampTool;\n}(MoveTool));\nexport { StampTool };\n/**\n * Draws a node that is defined by the user\n *\n * @hidden\n */\nvar InkDrawingTool = /** @class */ (function (_super) {\n __extends(InkDrawingTool, _super);\n function InkDrawingTool(commandHandler, base, sourceObject) {\n var _this = _super.call(this, commandHandler, base) || this;\n _this.sourceObject = sourceObject;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n InkDrawingTool.prototype.mouseDown = function (args) {\n this.pdfViewerBase.disableTextSelectionMode();\n _super.prototype.mouseDown.call(this, args);\n this.inAction = true;\n // eslint-disable-next-line\n var node = { currentPosition: this.currentPosition, prevPosition: this.prevPosition };\n this.commandHandler.annotation.inkAnnotationModule.drawInkInCanvas(node, this.pdfViewerBase.activeElements.activePageID);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n InkDrawingTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction) {\n // eslint-disable-next-line\n var node = { currentPosition: this.currentPosition, prevPosition: this.pdfViewerBase.prevPosition };\n this.commandHandler.annotation.inkAnnotationModule.drawInkInCanvas(node, this.pdfViewerBase.activeElements.activePageID);\n }\n return this.inAction;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true.\n */\n InkDrawingTool.prototype.mouseUp = function (args) {\n this.commandHandler.annotation.inkAnnotationModule.storePathData();\n return true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n InkDrawingTool.prototype.mouseLeave = function (args) {\n //this.mouseUp(args);\n };\n /**\n * @private\n * @returns {void}\n */\n InkDrawingTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n };\n return InkDrawingTool;\n}(ToolBase));\nexport { InkDrawingTool };\n/**\n * Helps to edit the selected connectors\n *\n * @hidden\n */\nvar ConnectTool = /** @class */ (function (_super) {\n __extends(ConnectTool, _super);\n function ConnectTool(commandHandler, base, endPoint) {\n var _this = _super.call(this, commandHandler, base, true) || this;\n _this.endPoint = endPoint;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n ConnectTool.prototype.mouseDown = function (args) {\n this.inAction = true;\n this.undoElement = undefined;\n _super.prototype.mouseDown.call(this, args);\n var oldValue;\n var connectors;\n if (args.source && args.source.annotations) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n oldValue = { x: this.prevPosition.x, y: this.prevPosition.y };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n connectors = args.source.annotations[0];\n }\n this.initialPosition = args.position;\n this.prevSource = this.commandHandler.selectedItems.annotations[0];\n var nodeElement = cloneObject(args.source);\n this.redoElement = {\n bounds: {\n x: nodeElement.wrapper.offsetX, y: nodeElement.wrapper.offsetY,\n width: nodeElement.wrapper.actualSize.width, height: nodeElement.wrapper.actualSize.height\n }\n // eslint-disable-next-line\n };\n if (isLineShapes(nodeElement)) {\n this.redoElement.vertexPoints = nodeElement.vertexPoints;\n this.redoElement.leaderHeight = nodeElement.leaderHeight;\n if (nodeElement.measureType === 'Distance' || nodeElement.measureType === 'Perimeter' || nodeElement.measureType === 'Area' || nodeElement.measureType === 'Volume') {\n this.redoElement.notes = nodeElement.notes;\n }\n }\n this.currentPosition = args.position;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n ConnectTool.prototype.mouseUp = function (args) {\n if (this.commandHandler) {\n var node = this.commandHandler.selectedItems.annotations[0];\n var isResized = false;\n if (node) {\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule.findAnnotationSettings(node);\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n // eslint-disable-next-line max-len\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n if (node.vertexPoints.length > 3) {\n // eslint-disable-next-line\n var sizeObject = this.commandHandler.viewerBase.checkAnnotationWidth(node.vertexPoints);\n var width = sizeObject.width;\n var height = sizeObject.height;\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n // eslint-disable-next-line max-len\n if ((height > annotationMinHeight && height < annotationMaxHeight) || (width > annotationMinWidth && width < annotationMaxWidth)) {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n else {\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n if (node.shapeAnnotationType === 'Line' || node.shapeAnnotationType === 'Distance' || node.shapeAnnotationType === 'LineWidthArrowHead') {\n var x = 0;\n var y = 0;\n if (node.vertexPoints[0].x > node.vertexPoints[1].x) {\n x = node.vertexPoints[0].x - node.vertexPoints[1].x;\n }\n else {\n x = node.vertexPoints[1].x - node.vertexPoints[0].x;\n }\n if (node.vertexPoints[0].y > node.vertexPoints[1].y) {\n y = node.vertexPoints[0].y - node.vertexPoints[1].y;\n }\n else {\n y = node.vertexPoints[1].y - node.vertexPoints[0].y;\n }\n var diff = (x > y) ? x : y;\n if (diff < (annotationMaxHeight || annotationMaxWidth) && diff > (annotationMinHeight || annotationMinWidth)) {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n var currentSelctor = args.source.annotationSelectorSettings;\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([this.prevSource.id], currentSelctor);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelctor);\n // eslint-disable-next-line\n var newShapeElementObject = {\n bounds: {\n x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY,\n width: args.source.wrapper.actualSize.width, height: args.source.wrapper.actualSize.height\n }\n };\n if (node.measureType === 'Distance' || node.measureType === 'Perimeter' || node.measureType === 'Area' || node.measureType === 'Volume') {\n this.commandHandler.annotation.updateCalibrateValues(this.commandHandler.selectedItems.annotations[0]);\n newShapeElementObject.notes = args.source.notes;\n }\n if (isLineShapes(args.source)) {\n newShapeElementObject.vertexPoints = args.source.vertexPoints;\n newShapeElementObject.leaderHeight = args.source.leaderHeight;\n }\n if (this.redoElement.bounds.height !== newShapeElementObject.bounds.height || this.redoElement.bounds.width !== newShapeElementObject.bounds.width || this.redoElement.bounds.x !== newShapeElementObject.bounds.x || this.redoElement.bounds.y !== newShapeElementObject.bounds.y) {\n isResized = true;\n }\n if (isResized) {\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, this.prevSource, 'Resize', '', this.redoElement, newShapeElementObject);\n }\n }\n }\n _super.prototype.mouseUp.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n ConnectTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n var connector;\n this.currentPosition = args.position;\n if (this.currentPosition && this.prevPosition) {\n var diffX = this.currentPosition.x - this.prevPosition.x;\n var diffY = this.currentPosition.y - this.prevPosition.y;\n var newValue = void 0;\n var oldValue = void 0;\n if (args.source && args.source.annotations) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n newValue = {\n x: this.currentPosition.x, y: this.currentPosition.y\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n oldValue = {\n x: this.prevPosition.x, y: this.prevPosition.y\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n connector = args.source.annotations[0];\n }\n if (this.inAction && this.endPoint !== undefined && diffX !== 0 || diffY !== 0) {\n if (!this.helper) {\n // eslint-disable-next-line\n var cloneShapebject = cloneObject(this.commandHandler.selectedItems.annotations[0]);\n cloneShapebject.id = 'diagram_helper';\n cloneShapebject.strokeColor = 'red';\n cloneShapebject.borderDashArray = '5,5';\n cloneShapebject.fillColor = 'transparent';\n cloneShapebject.thickness = 2;\n cloneShapebject.opacity = 1;\n if (cloneShapebject.enableShapeLabel === true) {\n cloneShapebject.labelContent = '';\n }\n this.helper = cloneShapebject = this.commandHandler.add(cloneShapebject);\n this.commandHandler.selectedItems.annotations = [cloneShapebject];\n }\n var currentSelctor = args.source.annotationSelectorSettings;\n this.blocked = !this.commandHandler.dragConnectorEnds(this.endPoint, this.helper, this.currentPosition, this.selectedSegment, args.target, null, currentSelctor);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelctor);\n }\n }\n this.prevPosition = this.currentPosition;\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n ConnectTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n /**\n * @private\n * @returns {void}\n */\n ConnectTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n this.prevPosition = null;\n this.endPoint = null;\n };\n return ConnectTool;\n}(ToolBase));\nexport { ConnectTool };\n/**\n * Scales the selected objects\n *\n * @hidden\n */\nvar ResizeTool = /** @class */ (function (_super) {\n __extends(ResizeTool, _super);\n function ResizeTool(commandHandler, base, corner) {\n var _this = _super.call(this, commandHandler, base, true) || this;\n /** @private */\n _this.initialBounds = new Rect();\n _this.corner = corner;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void} - Returns true or false.\n */\n ResizeTool.prototype.mouseDown = function (args) {\n _super.prototype.mouseDown.call(this, args);\n this.initialBounds.x = args.source.wrapper.offsetX;\n this.initialBounds.y = args.source.wrapper.offsetY;\n this.initialBounds.height = args.source.wrapper.actualSize.height;\n this.initialBounds.width = args.source.wrapper.actualSize.width;\n this.initialPosition = args.position;\n var node = cloneObject(args.source);\n this.redoElement = {\n bounds: {\n x: node.wrapper.offsetX, y: node.wrapper.offsetY,\n width: node.wrapper.actualSize.width, height: node.wrapper.actualSize.height\n }\n // eslint-disable-next-line\n };\n if (isLineShapes(node)) {\n this.redoElement.vertexPoints = node.vertexPoints;\n this.redoElement.leaderHeight = node.leaderHeight;\n }\n if (node.measureType === 'Radius') {\n this.redoElement.notes = node.notes;\n }\n // eslint-disable-next-line max-len\n this.prevSource = this.commandHandler.selectedItems.annotations.length > 0 ? this.commandHandler.selectedItems.annotations[0] : this.commandHandler.selectedItems.formFields[0];\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @param {boolean} isPreventHistory - Specified the prevent history value.\n * @returns {boolean} - Returns true or false.\n */\n ResizeTool.prototype.mouseUp = function (args, isPreventHistory) {\n var object = args.source;\n var oldObject = cloneObject(args.source);\n var isResized = false;\n if (this.commandHandler && this.prevSource) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.viewerBase.isAnnotationSelect = true;\n this.commandHandler.viewerBase.isFormFieldSelect = true;\n this.commandHandler.select([this.prevSource.id], this.prevSource.annotationSelectorSettings);\n // eslint-disable-next-line max-len\n var deltaValues = this.updateSize(this.prevSource, this.currentPosition, this.initialPosition, this.corner, this.initialBounds, null, true);\n this.blocked = this.scaleObjects(deltaValues.width, deltaValues.height, this.corner, this.currentPosition, this.initialPosition, this.prevSource, args.info.ctrlKey);\n if (this.commandHandler.selectedItems && this.commandHandler.selectedItems.annotations &&\n this.commandHandler.selectedItems.annotations[0] && this.commandHandler.selectedItems.annotations[0].shapeAnnotationType === 'Stamp') {\n if (this.commandHandler.stampSettings.minHeight || this.commandHandler.stampSettings.minWidth) {\n this.commandHandler.select([this.prevSource.id], this.prevSource.annotationSelectorSettings);\n }\n }\n if (this.commandHandler.selectedItems.formFields.length > 0 && (this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'Textbox' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'Checkbox'\n || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'RadioButton' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'InitialField' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'SignatureField'\n || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'DropdownList' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'ListBox' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'PasswordField')) {\n if (this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'SignatureField') {\n this.commandHandler.selectedItems.formFields[0].signatureIndicatorSettings = this.commandHandler.selectedItems.formFields[0].signatureIndicatorSettings ? this.commandHandler.selectedItems.formFields[0].signatureIndicatorSettings : { opacity: 1, backgroundColor: 'rgba(255, 228, 133, 0.35)', width: 19, height: 10, fontSize: 10, text: null, color: 'black' };\n }\n this.commandHandler.formDesignerModule.updateHTMLElement(this.commandHandler.selectedItems.formFields[0]);\n }\n this.commandHandler.renderSelector(this.prevPageId, this.prevSource.annotationSelectorSettings);\n if (this.commandHandler.annotation && args.source.wrapper) {\n // eslint-disable-next-line\n var newObject = {\n bounds: {\n x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY,\n width: args.source.wrapper.actualSize.width, height: args.source.wrapper.actualSize.height\n }\n };\n if (isLineShapes(args.source)) {\n newObject.vertexPoints = args.source.vertexPoints;\n newObject.leaderHeight = args.source.leaderHeight;\n }\n if (this.redoElement.bounds.height !== newObject.bounds.height || this.redoElement.bounds.width !== newObject.bounds.width || this.redoElement.bounds.x !== newObject.bounds.x || this.redoElement.bounds.y !== newObject.bounds.y) {\n isResized = true;\n }\n if (this.prevSource.measureType === 'Radius' && isResized) {\n newObject.notes = args.source.notes;\n this.commandHandler.annotation.updateCalibrateValues(this.prevSource);\n }\n if (this.prevSource.shapeAnnotationType === 'SignatureText') {\n var boundsRatio = newObject.bounds.width / oldObject.width;\n newObject.fontSize = this.prevSource.wrapper.children[1].style.fontSize * boundsRatio;\n if (args.target != null) {\n args.target.fontSize = newObject.fontSize;\n // eslint-disable-next-line\n args.target.wrapper.children[1].style.fontSize = newObject.fontSize;\n args.target.wrapper.children[1].horizontalAlignment = 'Center';\n args.target.wrapper.children[1].verticalAlignment = 'Center';\n args.target.wrapper.children[1].setOffsetWithRespectToBounds(0, 0, 'Absolute');\n // eslint-disable-next-line\n this.commandHandler.selectedItems.annotations[0].wrapper.children[1].style.fontSize = newObject.fontSize;\n this.commandHandler.selectedItems.annotations[0].wrapper.children[1].horizontalAlignment = 'Center';\n this.commandHandler.selectedItems.annotations[0].wrapper.children[1].verticalAlignment = 'Center';\n this.commandHandler.selectedItems.annotations[0].wrapper.children[1].setOffsetWithRespectToBounds(0, 0, 'Absolute');\n this.commandHandler.selectedItems.annotations[0].fontSize = newObject.fontSize;\n }\n }\n if ((this.prevSource.shapeAnnotationType === 'SignatureText') && this.commandHandler.selectedItems.annotations && this.commandHandler.selectedItems.annotations.length > 0) {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.commandHandler.selectedItems.annotations[0], { fontSize: newObject.fontSize });\n }\n if (isResized) {\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, this.prevSource, 'Resize', '', this.redoElement, newObject);\n }\n }\n if (args.target && args.target.formFieldAnnotationType) {\n var node = args.target;\n // eslint-disable-next-line\n var field = { value: node.value, fontFamily: node.fontFamily, fontSize: node.fontSize, fontStyle: node.fontStyle,\n // eslint-disable-next-line\n color: node.color, backgroundColor: node.backgroundColor, alignment: node.alignment, isReadonly: node.isReadonly, visibility: node.visibility,\n // eslint-disable-next-line\n maxLength: node.maxLength, isRequired: node.isRequired, isPrint: node.isPrint, rotation: node.rotateAngle, tooltip: node.tooltip,\n // eslint-disable-next-line\n options: node.options, isChecked: node.isChecked, isSelected: node.isSelected };\n // eslint-disable-next-line max-len\n var currentPosition = { X: args.source.wrapper.offsetX, Y: args.source.wrapper.offsetY, Width: args.source.wrapper.actualSize.width, Height: args.source.wrapper.actualSize.height };\n // eslint-disable-next-line max-len\n var previousPosition = { X: this.initialBounds.x, Y: this.initialBounds.y, Width: this.initialBounds.width, Height: this.initialBounds.height };\n this.commandHandler.fireFormFieldResizeEvent('formFieldResize', field, node.pageIndex, previousPosition, currentPosition);\n }\n if (this.commandHandler.annotation && this.commandHandler.annotation.stampAnnotationModule) {\n this.commandHandler.annotation.stampAnnotationModule.updateSessionStorage(args.source, this.prevSource.id, 'Resize');\n }\n }\n _super.prototype.mouseUp.call(this, args);\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n ResizeTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n var object = args.source;\n this.currentPosition = args.position;\n var x = this.currentPosition.x - this.startPosition.x;\n var y = this.currentPosition.y - this.startPosition.y;\n x = x / this.commandHandler.viewerBase.getZoomFactor();\n y = y / this.commandHandler.viewerBase.getZoomFactor();\n // eslint-disable-next-line\n var annotationElement = args.source;\n // eslint-disable-next-line\n var size = this.getPoints(x, y);\n var width = annotationElement.width + size.x;\n var height = annotationElement.height + size.y;\n // eslint-disable-next-line\n var obj = object;\n if (object && object.annotations) {\n // eslint-disable-next-line\n obj = object.annotations[0];\n }\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule ? this.commandHandler.annotationModule.findAnnotationSettings(obj) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n // eslint-disable-next-line max-len\n if ((height >= annotationMinHeight && height <= annotationMaxHeight) && (width >= annotationMinWidth && width <= annotationMaxWidth)) {\n // eslint-disable-next-line\n x = x;\n // eslint-disable-next-line\n y = y;\n }\n else {\n if (height < annotationMinHeight || height > annotationMaxHeight) {\n if (height < annotationMinHeight) {\n y = annotationMinHeight - annotationElement.height;\n }\n else {\n y = annotationMaxHeight - annotationElement.height;\n }\n }\n if (width < annotationMinWidth || width > annotationMaxWidth) {\n if (width < annotationMinWidth) {\n x = annotationMinWidth - annotationElement.width;\n }\n else {\n x = annotationMaxWidth - annotationElement.width;\n }\n }\n }\n }\n var changes = { x: x, y: y };\n if (this.currentElement.wrapper) {\n changes = rotatePoint(-this.currentElement.wrapper.rotateAngle, undefined, undefined, changes);\n }\n changes = this.getChanges(changes);\n this.commandHandler.renderSelector(this.prevPageId, this.prevSource.annotationSelectorSettings);\n if (!this.helper) {\n // eslint-disable-next-line\n var cobject = this.commandHandler.selectedItems.annotations.length > 0 ? cloneObject(this.commandHandler.selectedItems.annotations[0]) : cloneObject(this.commandHandler.selectedItems.formFields[0]);\n cobject.id = 'diagram_helper';\n if (cobject.shapeAnnotationType === 'Stamp') {\n cobject.strokeColor = '';\n cobject.borderDashArray = '';\n cobject.fillColor = 'transparent';\n cobject.stampFillColor = 'transparent';\n cobject.data = '';\n }\n else if (cobject.shapeAnnotationType === 'FreeText') {\n cobject.strokeColor = 'blue';\n cobject.fillColor = 'transparent';\n cobject.thickness = 1;\n cobject.opacity = 1;\n cobject.dynamicText = '';\n }\n else {\n // eslint-disable-next-line max-len\n cobject.bounds = this.commandHandler.selectedItems.annotations.length > 0 ? this.commandHandler.selectedItems.annotations[0].wrapper.bounds : this.commandHandler.selectedItems.formFields[0].wrapper.bounds;\n cobject.strokeColor = 'red';\n cobject.borderDashArray = '5,5';\n cobject.fillColor = 'transparent';\n cobject.thickness = 2;\n cobject.opacity = 1;\n }\n if (cobject.enableShapeLabel === true) {\n cobject.labelContent = '';\n }\n if (cobject.shapeAnnotationType === 'SignatureText') {\n cobject.fillColor = 'transparent';\n cobject.thickness = 1;\n cobject.opacity = 1;\n cobject.data = '';\n }\n this.helper = cobject = this.commandHandler.add(cobject);\n if (this.commandHandler.selectedItems.annotations.length > 0) {\n this.commandHandler.selectedItems.annotations = [cobject];\n }\n else {\n this.commandHandler.selectedItems.formFields = [cobject];\n }\n }\n var deltaValues = this.updateSize(this.helper, this.startPosition, this.currentPosition, this.corner, this.initialBounds);\n // eslint-disable-next-line max-len\n this.blocked = !(this.scaleObjects(deltaValues.width, deltaValues.height, this.corner, this.startPosition, this.currentPosition, this.helper, args.info.ctrlKey));\n this.prevPosition = this.currentPosition;\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n ResizeTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n ResizeTool.prototype.getTooltipContent = function (pdfAnnotationBaseModel) {\n return 'W:' + Math.round(pdfAnnotationBaseModel.wrapper.bounds.width) + ' ' + 'H:' + Math.round(pdfAnnotationBaseModel.wrapper.bounds.height);\n };\n ResizeTool.prototype.getChanges = function (change) {\n switch (this.corner) {\n case 'ResizeEast':\n return { x: change.x, y: 0 };\n case 'ResizeSouthEast':\n return change;\n case 'ResizeSouth':\n return { x: 0, y: change.y };\n case 'ResizeNorth':\n return { x: 0, y: -change.y };\n case 'ResizeNorthEast':\n return { x: change.x, y: -change.y };\n case 'ResizeNorthWest':\n return { x: -change.x, y: -change.y };\n case 'ResizeWest':\n return { x: -change.x, y: 0 };\n case 'ResizeSouthWest':\n return { x: -change.x, y: change.y };\n }\n return change;\n };\n ResizeTool.prototype.getPoints = function (x, y) {\n switch (this.corner) {\n case 'ResizeEast':\n return { x: x, y: 0 };\n case 'ResizeSouthEast':\n return { x: x, y: y };\n case 'ResizeSouth':\n return { x: 0, y: y };\n case 'ResizeNorth':\n return { x: 0, y: -y };\n case 'ResizeNorthEast':\n return { x: x, y: -y };\n case 'ResizeNorthWest':\n return { x: -x, y: -y };\n case 'ResizeWest':\n return { x: -x, y: 0 };\n case 'ResizeSouthWest':\n return { x: -x, y: y };\n }\n return { x: x, y: y };\n };\n /**\n * Updates the size with delta width and delta height using scaling.\n * Aspect ratio used to resize the width or height based on resizing the height or width.\n *\n * @param {number} deltaWidth - Specified the delta width.\n * @param {number} deltaHeight - Specified the delta height.\n * @param {string} corner - Specified the corner value.\n * @param {PointModel} startPoint - Specified the start point of the annotation.\n * @param {PointModel} endPoint - Specified the end point of the annotation.\n * @param {SelectorModel | PdfAnnotationBaseModel} source - Specified the annotation object.\n * @param {boolean} isCtrlKeyPressed - becomes true when ctrl Key is pressed.\n * @returns {boolean} - Returns true or false.\n */\n ResizeTool.prototype.scaleObjects = function (deltaWidth, deltaHeight, corner, startPoint, endPoint, source, isCtrlKeyPressed) {\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule ? this.commandHandler.annotationModule.findAnnotationSettings(source) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n var x = this.currentPosition.x - this.startPosition.x;\n var y = this.currentPosition.y - this.startPosition.y;\n x = x / this.commandHandler.viewerBase.getZoomFactor();\n y = y / this.commandHandler.viewerBase.getZoomFactor();\n // eslint-disable-next-line\n var annotationElement = source;\n // eslint-disable-next-line\n var size = this.getPoints(x, y);\n var width = annotationElement.bounds.width + size.x;\n var height = annotationElement.bounds.height + size.y;\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n if (source instanceof Selector && source.annotations.length === 1 &&\n (source.annotations[0].shapeAnnotationType === 'Perimeter' || source.annotations[0].shapeAnnotationType === 'Radius' || source.shapeAnnotationType === 'Stamp')) {\n if (!(deltaHeight === 1 && deltaWidth === 1)) {\n deltaHeight = deltaWidth = Math.max(deltaHeight === 1 ? 0 : deltaHeight, deltaWidth === 1 ? 0 : deltaWidth);\n }\n else if (startPoint !== endPoint) {\n deltaHeight = deltaWidth = Math.max(deltaHeight, deltaWidth);\n }\n else {\n deltaHeight = deltaWidth = 0;\n }\n }\n else if (source.shapeAnnotationType === 'Image' || (source.shapeAnnotationType === 'HandWrittenSignature' || source.shapeAnnotationType === 'SignatureText' || source.shapeAnnotationType === 'SignatureImage')) {\n if (!(deltaHeight === 1 && deltaWidth === 1)) {\n if (isCtrlKeyPressed) {\n if (width >= annotationMaxWidth && height < annotationMaxHeight) {\n deltaHeight = Math.max(deltaHeight, deltaWidth);\n }\n if (height >= annotationMaxHeight && width < annotationMaxWidth) {\n deltaWidth = Math.max(deltaHeight, deltaWidth);\n }\n if (width < annotationMaxWidth && height < annotationMaxHeight) {\n deltaHeight = deltaWidth = Math.max(deltaHeight, deltaWidth);\n }\n }\n }\n if (!isCtrlKeyPressed) {\n deltaHeight = deltaWidth = Math.max(deltaHeight, deltaWidth);\n }\n }\n else {\n if (source.shapeAnnotationType === 'Perimeter' || source.shapeAnnotationType === 'Radius'\n || source.shapeAnnotationType === 'Stamp') {\n if (source.shapeAnnotationType === 'Stamp') {\n if (!annotationMaxHeight && !deltaHeight) {\n deltaHeight = Math.max(deltaHeight === 1 ? 0 : deltaHeight);\n }\n if (!annotationMaxWidth && !deltaWidth) {\n deltaWidth = Math.max(deltaWidth === 1 ? 0 : deltaWidth);\n }\n }\n else {\n if (!annotationMaxHeight || !annotationMaxWidth) {\n if (!(deltaHeight === 1 && deltaWidth === 1)) {\n deltaHeight = deltaWidth = Math.max(deltaHeight === 1 ? 0 : deltaHeight, deltaWidth === 1 ? 0 : deltaWidth);\n }\n }\n }\n }\n }\n this.blocked = this.commandHandler.scaleSelectedItems(deltaWidth, deltaHeight, this.getPivot(this.corner));\n return this.blocked;\n };\n return ResizeTool;\n}(ToolBase));\nexport { ResizeTool };\n/**\n * Draws a node that is defined by the user\n *\n * @hidden\n */\nvar NodeDrawingTool = /** @class */ (function (_super) {\n __extends(NodeDrawingTool, _super);\n function NodeDrawingTool(commandHandler, base, sourceObject) {\n var _this = _super.call(this, commandHandler, base) || this;\n _this.sourceObject = sourceObject;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n NodeDrawingTool.prototype.mouseDown = function (args) {\n if (!isNaN(this.pdfViewerBase.activeElements.activePageID) && event.target.className != 'e-pv-page-container') {\n _super.prototype.mouseDown.call(this, args);\n this.inAction = true;\n var node = { bounds: { x: 100, y: 300, width: 100, height: 100 }, pageIndex: 0, strokeColor: 'red', thickness: 3 };\n node.id = randomId();\n this.sourceObject.pageIndex = node.pageIndex = this.pdfViewerBase.activeElements.activePageID || 0;\n this.sourceObject.enableShapeLabel = this.commandHandler.enableShapeLabel;\n this.pdfViewerBase.updateFreeTextProperties(this.sourceObject);\n this.isFormDesign = false;\n // eslint-disable-next-line\n var formFieldElement = document.getElementById('FormField_helper_html_element');\n if (formFieldElement) {\n formFieldElement.remove();\n }\n // eslint-disable-next-line\n this.commandHandler.drawingObject = this.drawingObject = this.commandHandler.add(this.sourceObject || node);\n if (this.drawingObject.formFieldAnnotationType === 'Textbox' || this.drawingObject.formFieldAnnotationType === 'SignatureField' || this.drawingObject.formFieldAnnotationType === 'InitialField' ||\n this.drawingObject.formFieldAnnotationType === 'Checkbox' || this.drawingObject.formFieldAnnotationType === 'ListBox' || this.drawingObject.formFieldAnnotationType === 'RadioButton' ||\n this.drawingObject.formFieldAnnotationType === 'DropdownList' || this.drawingObject.formFieldAnnotationType === 'PasswordField') {\n this.inAction = false;\n // eslint-disable-next-line\n this.drawingObject.pageNumber = this.pdfViewerBase.getActivePage(true);\n // eslint-disable-next-line\n var bounds = this.commandHandler.formDesignerModule.updateFormFieldInitialSize(this.drawingObject.wrapper.children[0], this.drawingObject.formFieldAnnotationType);\n var pageIndex = this.drawingObject.pageIndex;\n var page = this.pdfViewerBase.getElement('_pageDiv_' + pageIndex);\n var pageWidth = page.clientWidth - bounds.width;\n var pageHeight = page.clientHeight - bounds.height;\n // eslint-disable-next-line\n var left = page.offsetLeft;\n var offsetX = void 0;\n // eslint-disable-next-line\n if (this.currentPosition.y >= pageHeight && event.target && event.target.parentElement && event.target.parentElement.classList.contains('foreign-object') && event.path) {\n // eslint-disable-next-line\n var targetParentRect = event.path[3].getBoundingClientRect();\n // eslint-disable-next-line\n offsetX = event.clientX - targetParentRect.left;\n }\n else if (isNullOrUndefined(event.path) && (this.drawingObject.formFieldAnnotationType === 'SignatureField' || this.drawingObject.formFieldAnnotationType === 'InitialField')) {\n offsetX = this.currentPosition.x;\n }\n else {\n offsetX = this.currentPosition.x - left;\n }\n // eslint-disable-next-line\n var rect = void 0;\n if (this.currentPosition.x >= pageWidth && this.currentPosition.y >= pageHeight) {\n // eslint-disable-next-line max-len\n rect = { x: pageWidth, y: pageHeight, width: this.drawingObject.wrapper.children[0].width, height: this.drawingObject.wrapper.children[0].height };\n }\n else if (this.currentPosition.x >= pageWidth) {\n // eslint-disable-next-line max-len\n rect = { x: pageWidth, y: this.currentPosition.y, width: this.drawingObject.wrapper.children[0].width, height: this.drawingObject.wrapper.children[0].height };\n }\n else if (this.currentPosition.y >= pageHeight) {\n // eslint-disable-next-line max-len\n rect = { x: offsetX, y: pageHeight, width: this.drawingObject.wrapper.children[0].width, height: this.drawingObject.wrapper.children[0].height };\n }\n else {\n // eslint-disable-next-line max-len\n rect = { x: this.currentPosition.x, y: this.currentPosition.y, width: this.drawingObject.wrapper.children[0].width, height: this.drawingObject.wrapper.children[0].height };\n }\n this.updateNodeDimension(this.drawingObject, rect);\n this.drawingObject.bounds.x = this.drawingObject.bounds.x - (this.drawingObject.bounds.width / 2);\n this.drawingObject.bounds.y = this.drawingObject.bounds.y - (this.drawingObject.bounds.height / 2);\n this.commandHandler.formFieldCollection.push(this.drawingObject);\n var drawingObject = this.drawingObject;\n // eslint-disable-next-line max-len\n var formField = {\n id: drawingObject.id, name: drawingObject.name, value: drawingObject.value,\n // eslint-disable-next-line max-len\n type: drawingObject.formFieldAnnotationType, isReadOnly: drawingObject.isReadonly, fontFamily: drawingObject.fontFamily,\n // eslint-disable-next-line max-len\n fontSize: drawingObject.fontSize, fontStyle: drawingObject.fontStyle, color: drawingObject.color, backgroundColor: drawingObject.backgroundColor,\n // eslint-disable-next-line max-len\n alignment: drawingObject.alignment, visibility: drawingObject.visibility, maxLength: drawingObject.maxLength, isRequired: drawingObject.isRequired,\n // eslint-disable-next-line max-len\n isPrint: drawingObject.isPrint, isSelected: drawingObject.isSelected, isChecked: drawingObject.isChecked, tooltip: drawingObject.tooltip, bounds: drawingObject.bounds, thickness: drawingObject.thickness, borderColor: drawingObject.borderColor,\n // eslint-disable-next-line max-len\n signatureIndicatorSettings: drawingObject.signatureIndicatorSettings, pageIndex: drawingObject.pageIndex, pageNumber: drawingObject.pageNumber, isMultiline: drawingObject.isMultiline, insertSpaces: drawingObject.insertSpaces, isTransparent: drawingObject.isTransparent, rotateAngle: drawingObject.rotateAngle,\n selectedIndex: drawingObject.selectedIndex, options: drawingObject.options ? drawingObject.options : [],\n signatureType: drawingObject.signatureType, zIndex: drawingObject.zIndex\n };\n this.commandHandler.formFieldCollections.push(formField);\n // eslint-disable-next-line max-len\n this.commandHandler.formDesignerModule.drawHTMLContent(this.drawingObject.formFieldAnnotationType, this.drawingObject.wrapper.children[0], this.drawingObject, this.drawingObject.pageIndex, this.commandHandler);\n this.commandHandler.select([this.commandHandler.drawingObject.id], this.commandHandler.annotationSelectorSettings);\n if (this.commandHandler.annotation) {\n this.commandHandler.annotation.addAction(this.pdfViewerBase.getActivePage(true), null, this.drawingObject, 'Addition', '', this.drawingObject, this.drawingObject);\n }\n this.endAction();\n this.pdfViewerBase.tool = null;\n this.pdfViewerBase.action = 'Select';\n this.drawingObject = null;\n this.pdfViewerBase.isMouseDown = false;\n this.pdfViewerBase.pdfViewer.drawingObject = null;\n this.isFormDesign = true;\n }\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n NodeDrawingTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction && Point.equals(this.currentPosition, this.prevPosition) === false) {\n this.dragging = true;\n var rect = Rect.toBounds([this.prevPosition, this.currentPosition]);\n this.updateNodeDimension(this.drawingObject, rect);\n if (this.drawingObject.shapeAnnotationType === 'Radius') {\n this.updateRadiusLinePosition(this.drawingObject.wrapper.children[1], this.drawingObject);\n }\n }\n return true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n NodeDrawingTool.prototype.mouseUp = function (args) {\n if (this.drawingObject && this.dragging) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([this.drawingObject.id], this.commandHandler.annotationSelectorSettings);\n var drawnAnnotation = this.commandHandler.selectedItems.annotations[0];\n if (!isNullOrUndefined(drawnAnnotation) && !isNullOrUndefined(drawnAnnotation.wrapper)) {\n this.commandHandler.nodePropertyChange(drawnAnnotation, { bounds: { x: drawnAnnotation.wrapper.offsetX, y: drawnAnnotation.wrapper.offsetY } });\n this.commandHandler.annotation.updateCalibrateValues(this.drawingObject, true);\n if (this.commandHandler && !this.isFormDesign) {\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, this.drawingObject, 'Addition', '', this.drawingObject, this.drawingObject);\n }\n this.dragging = false;\n _super.prototype.mouseUp.call(this, args);\n this.inAction = false;\n }\n }\n else {\n _super.prototype.mouseUp.call(this, args);\n }\n this.drawingObject = null;\n };\n /**\n * @private\n * @returns {void}\n */\n NodeDrawingTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {Rect} rect - Specified the annotation rect element.\n * @returns {void}\n */\n NodeDrawingTool.prototype.updateNodeDimension = function (obj, rect) {\n var zoom = this.commandHandler.viewerBase.getZoomFactor();\n obj.bounds.x = (rect.x / zoom) + rect.width / zoom;\n obj.bounds.y = (rect.y / zoom) + rect.height / zoom;\n obj.bounds.width = rect.width / zoom;\n obj.bounds.height = rect.height / zoom;\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule ? this.commandHandler.annotationModule.findAnnotationSettings(obj) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n if (annotationSettings.maxWidth || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n if (obj.bounds.width > annotationMaxWidth) {\n obj.bounds.width = annotationMaxWidth;\n }\n if (obj.bounds.height > annotationMaxHeight) {\n obj.bounds.height = annotationMaxHeight;\n }\n if (obj.bounds.height <= annotationMaxHeight && obj.bounds.width <= annotationMaxWidth) {\n this.commandHandler.nodePropertyChange(obj, { bounds: obj.bounds });\n }\n }\n else {\n this.commandHandler.nodePropertyChange(obj, { bounds: obj.bounds });\n }\n };\n /**\n * @private\n * @param {DrawingElement} obj - Specified the drawing element.\n * @param {PdfAnnotationBaseModel} node - Specified the annotation object.\n * @returns {void}\n */\n NodeDrawingTool.prototype.updateRadiusLinePosition = function (obj, node) {\n var trasPoint = { x: node.bounds.x + (node.bounds.width / 4), y: node.bounds.y };\n var center = { x: (node.bounds.x + (node.bounds.width / 2)), y: (node.bounds.y + (node.bounds.height / 2)) };\n var matrix = identityMatrix();\n rotateMatrix(matrix, node.rotateAngle, center.x, center.y);\n var rotatedPoint = transformPointByMatrix(matrix, trasPoint);\n var newPoint1 = { x: rotatedPoint.x, y: rotatedPoint.y };\n obj.offsetX = newPoint1.x;\n obj.offsetY = newPoint1.y;\n obj.width = node.bounds.width / 2;\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule.findAnnotationSettings(node);\n var annotationMaxWidth = 0;\n if (annotationSettings.maxWidth) {\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n if (node.bounds.width > annotationMaxWidth) {\n node.bounds.width = annotationMaxWidth;\n obj.width = node.bounds.width / 2;\n }\n }\n this.commandHandler.renderDrawing(undefined, node.pageIndex);\n };\n return NodeDrawingTool;\n}(ToolBase));\nexport { NodeDrawingTool };\n/**\n * Draws a Polygon shape node dynamically using polygon Tool\n *\n * @hidden\n */\nvar PolygonDrawingTool = /** @class */ (function (_super) {\n __extends(PolygonDrawingTool, _super);\n function PolygonDrawingTool(commandHandler, base, action) {\n var _this = _super.call(this, commandHandler, base) || this;\n _this.action = action;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n PolygonDrawingTool.prototype.mouseDown = function (args) {\n _super.prototype.mouseDown.call(this, args);\n this.inAction = true;\n if (!this.drawingObject) {\n this.startPoint = { x: this.startPosition.x, y: this.startPosition.y };\n var nodeAnnotElement = {\n bounds: { x: this.currentPosition.x, y: this.currentPosition.y, width: 5, height: 5 },\n // eslint-disable-next-line max-len\n vertexPoints: [{ x: this.startPoint.x / this.pdfViewerBase.getZoomFactor(), y: this.startPoint.y / this.pdfViewerBase.getZoomFactor() }, { x: this.currentPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.currentPosition.y / this.pdfViewerBase.getZoomFactor() }],\n shapeAnnotationType: 'Line', fillColor: this.commandHandler.drawingObject.fillColor,\n strokeColor: this.commandHandler.drawingObject.strokeColor, pageIndex: this.pdfViewerBase.activeElements.activePageID,\n // eslint-disable-next-line max-len\n notes: this.commandHandler.drawingObject.notes, thickness: this.commandHandler.drawingObject.thickness, author: this.commandHandler.drawingObject.author,\n subject: this.commandHandler.drawingObject.subject, borderDashArray: this.commandHandler.drawingObject.borderDashArray,\n modifiedDate: this.commandHandler.drawingObject.modifiedDate, borderStyle: this.commandHandler.drawingObject.borderStyle,\n // eslint-disable-next-line max-len\n measureType: this.commandHandler.drawingObject.measureType, enableShapeLabel: this.commandHandler.enableShapeLabel, opacity: this.commandHandler.drawingObject.opacity\n };\n this.pdfViewerBase.updateFreeTextProperties(nodeAnnotElement);\n // eslint-disable-next-line\n this.drawingObject = this.commandHandler.add(nodeAnnotElement);\n }\n else {\n var pt = void 0;\n var obj = (this.drawingObject);\n pt = obj.vertexPoints[obj.vertexPoints.length - 1];\n pt = { x: pt.x, y: pt.y };\n var lastPoint = this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length - 1];\n if (!(lastPoint.x === pt.x && lastPoint.x === pt.y)) {\n this.drawingObject.vertexPoints.push(pt);\n }\n this.commandHandler.nodePropertyChange(obj, { vertexPoints: obj.vertexPoints });\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n PolygonDrawingTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction && Point.equals(this.currentPosition, this.prevPosition) === false) {\n this.dragging = true;\n var obj = (this.drawingObject);\n if (this.drawingObject && this.currentPosition) {\n obj.vertexPoints[obj.vertexPoints.length - 1].x = this.currentPosition.x / this.pdfViewerBase.getZoomFactor();\n obj.vertexPoints[obj.vertexPoints.length - 1].y = this.currentPosition.y / this.pdfViewerBase.getZoomFactor();\n this.commandHandler.nodePropertyChange(obj, { vertexPoints: obj.vertexPoints });\n }\n if (obj.measureType === 'Perimeter') {\n updatePerimeterLabel(obj, obj.vertexPoints, this.commandHandler.annotation.measureAnnotationModule);\n }\n }\n return true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @param {boolean} isDoubleClineck - Specified the double click event or not.\n * @param {boolean} isMouseLeave - Specified the mouse leave event or not.\n * @returns {void}\n */\n PolygonDrawingTool.prototype.mouseUp = function (args, isDoubleClineck, isMouseLeave) {\n _super.prototype.mouseMove.call(this, args);\n // eslint-disable-next-line\n var currentSelector;\n if (args.source && args.annotationSelectorSettings !== null) {\n currentSelector = args.source.annotationSelectorSettings;\n }\n if (this.drawingObject) {\n // eslint-disable-next-line max-len\n var bounds = new Rect(this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length - 1].x - 20, this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length - 1].y - 20, 40, 40);\n var point = { x: this.drawingObject.vertexPoints[0].x, y: this.drawingObject.vertexPoints[0].y };\n if ((bounds.containsPoint(point) || isDoubleClineck) && this.dragging) {\n if (this.inAction) {\n this.inAction = false;\n if (this.drawingObject) {\n if (!isMouseLeave) {\n if (this.drawingObject.vertexPoints.length > 2) {\n this.drawingObject.vertexPoints.splice(this.drawingObject.vertexPoints.length - 1, 1);\n }\n }\n if (this.action === 'Polygon') {\n if (!isMouseLeave) {\n // eslint-disable-next-line max-len\n this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length - 1] = this.drawingObject.vertexPoints[0];\n }\n else {\n // eslint-disable-next-line max-len\n this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length] = this.drawingObject.vertexPoints[0];\n }\n this.commandHandler.nodePropertyChange(this.drawingObject, { vertexPoints: this.drawingObject.vertexPoints });\n var cobject = cloneObject(this.drawingObject);\n cobject.shapeAnnotationType = 'Polygon';\n cobject.bounds.width = cobject.wrapper.actualSize.width;\n cobject.bounds.height = cobject.wrapper.actualSize.height;\n cobject.bounds.x = this.drawingObject.wrapper.bounds.x;\n cobject.bounds.y = this.drawingObject.wrapper.bounds.y;\n this.commandHandler.add(cobject);\n this.commandHandler.remove(this.drawingObject);\n this.commandHandler.select([cobject.id], currentSelector);\n var drawingObject = this.commandHandler.selectedItems.annotations[0];\n if (drawingObject) {\n if (this.commandHandler.enableShapeAnnotation && (isNullOrUndefined(drawingObject.measureType) || drawingObject.measureType === '')) {\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.shapeAnnotationModule.renderShapeAnnotations(drawingObject, drawingObject.pageIndex);\n }\n if (this.commandHandler.enableMeasureAnnotation && (drawingObject.measureType === 'Area' || drawingObject.measureType === 'Volume')) {\n if (drawingObject.measureType === 'Area') {\n // eslint-disable-next-line max-len\n drawingObject.notes = this.commandHandler.annotation.measureAnnotationModule.calculateArea(drawingObject.vertexPoints);\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.stickyNotesAnnotationModule.addTextToComments(drawingObject.annotName, drawingObject.notes);\n }\n else if (drawingObject.measureType === 'Volume') {\n // eslint-disable-next-line max-len\n drawingObject.notes = this.commandHandler.annotation.measureAnnotationModule.calculateVolume(drawingObject.vertexPoints);\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.stickyNotesAnnotationModule.addTextToComments(drawingObject.annotName, drawingObject.notes);\n }\n if (drawingObject.enableShapeLabel) {\n drawingObject.labelContent = drawingObject.notes;\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(drawingObject, { vertexPoints: drawingObject.vertexPoints, notes: drawingObject.notes });\n }\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.measureAnnotationModule.renderMeasureShapeAnnotations(drawingObject, drawingObject.pageIndex);\n }\n }\n }\n else {\n if (!isMouseLeave) {\n if (isDoubleClineck) {\n this.drawingObject.vertexPoints.splice(this.drawingObject.vertexPoints.length - 1, 1);\n }\n }\n this.commandHandler.nodePropertyChange(this.drawingObject, {\n // eslint-disable-next-line max-len\n vertexPoints: this.drawingObject.vertexPoints, sourceDecoraterShapes: this.commandHandler.drawingObject.sourceDecoraterShapes,\n taregetDecoraterShapes: this.commandHandler.drawingObject.taregetDecoraterShapes\n });\n this.commandHandler.select([this.drawingObject.id], currentSelector);\n if (this.commandHandler.enableMeasureAnnotation && this.drawingObject.measureType === 'Perimeter') {\n this.commandHandler.renderDrawing(null, this.drawingObject.pageIndex);\n // eslint-disable-next-line max-len\n this.drawingObject.notes = this.commandHandler.annotation.measureAnnotationModule.calculatePerimeter(this.drawingObject);\n if (this.drawingObject.enableShapeLabel) {\n this.drawingObject.labelContent = this.drawingObject.notes;\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.drawingObject, { vertexPoints: this.drawingObject.vertexPoints, notes: this.drawingObject.notes });\n }\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.stickyNotesAnnotationModule.addTextToComments(this.drawingObject.annotName, this.drawingObject.notes);\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.measureAnnotationModule.renderMeasureShapeAnnotations(this.drawingObject, this.drawingObject.pageIndex);\n }\n }\n var annotationObject = this.commandHandler.selectedItems.annotations[0];\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, annotationObject, 'Addition', '', annotationObject, annotationObject);\n this.drawingObject = null;\n }\n }\n this.endAction();\n }\n else if (this.inAction && !this.dragging) {\n this.commandHandler.remove(this.drawingObject);\n }\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n PolygonDrawingTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args, true, true);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n PolygonDrawingTool.prototype.mouseWheel = function (args) {\n _super.prototype.mouseWheel.call(this, args);\n this.mouseMove(args);\n };\n /**\n * @private\n * @returns {void}\n */\n PolygonDrawingTool.prototype.endAction = function () {\n this.inAction = false;\n this.drawingObject = null;\n this.commandHandler.tool = '';\n };\n return PolygonDrawingTool;\n}(ToolBase));\nexport { PolygonDrawingTool };\n/**\n * Helps to edit the selected connectors\n *\n * @hidden\n */\nvar LineTool = /** @class */ (function (_super) {\n __extends(LineTool, _super);\n function LineTool(commandHandler, base, endPoint, drawingObject) {\n var _this = _super.call(this, commandHandler, base, true) || this;\n _this.endPoint = endPoint;\n _this.drawingObject = drawingObject;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n LineTool.prototype.mouseDown = function (args) {\n this.inAction = true;\n this.undoElement = undefined;\n _super.prototype.mouseDown.call(this, args);\n var oldPointValue;\n var connectorsShape;\n if (args.source && args.source.annotations) {\n oldPointValue = { x: this.prevPosition.x, y: this.prevPosition.y };\n connectorsShape = this.drawingObject;\n }\n this.initialPosition = args.position;\n this.prevSource = this.drawingObject;\n this.currentPosition = args.position;\n if (!this.drawingObject) {\n var measureModule = this.commandHandler.annotation.measureAnnotationModule;\n var annotationNode = {\n // eslint-disable-next-line max-len\n vertexPoints: [{ x: this.startPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.startPosition.y / this.pdfViewerBase.getZoomFactor() }, { x: this.currentPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.currentPosition.y / this.pdfViewerBase.getZoomFactor() }],\n bounds: { x: this.currentPosition.x, y: this.currentPosition.y, width: 5, height: 5 },\n sourceDecoraterShapes: this.commandHandler.drawingObject.sourceDecoraterShapes,\n taregetDecoraterShapes: this.commandHandler.drawingObject.taregetDecoraterShapes, measureType: 'Distance',\n // eslint-disable-next-line max-len\n fillColor: this.commandHandler.drawingObject.fillColor, notes: this.commandHandler.drawingObject.notes, strokeColor: this.commandHandler.drawingObject.strokeColor,\n // eslint-disable-next-line max-len\n opacity: this.commandHandler.drawingObject.opacity, thickness: this.commandHandler.drawingObject.thickness, borderDashArray: this.commandHandler.drawingObject.borderDashArray,\n shapeAnnotationType: 'Distance', pageIndex: this.pdfViewerBase.activeElements.activePageID,\n author: this.commandHandler.drawingObject.author, subject: this.commandHandler.drawingObject.subject,\n enableShapeLabel: this.commandHandler.enableShapeLabel, leaderHeight: measureModule.leaderLength\n };\n this.pdfViewerBase.updateFreeTextProperties(annotationNode);\n // eslint-disable-next-line\n this.drawingObject = this.commandHandler.add(annotationNode);\n }\n else if (!this.dragging) {\n var nodeAnnot = {\n bounds: { x: this.currentPosition.x, y: this.currentPosition.y, width: 5, height: 5 },\n // eslint-disable-next-line max-len\n vertexPoints: [{ x: this.startPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.startPosition.y / this.pdfViewerBase.getZoomFactor() }, { x: this.currentPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.currentPosition.y / this.pdfViewerBase.getZoomFactor() }],\n // eslint-disable-next-line max-len\n shapeAnnotationType: this.drawingObject.shapeAnnotationType, sourceDecoraterShapes: this.drawingObject.sourceDecoraterShapes,\n taregetDecoraterShapes: this.drawingObject.taregetDecoraterShapes, fillColor: this.drawingObject.fillColor,\n strokeColor: this.drawingObject.strokeColor, pageIndex: this.pdfViewerBase.activeElements.activePageID,\n // eslint-disable-next-line max-len\n opacity: this.drawingObject.opacity || 1, borderDashArray: this.drawingObject.borderDashArray, thickness: this.drawingObject.thickness,\n modifiedDate: this.drawingObject.modifiedDate, author: this.drawingObject.author, subject: this.drawingObject.subject,\n lineHeadEnd: this.drawingObject.lineHeadEnd, lineHeadStart: this.drawingObject.lineHeadStart,\n measureType: this.commandHandler.drawingObject.measureType, enableShapeLabel: this.commandHandler.enableShapeLabel\n };\n this.pdfViewerBase.updateFreeTextProperties(nodeAnnot);\n // eslint-disable-next-line\n this.drawingObject = this.commandHandler.add(nodeAnnot);\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n LineTool.prototype.mouseUp = function (args) {\n if (this.dragging) {\n _super.prototype.mouseMove.call(this, args);\n if (this.commandHandler) {\n // eslint-disable-next-line\n var currentSelector = void 0;\n if (args.source && args.annotationSelectorSettings !== null) {\n currentSelector = args.source.annotationSelectorSettings;\n }\n else {\n currentSelector = '';\n }\n // eslint-disable-next-line\n var node = this.drawingObject;\n this.commandHandler.nodePropertyChange(node, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([node.id], currentSelector);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelector);\n }\n if (this.endPoint && this.endPoint.indexOf('ConnectorSegmentPoint') > -1 && this.dragging) {\n this.commandHandler.annotation.updateCalibrateValues(this.drawingObject);\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, this.drawingObject, 'Addition', '', this.drawingObject, this.drawingObject);\n this.drawingObject = null;\n this.dragging = false;\n _super.prototype.mouseUp.call(this, args);\n }\n if (this.drawingObject) {\n this.endPoint = 'ConnectorSegmentPoint_1';\n }\n }\n else {\n if (this.drawingObject) {\n this.commandHandler.remove(this.drawingObject);\n }\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n LineTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction && Point.equals(this.currentPosition, this.prevPosition) === false) {\n this.currentPosition = args.position;\n this.dragging = true;\n if (this.currentPosition && this.prevPosition) {\n var diffX = this.currentPosition.x - this.prevPosition.x;\n var diffY = this.currentPosition.y - this.prevPosition.y;\n // eslint-disable-next-line\n var currentSelector = void 0;\n if (args.source && args.annotationSelectorSettings !== null) {\n currentSelector = args.source.annotationSelectorSettings;\n }\n else {\n currentSelector = '';\n }\n // eslint-disable-next-line max-len\n if (this.inAction && this.commandHandler && this.drawingObject && this.endPoint !== undefined && diffX !== 0 || diffY !== 0) {\n // eslint-disable-next-line max-len\n this.blocked = !this.commandHandler.dragConnectorEnds(this.endPoint, this.drawingObject, this.currentPosition, this.selectedSegment, args.target, null, currentSelector);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelector);\n }\n }\n this.prevPosition = this.currentPosition;\n }\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n LineTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n /**\n * @private\n * @returns {void}\n */\n LineTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n this.prevPosition = null;\n this.endPoint = null;\n };\n return LineTool;\n}(ToolBase));\nexport { LineTool };\n/**\n * Rotates the selected objects\n *\n * @hidden\n */\nvar RotateTool = /** @class */ (function (_super) {\n __extends(RotateTool, _super);\n function RotateTool(commandHandler, base) {\n return _super.call(this, commandHandler, base, true) || this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n RotateTool.prototype.mouseDown = function (args) {\n var nodeMouseDown = cloneObject(args.source);\n this.undoElement = {\n bounds: {\n x: nodeMouseDown.wrapper.offsetX, y: nodeMouseDown.wrapper.offsetY,\n width: nodeMouseDown.wrapper.actualSize.width, height: nodeMouseDown.wrapper.actualSize.height\n }, rotateAngle: nodeMouseDown.rotateAngle\n // eslint-disable-next-line\n };\n _super.prototype.mouseDown.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n RotateTool.prototype.mouseUp = function (args) {\n var object = args.source;\n // eslint-disable-next-line\n var newShapeObject;\n if (this.undoElement.rotateAngle !== object.wrapper.rotateAngle) {\n // eslint-disable-next-line\n var currentSelector = args.source.annotations[0].annotationSelectorSettings;\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelector);\n newShapeObject = {\n bounds: {\n x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY,\n width: args.source.wrapper.actualSize.width, height: args.source.wrapper.actualSize.height\n }, rotateAngle: args.source.wrapper.rotateAngle\n };\n }\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, args.source, 'Rotate', '', this.undoElement, newShapeObject);\n this.commandHandler.annotation.stampAnnotationModule.updateSessionStorage(args.source, null, 'Rotate');\n this.commandHandler.annotation.stickyNotesAnnotationModule.updateStickyNotes(args.source, null);\n _super.prototype.mouseUp.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n RotateTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n var object = args.source;\n // eslint-disable-next-line\n var currentSelector = args.source.annotations[0].annotationSelectorSettings;\n this.currentPosition = args.position;\n if (object.wrapper) {\n var refPoint = { x: object.wrapper.offsetX, y: object.wrapper.offsetY };\n var angle = Point.findAngle(refPoint, this.currentPosition) + 90;\n angle = (angle + 360) % 360;\n this.blocked = !(this.commandHandler.rotate(angle - object.wrapper.rotateAngle, currentSelector));\n }\n return !this.blocked;\n };\n RotateTool.prototype.getTooltipContent = function (node) {\n return Math.round((node.rotateAngle % 360)).toString() + '\\xB0';\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n RotateTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n /**\n * @private\n * @returns {void}\n */\n RotateTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n };\n return RotateTool;\n}(ToolBase));\nexport { RotateTool };\n","import { Size } from './../primitives/size';\nimport { pathSegmentCollection, getRectanglePath, processPathData } from './../utility/path-util';\n// import { overFlow } from './../utility/base-util';\nimport { createHtmlElement } from './../utility/dom-util';\n/**\n * Canvas Renderer\n */\n/** @private */\nvar CanvasRenderer = /** @class */ (function () {\n function CanvasRenderer() {\n }\n /** @private */\n CanvasRenderer.getContext = function (canvas) {\n return canvas.getContext('2d');\n };\n CanvasRenderer.prototype.setStyle = function (canvas, style) {\n var ctx = CanvasRenderer.getContext(canvas);\n if (style.fill === 'none') {\n style.fill = 'transparent';\n }\n if (style.stroke === 'none') {\n style.stroke = 'transparent';\n }\n ctx.strokeStyle = style.stroke;\n ctx.lineWidth = style.strokeWidth;\n if (style.strokeWidth === 0) {\n ctx.strokeStyle = 'transparent';\n }\n ctx.globalAlpha = style.opacity;\n var dashArray = [];\n if (style.dashArray) {\n dashArray = this.parseDashArray(style.dashArray);\n }\n ctx.setLineDash(dashArray);\n ctx.fillStyle = style.fill;\n };\n CanvasRenderer.prototype.rotateContext = function (canvas, angle, x, y) {\n var ctx = CanvasRenderer.getContext(canvas);\n ctx.translate(x, y);\n ctx.rotate(angle * Math.PI / 180);\n ctx.translate(-x, -y);\n };\n CanvasRenderer.prototype.setFontStyle = function (canvas, text) {\n var ctx = CanvasRenderer.getContext(canvas);\n var font = '';\n if (text.italic) {\n font += 'italic ';\n }\n if (text.bold) {\n font += 'bold ';\n }\n font += (text.fontSize) + 'px ';\n font += text.fontFamily;\n ctx.font = font;\n };\n /** @private */\n CanvasRenderer.prototype.parseDashArray = function (dashArray) {\n var dashes = [];\n var separator = dashArray.indexOf(' ') !== -1 ? ' ' : ',';\n var splittedDashes = dashArray.split(separator);\n for (var _i = 0, splittedDashes_1 = splittedDashes; _i < splittedDashes_1.length; _i++) {\n var i = splittedDashes_1[_i];\n dashes.push(Number(i));\n }\n return dashes;\n };\n //Rendering Part\n /** @private */\n CanvasRenderer.prototype.drawRectangle = function (canvas, options) {\n if (options.visible === true) {\n if (options.cornerRadius) {\n options.data = getRectanglePath(options.cornerRadius, options.height, options.width);\n this.drawPath(canvas, options);\n }\n else {\n var ctx = CanvasRenderer.getContext(canvas);\n ctx.save();\n ctx.beginPath();\n var cornerRadius = options.cornerRadius;\n var pivotX = options.x + options.width * options.pivotX;\n var pivotY = options.y + options.height * options.pivotY;\n this.rotateContext(canvas, options.angle, pivotX, pivotY);\n this.setStyle(canvas, options);\n ctx.rect(options.x, options.y, options.width, options.height);\n ctx.fillRect(options.x, options.y, options.width, options.height);\n ctx.fill();\n ctx.stroke();\n ctx.closePath();\n ctx.restore();\n }\n }\n };\n /** @private */\n CanvasRenderer.prototype.drawPath = function (canvas, options) {\n var collection = [];\n collection = processPathData(options.data);\n collection = pathSegmentCollection(collection);\n var ctx = CanvasRenderer.getContext(canvas);\n ctx.save();\n ctx.beginPath();\n var pivotY = options.y + options.height * options.pivotY;\n var pivotX = options.x + options.width * options.pivotX;\n this.rotateContext(canvas, options.angle, pivotX, pivotY);\n this.setStyle(canvas, options);\n ctx.translate(options.x, options.y);\n this.renderPath(canvas, options, collection);\n ctx.fill();\n ctx.translate(-options.x, -options.y);\n ctx.stroke();\n ctx.restore();\n };\n /** @private */\n CanvasRenderer.prototype.renderPath = function (canvas, options, collection) {\n if (options.visible === true) {\n var ctx = CanvasRenderer.getContext(canvas);\n var x0 = void 0;\n var y0 = void 0;\n var x1 = void 0;\n var y1 = void 0;\n var x2 = void 0;\n var y2 = void 0;\n var x = void 0;\n var y = void 0;\n var length_1;\n var i = void 0;\n var newSeg = void 0;\n var segs = collection;\n for (x = 0, y = 0, i = 0, length_1 = segs.length; i < length_1; ++i) {\n var obj = segs[parseInt(i.toString(), 10)];\n var seg = obj;\n var char = seg.command;\n if ('x1' in seg) {\n x1 = seg.x1;\n }\n if ('x2' in seg) {\n x2 = seg.x2;\n }\n if ('y1' in seg) {\n y1 = seg.y1;\n }\n if ('y2' in seg) {\n y2 = seg.y2;\n }\n if ('x' in seg) {\n x = seg.x;\n }\n if ('y' in seg) {\n y = seg.y;\n }\n switch (char) {\n case 'M':\n ctx.moveTo(x, y);\n seg.x = x;\n seg.y = y;\n break;\n case 'L':\n ctx.lineTo(x, y);\n seg.x = x;\n seg.y = y;\n break;\n case 'C':\n ctx.bezierCurveTo(x1, y1, x2, y2, x, y);\n seg.x = x;\n seg.y = y;\n seg.x1 = x1;\n seg.y1 = y1;\n seg.x2 = x2;\n seg.y2 = y2;\n break;\n case 'Q':\n ctx.quadraticCurveTo(x1, y1, x, y);\n seg.x = x;\n seg.y = y;\n seg.x1 = x1;\n seg.y1 = y1;\n break;\n case 'A':\n var curr = { x: x0, y: y0 };\n var rx = seg.r1;\n var ry = seg.r2;\n var xAxisRotation = seg.angle * (Math.PI / 180.0);\n var largeArc = seg.largeArc;\n var sweep = seg.sweep;\n var cp = { x: x, y: y };\n var currp = {\n x: Math.cos(xAxisRotation) * (curr.x - cp.x) / 2.0 + Math.sin(xAxisRotation) * (curr.y - cp.y) / 2.0,\n y: -Math.sin(xAxisRotation) * (curr.x - cp.x) / 2.0 + Math.cos(xAxisRotation) * (curr.y - cp.y) / 2.0\n };\n var l = Math.pow(currp.x, 2) / Math.pow(rx, 2) + Math.pow(currp.y, 2) / Math.pow(ry, 2);\n if (l > 1) {\n rx *= Math.sqrt(l);\n ry *= Math.sqrt(l);\n }\n var k = (Math.pow(ry, 2) * Math.pow(currp.x, 2));\n var s = (largeArc === sweep ? -1 : 1) * Math.sqrt(((Math.pow(rx, 2) * Math.pow(ry, 2)) - (Math.pow(rx, 2) * Math.pow(currp.y, 2)) - k) /\n (Math.pow(rx, 2) * Math.pow(currp.y, 2) + Math.pow(ry, 2) * Math.pow(currp.x, 2)));\n if (isNaN(s)) {\n s = 0;\n }\n var cpp = { x: s * rx * currp.y / ry, y: s * -ry * currp.x / rx };\n var centp = {\n x: (curr.x + cp.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y,\n y: (curr.y + cp.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y\n };\n var a1 = this.a([1, 0], [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry]);\n var u = [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry];\n var v = [(-currp.x - cpp.x) / rx, (-currp.y - cpp.y) / ry];\n var ad = this.a(u, v);\n if (this.r(u, v) <= -1) {\n ad = Math.PI;\n }\n if (this.r(u, v) >= 1) {\n ad = 0;\n }\n var dir = !sweep ? -1.0 : 1.0;\n var ah = a1 + dir * (ad / 2.0);\n var halfWay = {\n x: centp.x + rx * Math.cos(ah),\n y: centp.y + ry * Math.sin(ah)\n };\n seg.centp = centp;\n seg.xAxisRotation = xAxisRotation;\n seg.rx = rx;\n seg.ry = ry;\n seg.a1 = a1;\n seg.ad = ad;\n seg.sweep = sweep;\n if (ctx != null) {\n var ra = rx > ry ? rx : ry;\n var sx = rx > ry ? 1 : rx / ry;\n var sy = rx > ry ? ry / rx : 1;\n ctx.save();\n ctx.translate(centp.x, centp.y);\n ctx.rotate(xAxisRotation);\n ctx.scale(sx, sy);\n ctx.arc(0, 0, ra, a1, a1 + ad, !sweep);\n ctx.scale(1 / sx, 1 / sy);\n ctx.rotate(-xAxisRotation);\n ctx.translate(-centp.x, -centp.y);\n ctx.restore();\n }\n break;\n case 'Z':\n case 'z':\n ctx.closePath();\n x = x0;\n y = y0;\n break;\n }\n x0 = x;\n y0 = y;\n }\n }\n };\n /** @private */\n CanvasRenderer.prototype.drawText = function (canvas, options) {\n if (options.content && options.visible === true) {\n var ctx = CanvasRenderer.getContext(canvas);\n ctx.save();\n this.setStyle(canvas, options);\n var pivotX = options.x + options.width * options.pivotX;\n var pivotY = options.y + options.height * options.pivotY;\n this.rotateContext(canvas, options.angle, pivotX, pivotY);\n this.setFontStyle(canvas, options);\n var i = 0;\n var childNodes = [];\n childNodes = options.childNodes;\n var wrapBounds = options.wrapBounds;\n ctx.fillStyle = options.color;\n if (wrapBounds) {\n var position = this.labelAlign(options, wrapBounds, childNodes);\n for (i = 0; i < childNodes.length; i++) {\n var child = childNodes[parseInt(i.toString(), 10)];\n if (child.text !== '\\n') {\n var offsetX = position.x + child.x - wrapBounds.x;\n var offsetY = position.y + child.dy * i + ((options.fontSize) * 0.8);\n // if (wrapBounds.width > options.width && options.textOverflow !== 'Wrap') {\n // child.text = overFlow(child.text, options);\n // }\n ctx.fillText(child.text, offsetX, offsetY);\n if (options.textDecoration === 'Underline'\n || options.textDecoration === 'Overline'\n || options.textDecoration === 'LineThrough') {\n var startPointX = offsetX;\n var startPointY = void 0;\n var textlength = ctx.measureText(child.text).width;\n var endPointX = offsetX + textlength;\n var endPointY = void 0;\n switch (options.textDecoration) {\n case 'Underline':\n startPointY = offsetY + 2;\n endPointY = offsetY + 2;\n break;\n case 'Overline':\n startPointY = (position.y + child.dy * i);\n endPointY = (position.y + child.dy * i);\n break;\n case 'LineThrough':\n startPointY = ((offsetY + position.y + child.dy * i) / 2) + 2;\n endPointY = ((offsetY + position.y + child.dy * i) / 2) + 2;\n }\n ctx.beginPath();\n ctx.moveTo(startPointX, startPointY);\n ctx.lineTo(endPointX, endPointY);\n ctx.strokeStyle = options.color;\n ctx.lineWidth = options.fontSize * .08;\n ctx.globalAlpha = options.opacity;\n ctx.stroke();\n }\n }\n }\n }\n ctx.restore();\n }\n };\n //end region\n // vector magnitude\n CanvasRenderer.prototype.m = function (v) { return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2)); };\n // ratio between two vectors\n CanvasRenderer.prototype.r = function (u, v) { return (u[0] * v[0] + u[1] * v[1]) / (this.m(u) * this.m(v)); };\n // angle between two vectors\n CanvasRenderer.prototype.a = function (u, v) { return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(this.r(u, v)); };\n CanvasRenderer.prototype.getMeetOffset = function (arg, res, dest) {\n var max = Math.max(res, dest);\n var min = Math.min(res, dest);\n switch (arg) {\n case 'min': return 0;\n case 'mid': return (max - min) / 2;\n case 'max': return max - min;\n default: return 0;\n }\n };\n CanvasRenderer.prototype.getSliceOffset = function (arg, res, dest, src) {\n switch (arg) {\n case 'min': return 0;\n case 'mid': return (res - dest) / 2 * src / res;\n case 'max': return (res - dest) * src / res;\n default: return 0;\n }\n };\n CanvasRenderer.prototype.image = function (ctx, image, x, y, width, height, alignOptions) {\n ctx.beginPath();\n var srcWidth = image.width;\n var srcHeight = image.height;\n var destinationW = width;\n var destinationH = height;\n var resultWidth = 0;\n var resultHeight = 0;\n ctx.globalAlpha = alignOptions.opacity;\n if (alignOptions && alignOptions.alignment !== 'None') {\n var xalign = alignOptions.alignment.toLowerCase().substr(1, 3);\n var yalign = alignOptions.alignment.toLowerCase().substr(5, 3);\n if (alignOptions.scale === 'Slice') {\n var a = function () {\n resultWidth = destinationW;\n resultHeight = srcHeight * destinationW / srcWidth;\n };\n var b = function () {\n resultWidth = srcWidth * destinationH / srcHeight;\n resultHeight = destinationH;\n };\n if (destinationW > destinationH) {\n a();\n if (destinationH > resultHeight) {\n b();\n }\n }\n else if (destinationW === destinationH) {\n if (srcWidth > srcHeight) {\n b();\n }\n else {\n a();\n }\n }\n else {\n b();\n if (destinationW > resultWidth) {\n a();\n }\n }\n var x1 = this.getSliceOffset(xalign, resultWidth, destinationW, srcWidth);\n var y1 = this.getSliceOffset(yalign, resultHeight, destinationH, srcHeight);\n var sWidth = srcWidth - x1;\n var sHeight = srcHeight - y1;\n var dWidth = resultWidth - (x1 * (resultWidth / srcWidth));\n var dHeight = resultHeight - (y1 * (resultHeight / srcHeight));\n var canvas1 = createHtmlElement('canvas', { 'width': width.toString(), 'height': height.toString() });\n var ctx1 = canvas1.getContext('2d');\n ctx1.drawImage(image, x1, y1, sWidth, sHeight, 0, 0, dWidth, dHeight);\n ctx.drawImage(canvas1, x, y, width, height);\n }\n else if (alignOptions.scale === 'Meet') {\n var srcRatio = (srcHeight / srcWidth);\n var destRatio = (destinationH / destinationW);\n resultWidth = destRatio > srcRatio ? destinationW : destinationH / srcRatio;\n resultHeight = destRatio > srcRatio ? destinationW * srcRatio : destinationH;\n x += this.getMeetOffset(xalign, resultWidth, destinationW);\n y += this.getMeetOffset(yalign, resultHeight, destinationH);\n ctx.drawImage(image, 0, 0, srcWidth, srcHeight, x, y, resultWidth, resultHeight);\n }\n else {\n ctx.drawImage(image, x, y, width, height);\n }\n }\n else {\n if (image.complete) {\n ctx.drawImage(image, x, y, width, height);\n }\n else {\n var transform_1 = ctx.getTransform();\n image.onload = function () {\n ctx.setTransform(transform_1.a, transform_1.b, transform_1.c, transform_1.d, transform_1.e, transform_1.f);\n ctx.drawImage(image, x, y, width, height);\n };\n }\n }\n ctx.closePath();\n };\n // text utility\n CanvasRenderer.prototype.loadImage = function (ctx, obj, canvas, pivotX, pivotY) {\n this.rotateContext(canvas, obj.angle, pivotX, pivotY);\n var image;\n if (window.customStampCollection && window.customStampCollection.get(obj.printID)) {\n image = window.customStampCollection.get(obj.printID);\n }\n else {\n image = new Image();\n image.src = obj.source;\n }\n this.image(ctx, image, obj.x, obj.y, obj.width, obj.height, obj);\n };\n /** @private */\n CanvasRenderer.prototype.drawImage = function (canvas, obj, parentSvg, fromPalette) {\n var _this = this;\n if (obj.visible) {\n var ctx_1 = CanvasRenderer.getContext(canvas);\n ctx_1.save();\n var pivotX_1 = obj.x + obj.width * obj.pivotX;\n var pivotY_1 = obj.y + obj.height * obj.pivotY;\n var imageObj = new Image();\n imageObj.src = obj.source;\n var id = ctx_1.canvas.id.split('_');\n var value = id[id.length - 1] === ('diagram' || 'diagramLayer') ? true : false;\n /**\n * Since Clipping portion for node with slice option is not calculated properly\n * if (obj.sourceX !== undefined && obj.sourceY !== undefined && obj.sourceWidth !== undefined\n * && obj.sourceHeight !== undefined) {\n * ctx.drawImage(imageObj, obj.sourceX, obj.sourceY, obj.sourceWidth, obj.sourceHeight, obj.x, obj.y, obj.width, obj.height);\n * } else {\n * ctx.drawImage(imageObj, obj.x, obj.y, obj.width, obj.height);\n * }\n */\n if (!fromPalette) {\n this.loadImage(ctx_1, obj, canvas, pivotX_1, pivotY_1);\n }\n else {\n imageObj.onload = function () {\n _this.loadImage(ctx_1, obj, canvas, pivotX_1, pivotY_1);\n };\n }\n ctx_1.restore();\n }\n };\n /** @private */\n CanvasRenderer.prototype.labelAlign = function (text, wrapBounds, childNodes) {\n var bounds = new Size(wrapBounds.width, childNodes.length * (text.fontSize * 1.2));\n var position = { x: 0, y: 0 };\n var labelX = text.x;\n var labelY = text.y;\n var offsetx = text.width * 0.5;\n var offsety = text.height * 0.5;\n var pointx = offsetx;\n var pointy = offsety;\n if (text.textAlign === 'left') {\n pointx = 0;\n }\n else if (text.textAlign === 'center') {\n if (wrapBounds.width > text.width && (text.textOverflow === 'Ellipsis' || text.textOverflow === 'Clip')) {\n pointx = 0;\n }\n else {\n pointx = text.width * 0.5;\n }\n }\n else if (text.textAlign === 'right') {\n pointx = (text.width * 1);\n }\n position.x = labelX + pointx + (wrapBounds ? wrapBounds.x : 0);\n position.y = labelY + pointy - bounds.height / 2;\n return position;\n };\n return CanvasRenderer;\n}());\nexport { CanvasRenderer };\nexport function refreshDiagramElements(canvas, drawingObjects, renderer) {\n for (var i = 0; i < drawingObjects.length; i++) {\n renderer.renderElement(drawingObjects[parseInt(i.toString(), 10)], canvas, undefined);\n }\n}\n","import { Size } from './../primitives/size';\nimport { CanvasRenderer } from './../rendering/canvas-renderer';\nimport { processPathData, pathSegmentCollection } from '../utility/path-util';\n/**\n * SVG Renderer\n */\n/** @private */\nvar SvgRenderer = /** @class */ (function () {\n function SvgRenderer() {\n }\n /** @private */\n SvgRenderer.prototype.parseDashArray = function (dashArray) {\n var dashes = [];\n return dashes;\n };\n /** @private */\n SvgRenderer.prototype.drawRectangle = function (svg, options, diagramId, onlyRect, isSelector, parentSvg, ariaLabel) {\n var id;\n if (options.id === svg.id) {\n id = options.id + '_container';\n }\n else {\n id = options.id;\n }\n var rect;\n if (!rect || isSelector) {\n rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n svg.appendChild(rect);\n }\n var attr = {\n 'id': id, 'x': options.x.toString(), 'y': options.y.toString(), 'width': options.width.toString(),\n 'height': options.height.toString(), 'visibility': options.visible ? 'visible' : 'hidden',\n 'transform': 'rotate(' + options.angle + ','\n + (options.x + options.width * options.pivotX) + ',' + (options.y + options.height * options.pivotY) + ')',\n 'rx': options.cornerRadius || 0, 'ry': options.cornerRadius || 0, 'opacity': options.opacity,\n 'aria-label': ariaLabel ? ariaLabel : ''\n };\n if (options.class) {\n attr['class'] = options.class;\n }\n var poiterEvents = 'pointer-events';\n if (!ariaLabel) {\n // eslint-disable-next-line\n attr[poiterEvents] = 'none';\n }\n setAttributeSvg(rect, attr);\n this.setSvgStyle(rect, options, diagramId);\n };\n /** @private */\n SvgRenderer.prototype.updateSelectionRegion = function (gElement, options) {\n var rect;\n rect = gElement.parentNode.getElementById(options.id);\n var attr;\n attr = {\n 'id': options.id, 'x': options.x.toString(), 'y': options.y.toString(), 'width': options.width.toString(),\n 'height': options.height.toString(), 'transform': 'rotate(' + options.angle + ','\n + (options.x + options.width * options.pivotX) + ',' + (options.y + options.height * options.pivotY) + ')',\n class: 'e-diagram-selected-region'\n };\n if (!rect) {\n rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n gElement.appendChild(rect);\n }\n this.setSvgStyle(rect, options);\n setAttributeSvg(rect, attr);\n };\n /** @private */\n SvgRenderer.prototype.createGElement = function (elementType, attribute) {\n var gElement = createSvgElement(elementType, attribute);\n return gElement;\n };\n /** @private */\n SvgRenderer.prototype.drawCircle = function (gElement, options, enableSelector, ariaLabel) {\n var circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n this.setSvgStyle(circle, options);\n var classval = options.class || '';\n if (!enableSelector) {\n classval += ' e-disabled';\n }\n var attr = {\n 'id': options.id,\n 'cx': options.centerX,\n 'cy': options.centerY,\n 'r': options.radius,\n 'visibility': options.visible ? 'visible' : 'hidden',\n 'class': classval,\n 'aria-label': ariaLabel ? ariaLabel['aria-label'] : ''\n };\n var pointerEvents = 'pointer-events';\n if (attr['aria-label'] === '') {\n // eslint-disable-next-line\n attr[pointerEvents] = 'none';\n }\n circle.style.display = options.visible ? 'block' : 'none';\n setAttributeSvg(circle, attr);\n gElement.appendChild(circle);\n };\n /** @private */\n SvgRenderer.prototype.setSvgStyle = function (svg, style, diagramId) {\n if (style.canApplyStyle || style.canApplyStyle === undefined) {\n if (style.fill === 'none') {\n style.fill = 'transparent';\n }\n if (style.stroke === 'none') {\n style.stroke = 'transparent';\n }\n var dashArray = [];\n var fill = void 0;\n if (style.dashArray !== undefined) {\n var canvasRenderer = new CanvasRenderer();\n dashArray = canvasRenderer.parseDashArray(style.dashArray);\n }\n fill = style.fill;\n if (style.stroke) {\n svg.setAttribute('stroke', style.stroke);\n }\n if (style.strokeWidth !== undefined && style.strokeWidth !== null) {\n svg.setAttribute('stroke-width', style.strokeWidth.toString());\n }\n if (dashArray) {\n svg.setAttribute('stroke-dasharray', dashArray.toString());\n }\n if (fill) {\n svg.setAttribute('fill', fill);\n }\n }\n };\n //end region\n // text utility\n /** @private */\n SvgRenderer.prototype.svgLabelAlign = function (text, wrapBound, childNodes) {\n var bounds = new Size(wrapBound.width, childNodes.length * (text.fontSize * 1.2));\n var pos = { x: 0, y: 0 };\n var x = 0;\n var y = 1.2;\n var offsetX = text.width * 0.5;\n var offsety = text.height * 0.5;\n var pointX = offsetX;\n var pointY = offsety;\n if (text.textAlign === 'left') {\n pointX = 0;\n }\n else if (text.textAlign === 'center') {\n if (wrapBound.width > text.width && (text.textOverflow === 'Ellipsis' || text.textOverflow === 'Clip')) {\n pointX = 0;\n }\n else {\n pointX = text.width * 0.5;\n }\n }\n else if (text.textAlign === 'right') {\n pointX = (text.width * 1);\n }\n pos.x = x + pointX + (wrapBound ? wrapBound.x : 0);\n pos.y = y + pointY - bounds.height / 2;\n return pos;\n };\n /** @private */\n SvgRenderer.prototype.drawLine = function (gElement, options) {\n var line = document.createElementNS('http://www.w3.org/2000/svg', 'line');\n this.setSvgStyle(line, options);\n var pivotX = options.x + options.width * options.pivotX;\n var pivotY = options.y + options.height * options.pivotY;\n var kk = '';\n var attr = {\n 'id': options.id,\n 'x1': options.startPoint.x + options.x,\n 'y1': options.startPoint.y + options.y,\n 'x2': options.endPoint.x + options.x,\n 'y2': options.endPoint.y + options.y,\n 'stroke': options.stroke,\n 'stroke-width': options.strokeWidth.toString(), 'opacity': options.opacity.toString(),\n 'transform': 'rotate(' + options.angle + ' ' + pivotX + ' ' + pivotY + ')',\n 'visibility': options.visible ? 'visible' : 'hidden',\n };\n if (options.class) {\n attr['class'] = options.class;\n }\n setAttributeSvg(line, attr);\n gElement.appendChild(line);\n };\n /** @private */\n SvgRenderer.prototype.drawPath = function (svg, options, diagramId, isSelector, parentSvg, ariaLabel) {\n var id;\n var x = Math.floor((Math.random() * 10) + 1);\n id = svg.id + '_shape' + x.toString();\n var collection = [];\n collection = processPathData(options.data);\n collection = pathSegmentCollection(collection);\n var shadowElement;\n if (parentSvg) {\n shadowElement = parentSvg.getElementById(options.id + '_groupElement_shadow');\n if (shadowElement) {\n shadowElement.parentNode.removeChild(shadowElement);\n }\n }\n var path;\n if (parentSvg) {\n path = parentSvg.getElementById(options.id);\n }\n if (!path || isSelector) {\n path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svg.appendChild(path);\n }\n this.renderPath(path, options, collection);\n var attr = {\n 'id': options.id, 'transform': 'rotate(' + options.angle + ',' + (options.x + options.width * options.pivotX) + ','\n + (options.y + options.height * options.pivotY) + ')' + 'translate(' + (options.x) + ',' + (options.y) + ')',\n 'visibility': options.visible ? 'visible' : 'hidden', 'opacity': options.opacity,\n 'aria-label': ariaLabel ? ariaLabel : ''\n };\n if (options.class) {\n attr['class'] = options.class;\n }\n setAttributeSvg(path, attr);\n this.setSvgStyle(path, options, diagramId);\n };\n /** @private */\n SvgRenderer.prototype.renderPath = function (svg, options, collection) {\n var x1;\n var y1;\n var x2;\n var y2;\n var x;\n var y;\n var length;\n var i;\n var segments = collection;\n var d = '';\n for (x = 0, y = 0, i = 0, length = segments.length; i < length; ++i) {\n var obj = segments[parseInt(i.toString(), 10)];\n var segment = obj;\n var char = segment.command;\n if ('x1' in segment) {\n x1 = segment.x1;\n }\n if ('x2' in segment) {\n x2 = segment.x2;\n }\n if ('y1' in segment) {\n y1 = segment.y1;\n }\n if ('y2' in segment) {\n y2 = segment.y2;\n }\n if ('x' in segment) {\n x = segment.x;\n }\n if ('y' in segment) {\n y = segment.y;\n }\n switch (char) {\n case 'M':\n d = d + 'M' + x.toString() + ',' + y.toString() + ' ';\n break;\n case 'L':\n d = d + 'L' + x.toString() + ',' + y.toString() + ' ';\n break;\n case 'C':\n d = d + 'C' + x1.toString() + ',' + y1.toString() + ',' + x2.toString() + ',' + y2.toString() + ',';\n d += x.toString() + ',' + y.toString() + ' ';\n break;\n case 'Q':\n d = d + 'Q' + x1.toString() + ',' + y1.toString() + ',' + x.toString() + ',' + y.toString() + ' ';\n break;\n case 'A':\n d = d + 'A' + segment.r1.toString() + ',' + segment.r2.toString() + ',' + segment.angle.toString() + ',';\n d += segment.largeArc.toString() + ',' + segment.sweep + ',' + x.toString() + ',' + y.toString() + ' ';\n break;\n case 'Z':\n case 'z':\n d = d + 'Z' + ' ';\n break;\n }\n }\n svg.setAttribute('d', d);\n };\n return SvgRenderer;\n}());\nexport { SvgRenderer };\n/** @private */\nexport function setAttributeSvg(svg, attributes) {\n var keys = Object.keys(attributes);\n for (var i = 0; i < keys.length; i++) {\n svg.setAttribute(keys[parseInt(i.toString(), 10)], attributes[keys[parseInt(i.toString(), 10)]]);\n }\n}\n/** @private */\nexport function createSvgElement(elementType, attribute) {\n var element = document.createElementNS('http://www.w3.org/2000/svg', elementType);\n setAttributeSvg(element, attribute);\n return element;\n}\n/** @private */\nexport function createSvg(id, width, height) {\n var svgObj = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n setAttributeSvg(svgObj, { 'id': id, 'width': width, 'height': height });\n return svgObj;\n}\nexport function getParentSvg(element, targetElement, canvas) {\n if (element && element.id) {\n if (targetElement && targetElement === 'selector') {\n return this.pdfViewer.adornerSvgLayer;\n }\n }\n return canvas;\n}\n","import { createHtmlElement, getDiagramElement } from '@syncfusion/ej2-drawings';\nimport { setAttributeSvg, createSvgElement } from '@syncfusion/ej2-drawings';\n/**\n * @param {ClientRect} bounds - Specified the bounds of the annotation.\n * @param {string} commonStyle - Specified the annotation styles.\n * @param {HTMLElement} cavas - Specified the annotation canvas element.\n * @param {number} index - Specified the page index value.\n * @param {PdfViewer} pdfViewer - Specified the pdfviewer element.\n * @hidden\n * @returns {void}\n */\nexport function renderAdornerLayer(bounds, commonStyle, cavas, index, pdfViewer) {\n var divElement = createHtmlElement('div', {\n 'id': pdfViewer.element.id + index + '_diagramAdornerLayer',\n 'style': 'width:' + bounds.width + 'px;height:' + bounds.height + 'px;' + commonStyle\n });\n if (!getDiagramElement(divElement.id)) {\n var nextElement = pdfViewer.viewerBase.getElement('_pageDiv_' + index);\n var pageBound = nextElement.getBoundingClientRect();\n var svgAdornerSvg = createSvg(pdfViewer.element.id + index + '_diagramAdorner_svg', pageBound.width, pageBound.height);\n svgAdornerSvg.setAttribute('class', 'e-adorner-layer' + index);\n svgAdornerSvg.setAttribute('style', 'pointer-events:none;');\n pdfViewer.adornerSvgLayer = createSvgElement('g', { 'id': pdfViewer.element.id + index + '_diagramAdorner' });\n pdfViewer.adornerSvgLayer.setAttribute('style', ' pointer-events: all; ');\n svgAdornerSvg.appendChild(pdfViewer.adornerSvgLayer);\n divElement.appendChild(svgAdornerSvg);\n divElement.style.width = pageBound.width + 'px';\n divElement.style.height = pageBound.height + 'px';\n if (nextElement) {\n nextElement.insertBefore(divElement, nextElement.childNodes[0]);\n }\n else {\n cavas.parentElement.appendChild(divElement);\n }\n var svgSelector = createSvgElement('g', { 'id': pdfViewer.element.id + index + '_SelectorElement' });\n pdfViewer.adornerSvgLayer.appendChild(svgSelector);\n setAttributeSvg(svgAdornerSvg, { style: 'pointer-events:none;' });\n }\n pdfViewer.viewerBase.applyElementStyles(divElement, index);\n}\n/**\n * @param {string} id - Specified the Id of the svg element.\n * @param {string | number} width - Specified the width of the svg element.\n * @param {string | number} height - Specified the height of the svg element.\n * @hidden\n * @returns {SVGElement} - Returns the svg element.\n */\nexport function createSvg(id, width, height) {\n var svgObj = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n setAttributeSvg(svgObj, { 'id': id, 'width': width, 'height': height });\n return svgObj;\n}\n","/**\n * ContextMenu module is used to handle the context menus used in the control.\n *\n * @hidden\n */\nvar BlazorContextMenu = /** @class */ (function () {\n /**\n * Initialize the constructor of blazorcontext\n *\n * @param { PdfViewer } pdfViewer - Specified PdfViewer class.\n * @param { PdfViewerBase } pdfViewerBase - The pdfViewerBase.\n */\n function BlazorContextMenu(pdfViewer, pdfViewerBase) {\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * Create the context menu.\n * @returns {void}\n */\n BlazorContextMenu.prototype.createContextMenu = function () {\n var htmlCollection = document.getElementsByClassName(this.pdfViewer.element.id + '_context_menu');\n if (htmlCollection) {\n this.contextMenuElement = htmlCollection[0];\n if (this.contextMenuElement.children && this.contextMenuElement.children.length > 0) {\n var htmlElement = this.contextMenuElement.children[0];\n htmlElement.className = htmlElement.className + ' ' + 'e-pv-context-menu';\n }\n }\n };\n /**\n * open the context menu.\n * @param {number} top - The top.\n * @param {number} left - The left.\n * @param {HTMLElement} target - The target.\n * @returns {void}\n */\n BlazorContextMenu.prototype.open = function (top, left, target) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenContextMenu', top, left);\n };\n /**\n * close the context menu.\n * @returns {void}\n */\n BlazorContextMenu.prototype.close = function () {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('CloseContextMenu');\n };\n /**\n * destroy the context menu.\n * @returns {void}\n */\n BlazorContextMenu.prototype.destroy = function () {\n this.previousAction = '';\n this.contextMenuElement = null;\n };\n // eslint-disable-next-line\n BlazorContextMenu.prototype.OnItemSelected = function (selectedMenu) {\n if (typeof selectedMenu === 'string') {\n this.pdfViewerBase.OnItemSelected(selectedMenu);\n }\n else {\n this.pdfViewerBase.OnItemSelected(selectedMenu[0]);\n }\n };\n return BlazorContextMenu;\n}());\nexport { BlazorContextMenu };\n","import { isNullOrUndefined, classList, createElement } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar spinTemplate = null;\nvar spinCSSClass = null;\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_MAT3_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_MATERIAL3SPIN = 'e-spin-material3';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_BOOT5SPIN = 'e-spin-bootstrap5';\nvar CLS_TAILWIND = 'e-spin-tailwind';\nvar CLS_Fluent = 'e-spin-fluent';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @private\n * @param {string} action - The action.\n * @param {CreateArgs} options - The options\n * @param {string} target - The target\n * @param {string} type - the type\n * @returns {void}\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n // eslint-disable-next-line\n var element = document.querySelector(options.target);\n // eslint-disable-next-line\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n // eslint-disable-next-line\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n * @private\n * @param {SpinnerArgs} args - The SpinnerArgs.\n * @param {createElementParams} internalCreateElement - The internalCreateElement\n * @returns {void}\n */\nexport function createSpinner(args, internalCreateElement) {\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = createSpinnerContainer(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n container.wrap.classList.add(args.cssClass);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.innerWrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} label - The label.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {HTMLElement} - Returns HTMLElement.\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.textContent = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n createMaterialElement(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n matCalculateAttributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createMaterial3Spinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material3', radius: radius };\n createMaterialElement(container, uniqueID, makeElement, CLS_MATERIAL3SPIN);\n matCalculateAttributes(radius, container, 'Material3', CLS_MATERIAL3SPIN);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n createMaterialElement(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n matCalculateAttributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createBootstrap5Spinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap5', radius: radius };\n createMaterialElement(container, uniqueID, makeElement, CLS_BOOT5SPIN);\n matCalculateAttributes(radius, container, 'Bootstrap5', CLS_BOOT5SPIN);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Tailwind', radius: radius };\n createFabricElement(container, uniqueID, CLS_TAILWIND, makeElement);\n fbCalculateAttributes(radius, container, CLS_TAILWIND);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createFluentSpinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent', radius: radius };\n createFabricElement(container, uniqueID, CLS_Fluent, makeElement);\n fbCalculateAttributes(radius, container, CLS_Fluent);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {string} uniqueID - The uniqueID.\n * @param {number} radius - The radius.\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[\"\" + uniqueID].timeOut = 0;\n globalObject[\"\" + uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n createFabricElement(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fbCalculateAttributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n createFabricElement(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fbCalculateAttributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n * @param {HTMLElement} container - The container\n * @returns {string} - Returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n * @param {string} theme - The theme.\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Material3':\n createMaterial3Spinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap5':\n createBootstrap5Spinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent':\n createFluentSpinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n * @param {HTMLElement} innerContainer - The innerContainer.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n createBootstrapElement(innerContainer, uniqueID, makeElement);\n bootCalculateAttributes(innerContainer, radius);\n}\n/**\n * @param {HTMLElement} innerContainer - The HTMLElement.\n * @param {string} uniqueID - The uniqueID.\n * @param {createElementParams} makeElement - The createElementParams.\n * @returns {void}\n */\nfunction createBootstrapElement(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n * @param {HTMLElement} innerContainer - The innerContainer.\n * @param {number} radius - The radius.\n * @returns {void}\n */\nfunction bootCalculateAttributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n svg.style.width = svg.style.height = radius + 'px';\n var x = 0;\n var y = 0;\n var rad = 24;\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n * @param {number} begin - The begin.\n * @param {number} stop - The stop.\n * @returns {number[]} - Returns the number.\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n var increment = false;\n var count = 1;\n formSeries(start);\n /**\n * @param {number} i - The number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n * @param {HTMLElement} innerContainer - The innerContainer.\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n * @param {SVGCircleElement} circle - The circle.\n * @param {number} start - The start.\n * @param {number} end - The end.\n * @param {number[]} series - The series\n * @param {string} id - The id.\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n bootAnimate(start);\n /**\n * @param {number} radius - The radisu.\n * @returns {void}\n */\n function bootAnimate(radius) {\n if (globalTimeOut[\"\" + id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n globalTimeOut[\"\" + id].timeOut = setTimeout(bootAnimate.bind(null, series[parseInt(count.toString(), 10)]), 18);\n }\n }\n }\n}\n/**\n * @param {HTMLElement} container - The container.\n * @param {string} template - The template.\n * @param {string} cssClass - The cssClass.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n * @param {string | number} width - The width\n * @param {string} theme - The theme.\n * @returns {number} - Returns the number.\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Material3':\n defaultSize = DEFT_MAT3_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n * @param {string} id - The id.\n * @param {number} radius - The radius.\n * @param {number} count - The count.\n * @param {number} previousId - The previousId.\n * @returns {GlobalVariables} - Returns GlobalVariables.\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - Returns string.\n */\nfunction randomGenerator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n * @param {HTMLElement} innerCon - The innerContainer.\n * @param {string} uniqueID - The uniqueID.\n * @param {string} themeClass - The themeClass\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createFabricElement(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n * @param {HTMLElement} innerContainer - The innerContainer.\n * @param {string} uniqueID - The uniqueID.\n * @param {createElementParams} makeElement - The makeElement.\n * @param {string} cls - The class\n * @returns {void}\n */\nfunction createMaterialElement(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n * @param {HTMLElement} target - The target.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {HTMLElement;HTMLElement} - Retruns the HTMLElement.\n */\nfunction createSpinnerContainer(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n var spinnerInnerContainer = makeElement('div', {});\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n return { wrap: spinnerContainer, innerWrap: spinnerInnerContainer };\n}\n/**\n * @param {SpinnerInfo} spinnerInfo - The SpinnerInfo.\n * @returns {void}\n */\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\n/**\n * @param {number} start - The start.\n * @param {number} end - The end.\n * @param {Function} easing - The easing.\n * @param {number} duration - The duration.\n * @param {number} count - The count.\n * @param {number} max - The max.\n * @param {SpinnerInfo} spinnerInfo - The SpinnerInfo.\n * @returns {void}\n */\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n matAnimation(spinnerInfo);\n /**\n * @param {SpinnerInfo} spinnerInfo - The SpinnerInfo.\n * @returns {void}\n */\n function matAnimation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(matAnimation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n * @param {number} value - The value.\n * @param {HTMLElement} container - The container.\n * @returns {void}\n */\n function updatePath(value, container) {\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) || !isNullOrUndefined(container.querySelector('svg.e-spin-material3'))) {\n var svg = void 0;\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material');\n }\n else if (!isNullOrUndefined(container.querySelector('svg.e-spin-material3')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material3');\n }\n if (!isNullOrUndefined(svg)) {\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n }\n}\n/**\n * @param {number} radius - The radius.\n * @param {HTMLElement} container - The container.\n * @param {string} type - The type.\n * @param {string} cls - The class\n * @returns {void}\n */\nfunction matCalculateAttributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material' || type === 'Material3') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\n/**\n * @param {string} value - The value.\n * @returns {number} - Returns number.\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n * @param {number} diameter - The diameter.\n * @param {number} strokeSize - The strokeSize.\n * @returns {string} - Returns string.\n */\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\n/**\n * @param {number} diameter - The diameter.\n * @returns {number} - Returns number.\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n * @param {number} diameter - The diameter.\n * @param {number} strokeSize - The strokeSize.\n * @param {number} value - The value.\n * @param {number} max - The max.\n * @returns {number} - Returns number.\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\n/**\n * @param {number} current - The current.\n * @param {number} start - The start.\n * @param {number} change - The change.\n * @param {number} duration - The duration\n * @returns {number} - Returns number.\n */\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\n/**\n * @param {number} radius - The radius.\n * @param {HTMLElement} innerConainer - The innerConainer.\n * @param {string} trgClass - The trgClass.\n * @returns {void}\n */\nfunction fbCalculateAttributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n var startArc = 315;\n var endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\n/**\n * @param {number} centerX - The centerX.\n * @param {number} centerY - The centerY.\n * @param {number} radius - The radius.\n * @param {number} angle - The angle.\n * @returns {number;number} - Returns number.\n */\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\n/**\n * @param {number} x - The x.\n * @param {number} y - The y.\n * @param {number} radius - The radius.\n * @param {number} startArc - The startArc.\n * @param {number} endArc - The endArc.\n * @returns {string} - Returns string.\n */\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\n/**\n * @param {number} x - The x.\n * @param {number} y - The y.\n * @param {number} radius - The radius.\n * @returns {void}\n */\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n * @private\n * @param {HTMLElement} container - The container.\n * @returns {void}\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n * @param {HTMLElement} container - The container.\n * @param {boolean} isHide - To show or hide.\n * @returns {void}\n */\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n spinnerWrap = container.classList.contains(CLS_SPINWRAP) ? container :\n container.querySelector('.' + CLS_SPINWRAP);\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n // eslint-disable-next-line max-len\n var spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[\"\" + id].isAnimate = !isHide;\n switch (globalTimeOut[\"\" + id].type) {\n case 'Material':\n case 'Material3':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n // eslint-disable-next-line\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n * @private\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n * @private\n * @param {SetSpinnerArgs} args - The args.\n * @param {createElementParams} internalCreateElement - The internalCreateElement.\n * @returns {void}\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[parseInt(index.toString(), 10)], args.type, args.cssClass, makeElement);\n }\n}\n/**\n * @param {string} template - The template.\n * @param {HTMLElement} container - The container.\n * @param {string} theme - The theme.\n * @param {string} cssClass - The cssClass.\n * @param {createElementParams} makeEle - The makeEle.\n * @returns {void}\n */\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n }\n}\n/**\n * @param {HTMLElement} container - The container.\n * @param {string} theme - The theme.\n * @param {string} cssClass - The cssClass.\n * @param {createElementParams} makeEle - The makeEle.\n * @returns {void}\n */\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[\"\" + id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n}\n","/**\n * The `BlazorUIAdaptor` module is used to handle the UI update of native components.\n * @hidden\n */\nvar BlazorUiAdaptor = /** @class */ (function () {\n /**\n * Initialize the constructor of blazorUIadapater.\n *\n * @param { PdfViewer } pdfviewer - Specified PdfViewer class.\n * @param { PdfViewerBase } pdfViewerBase - The pdfViewerBase.\n */\n function BlazorUiAdaptor(pdfviewer, pdfViewerBase) {\n this.pdfViewer = null;\n this.pdfViewerBase = null;\n /**\n * @private\n */\n this.totalPageElement = null;\n this.currentPageBoxElementContainer = null;\n this.currentPageBoxElement = null;\n this.firstPageElement = null;\n this.previousPageElement = null;\n this.nextPageElement = null;\n this.lastPageElement = null;\n this.zommOutElement = null;\n this.zoomInElement = null;\n this.zoomDropDownElement = null;\n this.selectToolElement = null;\n this.handToolElement = null;\n this.undoElement = null;\n this.redoElement = null;\n this.commentElement = null;\n this.submitFormButton = null;\n this.searchElement = null;\n this.annotationElement = null;\n this.printElement = null;\n this.downloadElement = null;\n this.highlightElement = null;\n this.underlineElement = null;\n this.strikeThroughElement = null;\n this.shapeElement = null;\n this.calibrateElement = null;\n this.stampElement = null;\n this.freeTextElement = null;\n this.signatureElement = null;\n this.inkElement = null;\n this.annotationFontSizeInputElement = null;\n this.annotationFontFamilyInputElement = null;\n this.annotationColorElement = null;\n this.annotationStrokeColorElement = null;\n this.annotationThicknessElement = null;\n this.annotationOpacityElement = null;\n this.annotationFontColorElement = null;\n this.annotationFontFamilyElement = null;\n this.annotationFontSizeElement = null;\n this.annotationTextAlignElement = null;\n this.annotationTextColorElement = null;\n this.annotationTextPropertiesElement = null;\n this.annotationDeleteElement = null;\n this.annotationCloseElement = null;\n this.annotationCommentPanelElement = null;\n this.mobileToolbarContainerElement = null;\n this.mobileSearchPreviousOccurenceElement = null;\n this.mobileSearchNextOccurenceElement = null;\n this.cssClass = 'e-overlay';\n this.disableClass = ' e-overlay';\n this.editAnnotationButtonElement = null;\n this.pdfViewer = pdfviewer;\n this.pdfViewerBase = pdfViewerBase;\n this.findToolbarElements();\n }\n BlazorUiAdaptor.prototype.findToolbarElements = function () {\n this.totalPageElement = this.pdfViewerBase.getElement('_totalPage').children[0];\n this.currentPageBoxElementContainer = this.pdfViewerBase.getElement('_currentPageInput');\n this.currentPageBoxElement = this.pdfViewerBase.getElement('_currentPageInput').children[0].children[0];\n this.firstPageElement = this.pdfViewerBase.getElement('_firstPage');\n this.previousPageElement = this.pdfViewerBase.getElement('_previousPage');\n this.nextPageElement = this.pdfViewerBase.getElement('_nextPage');\n this.lastPageElement = this.pdfViewerBase.getElement('_lastPage');\n this.zommOutElement = this.pdfViewerBase.getElement('_zoomOut');\n this.zoomInElement = this.pdfViewerBase.getElement('_zoomIn');\n this.zoomDropDownElement = this.pdfViewerBase.getElement('_zoomDropDown');\n this.selectToolElement = this.pdfViewerBase.getElement('_selectTool');\n this.handToolElement = this.pdfViewerBase.getElement('_handTool');\n this.undoElement = this.pdfViewerBase.getElement('_undo');\n this.redoElement = this.pdfViewerBase.getElement('_redo');\n this.commentElement = this.pdfViewerBase.getElement('_comment');\n this.submitFormButton = this.pdfViewerBase.getElement('_submitFormButton');\n this.searchElement = this.pdfViewerBase.getElement('_search');\n this.annotationElement = this.pdfViewerBase.getElement('_annotation');\n this.editAnnotationButtonElement = this.annotationElement.children[0];\n this.editAnnotationButtonElement.classList.add('e-pv-tbar-btn');\n this.printElement = this.pdfViewerBase.getElement('_print');\n this.downloadElement = this.pdfViewerBase.getElement('_download');\n this.highlightElement = this.pdfViewerBase.getElement('_highLight');\n this.underlineElement = this.pdfViewerBase.getElement('_underline');\n this.strikeThroughElement = this.pdfViewerBase.getElement('_strikethrough');\n this.shapeElement = this.pdfViewerBase.getElement('_annotation_shapes');\n this.calibrateElement = this.pdfViewerBase.getElement('_annotation_calibrate');\n this.stampElement = this.pdfViewerBase.getElement('_annotation_stamp');\n this.freeTextElement = this.pdfViewerBase.getElement('_annotation_freeTextEdit');\n this.signatureElement = this.pdfViewerBase.getElement('_annotation_signature');\n this.inkElement = this.pdfViewerBase.getElement('_annotation_ink');\n // tslint:disable-next-line:max-line-length\n this.annotationFontSizeInputElement = this.pdfViewerBase.getElement('_annotation_fontsize').children[0].children[0];\n // tslint:disable-next-line:max-line-length\n this.annotationFontFamilyInputElement = this.pdfViewerBase.getElement('_annotation_fontname').children[0].children[0];\n this.annotationColorElement = this.pdfViewerBase.getElement('_annotation_color');\n this.annotationStrokeColorElement = this.pdfViewerBase.getElement('_annotation_stroke');\n this.annotationThicknessElement = this.pdfViewerBase.getElement('_annotation_thickness');\n this.annotationOpacityElement = this.pdfViewerBase.getElement('_annotation_opacity');\n this.annotationFontColorElement = this.pdfViewerBase.getElement('_annotation_textcolor');\n this.annotationFontFamilyElement = this.pdfViewerBase.getElement('_annotation_fontname');\n this.annotationFontSizeElement = this.pdfViewerBase.getElement('_annotation_fontsize');\n this.annotationTextAlignElement = this.pdfViewerBase.getElement('_annotation_textalign');\n this.annotationTextColorElement = this.pdfViewerBase.getElement('_annotation_textcolor');\n this.annotationTextPropertiesElement = this.pdfViewerBase.getElement('_annotation_textproperties');\n this.annotationDeleteElement = this.pdfViewerBase.getElement('_annotation_delete');\n this.annotationCommentPanelElement = this.pdfViewerBase.getElement('_annotation_commentPanel');\n this.annotationCloseElement = this.pdfViewerBase.getElement('_annotation_close');\n this.mobileToolbarContainerElement = this.pdfViewerBase.getElement('_mobileToolbarContainer');\n this.mobileSearchPreviousOccurenceElement = this.pdfViewerBase.getElement('_prev_occurrence');\n this.mobileSearchNextOccurenceElement = this.pdfViewerBase.getElement('_next_occurrence');\n };\n /**\n * Update the total page.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateTotalPage = function () {\n this.totalPageElement.textContent = this.pdfViewer.localeObj.getConstant('of') + this.pdfViewerBase.pageCount.toString();\n };\n /**\n * Update current page.\n * @param {number} pageNumber - The pageNumber.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateCurrentPage = function (pageNumber) {\n this.currentPageBoxElement.value = pageNumber.toString();\n };\n /**\n * Load the PDF document.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.loadDocument = function () {\n if (this.pdfViewer.enableNavigation) {\n this.currentPageBoxElementContainer.classList.remove(this.cssClass);\n this.currentPageBoxElement.value = '1';\n this.totalPageElement.textContent = this.pdfViewer.localeObj.getConstant('of') + this.pdfViewerBase.pageCount.toString();\n if (!this.isEnabled(this.firstPageElement)) {\n this.firstPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.previousPageElement)) {\n this.previousPageElement.className += this.disableClass;\n }\n this.nextPageElement.classList.remove(this.cssClass);\n this.lastPageElement.classList.remove(this.cssClass);\n if (this.pdfViewerBase.pageCount === 1) {\n if (!this.nextPageElement.classList.contains(this.cssClass)) {\n this.nextPageElement.className += this.disableClass;\n }\n if (!this.lastPageElement.classList.contains(this.cssClass)) {\n this.lastPageElement.className += this.disableClass;\n }\n }\n }\n if (this.pdfViewer.enableMagnification) {\n this.zoomInElement.classList.remove(this.cssClass);\n this.zommOutElement.classList.remove(this.cssClass);\n this.zoomDropDownElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableTextSelection) {\n this.selectToolElement.classList.remove(this.cssClass);\n this.selectItem(this.pdfViewer.toolbar.SelectToolElement);\n }\n this.handToolElement.classList.remove(this.cssClass);\n if (this.pdfViewer.enableStickyNotesAnnotation) {\n this.commentElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableTextSearch) {\n this.searchElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.isFormFieldDocument) {\n this.submitFormButton.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableAnnotationToolbar) {\n this.annotationElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enablePrint) {\n this.printElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableDownload) {\n this.downloadElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableTextMarkupAnnotation) {\n this.highlightElement.classList.remove(this.cssClass);\n this.underlineElement.classList.remove(this.cssClass);\n this.strikeThroughElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableShapeAnnotation) {\n this.shapeElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableMeasureAnnotation) {\n this.calibrateElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableStampAnnotations) {\n this.stampElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableFreeText) {\n this.freeTextElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableHandwrittenSignature) {\n this.signatureElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableInkAnnotation) {\n this.inkElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableCommentPanel) {\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n }\n };\n BlazorUiAdaptor.prototype.selectItem = function (element) {\n if (element) {\n element.classList.add(\"e-pv-select\");\n }\n };\n BlazorUiAdaptor.prototype.deselectItem = function (element) {\n if (element) {\n element.classList.remove(\"e-pv-select\");\n }\n };\n BlazorUiAdaptor.prototype.showAnnotationToolbar = function (isToolbarVisible) {\n this.pdfViewer.toolbar.annotationToolbarModule.adjustViewer(isToolbarVisible[0]);\n if (isToolbarVisible[0]) {\n this.pdfViewer.toolbar.selectItem(this.editAnnotationButtonElement);\n }\n else {\n this.pdfViewer.toolbar.deSelectItem(this.editAnnotationButtonElement);\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n BlazorUiAdaptor.prototype.closeAnnotationToolbar = function () {\n this.pdfViewer.toolbar.annotationToolbarModule.adjustViewer(false);\n this.pdfViewer.toolbar.deSelectItem(this.editAnnotationButtonElement);\n this.pdfViewerBase.navigationPane.closeCommentPanelContainer();\n };\n /**\n * Reset the toolbar.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.resetToolbar = function () {\n if (this.pdfViewer.enableToolbar) {\n this.currentPageBoxElement.value = '0';\n this.totalPageElement.textContent = this.pdfViewer.localeObj.getConstant('of') + '0';\n if (!this.isEnabled(this.currentPageBoxElementContainer)) {\n this.currentPageBoxElementContainer.className += this.disableClass;\n }\n if (!this.isEnabled(this.firstPageElement)) {\n this.firstPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.previousPageElement)) {\n this.previousPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.nextPageElement)) {\n this.nextPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.lastPageElement)) {\n this.lastPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.zoomInElement)) {\n this.zoomInElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.zommOutElement)) {\n this.zommOutElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.zoomDropDownElement)) {\n this.zoomDropDownElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.selectToolElement)) {\n this.selectToolElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.handToolElement)) {\n this.handToolElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.undoElement)) {\n this.undoElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.redoElement)) {\n this.redoElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.commentElement)) {\n this.commentElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.searchElement)) {\n this.searchElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.submitFormButton)) {\n this.submitFormButton.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationElement)) {\n this.annotationElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.printElement)) {\n this.printElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.downloadElement)) {\n this.downloadElement.className += this.disableClass;\n }\n }\n if (this.pdfViewer.enableAnnotationToolbar) {\n if (!this.isEnabled(this.highlightElement)) {\n this.highlightElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.underlineElement)) {\n this.underlineElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.strikeThroughElement)) {\n this.strikeThroughElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.shapeElement)) {\n this.shapeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.calibrateElement)) {\n this.calibrateElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.stampElement)) {\n this.stampElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.freeTextElement)) {\n this.freeTextElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.signatureElement)) {\n this.signatureElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.inkElement)) {\n this.inkElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextColorElement)) {\n this.annotationTextColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationCommentPanelElement)) {\n this.annotationCommentPanelElement.className += this.disableClass;\n }\n }\n };\n /**\n * When annotation selection changed.\n * @param {boolean} currentPageNumber - The current page number.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.EnableDeleteOption = function (isEnable) {\n if (this.annotationDeleteElement !== null) {\n if (isEnable) {\n this.annotationDeleteElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n }\n }\n };\n /**\n * when the page changes.\n * @param {number} currentPageNumber - The current page number.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.pageChanged = function (currentPageNumber) {\n if (this.pdfViewer.enableNavigation) {\n this.currentPageBoxElement.value = currentPageNumber.toString();\n }\n if (currentPageNumber === this.pdfViewer.pageCount) {\n if (!this.isEnabled(this.nextPageElement)) {\n this.nextPageElement.className += this.disableClass;\n }\n this.previousPageElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.lastPageElement)) {\n this.lastPageElement.className += this.disableClass;\n }\n this.firstPageElement.classList.remove(this.cssClass);\n }\n if (currentPageNumber < this.pdfViewer.pageCount && currentPageNumber !== 1) {\n this.firstPageElement.classList.remove(this.cssClass);\n this.previousPageElement.classList.remove(this.cssClass);\n this.nextPageElement.classList.remove(this.cssClass);\n this.lastPageElement.classList.remove(this.cssClass);\n }\n if (currentPageNumber === 1) {\n this.nextPageElement.classList.remove(this.cssClass);\n this.lastPageElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.firstPageElement)) {\n this.firstPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.previousPageElement)) {\n this.previousPageElement.className += this.disableClass;\n }\n }\n };\n /**\n * @param {string} item - The current item.\n * @param {boolean} enable - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateUndoRedoButton = function (item, enable) {\n if (item === 'undo') {\n if (enable) {\n this.undoElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.undoElement)) {\n this.undoElement.className += this.disableClass;\n }\n }\n }\n if (item === 'redo') {\n if (enable) {\n this.redoElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.redoElement)) {\n this.redoElement.className += this.disableClass;\n }\n }\n }\n };\n /**\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.disableUndoRedoButton = function () {\n if (!this.isEnabled(this.undoElement)) {\n this.undoElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.redoElement)) {\n this.redoElement.className += this.disableClass;\n }\n };\n /**\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableTextMarkupAnnotationPropertiesTools = function (isEnable) {\n if (isEnable) {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n };\n /**\n * @param {boolean} isEnable - To enable the item or not.\n * @param {boolean} isProperitiesChange - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableAnnotationPropertiesTool = function (isEnable, isProperitiesChange) {\n if (isProperitiesChange) {\n if (isEnable) {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n if (this.pdfViewer.enableShapeLabel) {\n this.annotationFontColorElement.classList.remove(this.cssClass);\n this.annotationFontFamilyElement.classList.remove(this.cssClass);\n this.annotationFontSizeElement.classList.remove(this.cssClass);\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n }\n else {\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n }\n }\n };\n /**\n * @param {boolean} isEnable - To enable the item or not.\n * @param {boolean} isProperitiesChange - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableFreeTextAnnotationPropertiesTools = function (isEnable, isProperitiesChange) {\n if (isProperitiesChange && isEnable) {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n this.annotationFontColorElement.classList.remove(this.cssClass);\n this.annotationFontFamilyElement.classList.remove(this.cssClass);\n this.annotationFontSizeElement.classList.remove(this.cssClass);\n this.annotationTextAlignElement.classList.remove(this.cssClass);\n this.annotationTextPropertiesElement.classList.remove(this.cssClass);\n this.annotationDeleteElement.classList.remove(this.cssClass);\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n }\n };\n /**\n * @param {boolean} isEnable - To enable the item or not.\n * @param {boolean} isPropertiesChange - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableStampAnnotationPropertiesTools = function (isEnable, isPropertiesChange) {\n if (isEnable) {\n this.annotationOpacityElement.classList.remove(this.cssClass);\n this.annotationDeleteElement.classList.remove(this.cssClass);\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationCommentPanelElement)) {\n this.annotationCommentPanelElement.className += this.disableClass;\n }\n }\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n };\n /**\n * @param {boolean} isEnable - To enable the item or not.\n * @param {boolean} isProperitiesChange - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableSignaturePropertiesTools = function (isEnable, isProperitiesChange) {\n if (isEnable) {\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n this.annotationDeleteElement.classList.remove(this.cssClass);\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationCommentPanelElement)) {\n this.annotationCommentPanelElement.className += this.disableClass;\n }\n }\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n };\n /**\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.annotationAdd = function () {\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n };\n /**\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.annotationUnSelect = function () {\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n };\n /**\n * @param {string} annotationType - The annotationType.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.annotationSelect = function (annotationType) {\n if (annotationType === 'FreeText') {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n this.annotationFontColorElement.classList.remove(this.cssClass);\n this.annotationFontFamilyElement.classList.remove(this.cssClass);\n this.annotationFontSizeElement.classList.remove(this.cssClass);\n this.annotationTextAlignElement.classList.remove(this.cssClass);\n this.annotationTextPropertiesElement.classList.remove(this.cssClass);\n }\n if (annotationType === 'Shape' || annotationType === 'Measure') {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n }\n if (annotationType === 'TextMarkup') {\n this.annotationColorElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n this.annotationOpacityElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n }\n this.annotationDeleteElement.classList.remove(this.cssClass);\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n };\n /**\n * @param {string} fontFamily - The fontFamily.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateFontFamilyInIcon = function (fontFamily) {\n this.annotationFontFamilyInputElement.value = fontFamily;\n };\n /**\n * @param {number} fontSize - The fontSize.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateFontSizeInIcon = function (fontSize) {\n var fontValue = fontSize.toString() + 'px';\n this.annotationFontSizeInputElement.value = fontValue;\n };\n /**\n * @param {boolean} isEnable - To enable or disable.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableSearchItems = function (isEnable) {\n if (isEnable) {\n this.mobileSearchPreviousOccurenceElement.classList.remove(this.cssClass);\n this.mobileSearchNextOccurenceElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.mobileSearchPreviousOccurenceElement)) {\n this.mobileSearchPreviousOccurenceElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.mobileSearchNextOccurenceElement)) {\n this.mobileSearchNextOccurenceElement.className += this.disableClass;\n }\n }\n };\n /**\n * @param {boolean} isTapHidden - To enable or disable.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.tapOnMobileDevice = function (isTapHidden) {\n if (this.mobileToolbarContainerElement != null) {\n if (isTapHidden) {\n this.mobileToolbarContainerElement.style.display = 'none';\n }\n else {\n this.mobileToolbarContainerElement.style.display = 'block';\n }\n }\n };\n /**\n * @param {HTMLElement} element - The HTMLElement.\n * @returns {boolean} - Returns trur or false.\n */\n BlazorUiAdaptor.prototype.isEnabled = function (element) {\n return element.classList.contains(this.cssClass);\n };\n return BlazorUiAdaptor;\n}());\nexport { BlazorUiAdaptor };\n","/**\n * Public Enum to define annotation flag types.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfAnnotation = page.annotations.at(0);\n * // Sets the annotation flag to enable print\n * annotation.flags = PdfAnnotationFlag.print;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfAnnotationFlag;\n(function (PdfAnnotationFlag) {\n /**\n * Specifies the type of `default`.\n */\n PdfAnnotationFlag[PdfAnnotationFlag[\"default\"] = 0] = \"default\";\n /**\n * Specifies the type of `invisible`.\n */\n PdfAnnotationFlag[PdfAnnotationFlag[\"invisible\"] = 1] = \"invisible\";\n /**\n * Specifies the type of `hidden`.\n */\n PdfAnnotationFlag[PdfAnnotationFlag[\"hidden\"] = 2] = \"hidden\";\n /**\n * Specifies the type of `print`.\n */\n PdfAnnotationFlag[PdfAnnotationFlag[\"print\"] = 4] = \"print\";\n /**\n * Specifies the type of `noZoom`.\n */\n PdfAnnotationFlag[PdfAnnotationFlag[\"noZoom\"] = 8] = \"noZoom\";\n /**\n * Specifies the type of `noRotate`.\n */\n PdfAnnotationFlag[PdfAnnotationFlag[\"noRotate\"] = 16] = \"noRotate\";\n /**\n * Specifies the type of `noView`.\n */\n PdfAnnotationFlag[PdfAnnotationFlag[\"noView\"] = 32] = \"noView\";\n /**\n * Specifies the type of `readOnly`.\n */\n PdfAnnotationFlag[PdfAnnotationFlag[\"readOnly\"] = 64] = \"readOnly\";\n /**\n * Specifies the type of `locked`.\n */\n PdfAnnotationFlag[PdfAnnotationFlag[\"locked\"] = 128] = \"locked\";\n /**\n * Specifies the type of `toggleNoView`.\n */\n PdfAnnotationFlag[PdfAnnotationFlag[\"toggleNoView\"] = 256] = \"toggleNoView\";\n})(PdfAnnotationFlag || (PdfAnnotationFlag = {}));\n/**\n * Public Enum to define line ending style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfPolyLineAnnotation = page.annotations.at(0) as PdfPolyLineAnnotation;\n * // Sets the begin line end style as openArrow\n * annotation.beginLineStyle = PdfLineEndingStyle.openArrow;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfLineEndingStyle;\n(function (PdfLineEndingStyle) {\n /**\n * Specifies the type of `none`.\n */\n PdfLineEndingStyle[PdfLineEndingStyle[\"none\"] = 0] = \"none\";\n /**\n * Specifies the type of `openArrow`.\n */\n PdfLineEndingStyle[PdfLineEndingStyle[\"openArrow\"] = 1] = \"openArrow\";\n /**\n * Specifies the type of `closedArrow`.\n */\n PdfLineEndingStyle[PdfLineEndingStyle[\"closedArrow\"] = 2] = \"closedArrow\";\n /**\n * Specifies the type of `rOpenArrow`.\n */\n PdfLineEndingStyle[PdfLineEndingStyle[\"rOpenArrow\"] = 3] = \"rOpenArrow\";\n /**\n * Specifies the type of `rClosedArrow`.\n */\n PdfLineEndingStyle[PdfLineEndingStyle[\"rClosedArrow\"] = 4] = \"rClosedArrow\";\n /**\n * Specifies the type of `butt`.\n */\n PdfLineEndingStyle[PdfLineEndingStyle[\"butt\"] = 5] = \"butt\";\n /**\n * Specifies the type of `diamond`.\n */\n PdfLineEndingStyle[PdfLineEndingStyle[\"diamond\"] = 6] = \"diamond\";\n /**\n * Specifies the type of `circle`.\n */\n PdfLineEndingStyle[PdfLineEndingStyle[\"circle\"] = 7] = \"circle\";\n /**\n * Specifies the type of `square`.\n */\n PdfLineEndingStyle[PdfLineEndingStyle[\"square\"] = 8] = \"square\";\n /**\n * Specifies the type of `slash`.\n */\n PdfLineEndingStyle[PdfLineEndingStyle[\"slash\"] = 9] = \"slash\";\n})(PdfLineEndingStyle || (PdfLineEndingStyle = {}));\n/**\n * Public Enum to define line indent.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the line intent as lineArrow\n * annotation.lineIntent = PdfLineIntent.lineArrow;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfLineIntent;\n(function (PdfLineIntent) {\n /**\n * Specifies the type of `lineArrow`.\n */\n PdfLineIntent[PdfLineIntent[\"lineArrow\"] = 0] = \"lineArrow\";\n /**\n * Specifies the type of `lineDimension`.\n */\n PdfLineIntent[PdfLineIntent[\"lineDimension\"] = 1] = \"lineDimension\";\n})(PdfLineIntent || (PdfLineIntent = {}));\n/**\n * Public Enum to define line caption type.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfAnnotation = page.annotations.at(0);\n * // Sets the line caption type as inline\n * annotation.caption.type = PdfLineCaptionType.inline;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfLineCaptionType;\n(function (PdfLineCaptionType) {\n /**\n * Specifies the type of `inline`.\n */\n PdfLineCaptionType[PdfLineCaptionType[\"inline\"] = 0] = \"inline\";\n /**\n * Specifies the type of `top`.\n */\n PdfLineCaptionType[PdfLineCaptionType[\"top\"] = 1] = \"top\";\n})(PdfLineCaptionType || (PdfLineCaptionType = {}));\n/**\n * Public Enum to define border style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfAnnotation = page.annotations.at(0);\n * // Sets the border style as underline\n * annotation.border.style = PdfBorderStyle.underline;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfBorderStyle;\n(function (PdfBorderStyle) {\n /**\n * Specifies the type of `solid`.\n */\n PdfBorderStyle[PdfBorderStyle[\"solid\"] = 0] = \"solid\";\n /**\n * Specifies the type of `dashed`.\n */\n PdfBorderStyle[PdfBorderStyle[\"dashed\"] = 1] = \"dashed\";\n /**\n * Specifies the type of `beveled`.\n */\n PdfBorderStyle[PdfBorderStyle[\"beveled\"] = 2] = \"beveled\";\n /**\n * Specifies the type of `inset`.\n */\n PdfBorderStyle[PdfBorderStyle[\"inset\"] = 3] = \"inset\";\n /**\n * Specifies the type of `underline`.\n */\n PdfBorderStyle[PdfBorderStyle[\"underline\"] = 4] = \"underline\";\n /**\n * Specifies the type of `dot`.\n */\n PdfBorderStyle[PdfBorderStyle[\"dot\"] = 5] = \"dot\";\n})(PdfBorderStyle || (PdfBorderStyle = {}));\n/**\n * Public Enum to define border effect style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfAnnotation = page.annotations.at(0);\n * // Sets the border effect as underline\n * annotation.borderEffect.style = PdfBorderEffectStyle.cloudy;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfBorderEffectStyle;\n(function (PdfBorderEffectStyle) {\n /**\n * Specifies the type of `solid`.\n */\n PdfBorderEffectStyle[PdfBorderEffectStyle[\"solid\"] = 0] = \"solid\";\n /**\n * Specifies the type of `cloudy`.\n */\n PdfBorderEffectStyle[PdfBorderEffectStyle[\"cloudy\"] = 1] = \"cloudy\";\n})(PdfBorderEffectStyle || (PdfBorderEffectStyle = {}));\n/**\n * Public Enum to define rotation of the interactive elements.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Gets the rotation of the field\n * let rotation: PdfRotationAngle = field.rotationAngle;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfRotationAngle;\n(function (PdfRotationAngle) {\n /**\n * Specifies the type of `angle0`.\n */\n PdfRotationAngle[PdfRotationAngle[\"angle0\"] = 0] = \"angle0\";\n /**\n * Specifies the type of `angle90`.\n */\n PdfRotationAngle[PdfRotationAngle[\"angle90\"] = 1] = \"angle90\";\n /**\n * Specifies the type of `angle180`.\n */\n PdfRotationAngle[PdfRotationAngle[\"angle180\"] = 2] = \"angle180\";\n /**\n * Specifies the type of `angle270`.\n */\n PdfRotationAngle[PdfRotationAngle[\"angle270\"] = 3] = \"angle270\";\n})(PdfRotationAngle || (PdfRotationAngle = {}));\n/**\n * Public Enum to define cross reference type.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Save the document with cross reference type as stream\n * document.save('output.pdf', PdfCrossReferenceType.stream);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfCrossReferenceType;\n(function (PdfCrossReferenceType) {\n /**\n * Specifies the type of `table`.\n */\n PdfCrossReferenceType[PdfCrossReferenceType[\"table\"] = 0] = \"table\";\n /**\n * Specifies the type of `stream`.\n */\n PdfCrossReferenceType[PdfCrossReferenceType[\"stream\"] = 1] = \"stream\";\n})(PdfCrossReferenceType || (PdfCrossReferenceType = {}));\n/**\n * Public Enum to define highlight mode of text box field.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Sets the highlight mode of text box field as outline\n * field.highlightMode = PdfHighlightMode.outline;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfHighlightMode;\n(function (PdfHighlightMode) {\n /**\n * Specifies the type of `noHighlighting`.\n */\n PdfHighlightMode[PdfHighlightMode[\"noHighlighting\"] = 0] = \"noHighlighting\";\n /**\n * Specifies the type of `invert`.\n */\n PdfHighlightMode[PdfHighlightMode[\"invert\"] = 1] = \"invert\";\n /**\n * Specifies the type of `outline`.\n */\n PdfHighlightMode[PdfHighlightMode[\"outline\"] = 2] = \"outline\";\n /**\n * Specifies the type of `push`.\n */\n PdfHighlightMode[PdfHighlightMode[\"push\"] = 3] = \"push\";\n})(PdfHighlightMode || (PdfHighlightMode = {}));\n/**\n * Public Enum to define text alignment of text box field.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Sets the text alignment of form field as center\n * field.textAlignment = PdfTextAlignment.center;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfTextAlignment;\n(function (PdfTextAlignment) {\n /**\n * Specifies the type of `left`.\n */\n PdfTextAlignment[PdfTextAlignment[\"left\"] = 0] = \"left\";\n /**\n * Specifies the type of `center`.\n */\n PdfTextAlignment[PdfTextAlignment[\"center\"] = 1] = \"center\";\n /**\n * Specifies the type of `right`.\n */\n PdfTextAlignment[PdfTextAlignment[\"right\"] = 2] = \"right\";\n /**\n * Specifies the type of `justify`.\n */\n PdfTextAlignment[PdfTextAlignment[\"justify\"] = 3] = \"justify\";\n})(PdfTextAlignment || (PdfTextAlignment = {}));\n/**\n * Public Enum to define visibility of form field.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access PDF form field\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets the visibility of form field as hidden\n * field.visibility = PdfFormFieldVisibility.hidden;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfFormFieldVisibility;\n(function (PdfFormFieldVisibility) {\n /**\n * Specifies the type of `visible`.\n */\n PdfFormFieldVisibility[PdfFormFieldVisibility[\"visible\"] = 0] = \"visible\";\n /**\n * Specifies the type of `hidden`.\n */\n PdfFormFieldVisibility[PdfFormFieldVisibility[\"hidden\"] = 1] = \"hidden\";\n /**\n * Specifies the type of `visibleNotPrintable`.\n */\n PdfFormFieldVisibility[PdfFormFieldVisibility[\"visibleNotPrintable\"] = 2] = \"visibleNotPrintable\";\n /**\n * Specifies the type of `hiddenPrintable`.\n */\n PdfFormFieldVisibility[PdfFormFieldVisibility[\"hiddenPrintable\"] = 3] = \"hiddenPrintable\";\n})(PdfFormFieldVisibility || (PdfFormFieldVisibility = {}));\n/**\n * Public Enum to define measurement unit of line measurement annotation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfLineAnnotation = page.annotations.at(0) PdfLineAnnotation;\n * // Sets the measurement unit of line measurement annoation as centimeter\n * annotation.unit = PdfMeasurementUnit.centimeter;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfMeasurementUnit;\n(function (PdfMeasurementUnit) {\n /**\n * Specifies the type of `inch`.\n */\n PdfMeasurementUnit[PdfMeasurementUnit[\"inch\"] = 0] = \"inch\";\n /**\n * Specifies the type of `pica`.\n */\n PdfMeasurementUnit[PdfMeasurementUnit[\"pica\"] = 1] = \"pica\";\n /**\n * Specifies the type of `point`.\n */\n PdfMeasurementUnit[PdfMeasurementUnit[\"point\"] = 3] = \"point\";\n /**\n * Specifies the type of `centimeter`.\n */\n PdfMeasurementUnit[PdfMeasurementUnit[\"centimeter\"] = 4] = \"centimeter\";\n /**\n * Specifies the type of `millimeter`.\n */\n PdfMeasurementUnit[PdfMeasurementUnit[\"millimeter\"] = 6] = \"millimeter\";\n})(PdfMeasurementUnit || (PdfMeasurementUnit = {}));\n/**\n * Public Enum to define measurement type of circle annotation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfCircleAnnotation = page.annotations.at(0) PdfCircleAnnotation;\n * // Sets the measurement type of circle annotation as diameter\n * annotation.measureType = PdfCircleMeasurementType.diameter;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfCircleMeasurementType;\n(function (PdfCircleMeasurementType) {\n /**\n * Specifies the type of `diameter`.\n */\n PdfCircleMeasurementType[PdfCircleMeasurementType[\"diameter\"] = 0] = \"diameter\";\n /**\n * Specifies the type of `radius`.\n */\n PdfCircleMeasurementType[PdfCircleMeasurementType[\"radius\"] = 1] = \"radius\";\n})(PdfCircleMeasurementType || (PdfCircleMeasurementType = {}));\n/**\n * Public Enum to define icon type of rubber stamp annotation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfRubberStampAnnotation = page.annotations.at(0) PdfRubberStampAnnotation;\n * // Sets the rubber stamp annotation icon type as confidential\n * annotation.icon = PdfRubberStampAnnotationIcon.confidential;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfRubberStampAnnotationIcon;\n(function (PdfRubberStampAnnotationIcon) {\n /**\n * Specifies the type of `approved`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"approved\"] = 0] = \"approved\";\n /**\n * Specifies the type of `asIs`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"asIs\"] = 1] = \"asIs\";\n /**\n * Specifies the type of `confidential`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"confidential\"] = 2] = \"confidential\";\n /**\n * Specifies the type of `departmental`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"departmental\"] = 3] = \"departmental\";\n /**\n * Specifies the type of `draft`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"draft\"] = 4] = \"draft\";\n /**\n * Specifies the type of `experimental`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"experimental\"] = 5] = \"experimental\";\n /**\n * Specifies the type of `expired`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"expired\"] = 6] = \"expired\";\n /**\n * Specifies the type of `final`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"final\"] = 7] = \"final\";\n /**\n * Specifies the type of `forComment`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"forComment\"] = 8] = \"forComment\";\n /**\n * Specifies the type of `forPublicRelease`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"forPublicRelease\"] = 9] = \"forPublicRelease\";\n /**\n * Specifies the type of `notApproved`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"notApproved\"] = 10] = \"notApproved\";\n /**\n * Specifies the type of `notForPublicRelease`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"notForPublicRelease\"] = 11] = \"notForPublicRelease\";\n /**\n * Specifies the type of `sold`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"sold\"] = 12] = \"sold\";\n /**\n * Specifies the type of `topSecret`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"topSecret\"] = 13] = \"topSecret\";\n /**\n * Specifies the type of `completed`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"completed\"] = 14] = \"completed\";\n /**\n * Specifies the type of `void`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"void\"] = 15] = \"void\";\n /**\n * Specifies the type of `informationOnly`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"informationOnly\"] = 16] = \"informationOnly\";\n /**\n * Specifies the type of `preliminaryResults`.\n */\n PdfRubberStampAnnotationIcon[PdfRubberStampAnnotationIcon[\"preliminaryResults\"] = 17] = \"preliminaryResults\";\n})(PdfRubberStampAnnotationIcon || (PdfRubberStampAnnotationIcon = {}));\n/**\n * Public Enum to define check box style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access check box field\n * let field: PdfCheckBoxField = document.form.fieldAt(0) as PdfCheckBoxField;\n * // Access first item of check box field\n * let item: PdfStateItem = field.itemAt(0) as PdfStateItem;\n * // Sets the check box style as check\n * item.style = PdfCheckBoxStyle.check;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfCheckBoxStyle;\n(function (PdfCheckBoxStyle) {\n /**\n * Specifies the type of `check`.\n */\n PdfCheckBoxStyle[PdfCheckBoxStyle[\"check\"] = 0] = \"check\";\n /**\n * Specifies the type of `circle`.\n */\n PdfCheckBoxStyle[PdfCheckBoxStyle[\"circle\"] = 1] = \"circle\";\n /**\n * Specifies the type of `cross`.\n */\n PdfCheckBoxStyle[PdfCheckBoxStyle[\"cross\"] = 2] = \"cross\";\n /**\n * Specifies the type of `diamond`.\n */\n PdfCheckBoxStyle[PdfCheckBoxStyle[\"diamond\"] = 3] = \"diamond\";\n /**\n * Specifies the type of `square`.\n */\n PdfCheckBoxStyle[PdfCheckBoxStyle[\"square\"] = 4] = \"square\";\n /**\n * Specifies the type of `star`.\n */\n PdfCheckBoxStyle[PdfCheckBoxStyle[\"star\"] = 5] = \"star\";\n})(PdfCheckBoxStyle || (PdfCheckBoxStyle = {}));\n/**\n * Public Enum to define type of text markup annotation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfTextMarkupAnnotation = page.annotations.at(0) PdfTextMarkupAnnotation;\n * // Sets the type of the text markup annotation as underline\n * annotation.textMarkupType = PdfTextMarkupAnnotationType.underline;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfTextMarkupAnnotationType;\n(function (PdfTextMarkupAnnotationType) {\n /**\n * Specifies the type of `highlight`.\n */\n PdfTextMarkupAnnotationType[PdfTextMarkupAnnotationType[\"highlight\"] = 0] = \"highlight\";\n /**\n * Specifies the type of `underline`.\n */\n PdfTextMarkupAnnotationType[PdfTextMarkupAnnotationType[\"underline\"] = 1] = \"underline\";\n /**\n * Specifies the type of `squiggly`.\n */\n PdfTextMarkupAnnotationType[PdfTextMarkupAnnotationType[\"squiggly\"] = 2] = \"squiggly\";\n /**\n * Specifies the type of `strikeOut`.\n */\n PdfTextMarkupAnnotationType[PdfTextMarkupAnnotationType[\"strikeOut\"] = 3] = \"strikeOut\";\n})(PdfTextMarkupAnnotationType || (PdfTextMarkupAnnotationType = {}));\n/**\n * Public Enum to define icon type of popup annotation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfPopupAnnotation = page.annotations.at(0) PdfPopupAnnotation;\n * // Sets the icon type of the popup annotation as comment\n * annotation.icon = PdfPopupIcon.comment;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfPopupIcon;\n(function (PdfPopupIcon) {\n /**\n * Specifies the type of `note`.\n */\n PdfPopupIcon[PdfPopupIcon[\"note\"] = 0] = \"note\";\n /**\n * Specifies the type of `comment`.\n */\n PdfPopupIcon[PdfPopupIcon[\"comment\"] = 1] = \"comment\";\n /**\n * Specifies the type of `help`.\n */\n PdfPopupIcon[PdfPopupIcon[\"help\"] = 2] = \"help\";\n /**\n * Specifies the type of `insert`.\n */\n PdfPopupIcon[PdfPopupIcon[\"insert\"] = 3] = \"insert\";\n /**\n * Specifies the type of `key`.\n */\n PdfPopupIcon[PdfPopupIcon[\"key\"] = 4] = \"key\";\n /**\n * Specifies the type of `new paragraph`.\n */\n PdfPopupIcon[PdfPopupIcon[\"newParagraph\"] = 5] = \"newParagraph\";\n /**\n * Specifies the type of `paragraph`.\n */\n PdfPopupIcon[PdfPopupIcon[\"paragraph\"] = 6] = \"paragraph\";\n})(PdfPopupIcon || (PdfPopupIcon = {}));\n/**\n * Public Enum to define annotation state.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfPopupAnnotation = page.annotations.at(0) PdfPopupAnnotation;\n * // Sets the state of the popup annotation as accepted\n * annotation.state = PdfAnnotationState.accepted;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfAnnotationState;\n(function (PdfAnnotationState) {\n /**\n * Specifies the default state of `none`.\n */\n PdfAnnotationState[PdfAnnotationState[\"none\"] = 0] = \"none\";\n /**\n * Specifies the state of `accepted`.\n */\n PdfAnnotationState[PdfAnnotationState[\"accepted\"] = 1] = \"accepted\";\n /**\n * Specifies the state of `rejected`.\n */\n PdfAnnotationState[PdfAnnotationState[\"rejected\"] = 2] = \"rejected\";\n /**\n * Specifies the state of `cancel`.\n */\n PdfAnnotationState[PdfAnnotationState[\"cancel\"] = 3] = \"cancel\";\n /**\n * Specifies the state of `completed`.\n */\n PdfAnnotationState[PdfAnnotationState[\"completed\"] = 4] = \"completed\";\n /**\n * Specifies the state of `marked`.\n */\n PdfAnnotationState[PdfAnnotationState[\"marked\"] = 5] = \"marked\";\n /**\n * Specifies the state of `unmarked`.\n */\n PdfAnnotationState[PdfAnnotationState[\"unmarked\"] = 6] = \"unmarked\";\n /**\n * Specifies the state of `unknown`.\n */\n PdfAnnotationState[PdfAnnotationState[\"unknown\"] = 7] = \"unknown\";\n})(PdfAnnotationState || (PdfAnnotationState = {}));\n/**\n * Public Enum to define annotation state model.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfPopupAnnotation = page.annotations.at(0) PdfPopupAnnotation;\n * // Sets the state model of the popup annotation as marked\n * annotation.stateModel = PdfAnnotationStateModel.marked;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfAnnotationStateModel;\n(function (PdfAnnotationStateModel) {\n /**\n * Specifies the default model of `none`.\n */\n PdfAnnotationStateModel[PdfAnnotationStateModel[\"none\"] = 0] = \"none\";\n /**\n * Specifies the model of `marked`.\n */\n PdfAnnotationStateModel[PdfAnnotationStateModel[\"marked\"] = 1] = \"marked\";\n /**\n * Specifies the model of `review`.\n */\n PdfAnnotationStateModel[PdfAnnotationStateModel[\"review\"] = 2] = \"review\";\n})(PdfAnnotationStateModel || (PdfAnnotationStateModel = {}));\n/**\n * Public Enum to define icon type of attachment annotation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfAttachmentAnnotation = page.annotations.at(0) PdfAttachmentAnnotation;\n * // Sets the icon type of attachment annotation to pushPin\n * annotation.icon = PdfAttachmentIcon.pushPin;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfAttachmentIcon;\n(function (PdfAttachmentIcon) {\n /**\n * Specifies the default icon of `pushPin`.\n */\n PdfAttachmentIcon[PdfAttachmentIcon[\"pushPin\"] = 0] = \"pushPin\";\n /**\n * Specifies the icon of `tag`.\n */\n PdfAttachmentIcon[PdfAttachmentIcon[\"tag\"] = 1] = \"tag\";\n /**\n * Specifies the icon of `graph`.\n */\n PdfAttachmentIcon[PdfAttachmentIcon[\"graph\"] = 2] = \"graph\";\n /**\n * Specifies the icon of `paperClip`.\n */\n PdfAttachmentIcon[PdfAttachmentIcon[\"paperClip\"] = 3] = \"paperClip\";\n})(PdfAttachmentIcon || (PdfAttachmentIcon = {}));\n/**\n * Public Enum to define annotation intent of free text annotation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfFreeTextAnnotation = page.annotations.at(0) PdfFreeTextAnnotation;\n * // Sets the free text annotation intent to freeTextCallout\n * annotation.annotationIntent = PdfAnnotationIntent.freeTextCallout;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfAnnotationIntent;\n(function (PdfAnnotationIntent) {\n /**\n * Specifies the default intent of `none`.\n */\n PdfAnnotationIntent[PdfAnnotationIntent[\"none\"] = 0] = \"none\";\n /**\n * Specifies the intent of `freeTextCallout`.\n */\n PdfAnnotationIntent[PdfAnnotationIntent[\"freeTextCallout\"] = 1] = \"freeTextCallout\";\n /**\n * Specifies the intent of `freeTextTypeWriter`.\n */\n PdfAnnotationIntent[PdfAnnotationIntent[\"freeTextTypeWriter\"] = 2] = \"freeTextTypeWriter\";\n})(PdfAnnotationIntent || (PdfAnnotationIntent = {}));\n/**\n * Public Enum to define destination mode of document link annotation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfDocumentLinkAnnotation = page.annotations.at(0) PdfDocumentLinkAnnotation;\n * // Sets the destination mode as fitToPage\n * annotation.destination.mode = PdfDestinationMode.fitToPage;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfDestinationMode;\n(function (PdfDestinationMode) {\n /**\n * Specifies the default intent of `location`.\n */\n PdfDestinationMode[PdfDestinationMode[\"location\"] = 0] = \"location\";\n /**\n * Specifies the intent of `FitToPage`.\n */\n PdfDestinationMode[PdfDestinationMode[\"fitToPage\"] = 1] = \"fitToPage\";\n /**\n * Specifies the intent of `fitR`.\n */\n PdfDestinationMode[PdfDestinationMode[\"fitR\"] = 2] = \"fitR\";\n /**\n * Specifies the intent of `fitH`.\n */\n PdfDestinationMode[PdfDestinationMode[\"fitH\"] = 3] = \"fitH\";\n})(PdfDestinationMode || (PdfDestinationMode = {}));\n/**\n * Public Enum to define export or import data format.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Sets export data format as JSON type to annotation export settings\n * let settings: PdfAnnotationExportSettings = new PdfAnnotationExportSettings();\n * settings.dataFormat = DataFormat.json;\n * // Export annotations to JSON format\n * let json: Uint8Array = document.exportAnnotations(settings);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var DataFormat;\n(function (DataFormat) {\n /**\n * Specifies the intent of `FDF`.\n */\n DataFormat[DataFormat[\"fdf\"] = 0] = \"fdf\";\n /**\n * Specifies the intent of `XFDF`.\n */\n DataFormat[DataFormat[\"xfdf\"] = 1] = \"xfdf\";\n /**\n * Specifies the intent of `JSON`.\n */\n DataFormat[DataFormat[\"json\"] = 2] = \"json\";\n /**\n * Specifies the intent of `XML`.\n */\n DataFormat[DataFormat[\"xml\"] = 3] = \"xml\";\n})(DataFormat || (DataFormat = {}));\n/**\n * Public enum to define form fields tab order.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Set a PDF form's tab order.\n * document.form.orderFormFields(PdfFormFieldsTabOrder.row);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfFormFieldsTabOrder;\n(function (PdfFormFieldsTabOrder) {\n /**\n * Specifies that no tab order is defined.\n */\n PdfFormFieldsTabOrder[PdfFormFieldsTabOrder[\"none\"] = 0] = \"none\";\n /**\n * Specifies the tab order is defined by the document's rows.\n */\n PdfFormFieldsTabOrder[PdfFormFieldsTabOrder[\"row\"] = 1] = \"row\";\n /**\n * Specifies the tab order is defined by the document's columns.\n */\n PdfFormFieldsTabOrder[PdfFormFieldsTabOrder[\"column\"] = 2] = \"column\";\n /**\n * Specifies the tab order is defined by the document's structure tree.\n */\n PdfFormFieldsTabOrder[PdfFormFieldsTabOrder[\"structure\"] = 3] = \"structure\";\n /**\n * Specifies the tab order is defined manually.\n */\n PdfFormFieldsTabOrder[PdfFormFieldsTabOrder[\"manual\"] = 4] = \"manual\";\n /**\n * Specifies the tab order is defined by the widget annotations in the document.\n */\n PdfFormFieldsTabOrder[PdfFormFieldsTabOrder[\"widget\"] = 5] = \"widget\";\n})(PdfFormFieldsTabOrder || (PdfFormFieldsTabOrder = {}));\n/**\n * Enum for PDF loaded annotation type.\n */\nexport var _PdfAnnotationType;\n(function (_PdfAnnotationType) {\n /**\n * Specifies the intent of `highlight`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"highlight\"] = 0] = \"highlight\";\n /**\n * Specifies the intent of `underline`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"underline\"] = 1] = \"underline\";\n /**\n * Specifies the intent of `strikeOut`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"strikeOut\"] = 2] = \"strikeOut\";\n /**\n * Specifies the intent of `squiggly`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"squiggly\"] = 3] = \"squiggly\";\n /**\n * Specifies the intent of `redactionAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"redactionAnnotation\"] = 4] = \"redactionAnnotation\";\n /**\n * Specifies the intent of `textAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"textAnnotation\"] = 5] = \"textAnnotation\";\n /**\n * Specifies the intent of `linkAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"linkAnnotation\"] = 6] = \"linkAnnotation\";\n /**\n * Specifies the intent of `documentLinkAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"documentLinkAnnotation\"] = 7] = \"documentLinkAnnotation\";\n /**\n * Specifies the intent of `uriAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"uriAnnotation\"] = 8] = \"uriAnnotation\";\n /**\n * Specifies the intent of `fileLinkAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"fileLinkAnnotation\"] = 9] = \"fileLinkAnnotation\";\n /**\n * Specifies the intent of `freeTextAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"freeTextAnnotation\"] = 10] = \"freeTextAnnotation\";\n /**\n * Specifies the intent of `lineAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"lineAnnotation\"] = 11] = \"lineAnnotation\";\n /**\n * Specifies the intent of `circleAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"circleAnnotation\"] = 12] = \"circleAnnotation\";\n /**\n * Specifies the intent of `ellipseAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"ellipseAnnotation\"] = 13] = \"ellipseAnnotation\";\n /**\n * Specifies the intent of `squareAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"squareAnnotation\"] = 14] = \"squareAnnotation\";\n /**\n * Specifies the intent of `rectangleAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"rectangleAnnotation\"] = 15] = \"rectangleAnnotation\";\n /**\n * Specifies the intent of `polygonAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"polygonAnnotation\"] = 16] = \"polygonAnnotation\";\n /**\n * Specifies the intent of `polyLineAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"polyLineAnnotation\"] = 17] = \"polyLineAnnotation\";\n /**\n * Specifies the intent of `textMarkupAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"textMarkupAnnotation\"] = 18] = \"textMarkupAnnotation\";\n /**\n * Specifies the intent of `caretAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"caretAnnotation\"] = 19] = \"caretAnnotation\";\n /**\n * Specifies the intent of `rubberStampAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"rubberStampAnnotation\"] = 20] = \"rubberStampAnnotation\";\n /**\n * Specifies the intent of `popupAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"popupAnnotation\"] = 21] = \"popupAnnotation\";\n /**\n * Specifies the intent of `fileAttachmentAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"fileAttachmentAnnotation\"] = 22] = \"fileAttachmentAnnotation\";\n /**\n * Specifies the intent of `soundAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"soundAnnotation\"] = 23] = \"soundAnnotation\";\n /**\n * Specifies the intent of `movieAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"movieAnnotation\"] = 24] = \"movieAnnotation\";\n /**\n * Specifies the intent of `screenAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"screenAnnotation\"] = 25] = \"screenAnnotation\";\n /**\n * Specifies the intent of `widgetAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"widgetAnnotation\"] = 26] = \"widgetAnnotation\";\n /**\n * Specifies the intent of `printerMarkAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"printerMarkAnnotation\"] = 27] = \"printerMarkAnnotation\";\n /**\n * Specifies the intent of `trapNetworkAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"trapNetworkAnnotation\"] = 28] = \"trapNetworkAnnotation\";\n /**\n * Specifies the intent of `watermarkAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"watermarkAnnotation\"] = 29] = \"watermarkAnnotation\";\n /**\n * Specifies the intent of `textWebLinkAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"textWebLinkAnnotation\"] = 30] = \"textWebLinkAnnotation\";\n /**\n * Specifies the intent of `inkAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"inkAnnotation\"] = 31] = \"inkAnnotation\";\n /**\n * Specifies the intent of `richMediaAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"richMediaAnnotation\"] = 32] = \"richMediaAnnotation\";\n /**\n * Specifies the intent of `angleMeasurementAnnotation`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"angleMeasurementAnnotation\"] = 33] = \"angleMeasurementAnnotation\";\n /**\n * Specifies the intent of `null`.\n */\n _PdfAnnotationType[_PdfAnnotationType[\"null\"] = 34] = \"null\";\n})(_PdfAnnotationType || (_PdfAnnotationType = {}));\n/**\n * Enum for PDF graphics unit.\n */\nexport var _PdfGraphicsUnit;\n(function (_PdfGraphicsUnit) {\n /**\n * Specifies the type of `centimeter`.\n */\n _PdfGraphicsUnit[_PdfGraphicsUnit[\"centimeter\"] = 0] = \"centimeter\";\n /**\n * Specifies the type of `pica`.\n */\n _PdfGraphicsUnit[_PdfGraphicsUnit[\"pica\"] = 1] = \"pica\";\n /**\n * Specifies the type of `pixel`.\n */\n _PdfGraphicsUnit[_PdfGraphicsUnit[\"pixel\"] = 2] = \"pixel\";\n /**\n * Specifies the type of `point`.\n */\n _PdfGraphicsUnit[_PdfGraphicsUnit[\"point\"] = 3] = \"point\";\n /**\n * Specifies the type of `inch`.\n */\n _PdfGraphicsUnit[_PdfGraphicsUnit[\"inch\"] = 4] = \"inch\";\n /**\n * Specifies the type of `document`.\n */\n _PdfGraphicsUnit[_PdfGraphicsUnit[\"document\"] = 5] = \"document\";\n /**\n * Specifies the type of `millimeter`.\n */\n _PdfGraphicsUnit[_PdfGraphicsUnit[\"millimeter\"] = 6] = \"millimeter\";\n})(_PdfGraphicsUnit || (_PdfGraphicsUnit = {}));\nexport var _FieldFlag;\n(function (_FieldFlag) {\n _FieldFlag[_FieldFlag[\"default\"] = 0] = \"default\";\n _FieldFlag[_FieldFlag[\"readOnly\"] = 1] = \"readOnly\";\n _FieldFlag[_FieldFlag[\"required\"] = 2] = \"required\";\n _FieldFlag[_FieldFlag[\"noExport\"] = 4] = \"noExport\";\n _FieldFlag[_FieldFlag[\"multiLine\"] = 4096] = \"multiLine\";\n _FieldFlag[_FieldFlag[\"password\"] = 8192] = \"password\";\n _FieldFlag[_FieldFlag[\"fileSelect\"] = 1048576] = \"fileSelect\";\n _FieldFlag[_FieldFlag[\"doNotSpellCheck\"] = 4194304] = \"doNotSpellCheck\";\n _FieldFlag[_FieldFlag[\"doNotScroll\"] = 8388608] = \"doNotScroll\";\n _FieldFlag[_FieldFlag[\"comb\"] = 16777216] = \"comb\";\n _FieldFlag[_FieldFlag[\"richText\"] = 33554432] = \"richText\";\n _FieldFlag[_FieldFlag[\"noToggleToOff\"] = 16384] = \"noToggleToOff\";\n _FieldFlag[_FieldFlag[\"radio\"] = 32768] = \"radio\";\n _FieldFlag[_FieldFlag[\"pushButton\"] = 65536] = \"pushButton\";\n _FieldFlag[_FieldFlag[\"radiosInUnison\"] = 33554432] = \"radiosInUnison\";\n _FieldFlag[_FieldFlag[\"combo\"] = 131072] = \"combo\";\n _FieldFlag[_FieldFlag[\"edit\"] = 262144] = \"edit\";\n _FieldFlag[_FieldFlag[\"sort\"] = 524288] = \"sort\";\n _FieldFlag[_FieldFlag[\"multiSelect\"] = 2097152] = \"multiSelect\";\n _FieldFlag[_FieldFlag[\"commitOnSelectChange\"] = 67108864] = \"commitOnSelectChange\";\n})(_FieldFlag || (_FieldFlag = {}));\nexport var _SignatureFlag;\n(function (_SignatureFlag) {\n _SignatureFlag[_SignatureFlag[\"none\"] = 0] = \"none\";\n _SignatureFlag[_SignatureFlag[\"signatureExists\"] = 1] = \"signatureExists\";\n _SignatureFlag[_SignatureFlag[\"appendOnly\"] = 2] = \"appendOnly\";\n})(_SignatureFlag || (_SignatureFlag = {}));\nexport var _PdfCheckFieldState;\n(function (_PdfCheckFieldState) {\n _PdfCheckFieldState[_PdfCheckFieldState[\"unchecked\"] = 0] = \"unchecked\";\n _PdfCheckFieldState[_PdfCheckFieldState[\"checked\"] = 1] = \"checked\";\n _PdfCheckFieldState[_PdfCheckFieldState[\"pressedUnchecked\"] = 2] = \"pressedUnchecked\";\n _PdfCheckFieldState[_PdfCheckFieldState[\"pressedChecked\"] = 3] = \"pressedChecked\";\n})(_PdfCheckFieldState || (_PdfCheckFieldState = {}));\n/**\n * Public enum to define the PDF document permission flags.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the permission flag\n * let permission: PdfPermissionFlag = document.permissions;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfPermissionFlag;\n(function (PdfPermissionFlag) {\n /**\n * Specifies the default permission flag.\n */\n PdfPermissionFlag[PdfPermissionFlag[\"default\"] = 0] = \"default\";\n /**\n * Specifies the print permission flag.\n */\n PdfPermissionFlag[PdfPermissionFlag[\"print\"] = 4] = \"print\";\n /**\n * Specifies the edit content permission flag.\n */\n PdfPermissionFlag[PdfPermissionFlag[\"editContent\"] = 8] = \"editContent\";\n /**\n * Specifies the copy content permission flag.\n */\n PdfPermissionFlag[PdfPermissionFlag[\"copyContent\"] = 16] = \"copyContent\";\n /**\n * Specifies the edit annotations permission flag.\n */\n PdfPermissionFlag[PdfPermissionFlag[\"editAnnotations\"] = 32] = \"editAnnotations\";\n /**\n * Specifies the fill fields permission flag.\n */\n PdfPermissionFlag[PdfPermissionFlag[\"fillFields\"] = 256] = \"fillFields\";\n /**\n * Specifies the accessibility copy content permission flag.\n */\n PdfPermissionFlag[PdfPermissionFlag[\"accessibilityCopyContent\"] = 512] = \"accessibilityCopyContent\";\n /**\n * Specifies the assemble document permission flag.\n */\n PdfPermissionFlag[PdfPermissionFlag[\"assembleDocument\"] = 1024] = \"assembleDocument\";\n /**\n * Specifies the full quality print permission flag.\n */\n PdfPermissionFlag[PdfPermissionFlag[\"fullQualityPrint\"] = 2048] = \"fullQualityPrint\";\n})(PdfPermissionFlag || (PdfPermissionFlag = {}));\n/**\n * Public enum to define the PDF page orientation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Get the page orientation\n * let orientation: PdfPageOrientation = page.orientation;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfPageOrientation;\n(function (PdfPageOrientation) {\n /**\n * Specifies the type of `portrait`.\n */\n PdfPageOrientation[PdfPageOrientation[\"portrait\"] = 0] = \"portrait\";\n /**\n * Specifies the type of `landscape`.\n */\n PdfPageOrientation[PdfPageOrientation[\"landscape\"] = 1] = \"landscape\";\n})(PdfPageOrientation || (PdfPageOrientation = {}));\n/**\n * Public enum to define the text direction.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Load the font file\n * let font: PdfTrueTypeFont = new PdfTrueTypeFont(read('./resources/Fonts/', 'Arial.ttf'), 10);\n * // Add a string format\n * let format: PdfStringFormat = new PdfStringFormat();\n * format.alignment = PdfTextAlignment.right;\n * format.textDirection = PdfTextDirection.rightToLeft;\n * // Draw a text with right to left direction\n * page.graphics.drawString('Hello World مرحبا بالعالم', font, [10, 20, 300, 200], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfTextDirection;\n(function (PdfTextDirection) {\n /**\n * Specifies the type of `none`.\n */\n PdfTextDirection[PdfTextDirection[\"none\"] = 0] = \"none\";\n /**\n * Specifies the type of `leftToRight`.\n */\n PdfTextDirection[PdfTextDirection[\"leftToRight\"] = 1] = \"leftToRight\";\n /**\n * Specifies the type of `rightToLeft`.\n */\n PdfTextDirection[PdfTextDirection[\"rightToLeft\"] = 2] = \"rightToLeft\";\n})(PdfTextDirection || (PdfTextDirection = {}));\n/**\n * Public enum to define the subscript or superscript mode.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right);\n * // Set a new paragraph indent\n * format.paragraphIndent = 20;\n * // Set the subscript or superscript mode\n * format.subSuperScript = PdfSubSuperScript.subScript;\n * // Draw the text\n * page.graphics.drawString('Helvetica', font, [0, 180, page.size[0], 40], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfSubSuperScript;\n(function (PdfSubSuperScript) {\n /**\n * Specifies the type of `none`.\n */\n PdfSubSuperScript[PdfSubSuperScript[\"none\"] = 0] = \"none\";\n /**\n * Specifies the type of `superScript`.\n */\n PdfSubSuperScript[PdfSubSuperScript[\"superScript\"] = 1] = \"superScript\";\n /**\n * Specifies the type of `subScript`.\n */\n PdfSubSuperScript[PdfSubSuperScript[\"subScript\"] = 2] = \"subScript\";\n})(PdfSubSuperScript || (PdfSubSuperScript = {}));\n/**\n * Public enum to define blend mode of the PDF page.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.symbol, 10);\n * // Set the blend mode\n * graphics.setTransparency(0.5, 0.5, PdfBlendMode.hardLight);\n * // Draw the text\n * graphics.drawString('Hello World', font, null, new PointF(10, 10));\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfBlendMode;\n(function (PdfBlendMode) {\n /**\n * Specifies the type of `normal`.\n */\n PdfBlendMode[PdfBlendMode[\"normal\"] = 0] = \"normal\";\n /**\n * Specifies the type of `multiply`.\n */\n PdfBlendMode[PdfBlendMode[\"multiply\"] = 1] = \"multiply\";\n /**\n * Specifies the type of `screen`.\n */\n PdfBlendMode[PdfBlendMode[\"screen\"] = 2] = \"screen\";\n /**\n * Specifies the type of `overlay`.\n */\n PdfBlendMode[PdfBlendMode[\"overlay\"] = 3] = \"overlay\";\n /**\n * Specifies the type of `darken`.\n */\n PdfBlendMode[PdfBlendMode[\"darken\"] = 4] = \"darken\";\n /**\n * Specifies the type of `lighten`.\n */\n PdfBlendMode[PdfBlendMode[\"lighten\"] = 5] = \"lighten\";\n /**\n * Specifies the type of `colorDodge`.\n */\n PdfBlendMode[PdfBlendMode[\"colorDodge\"] = 6] = \"colorDodge\";\n /**\n * Specifies the type of `colorBurn`.\n */\n PdfBlendMode[PdfBlendMode[\"colorBurn\"] = 7] = \"colorBurn\";\n /**\n * Specifies the type of `hardLight`.\n */\n PdfBlendMode[PdfBlendMode[\"hardLight\"] = 8] = \"hardLight\";\n /**\n * Specifies the type of `softLight`.\n */\n PdfBlendMode[PdfBlendMode[\"softLight\"] = 9] = \"softLight\";\n /**\n * Specifies the type of `difference`.\n */\n PdfBlendMode[PdfBlendMode[\"difference\"] = 10] = \"difference\";\n /**\n * Specifies the type of `exclusion`.\n */\n PdfBlendMode[PdfBlendMode[\"exclusion\"] = 11] = \"exclusion\";\n /**\n * Specifies the type of `hue`.\n */\n PdfBlendMode[PdfBlendMode[\"hue\"] = 12] = \"hue\";\n /**\n * Specifies the type of `saturation`.\n */\n PdfBlendMode[PdfBlendMode[\"saturation\"] = 13] = \"saturation\";\n /**\n * Specifies the type of `color`.\n */\n PdfBlendMode[PdfBlendMode[\"color\"] = 14] = \"color\";\n /**\n * Specifies the type of `luminosity`.\n */\n PdfBlendMode[PdfBlendMode[\"luminosity\"] = 15] = \"luminosity\";\n})(PdfBlendMode || (PdfBlendMode = {}));\n/**\n * Public enum to define fill mode of the PDF page.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.symbol, 10);\n * // Set the fill mode\n * graphics.setClip([0, 0, 100, 100], PdfFillMode.winding);\n * // Draw the text\n * graphics.drawString('Hello World', font, null, new PointF(10, 10));\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfFillMode;\n(function (PdfFillMode) {\n /**\n * Specifies the type of `winding`.\n */\n PdfFillMode[PdfFillMode[\"winding\"] = 0] = \"winding\";\n /**\n * Specifies the type of `alternate`.\n */\n PdfFillMode[PdfFillMode[\"alternate\"] = 1] = \"alternate\";\n})(PdfFillMode || (PdfFillMode = {}));\n/**\n * Public enum to define the dash style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new pen\n * let pen: PdfPen = new PdfPen([0, 0, 0], 1);\n * // Set the dash style\n * pen._dashStyle = PdfDashStyle.dashDot;\n * // Draw a rectangle using pen\n * graphics.drawRectangle(150, 50, 50, 50, pen);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfDashStyle;\n(function (PdfDashStyle) {\n /**\n * Specifies the type of `solid`.\n */\n PdfDashStyle[PdfDashStyle[\"solid\"] = 0] = \"solid\";\n /**\n * Specifies the type of `dash`.\n */\n PdfDashStyle[PdfDashStyle[\"dash\"] = 1] = \"dash\";\n /**\n * Specifies the type of `dot`.\n */\n PdfDashStyle[PdfDashStyle[\"dot\"] = 2] = \"dot\";\n /**\n * Specifies the type of `dashDot`.\n */\n PdfDashStyle[PdfDashStyle[\"dashDot\"] = 3] = \"dashDot\";\n /**\n * Specifies the type of `dashDotDot`.\n */\n PdfDashStyle[PdfDashStyle[\"dashDotDot\"] = 4] = \"dashDotDot\";\n /**\n * Specifies the type of `custom`.\n */\n PdfDashStyle[PdfDashStyle[\"custom\"] = 5] = \"custom\";\n})(PdfDashStyle || (PdfDashStyle = {}));\n/**\n * Public enum to define the line cap.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new pen\n * let pen: PdfPen = new PdfPen([0, 0, 0], 1);\n * // Set the dash style\n * pen._dashStyle = PdfDashStyle.dashDot;\n * // Set the line cap\n * pen._lineCap = PdfLineCap.round;\n * // Draw a rectangle using pen\n * graphics.drawRectangle(150, 50, 50, 50, pen);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfLineCap;\n(function (PdfLineCap) {\n /**\n * Specifies the type of `flat`.\n */\n PdfLineCap[PdfLineCap[\"flat\"] = 0] = \"flat\";\n /**\n * Specifies the type of `round`.\n */\n PdfLineCap[PdfLineCap[\"round\"] = 1] = \"round\";\n /**\n * Specifies the type of `square`.\n */\n PdfLineCap[PdfLineCap[\"square\"] = 2] = \"square\";\n})(PdfLineCap || (PdfLineCap = {}));\n/**\n * Public enum to define the line join.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new pen\n * let pen: PdfPen = new PdfPen([0, 0, 0], 1);\n * // Set the dash style\n * pen._dashStyle = PdfDashStyle.dashDot;\n * // Set the line join\n * pen._lineJoin = PdfLineJoin.bevel;\n * // Draw a rectangle using pen\n * graphics.drawRectangle(150, 50, 50, 50, pen);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfLineJoin;\n(function (PdfLineJoin) {\n /**\n * Specifies the type of `miter`.\n */\n PdfLineJoin[PdfLineJoin[\"miter\"] = 0] = \"miter\";\n /**\n * Specifies the type of `round`.\n */\n PdfLineJoin[PdfLineJoin[\"round\"] = 1] = \"round\";\n /**\n * Specifies the type of `bevel`.\n */\n PdfLineJoin[PdfLineJoin[\"bevel\"] = 2] = \"bevel\";\n})(PdfLineJoin || (PdfLineJoin = {}));\nexport var _PdfWordWrapType;\n(function (_PdfWordWrapType) {\n /**\n * Specifies the type of `none`.\n */\n _PdfWordWrapType[_PdfWordWrapType[\"none\"] = 0] = \"none\";\n /**\n * Specifies the type of `word`.\n */\n _PdfWordWrapType[_PdfWordWrapType[\"word\"] = 1] = \"word\";\n /**\n * Specifies the type of `wordOnly`.\n */\n _PdfWordWrapType[_PdfWordWrapType[\"wordOnly\"] = 2] = \"wordOnly\";\n /**\n * Specifies the type of `character`.\n */\n _PdfWordWrapType[_PdfWordWrapType[\"character\"] = 3] = \"character\";\n})(_PdfWordWrapType || (_PdfWordWrapType = {}));\nexport var _FontDescriptorFlag;\n(function (_FontDescriptorFlag) {\n _FontDescriptorFlag[_FontDescriptorFlag[\"fixedPitch\"] = 1] = \"fixedPitch\";\n _FontDescriptorFlag[_FontDescriptorFlag[\"serif\"] = 2] = \"serif\";\n _FontDescriptorFlag[_FontDescriptorFlag[\"symbolic\"] = 4] = \"symbolic\";\n _FontDescriptorFlag[_FontDescriptorFlag[\"script\"] = 8] = \"script\";\n _FontDescriptorFlag[_FontDescriptorFlag[\"nonSymbolic\"] = 32] = \"nonSymbolic\";\n _FontDescriptorFlag[_FontDescriptorFlag[\"italic\"] = 64] = \"italic\";\n _FontDescriptorFlag[_FontDescriptorFlag[\"forceBold\"] = 262144] = \"forceBold\";\n})(_FontDescriptorFlag || (_FontDescriptorFlag = {}));\nexport var _TrueTypeCmapFormat;\n(function (_TrueTypeCmapFormat) {\n _TrueTypeCmapFormat[_TrueTypeCmapFormat[\"apple\"] = 0] = \"apple\";\n _TrueTypeCmapFormat[_TrueTypeCmapFormat[\"microsoft\"] = 4] = \"microsoft\";\n _TrueTypeCmapFormat[_TrueTypeCmapFormat[\"trimmed\"] = 6] = \"trimmed\";\n})(_TrueTypeCmapFormat || (_TrueTypeCmapFormat = {}));\nexport var _TrueTypeCmapEncoding;\n(function (_TrueTypeCmapEncoding) {\n _TrueTypeCmapEncoding[_TrueTypeCmapEncoding[\"unknown\"] = 0] = \"unknown\";\n _TrueTypeCmapEncoding[_TrueTypeCmapEncoding[\"symbol\"] = 1] = \"symbol\";\n _TrueTypeCmapEncoding[_TrueTypeCmapEncoding[\"unicode\"] = 2] = \"unicode\";\n _TrueTypeCmapEncoding[_TrueTypeCmapEncoding[\"macintosh\"] = 3] = \"macintosh\";\n})(_TrueTypeCmapEncoding || (_TrueTypeCmapEncoding = {}));\nexport var _TrueTypePlatformID;\n(function (_TrueTypePlatformID) {\n _TrueTypePlatformID[_TrueTypePlatformID[\"appleUnicode\"] = 0] = \"appleUnicode\";\n _TrueTypePlatformID[_TrueTypePlatformID[\"macintosh\"] = 1] = \"macintosh\";\n _TrueTypePlatformID[_TrueTypePlatformID[\"iSO\"] = 2] = \"iSO\";\n _TrueTypePlatformID[_TrueTypePlatformID[\"microsoft\"] = 3] = \"microsoft\";\n})(_TrueTypePlatformID || (_TrueTypePlatformID = {}));\nexport var _TrueTypeMicrosoftEncodingID;\n(function (_TrueTypeMicrosoftEncodingID) {\n _TrueTypeMicrosoftEncodingID[_TrueTypeMicrosoftEncodingID[\"undefined\"] = 0] = \"undefined\";\n _TrueTypeMicrosoftEncodingID[_TrueTypeMicrosoftEncodingID[\"unicode\"] = 1] = \"unicode\";\n})(_TrueTypeMicrosoftEncodingID || (_TrueTypeMicrosoftEncodingID = {}));\nexport var _TrueTypeMacintoshEncodingID;\n(function (_TrueTypeMacintoshEncodingID) {\n _TrueTypeMacintoshEncodingID[_TrueTypeMacintoshEncodingID[\"roman\"] = 0] = \"roman\";\n _TrueTypeMacintoshEncodingID[_TrueTypeMacintoshEncodingID[\"japanese\"] = 1] = \"japanese\";\n _TrueTypeMacintoshEncodingID[_TrueTypeMacintoshEncodingID[\"chinese\"] = 2] = \"chinese\";\n})(_TrueTypeMacintoshEncodingID || (_TrueTypeMacintoshEncodingID = {}));\nexport var _TrueTypeCompositeGlyphFlag;\n(function (_TrueTypeCompositeGlyphFlag) {\n _TrueTypeCompositeGlyphFlag[_TrueTypeCompositeGlyphFlag[\"Arg1And2AreWords\"] = 1] = \"Arg1And2AreWords\";\n _TrueTypeCompositeGlyphFlag[_TrueTypeCompositeGlyphFlag[\"ArgsAreXyValues\"] = 2] = \"ArgsAreXyValues\";\n _TrueTypeCompositeGlyphFlag[_TrueTypeCompositeGlyphFlag[\"RoundXyToGrid\"] = 4] = \"RoundXyToGrid\";\n _TrueTypeCompositeGlyphFlag[_TrueTypeCompositeGlyphFlag[\"WeHaveScale\"] = 8] = \"WeHaveScale\";\n _TrueTypeCompositeGlyphFlag[_TrueTypeCompositeGlyphFlag[\"Reserved\"] = 16] = \"Reserved\";\n _TrueTypeCompositeGlyphFlag[_TrueTypeCompositeGlyphFlag[\"MoreComponents\"] = 32] = \"MoreComponents\";\n _TrueTypeCompositeGlyphFlag[_TrueTypeCompositeGlyphFlag[\"WeHaveAnXyScale\"] = 64] = \"WeHaveAnXyScale\";\n _TrueTypeCompositeGlyphFlag[_TrueTypeCompositeGlyphFlag[\"WeHaveTwoByTwo\"] = 128] = \"WeHaveTwoByTwo\";\n _TrueTypeCompositeGlyphFlag[_TrueTypeCompositeGlyphFlag[\"WeHaveInstructions\"] = 256] = \"WeHaveInstructions\";\n _TrueTypeCompositeGlyphFlag[_TrueTypeCompositeGlyphFlag[\"UseMyMetrics\"] = 512] = \"UseMyMetrics\";\n})(_TrueTypeCompositeGlyphFlag || (_TrueTypeCompositeGlyphFlag = {}));\nexport var _ImageFormat;\n(function (_ImageFormat) {\n /**\n * Specifies the type of `unknown`.\n */\n _ImageFormat[_ImageFormat[\"unknown\"] = 0] = \"unknown\";\n /**\n * Specifies the type of `bmp`.\n */\n _ImageFormat[_ImageFormat[\"bmp\"] = 1] = \"bmp\";\n /**\n * Specifies the type of `emf`.\n */\n _ImageFormat[_ImageFormat[\"emf\"] = 2] = \"emf\";\n /**\n * Specifies the type of `gif`.\n */\n _ImageFormat[_ImageFormat[\"gif\"] = 3] = \"gif\";\n /**\n * Specifies the type of `jpeg`.\n */\n _ImageFormat[_ImageFormat[\"jpeg\"] = 4] = \"jpeg\";\n /**\n * Specifies the type of `png`.\n */\n _ImageFormat[_ImageFormat[\"png\"] = 5] = \"png\";\n /**\n * Specifies the type of `wmf`.\n */\n _ImageFormat[_ImageFormat[\"wmf\"] = 6] = \"wmf\";\n /**\n * Specifies the type of `icon`.\n */\n _ImageFormat[_ImageFormat[\"icon\"] = 7] = \"icon\";\n})(_ImageFormat || (_ImageFormat = {}));\nexport var _TokenType;\n(function (_TokenType) {\n _TokenType[_TokenType[\"none\"] = 0] = \"none\";\n _TokenType[_TokenType[\"comment\"] = 1] = \"comment\";\n _TokenType[_TokenType[\"number\"] = 2] = \"number\";\n _TokenType[_TokenType[\"real\"] = 3] = \"real\";\n _TokenType[_TokenType[\"string\"] = 4] = \"string\";\n _TokenType[_TokenType[\"hexString\"] = 5] = \"hexString\";\n _TokenType[_TokenType[\"unicodeString\"] = 6] = \"unicodeString\";\n _TokenType[_TokenType[\"unicodeHexString\"] = 7] = \"unicodeHexString\";\n _TokenType[_TokenType[\"name\"] = 8] = \"name\";\n _TokenType[_TokenType[\"operator\"] = 9] = \"operator\";\n _TokenType[_TokenType[\"beginArray\"] = 10] = \"beginArray\";\n _TokenType[_TokenType[\"endArray\"] = 11] = \"endArray\";\n _TokenType[_TokenType[\"eof\"] = 12] = \"eof\";\n})(_TokenType || (_TokenType = {}));\n/**\n * Public enum to define text style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Get the bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Gets bookmark at the specified index\n * let bookmark : PdfBookMark = bookmarks.at(0) as PdfBookMark;\n * // Gets the textStyle\n * let textStyle: PdfTextStyle = bookmark.textStyle;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfTextStyle;\n(function (PdfTextStyle) {\n /**\n * Specifies the `regular` text style.\n */\n PdfTextStyle[PdfTextStyle[\"regular\"] = 0] = \"regular\";\n /**\n * Specifies the `italic` text style.\n */\n PdfTextStyle[PdfTextStyle[\"italic\"] = 1] = \"italic\";\n /**\n * Specifies the `bold` text style.\n */\n PdfTextStyle[PdfTextStyle[\"bold\"] = 2] = \"bold\";\n})(PdfTextStyle || (PdfTextStyle = {}));\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { createElement, Browser, isNullOrUndefined, isBlazor, Internationalization } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { TextLayer, ContextMenu, Signature, PdfFormFieldBase, AccessibilityTags } from '../index';\nimport { NavigationPane } from './navigation-pane';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { AjaxHandler } from '../index';\nimport { Point, Rect, identityMatrix, transformPointByMatrix, contains, rotateMatrix } from '@syncfusion/ej2-drawings';\nimport { SelectTool, MoveTool, ResizeTool, ConnectTool, NodeDrawingTool, PolygonDrawingTool, LineTool, RotateTool, StampTool, InkDrawingTool } from '../drawing/tools';\nimport { Selector } from '../drawing/selector';\nimport { ActiveElements, findActiveElement } from '../drawing/action';\nimport { renderAdornerLayer } from '../drawing/dom-util';\nimport { cloneObject } from '../drawing/drawing-util';\nimport { BlazorContextMenu } from './blazor-context-menu';\nimport { createSpinner, showSpinner, hideSpinner } from './spinner';\nimport { BlazorUiAdaptor } from './blazor-ui-adaptor';\n/**\n * The `PdfViewerBase` module is used to handle base methods of PDF viewer.\n *\n * @hidden\n */\nvar PdfViewerBase = /** @class */ (function () {\n /**\n * Initialize the constructor of PDFViewerBase\n *\n * @param { PdfViewer } viewer - Specified PdfViewer class.\n */\n function PdfViewerBase(viewer) {\n var _this = this;\n /**\n * @private\n */\n this.hyperlinkAndLinkAnnotation = {};\n /**\n * @private\n */\n this.pageTextDetails = {};\n /**\n * @private\n */\n this.pageImageDetails = {};\n /**\n * @private\n */\n this.pageSize = [];\n /**\n * @private\n */\n this.pageCount = 0;\n /**\n * @private\n */\n this.isReRenderRequired = true;\n /**\n * @private\n */\n this.currentPageNumber = 0;\n /**\n * @private\n */\n this.activeElements = new ActiveElements();\n /**\n * @private\n */\n this.mouseDownEvent = null;\n /**\n *\n * @private\n */\n this.pngData = [];\n /**\n * @private\n */\n this.isDocumentLoaded = false;\n /**\n * @private\n */\n this.renderedPagesList = [];\n /**\n * @private\n */\n this.pageGap = 8;\n /**\n * @private\n */\n this.signatureAdded = false;\n /**\n * @private\n */\n this.isFreeTextSelected = false;\n this.pageLeft = 5;\n this.sessionLimit = 1000;\n this.pageStopValue = 300;\n /**\n * @private\n */\n this.toolbarHeight = 56;\n this.pageLimit = 0;\n this.previousPage = 0;\n this.isViewerMouseDown = false;\n this.isViewerMouseWheel = false;\n this.scrollPosition = 0;\n this.sessionStorage = [];\n /**\n * @private\n */\n this.isLoadedFormFieldAdded = false;\n this.pointerCount = 0;\n this.pointersForTouch = [];\n /**\n * @private\n */\n this.isPasswordAvailable = false;\n /**\n * @private\n */\n this.passwordData = '';\n /**\n * @private\n */\n this.reRenderedCount = 0;\n this.mouseX = 0;\n this.mouseY = 0;\n /**\n * @private\n */\n this.mouseLeft = 0;\n /**\n * @private\n */\n this.mouseTop = 0;\n this.touchClientX = 0;\n this.touchClientY = 0;\n this.previousTime = 0;\n this.currentTime = 0;\n this.isTouchScrolled = false;\n this.isLongTouchPropagated = false;\n // eslint-disable-next-line\n this.longTouchTimer = null;\n this.isViewerContainerDoubleClick = false;\n // eslint-disable-next-line\n this.dblClickTimer = null;\n /**\n * @private\n */\n this.pinchZoomStorage = [];\n /**\n * @private\n */\n this.isTextSelectionDisabled = false;\n /**\n * @private\n */\n this.isPanMode = false;\n this.dragX = 0;\n this.dragY = 0;\n this.isScrollbarMouseDown = false;\n this.scrollX = 0;\n this.scrollY = 0;\n this.ispageMoved = false;\n this.isThumb = false;\n this.isTapHidden = false;\n // eslint-disable-next-line\n this.singleTapTimer = null;\n this.tapCount = 0;\n this.inputTapCount = 0;\n /**\n * @private\n */\n this.isInitialLoaded = false;\n this.annotationPageList = [];\n this.importPageList = [];\n /**\n * @private\n */\n this.isImportAction = false;\n this.isImportedAnnotation = false;\n /**\n * @private\n */\n this.isAnnotationCollectionRemoved = false;\n /**\n * @private\n */\n this.tool = null;\n // eslint-disable-next-line\n this.action = 'Select';\n /**\n * @private\n */\n this.eventArgs = null;\n /**\n * @private\n */\n this.inAction = false;\n /**\n * @private\n */\n this.isMouseDown = false;\n /**\n * @private\n */\n this.isStampMouseDown = false;\n /**\n * @private\n */\n this.stampAdded = false;\n /**\n * @private\n */\n this.customStampCount = 0;\n /**\n * @private\n */\n this.isDynamicStamp = false;\n /**\n * @private\n */\n this.isMixedSizeDocument = false;\n /**\n * @private\n */\n this.highestWidth = 0;\n /**\n * @private\n */\n this.highestHeight = 0;\n /**\n * @private\n */\n this.customStampCollection = [];\n /**\n * @private\n */\n this.isAlreadyAdded = false;\n /**\n * @private\n */\n this.isWebkitMobile = false;\n /**\n * @private\n */\n this.isFreeTextContextMenu = false;\n /**\n * @private\n */\n this.isSelection = false;\n /**\n * @private\n */\n this.isAddAnnotation = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.annotationComments = null;\n /**\n * @private\n */\n this.isToolbarSignClicked = false;\n /**\n * @private\n */\n this.signatureCount = 0;\n /**\n * @private\n */\n this.isSignatureAdded = false;\n /**\n * @private\n */\n this.isNewSignatureAdded = false;\n /**\n * @private\n */\n this.isInitialPageMode = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.documentAnnotationCollections = null;\n /**\n * @private\n */\n this.annotationRenderredList = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.annotationStorage = {};\n /**\n * @private\n */\n // eslint-disable-next-line\n this.formFieldStorage = {};\n /**\n * @private\n */\n this.isStorageExceed = false;\n /**\n * @private\n */\n this.isFormStorageExceed = false;\n /**\n * @private\n */\n this.isNewStamp = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.downloadCollections = {};\n /**\n * @private\n */\n this.isAnnotationAdded = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.annotationEvent = null;\n /**\n * @private\n */\n this.isAnnotationDrawn = false;\n /**\n * @private\n */\n this.isAnnotationSelect = false;\n /**\n * @private\n */\n this.isAnnotationMouseDown = false;\n /**\n * @private\n */\n this.isAnnotationMouseMove = false;\n /**\n * @private\n */\n this.validateForm = false;\n /**\n * @private\n */\n this.isMinimumZoom = false;\n /**\n * @private\n */\n this.documentLoaded = false;\n this.tileRenderCount = 0;\n this.tileRequestCount = 0;\n /**\n * @private\n */\n this.isTileImageRendered = false;\n this.isDataExits = false;\n this.requestLists = [];\n this.tilerequestLists = [];\n this.textrequestLists = [];\n this.renderThumbnailImages = false;\n /**\n * @private\n */\n this.pageRenderCount = 2;\n /**\n * @private\n */\n this.isInkAdded = false;\n /**\n * @private\n */\n this.inkCount = 0;\n /**\n * @private\n */\n this.isAddedSignClicked = false;\n /**\n * @private\n */\n this.imageCount = 0;\n /**\n * @private\n */\n this.isMousedOver = false;\n /**\n * @private\n */\n this.isFormFieldSelect = false;\n /**\n * @private\n */\n this.isFormFieldMouseDown = false;\n /**\n * @private\n */\n this.isFormFieldMouseMove = false;\n /**\n * @private\n */\n this.isFormFieldMousedOver = false;\n /**\n * @private\n */\n this.isPassword = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.digitalSignaturePages = [];\n this.isDigitalSignaturePresent = false;\n this.isDrawnCompletely = false;\n /**\n * @private\n */\n this.isAddComment = false;\n /**\n * @private\n */\n this.drawSignatureWithTool = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.formFieldCollection = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.requestCollection = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.nonFillableFields = {};\n /**\n * @private\n */\n this.isInitialField = false;\n /**\n * @private\n */\n this.isTouchDesignerMode = false;\n /**\n * @private\n */\n this.isPrint = false;\n /**\n * @private\n */\n this.isPDFViewerJson = false;\n /**\n * @private\n */\n this.isJsonImported = false;\n /**\n * @private\n */\n this.isJsonExported = false;\n /**\n * @private\n */\n this.isPageRotated = false;\n this.downloadFileName = '';\n /**\n * @private\n */\n // eslint-disable-next-line\n this.isFocusField = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.isTouchPad = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.isMacGestureActive = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.macGestureStartScale = 0;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.zoomInterval = 5;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.isTaggedPdf = false;\n this.accessibilityTagsHandler = null;\n this.accessibilityTagsCollection = [];\n this.pageRequestListForAccessibilityTags = [];\n this.enableAccessibilityMultiPageRequest = true;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.clientSideRendering = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.focusField = [];\n /**\n * @private\n */\n this.isSkipDocumentPath = false;\n /**\n * @returns {void}\n */\n this.clearSessionStorage = function () {\n var documentId = '';\n var hashId = window.sessionStorage.getItem(_this.documentId + '_hashId');\n var documentLiveCount = window.sessionStorage.getItem(_this.documentId + '_documentLiveCount');\n var serviceURL = window.sessionStorage.getItem(_this.documentId + '_serviceURL');\n if (Browser.isIE || Browser.info.name === 'edge') {\n documentId = decodeURI(hashId);\n }\n else {\n documentId = hashId;\n }\n if (documentId !== null) {\n // eslint-disable-next-line max-len\n var jsonObject = { hashId: documentId, documentLiveCount: documentLiveCount, action: 'Unload', elementId: _this.pdfViewer.element.id };\n var actionName = window.sessionStorage.getItem(_this.documentId + '_unload');\n ;\n if (!isNullOrUndefined(serviceURL)) {\n // eslint-disable-next-line\n var browserSupportsKeepalive = 'keepalive' in new Request('');\n if (browserSupportsKeepalive) {\n // eslint-disable-next-line\n var headerValue = _this.setUnloadRequestHeaders();\n var credentialsData = _this.pdfViewer.ajaxRequestSettings.withCredentials ? 'include' : 'omit';\n fetch(serviceURL + '/' + actionName, {\n method: 'POST',\n credentials: credentialsData,\n headers: headerValue,\n body: JSON.stringify(jsonObject)\n });\n }\n }\n else if (isBlazor()) {\n _this.clearCache(actionName, jsonObject, _this);\n }\n }\n window.sessionStorage.removeItem(_this.documentId + '_annotations_textMarkup');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_shape');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_shape_measure');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_stamp');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_sticky');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_freetext');\n window.sessionStorage.removeItem(_this.documentId + '_formfields');\n window.sessionStorage.removeItem(_this.documentId + '_formDesigner');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_sign');\n window.sessionStorage.removeItem(_this.documentId + '_pagedata');\n window.sessionStorage.removeItem(_this.documentId + '_currentDocument');\n window.sessionStorage.removeItem(_this.documentId + '_hashId');\n window.sessionStorage.removeItem(_this.documentId + '_documentLiveCount');\n window.sessionStorage.removeItem(_this.documentId + '_unload');\n window.sessionStorage.removeItem(_this.documentId + '_serviceURL');\n };\n /**\n * @private\n * @param {MouseEvent} event - Mouse event.\n * @returns {void}\n */\n this.onWindowResize = function (event) {\n var proxy = null;\n proxy = _this;\n if (_this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.right = (proxy.navigationPane.sideBarToolbar ? proxy.navigationPane.getViewerContainerLeft() : 0) + 'px';\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.left = (proxy.navigationPane.commentPanelContainer ? proxy.navigationPane.commentPanelContainer.offsetWidth : 0) + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.left = (proxy.navigationPane.sideBarToolbar ? proxy.navigationPane.getViewerContainerLeft() : 0) + 'px';\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.right = (proxy.navigationPane.commentPanelContainer ? proxy.navigationPane.commentPanelContainer.offsetWidth : 0) + 'px';\n }\n // eslint-disable-next-line\n var viewerElementWidth = (proxy.pdfViewer.element.clientWidth > 0 ? proxy.pdfViewer.element.clientWidth : proxy.pdfViewer.element.style.width);\n // eslint-disable-next-line\n var viewerWidth = (viewerElementWidth - (proxy.navigationPane.sideBarToolbar ? proxy.navigationPane.getViewerContainerLeft() : 0) - (proxy.navigationPane.commentPanelContainer ? proxy.navigationPane.getViewerContainerRight() : 0));\n proxy.viewerContainer.style.width = viewerWidth + 'px';\n if (proxy.pdfViewer.toolbarModule) {\n // eslint-disable-next-line\n var toolbarContainer = isBlazor() ? proxy.pdfViewer.element.querySelector('.e-pv-toolbar') : proxy.getElement('_toolbarContainer');\n var toolbarHeight = 0;\n var formDesignerToolbarHeight = 0;\n if (toolbarContainer) {\n toolbarHeight = toolbarContainer.getBoundingClientRect().height;\n }\n if (proxy.isAnnotationToolbarHidden() || (Browser.isDevice && !_this.pdfViewer.enableDesktopMode)) {\n if (toolbarHeight === 0) {\n if (_this.navigationPane.isNavigationToolbarVisible) {\n // eslint-disable-next-line\n var navigationToolbar = proxy.getElement('_navigationToolbar');\n toolbarHeight = navigationToolbar.getBoundingClientRect().height;\n }\n }\n if (!proxy.isFormDesignerToolbarHidded()) {\n var formDesignerToolbar = proxy.getElement('_formdesigner_toolbar');\n formDesignerToolbarHeight = formDesignerToolbar ? formDesignerToolbar.getBoundingClientRect().height : 0;\n }\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.height = proxy.updatePageHeight(proxy.pdfViewer.element.getBoundingClientRect().height, toolbarHeight + formDesignerToolbarHeight);\n }\n else {\n // eslint-disable-next-line\n var annotationToolbarContainer = isBlazor() ? proxy.pdfViewer.element.querySelector('.e-pv-annotation-toolbar') : proxy.getElement('_annotation_toolbar');\n var annotationToolbarHeight = 0;\n if (annotationToolbarContainer) {\n annotationToolbarHeight = annotationToolbarContainer.getBoundingClientRect().height;\n }\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.height = proxy.updatePageHeight(proxy.pdfViewer.element.getBoundingClientRect().height, toolbarHeight + annotationToolbarHeight);\n }\n }\n else {\n proxy.viewerContainer.style.height = proxy.updatePageHeight(proxy.pdfViewer.element.getBoundingClientRect().height, 0);\n }\n if (proxy.pdfViewer.bookmarkViewModule && (Browser.isDevice && !_this.pdfViewer.enableDesktopMode)) {\n var bookmarkContainer = proxy.getElement('_bookmarks_container');\n if (bookmarkContainer) {\n bookmarkContainer.style.height = proxy.updatePageHeight(proxy.pdfViewer.element.getBoundingClientRect().height, 0);\n }\n }\n if (proxy.viewerContainer.style.height === '0px') {\n if (proxy.pdfViewer.height.toString() === 'auto') {\n proxy.pdfViewer.height = 500;\n proxy.viewerContainer.style.height = proxy.pdfViewer.height + 'px';\n }\n else {\n proxy.viewerContainer.style.height = proxy.pdfViewer.element.style.height;\n }\n }\n if (proxy.viewerContainer.style.width === '0px') {\n if (proxy.pdfViewer.width.toString() === 'auto') {\n proxy.pdfViewer.width = 500;\n proxy.viewerContainer.style.width = proxy.pdfViewer.width + 'px';\n }\n else {\n proxy.viewerContainer.style.width = proxy.pdfViewer.element.style.width;\n }\n }\n proxy.pageContainer.style.width = proxy.viewerContainer.clientWidth + 'px';\n if (proxy.viewerContainer.clientWidth === 0) {\n proxy.pageContainer.style.width = proxy.pdfViewer.element.style.width;\n }\n if (!isBlazor()) {\n if (proxy.pdfViewer.toolbarModule) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.toolbarModule.onToolbarResize((proxy.navigationPane.sideBarToolbar ? proxy.navigationPane.getViewerMainContainerWidth() : proxy.pdfViewer.element.clientWidth));\n }\n }\n if (_this.pdfViewer.enableToolbar && _this.pdfViewer.thumbnailViewModule) {\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.currentPageNumber - 1);\n if (proxy.navigationPane.sideBarToolbar && proxy.navigationPane.sideBarContentContainer) {\n proxy.navigationPane.sideBarContentContainer.style.height = proxy.viewerContainer.style.height;\n }\n }\n if (proxy.pdfViewer.textSearchModule && (!Browser.isDevice || _this.pdfViewer.enableDesktopMode)) {\n proxy.pdfViewer.textSearchModule.textSearchBoxOnResize();\n }\n if (viewerWidth !== 0) {\n if (!proxy.navigationPane.isBookmarkListOpen) {\n proxy.updateZoomValue();\n }\n }\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n proxy.mobileScrollerContainer.style.left = (viewerWidth - parseFloat(proxy.mobileScrollerContainer.style.width)) + 'px';\n proxy.mobilePageNoContainer.style.left = (viewerWidth / 2) - (parseFloat(proxy.mobilePageNoContainer.style.width) / 2) + 'px';\n proxy.mobilePageNoContainer.style.top = (proxy.pdfViewer.element.clientHeight / 2) + 'px';\n proxy.updateMobileScrollerPosition();\n }\n else {\n proxy.navigationPane.setResizeIconTop();\n proxy.navigationPane.setCommentPanelResizeIconTop();\n if (event && event.type === 'resize') {\n proxy.signatureModule.updateCanvasSize();\n }\n }\n if (proxy.navigationPane.sideBarToolbar) {\n proxy.navigationPane.sideBarToolbar.style.height = proxy.viewerContainer.style.height;\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMousedown = function (event) {\n _this.isFreeTextContextMenu = false;\n var isUpdate = false;\n _this.isSelection = true;\n var target = event.target;\n if (event.button === 0 && !_this.getPopupNoteVisibleStatus() && !_this.isClickedOnScrollBar(event, false)) {\n _this.isViewerMouseDown = true;\n // eslint-disable-next-line\n if (event.detail === 1 && target.className !== 'e-pdfviewer-formFields' && target.className !== 'free-text-input') {\n isUpdate = true;\n _this.focusViewerContainer(true);\n }\n _this.scrollPosition = _this.viewerContainer.scrollTop / _this.getZoomFactor();\n _this.mouseX = event.clientX;\n _this.mouseY = event.clientY;\n _this.mouseLeft = event.clientX;\n _this.mouseTop = event.clientY;\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (_this.pdfViewer.textSelectionModule && !_this.isClickedOnScrollBar(event, true) && !_this.isTextSelectionDisabled) {\n if (!isIE && target.className !== 'e-pdfviewer-formFields' && target.className !== 'e-pdfviewer-ListBox' && target.className.indexOf(\"e-pv-formfield-dropdown\") === -1 && target.className !== 'e-pv-formfield-listbox' && target.className !== 'e-pv-formfield-input' && target.className !== 'e-pv-formfield-textarea') {\n event.preventDefault();\n }\n if (target.className !== 'e-pv-droplet') {\n _this.pdfViewer.textSelectionModule.clearTextSelection();\n }\n }\n }\n if (_this.isClickedOnScrollBar(event, false)) {\n _this.isViewerMouseDown = true;\n }\n if (_this.isPanMode) {\n _this.dragX = event.pageX;\n _this.dragY = event.pageY;\n // eslint-disable-next-line max-len\n if (_this.viewerContainer.contains(event.target) && (event.target !== _this.viewerContainer) && (event.target !== _this.pageContainer) && _this.isPanMode) {\n _this.viewerContainer.style.cursor = 'grabbing';\n }\n }\n if (_this.isShapeBasedAnnotationsEnabled() && (_this.isAnnotationDrawn || !(target.className === 'e-pv-page-container' || (target.className === 'foreign-object' && isNaN(_this.activeElements.activePageID))))) {\n _this.diagramMouseDown(event);\n }\n if (_this.pdfViewer.annotation && _this.pdfViewer.annotation.stickyNotesAnnotationModule.accordionContainer) {\n if (!isUpdate) {\n _this.pdfViewer.annotationModule.stickyNotesAnnotationModule.isEditableElement = false;\n _this.updateCommentPanel();\n isUpdate = true;\n }\n }\n if (isBlazor()) {\n _this.mouseDownHandler(event);\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseup = function (event) {\n if (!_this.getPopupNoteVisibleStatus()) {\n if (_this.isViewerMouseDown) {\n if (_this.scrollHoldTimer) {\n clearTimeout(_this.scrollHoldTimer);\n _this.scrollHoldTimer = null;\n }\n // eslint-disable-next-line max-len\n if ((_this.scrollPosition === 0 && _this.viewerContainer.scrollTop === 0) || ((_this.scrollPosition * _this.getZoomFactor()) !== _this.viewerContainer.scrollTop)) {\n _this.pageViewScrollChanged(_this.currentPageNumber);\n }\n }\n var isSignatureFieldReadOnly = false;\n if (event.target) {\n if (event.target.className == 'e-pv-show-designer-name' && event.target.id.split('_', 1) != '') {\n isSignatureFieldReadOnly = document.getElementById(event.target.id.split('_', 1)).disabled;\n }\n if (event.target.className == 'foreign-object' && event.target.children[0]) {\n isSignatureFieldReadOnly = event.target.children[0].disabled;\n }\n }\n if (isSignatureFieldReadOnly && _this.pdfViewer.annotation) {\n _this.pdfViewer.annotation.clearSelection();\n }\n if (_this.isShapeBasedAnnotationsEnabled() && !isSignatureFieldReadOnly && (_this.isAnnotationDrawn || _this.action !== \"DrawTool\")) {\n _this.diagramMouseUp(event);\n if (_this.pdfViewer.annotation) {\n _this.pdfViewer.annotation.onAnnotationMouseUp();\n }\n }\n if (_this.pdfViewer.selectedItems.formFields.length > 0) {\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(_this.pdfViewer.toolbar) && !isNullOrUndefined(_this.pdfViewer.toolbar.formDesignerToolbarModule) && !Browser.isDevice) {\n _this.pdfViewer.toolbar.formDesignerToolbarModule.showHideDeleteIcon(true);\n }\n }\n else {\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(_this.pdfViewer.toolbar) && !isNullOrUndefined(_this.pdfViewer.toolbar.formDesignerToolbarModule) && !Browser.isDevice) {\n _this.pdfViewer.toolbar.formDesignerToolbarModule.showHideDeleteIcon(false);\n }\n }\n _this.isSelection = false;\n // eslint-disable-next-line max-len\n var commentElement = document.getElementById(_this.pdfViewer.element.id + '_commantPanel');\n if (commentElement && commentElement.style.display === 'block') {\n if (_this.pdfViewer.selectedItems) {\n if (_this.pdfViewer.selectedItems.annotations.length !== 0) {\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(_this.pdfViewer.element.id + '_accordionContainer' + _this.pdfViewer.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(_this.pdfViewer.selectedItems.annotations[0].annotName);\n if (commentsDiv) {\n if (!commentsDiv.classList.contains('e-pv-comments-border')) {\n commentsDiv.firstChild.click();\n }\n }\n }\n }\n }\n if (event.button === 0 && !_this.isClickedOnScrollBar(event, false)) {\n // 0 is for left button.\n var eventTarget_1 = event.target;\n var offsetX = event.clientX;\n var offsetY = event.clientY;\n var zoomFactor = _this.getZoomFactor();\n var pageIndex = _this.currentPageNumber;\n if (eventTarget_1) {\n // eslint-disable-next-line\n var pageString = eventTarget_1.id.split('_text_')[1] || eventTarget_1.id.split('_textLayer_')[1] || eventTarget_1.id.split('_annotationCanvas_')[1] || eventTarget_1.id.split('_pageDiv_')[1] || eventTarget_1.id.split('_freeText_')[1] || eventTarget_1.id.split('_')[1];\n // eslint-disable-next-line\n pageIndex = parseInt(pageString);\n if (isNaN(pageIndex) && _this.pdfViewer.formFieldCollection) {\n var formFieldsTargetId = _this.pdfViewer.formFieldCollection.filter(function (targetFormField) { return (targetFormField.id == eventTarget_1.id) || (targetFormField.id == eventTarget_1.id.split('_')[0]); });\n if (formFieldsTargetId.length > 0) {\n pageIndex = formFieldsTargetId[0].pageIndex;\n }\n }\n }\n var pageDiv = _this.getElement('_pageDiv_' + pageIndex);\n if (pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n offsetX = (event.clientX - pageCurrentRect.left) / zoomFactor;\n offsetY = (event.clientY - pageCurrentRect.top) / zoomFactor;\n }\n // eslint-disable-next-line max-len\n if (eventTarget_1 && eventTarget_1.classList && !eventTarget_1.classList.contains('e-pv-hyperlink') && !eventTarget_1.classList.contains('e-pv-page-container')) {\n // eslint-disable-next-line\n _this.pdfViewer.firePageClick(offsetX, offsetY, pageIndex + 1);\n if (_this.pdfViewer.formFieldsModule && !_this.pdfViewer.formDesignerModule) {\n _this.signatureModule.removeFocus();\n }\n }\n if (_this.isTextMarkupAnnotationModule() && !_this.isToolbarInkClicked) {\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.onTextMarkupAnnotationMouseUp(event);\n }\n if (_this.pdfViewer.formDesignerModule && !_this.pdfViewer.annotationModule) {\n _this.pdfViewer.formDesignerModule.updateCanvas(pageIndex);\n }\n // eslint-disable-next-line max-len\n if (_this.viewerContainer.contains(event.target) && (event.target !== _this.viewerContainer) && (event.target !== _this.pageContainer) && _this.isPanMode) {\n _this.viewerContainer.style.cursor = 'move';\n _this.viewerContainer.style.cursor = '-webkit-grab';\n _this.viewerContainer.style.cursor = '-moz-grab';\n _this.viewerContainer.style.cursor = 'grab';\n }\n }\n _this.isViewerMouseDown = false;\n }\n };\n /**\n * @param {any} event - The Wheel event.\n * @returns {void}\n */\n this.detectTouchPad = function (event) {\n // eslint-disable-next-line max-len\n _this.isTouchPad = event.wheelDeltaY ? (event.wheelDeltaY === (event.deltaY * -3) ? true : Math.abs(event.deltaY) < 60) : (event.deltaMode === 0);\n };\n /**\n * @param {any} event - The Wheel event.\n * @returns {void}\n */\n this.handleMacGestureStart = function (event) {\n event.preventDefault();\n event.stopPropagation();\n _this.macGestureStartScale = _this.pdfViewer.magnification.zoomFactor;\n };\n /**\n * @param {any} event - The Wheel event.\n * @returns {void}\n */\n this.handleMacGestureChange = function (event) {\n event.preventDefault();\n event.stopPropagation();\n var macX = event.clientX;\n var macY = event.clientY;\n var scale = Number((_this.macGestureStartScale * event.scale).toFixed(2));\n if (!_this.isMacGestureActive) {\n _this.isMacGestureActive = true;\n _this.pdfViewer.magnification.initiateMouseZoom(macX, macY, scale * 100);\n setTimeout(function () {\n _this.isMacGestureActive = false;\n }, 50);\n }\n };\n /**\n * @param {any} event - The Wheel event.\n * @returns {void}\n */\n this.handleMacGestureEnd = function (event) {\n event.preventDefault();\n event.stopPropagation();\n };\n /**\n * @param {WheelEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseWheel = function (event) {\n _this.isViewerMouseWheel = true;\n if (_this.getRerenderCanvasCreated()) {\n event.preventDefault();\n }\n if (event.ctrlKey) {\n var zoomDifference = 25;\n if (_this.pdfViewer.magnificationModule ? _this.pdfViewer.magnification.zoomFactor : _this.pdfViewer.zoomValue < 1) {\n zoomDifference = 10;\n }\n if (_this.pdfViewer.magnificationModule ? _this.pdfViewer.magnification.zoomFactor : _this.pdfViewer.zoomValue >= 2) {\n zoomDifference = 50;\n }\n if (_this.isTouchPad && !_this.isMacSafari) {\n zoomDifference = zoomDifference / _this.zoomInterval;\n }\n // eslint-disable-next-line\n if (_this.pdfViewer.magnificationModule) {\n if (event.wheelDelta > 0) {\n _this.pdfViewer.magnification.initiateMouseZoom(event.x, event.y, (_this.pdfViewer.magnification.zoomFactor * 100) + zoomDifference);\n }\n else {\n _this.pdfViewer.magnification.initiateMouseZoom(event.x, event.y, (_this.pdfViewer.magnification.zoomFactor * 100) - zoomDifference);\n }\n }\n _this.isTouchPad = false;\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.pageRerenderOnMouseWheel();\n if (event.ctrlKey) {\n event.preventDefault();\n }\n _this.pdfViewer.magnificationModule.fitPageScrollMouseWheel(event);\n }\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n if (_this.isViewerMouseDown) {\n if (!event.target.classList.contains('e-pv-text')) {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseWheel(_this.currentPageNumber - 1);\n }\n }\n }\n };\n /**\n * @param {KeyboardEvent} event - The KeyboardEvent.\n * @returns {void}\n */\n this.onWindowKeyDown = function (event) {\n var isMac = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true : false;\n var isCommandKey = isMac ? event.metaKey : false;\n if ((_this.isFreeTextAnnotationModule() && _this.pdfViewer.annotationModule\n && (_this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus === true\n || _this.pdfViewer.annotationModule.inputElementModule.isInFocus === true))) {\n return;\n }\n if (!event.ctrlKey || !isCommandKey) {\n switch (event.keyCode) {\n case 46:\n var activeElement = document.activeElement;\n if (activeElement.tagName !== 'INPUT' && activeElement.tagName !== 'TEXTAREA' && !activeElement.isContentEditable) {\n _this.DeleteKeyPressed(event);\n }\n break;\n case 27:\n if (_this.pdfViewer.toolbar) {\n _this.pdfViewer.toolbar.addInkAnnotation();\n _this.pdfViewer.toolbar.deSelectCommentAnnotation();\n _this.pdfViewer.toolbar.updateStampItems();\n if (_this.pdfViewer.toolbar.annotationToolbarModule) {\n if (isBlazor()) {\n _this.pdfViewer.toolbar.annotationToolbarModule.deselectAllItemsInBlazor();\n }\n else {\n _this.pdfViewer.toolbar.annotationToolbarModule.deselectAllItems();\n }\n }\n if (_this.pdfViewer.isFormDesignerToolbarVisible && document.getElementById('FormField_helper_html_element')) {\n var formFieldElement = document.getElementById('FormField_helper_html_element');\n if (formFieldElement) {\n formFieldElement.remove();\n }\n }\n _this.pdfViewer.tool = '';\n _this.focusViewerContainer();\n }\n break;\n case 13:\n if (_this.pdfViewer.formDesignerModule) {\n if ((event.type === 'keydown' && event.keyCode === 13)) {\n if (event.target && (event.target.id || event.target.tabIndex) && _this.pdfViewer.formFieldCollections) {\n var fieldId = void 0;\n var currentTarget = event.target;\n if ((event.target.tabIndex && !event.target.id)) {\n currentTarget = event.target.parentElement;\n fieldId = currentTarget.id.split(\"_content_html_element\")[0];\n }\n else {\n currentTarget = event.target;\n fieldId = currentTarget.id.split(\"_\")[0];\n }\n for (var i = 0; i < _this.pdfViewer.formFieldCollections.length; i++) {\n var formfield = _this.pdfViewer.formFieldCollections[parseInt(i.toString(), 10)];\n if (fieldId === formfield.id && (formfield.type === 'SignatureField' || formfield.type === 'InitialField')) {\n _this.pdfViewer.fireFormFieldClickEvent('formFieldClicked', _this.pdfViewer.formFieldCollections[parseInt(i.toString(), 10)]);\n event.preventDefault();\n }\n }\n }\n }\n }\n break;\n case 32:\n if (_this.pdfViewer.formDesignerModule) {\n if ((event.type === 'keydown' && event.keyCode === 32)) {\n if (event.target && event.target.id && _this.pdfViewer.formFields) {\n for (var i = 0; i < _this.pdfViewer.formFields.length; i++) {\n var formField = _this.pdfViewer.formFields[parseInt(i.toString(), 10)];\n if (event.target.id.split(\"_\")[0] === formField.id && (formField.formFieldAnnotationType === \"Checkbox\")) {\n _this.pdfViewer.formDesignerModule.setCheckBoxState(event);\n event.preventDefault();\n break;\n }\n }\n }\n }\n }\n break;\n case 9:\n if (event.target && (event.target.id || event.target.tabIndex) && _this.pdfViewer.formFieldCollections) {\n {\n if (event.target.className === 'e-pv-formfield-input' || event.target.id === _this.pdfViewer.element.id + '_viewerContainer') {\n var nextField = void 0;\n var fieldIndex = void 0;\n var currentTarget_1 = event.target;\n var id_1;\n if ((event.target.tabIndex && !event.target.id)) {\n currentTarget_1 = event.target.parentElement;\n id_1 = currentTarget_1.id.split(\"_content_html_element\")[0];\n }\n else {\n currentTarget_1 = event.target;\n id_1 = currentTarget_1.id.split(\"_input\")[0];\n }\n if (_this.pdfViewer.formDesignerModule) {\n if ((event.shiftKey && event.key === \"Tab\")) {\n fieldIndex = _this.pdfViewer.formFieldCollections.findIndex(function (field) { return field.id === id_1; });\n nextField = fieldIndex > 0 ? _this.pdfViewer.formFieldCollections[fieldIndex - 1] : _this.pdfViewer.formFieldCollections[_this.pdfViewer.formFieldCollections.length - 1];\n }\n else {\n fieldIndex = _this.pdfViewer.formFieldCollections.findIndex(function (field) { return field.id === id_1; });\n nextField = fieldIndex + 1 < _this.pdfViewer.formFieldCollections.length ? _this.pdfViewer.formFieldCollections[fieldIndex + 1] : _this.pdfViewer.formFieldCollections[0];\n }\n _this.pdfViewer.focusFormField(nextField);\n event.preventDefault();\n }\n if (!_this.pdfViewer.formDesigner) {\n if (!(currentTarget_1.className === 'e-pdfviewer-formFields')) {\n if ((event.shiftKey && event.key === \"Tab\")) {\n fieldIndex = _this.pdfViewer.formFieldCollections.findIndex(function (field) { return field.id === currentTarget_1.id; });\n nextField = fieldIndex > 0 ? _this.pdfViewer.formFieldCollections[fieldIndex - 1] : _this.pdfViewer.formFieldCollections[_this.pdfViewer.formFieldCollections.length - 1];\n }\n else {\n fieldIndex = _this.pdfViewer.formFieldCollections.findIndex(function (field) { return field.id === currentTarget_1.id; });\n nextField = fieldIndex + 1 < _this.pdfViewer.formFieldCollections.length ? _this.pdfViewer.formFieldCollections[fieldIndex + 1] : _this.pdfViewer.formFieldCollections[0];\n }\n _this.pdfViewer.focusFormField(nextField);\n event.preventDefault();\n }\n }\n }\n }\n }\n if (event.target && event.target.id && _this.pdfViewer.formFields) {\n for (var i = 0; i < _this.pdfViewer.formFields.length; i++) {\n var formField_1 = _this.pdfViewer.formFields[parseInt(i.toString(), 10)];\n if (event.target.id === formField_1.id) {\n // eslint-disable-next-line\n var field = {\n value: formField_1.value, fontFamily: formField_1.fontFamily, fontSize: formField_1.fontSize, fontStyle: formField_1.fontStyle,\n // eslint-disable-next-line\n color: formField_1.color, backgroundColor: formField_1.backgroundColor, alignment: formField_1.alignment, isReadonly: formField_1.isReadonly, visibility: formField_1.visibility,\n // eslint-disable-next-line\n maxLength: formField_1.maxLength, isRequired: formField_1.isRequired, isPrint: formField_1.isPrint, rotation: formField_1.rotateAngle, tooltip: formField_1.tooltip,\n // eslint-disable-next-line\n options: formField_1.options, isChecked: formField_1.isChecked, isSelected: formField_1.isSelected\n };\n _this.pdfViewer.fireFocusOutFormField(field, formField_1.pageIndex);\n }\n }\n }\n break;\n }\n }\n };\n /**\n * @param {KeyboardEvent} event - The KeyboardEvent.\n * @returns {void}\n */\n this.viewerContainerOnKeyDown = function (event) {\n var isMac = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true : false;\n var isCommandKey = isMac ? event.metaKey : false;\n if ((_this.isFreeTextAnnotationModule() && _this.pdfViewer.annotationModule\n && (_this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus === true\n || _this.pdfViewer.annotationModule.inputElementModule.isInFocus === true))) {\n return;\n }\n var activeElement = document.activeElement;\n if ((event.ctrlKey || isCommandKey) && ((activeElement.tagName !== 'INPUT' && activeElement.tagName !== 'TEXTAREA' && !activeElement.isContentEditable))) {\n // add keycodes if shift key is used.\n if ((event.shiftKey && !isMac) || (isMac && !event.shiftKey)) {\n switch (event.keyCode) {\n case 38: // up arrow\n case 33: // page up\n event.preventDefault();\n if (_this.currentPageNumber !== 1) {\n _this.updateScrollTop(0);\n }\n break;\n case 40: // down arrow\n case 34: // page down\n event.preventDefault();\n if (_this.currentPageNumber !== _this.pageCount) {\n _this.updateScrollTop(_this.pageCount - 1);\n }\n break;\n default:\n break;\n }\n }\n switch (event.keyCode) {\n case 79: // o key\n if (_this.pdfViewer.toolbarModule && _this.pdfViewer.enableToolbar) {\n _this.pdfViewer.toolbarModule.openFileDialogBox(event);\n }\n break;\n case 67: // c key\n if (_this.pdfViewer.textSelectionModule && _this.pdfViewer.enableTextSelection && !_this.isTextSelectionDisabled) {\n event.preventDefault();\n _this.pdfViewer.textSelectionModule.copyText();\n }\n if (_this.pdfViewer.selectedItems.annotations.length || _this.pdfViewer.selectedItems.formFields.length) {\n _this.pdfViewer.copy();\n _this.contextMenuModule.previousAction = 'Copy';\n }\n break;\n case 70: // f key\n if (_this.pdfViewer.textSearchModule && _this.pdfViewer.enableTextSearch) {\n event.preventDefault();\n _this.pdfViewer.toolbarModule.textSearchButtonHandler();\n }\n break;\n case 80: // p key\n if (_this.pdfViewer.printModule && _this.pdfViewer.enablePrint) {\n event.preventDefault();\n _this.pdfViewer.print.print();\n }\n break;\n case 90: //z key\n if (_this.pdfViewer.annotationModule) {\n _this.pdfViewer.annotationModule.undo();\n }\n break;\n case 88: //x key\n if (_this.pdfViewer.selectedItems.annotations.length || _this.pdfViewer.selectedItems.formFields.length) {\n _this.pdfViewer.cut();\n _this.contextMenuModule.previousAction = 'Cut';\n }\n break;\n case 89: //y key\n if (_this.pdfViewer.annotationModule) {\n _this.pdfViewer.annotationModule.redo();\n }\n break;\n case 86: //v key\n // eslint-disable-next-line max-len\n if ((_this.pdfViewer.annotation && _this.pdfViewer.annotation.isShapeCopied) || (_this.pdfViewer.formFields && _this.pdfViewer.formDesigner && _this.pdfViewer.formDesigner.isShapeCopied)) {\n var isSearchboxDialogOpen = void 0;\n var searchBoxId = document.getElementById(_this.pdfViewer.element.id + \"_search_box\");\n if (searchBoxId) {\n isSearchboxDialogOpen = searchBoxId.style.display !== \"none\";\n }\n if (!isSearchboxDialogOpen && _this.pdfViewer.formDesigner && !_this.pdfViewer.formDesigner.isPropertyDialogOpen) {\n _this.pdfViewer.paste();\n _this.contextMenuModule.previousAction = 'Paste';\n }\n }\n break;\n default:\n break;\n }\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.magnifyBehaviorKeyDown(event);\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMousemove = function (event) {\n _this.mouseX = event.clientX;\n _this.mouseY = event.clientY;\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n var target = event.target;\n if (_this.action === 'Drag') {\n event.preventDefault();\n }\n // eslint-disable-next-line max-len\n if (_this.isViewerMouseDown && !(_this.action === 'Perimeter' || _this.action === 'Polygon' || _this.action === 'Line' || _this.action === 'DrawTool' || _this.action === 'Distance')) {\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.textSelectionModule && _this.pdfViewer.enableTextSelection && !_this.isTextSelectionDisabled && !_this.getPopupNoteVisibleStatus()) {\n // text selection won't perform if we start the selection from hyperlink content by commenting this line.\n // this region block the toc/hyperlink navigation on sometimes.\n // if ((event.target as HTMLElement).classList.contains('e-pv-hyperlink') && this.pdfViewer.linkAnnotationModule) {\n // this.pdfViewer.linkAnnotationModule.modifyZindexForHyperlink((event.target as HTMLElement), true);\n // }\n if (!isIE) {\n if (event.target.className != 'e-pdfviewer-formFields')\n event.preventDefault();\n _this.mouseX = event.clientX;\n _this.mouseY = event.clientY;\n // eslint-disable-next-line\n var annotationModule = _this.pdfViewer.annotationModule;\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.isDropletClicked && annotationModule.textMarkupAnnotationModule.isEnableTextMarkupResizer(annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode)) {\n annotationModule.textMarkupAnnotationModule.textSelect(event.target, _this.mouseX, _this.mouseY);\n }\n else {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseMove(event.target, _this.mouseX, _this.mouseY);\n }\n }\n else {\n var selection = window.getSelection();\n if (!selection.type && !selection.isCollapsed && selection.anchorNode !== null) {\n _this.pdfViewer.textSelectionModule.isTextSelection = true;\n }\n }\n }\n else if (_this.skipPreventDefault(target)) {\n event.preventDefault();\n }\n }\n if (_this.isTextMarkupAnnotationModule() && !_this.getPopupNoteVisibleStatus()) {\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.onTextMarkupAnnotationMouseMove(event);\n }\n if (_this.isPanMode) {\n _this.panOnMouseMove(event);\n }\n if (_this.isShapeBasedAnnotationsEnabled()) {\n var canvas = void 0;\n // eslint-disable-next-line max-len\n if (event.target && (event.target.id.indexOf('_text') > -1 || (event.target.parentElement.classList.contains('foreign-object')) || event.target.id.indexOf('_annotationCanvas') > -1 || event.target.classList.contains('e-pv-hyperlink')) && _this.pdfViewer.annotation || event.target.classList.contains('e-pdfviewer-formFields')) {\n var pageIndex = _this.pdfViewer.annotation.getEventPageNumber(event);\n var diagram = document.getElementById(_this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n if (diagram) {\n var canvas1 = diagram.getBoundingClientRect();\n var left = canvas1.x ? canvas1.x : canvas1.left;\n var top_1 = canvas1.y ? canvas1.y : canvas1.top;\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.annotationModule.stampAnnotationModule.currentStampAnnotation && _this.pdfViewer.annotationModule.stampAnnotationModule.currentStampAnnotation.shapeAnnotationType === 'Image') {\n canvas = new Rect(left, top_1, canvas1.width - 10, canvas1.height - 10);\n }\n else {\n canvas = new Rect(left + 1, top_1 + 1, canvas1.width - 3, canvas1.height - 3);\n }\n }\n }\n else if (!_this.pdfViewer.annotationModule && _this.pdfViewer.formDesignerModule) {\n var pageIndex = _this.pdfViewer.formDesignerModule.getEventPageNumber(event);\n var diagram = document.getElementById(_this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n if (diagram) {\n var canvas1 = diagram.getBoundingClientRect();\n var left = canvas1.x ? canvas1.x : canvas1.left;\n var top_2 = canvas1.y ? canvas1.y : canvas1.top;\n canvas = new Rect(left + 10, top_2 + 10, canvas1.width - 10, canvas1.height - 10);\n }\n }\n // eslint-disable-next-line max-len\n var stampModule = _this.pdfViewer.annotationModule ? _this.pdfViewer.annotationModule.stampAnnotationModule : null;\n if (canvas && canvas.containsPoint({ x: _this.mouseX, y: _this.mouseY }) && !(stampModule && stampModule.isStampAnnotSelected)) {\n _this.diagramMouseMove(event);\n _this.annotationEvent = event;\n }\n else {\n _this.diagramMouseLeave(event);\n if (_this.isAnnotationDrawn && !_this.pdfViewer.isFormDesignerToolbarVisible) {\n _this.diagramMouseUp(event);\n _this.isAnnotationAdded = true;\n }\n }\n if (_this.pdfViewer.enableStampAnnotations) {\n if (stampModule && stampModule.isStampAnnotSelected) {\n _this.pdfViewer.tool = 'Stamp';\n _this.tool = new StampTool(_this.pdfViewer, _this);\n _this.isMouseDown = true;\n stampModule.isStampAnnotSelected = false;\n stampModule.isNewStampAnnot = true;\n }\n }\n if (_this.isSignatureAdded && _this.pdfViewer.enableHandwrittenSignature) {\n _this.pdfViewer.tool = 'Stamp';\n _this.tool = new StampTool(_this.pdfViewer, _this);\n _this.isMouseDown = true;\n _this.isSignatureAdded = false;\n _this.isNewSignatureAdded = true;\n }\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.panOnMouseMove = function (event) {\n var isStampMode = false;\n // eslint-disable-next-line max-len\n if (_this.action === 'Ink' || _this.action === \"Line\" || _this.action === 'Perimeter' || _this.action === 'Polygon' || _this.action === 'DrawTool' || _this.action === 'Drag' || _this.action.indexOf('Rotate') !== -1 || _this.action.indexOf('Resize') !== -1) {\n isStampMode = true;\n }\n // eslint-disable-next-line max-len\n if (_this.viewerContainer.contains(event.target) && (event.target !== _this.viewerContainer) && (event.target !== _this.pageContainer) && !isStampMode) {\n if (_this.isViewerMouseDown) {\n var deltaX = _this.dragX - event.pageX;\n var deltaY = _this.dragY - event.pageY;\n _this.viewerContainer.scrollTop = _this.viewerContainer.scrollTop + deltaY;\n _this.viewerContainer.scrollLeft = _this.viewerContainer.scrollLeft + deltaX;\n _this.viewerContainer.style.cursor = 'move';\n _this.viewerContainer.style.cursor = '-webkit-grabbing';\n _this.viewerContainer.style.cursor = '-moz-grabbing';\n _this.viewerContainer.style.cursor = 'grabbing';\n _this.dragX = event.pageX;\n _this.dragY = event.pageY;\n }\n else {\n if (!_this.navigationPane.isNavigationPaneResized) {\n _this.viewerContainer.style.cursor = 'move';\n _this.viewerContainer.style.cursor = '-webkit-grab';\n _this.viewerContainer.style.cursor = '-moz-grab';\n _this.viewerContainer.style.cursor = 'grab';\n }\n }\n }\n else {\n if (!_this.navigationPane.isNavigationPaneResized) {\n _this.viewerContainer.style.cursor = 'auto';\n }\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseLeave = function (event) {\n if (_this.isViewerMouseDown) {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseLeave(event);\n }\n }\n if (_this.pdfViewer.textSelectionModule && _this.pdfViewer.textSelectionModule.isTextSelection) {\n event.preventDefault();\n }\n if (_this.action === 'Ink') {\n _this.diagramMouseUp(event);\n _this.isAnnotationAdded = true;\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseEnter = function (event) {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n _this.pdfViewer.textSelectionModule.clear();\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseOver = function (event) {\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (_this.isViewerMouseDown) {\n if (!isIE) {\n event.preventDefault();\n }\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnClick = function (event) {\n if (event.type === 'dblclick') {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled && !_this.getCurrentTextMarkupAnnotation()) {\n if (event.target.classList.contains('e-pv-text')) {\n _this.isViewerContainerDoubleClick = true;\n if (!_this.getTextMarkupAnnotationMode()) {\n var pageNumber = parseFloat(event.target.id.split('_')[2]);\n _this.pdfViewer.fireTextSelectionStart(pageNumber + 1);\n }\n _this.pdfViewer.textSelectionModule.selectAWord(event.target, event.clientX, event.clientY, false);\n if (_this.pdfViewer.contextMenuSettings.contextMenuAction === 'MouseUp') {\n _this.pdfViewer.textSelectionModule.calculateContextMenuPosition(event.clientY, event.clientX);\n }\n if (!_this.getTextMarkupAnnotationMode()) {\n _this.pdfViewer.textSelectionModule.maintainSelectionOnZoom(true, false);\n _this.dblClickTimer = setTimeout(function () {\n _this.applySelection();\n }, 100);\n _this.pdfViewer.textSelectionModule.fireTextSelectEnd();\n }\n else if (_this.isTextMarkupAnnotationModule() && _this.getTextMarkupAnnotationMode()) {\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations(_this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode);\n }\n }\n }\n else if (_this.getCurrentTextMarkupAnnotation()) {\n // this.pdfViewer.annotationModule.showAnnotationPopup(event);\n }\n if (_this.action && (_this.action === 'Perimeter' || _this.action === 'Polygon') && _this.tool) {\n _this.eventArgs.position = _this.currentPosition;\n _this.getMouseEventArgs(_this.currentPosition, _this.eventArgs, event, _this.eventArgs.source);\n var ctrlKey = _this.isMetaKey(event);\n var info = { ctrlKey: event.ctrlKey, shiftKey: event.shiftKey };\n _this.eventArgs.info = info;\n _this.eventArgs.clickCount = event.detail;\n _this.tool.mouseUp(_this.eventArgs, true);\n }\n if ((_this.pdfViewer.selectedItems ||\n (_this.pdfViewer.annotation && _this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation)) && !_this.pdfViewer.annotationSettings.isLock) {\n // eslint-disable-next-line\n var currentAnnotation = _this.pdfViewer.selectedItems.annotations[0];\n if (_this.pdfViewer.selectedItems.annotations.length !== 0 && !(currentAnnotation.annotationSettings.isLock || currentAnnotation.isLock)) {\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.annotationModule && !currentAnnotation.formFieldAnnotationType) {\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.annotationSelect(currentAnnotation.annotName, currentAnnotation.pageIndex, currentAnnotation, null, true);\n if (_this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus === false) {\n if (_this.isFreeTextAnnotation(_this.pdfViewer.selectedItems.annotations) === true && !_this.pdfViewer.selectedItems.annotations[0].isLock) {\n var elmtPosition = {};\n elmtPosition.x = _this.pdfViewer.selectedItems.annotations[0].bounds.x;\n elmtPosition.y = _this.pdfViewer.selectedItems.annotations[0].bounds.y;\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotation.freeTextAnnotationModule.addInuptElemet(elmtPosition, _this.pdfViewer.selectedItems.annotations[0]);\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].enableShapeLabel === true) {\n var elmtPosition = {};\n elmtPosition.x = _this.pdfViewer.selectedItems.annotations[0].bounds.x;\n elmtPosition.y = _this.pdfViewer.selectedItems.annotations[0].bounds.y;\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotation.inputElementModule.editLabel(elmtPosition, _this.pdfViewer.selectedItems.annotations[0]);\n }\n else {\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(_this.pdfViewer.element.id + '_accordionContainer' + _this.pdfViewer.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n if (_this.pdfViewer.toolbarModule && _this.pdfViewer.isFormDesignerToolbarVisible && _this.pdfViewer.enableAnnotationToolbar && !_this.pdfViewer.isAnnotationToolbarVisible && !isNullOrUndefined(_this.pdfViewer.toolbarModule.annotationToolbarModule)) {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(_this.pdfViewer.toolbarModule.annotationItem);\n }\n var commentsDiv = document.getElementById(_this.pdfViewer.selectedItems.annotations[0].annotName);\n if (commentsDiv) {\n if (!commentsDiv.classList.contains('e-pv-comments-border')) {\n commentsDiv.firstChild.click();\n }\n }\n }\n }\n }\n }\n else {\n // eslint-disable-next-line max-len\n var annotation = _this.pdfViewer.annotation;\n var annotationModule = _this.pdfViewer.annotationModule;\n if (annotation && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n // eslint-disable-next-line\n var annotation_1 = _this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.annotationSelect(annotation_1.annotName, _this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage, annotation_1, null, true);\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(_this.pdfViewer.element.id + '_accordionContainer' + _this.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var comments = document.getElementById(annotation_1.annotName);\n if (comments) {\n comments.firstChild.click();\n }\n }\n }\n }\n if (_this.pdfViewer.designerMode && _this.pdfViewer.selectedItems.formFields.length > 0) {\n var eventArgs = { name: \"formFieldDoubleClick\", field: _this.pdfViewer.selectedItems.formFields[0], cancel: false };\n _this.pdfViewer.fireFormFieldDoubleClickEvent(eventArgs);\n if (!eventArgs.cancel) {\n _this.pdfViewer.formDesigner.createPropertiesWindow();\n }\n }\n }\n else {\n if (event.detail === 3) {\n if (_this.isViewerContainerDoubleClick) {\n clearTimeout(_this.dblClickTimer);\n _this.isViewerContainerDoubleClick = false;\n }\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled && !_this.getTextMarkupAnnotationMode()) {\n _this.pdfViewer.textSelectionModule.selectEntireLine(event);\n _this.pdfViewer.textSelectionModule.maintainSelectionOnZoom(true, false);\n _this.pdfViewer.textSelectionModule.fireTextSelectEnd();\n _this.applySelection();\n }\n }\n }\n };\n /**\n * @param {DragEvent} event - The DragEvent.\n * @returns {void}\n */\n this.viewerContainerOnDragStart = function (event) {\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (!isIE) {\n event.preventDefault();\n }\n };\n // eslint-disable-next-line\n this.viewerContainerOnContextMenuClick = function (event) {\n _this.isViewerMouseDown = false;\n };\n // eslint-disable-next-line\n this.onWindowMouseUp = function (event) {\n _this.isFreeTextContextMenu = false;\n _this.isNewStamp = false;\n _this.signatureAdded = false;\n // eslint-disable-next-line\n var annotationModule = _this.pdfViewer.annotationModule;\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.isEnableTextMarkupResizer(annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode)) {\n // eslint-disable-next-line\n var modules = annotationModule.textMarkupAnnotationModule;\n modules.isLeftDropletClicked = false;\n modules.isDropletClicked = false;\n modules.isRightDropletClicked = false;\n if (!modules.currentTextMarkupAnnotation && window.getSelection().anchorNode === null) {\n modules.showHideDropletDiv(true);\n }\n else if (!modules.currentTextMarkupAnnotation && modules.currentTextMarkupAddMode === '') {\n modules.isTextMarkupAnnotationMode = false;\n }\n }\n if (!_this.getPopupNoteVisibleStatus()) {\n if (event.button === 0) {\n // eslint-disable-next-line max-len\n if (_this.isNewFreeTextAnnotation()) {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled && !_this.getTextMarkupAnnotationMode()) {\n // eslint-disable-next-line max-len\n if (event.detail === 1 && !_this.viewerContainer.contains(event.target) && !_this.contextMenuModule.contextMenuElement.contains(event.target)) {\n if (window.getSelection().anchorNode !== null) {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseup(event);\n }\n }\n // eslint-disable-next-line\n var target = event.target;\n if (_this.viewerContainer.contains(event.target) && target.className !== 'e-pdfviewer-formFields' && target.className !== 'e-pv-formfield-input' && target.className !== 'e-pv-formfield-textarea') {\n if (!_this.isClickedOnScrollBar(event, true) && !_this.isScrollbarMouseDown) {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseup(event);\n }\n else {\n if (window.getSelection().anchorNode !== null) {\n _this.pdfViewer.textSelectionModule.applySpanForSelection();\n }\n }\n }\n }\n else if (_this.getTextMarkupAnnotationMode()) {\n // eslint-disable-next-line\n var viewerElement = _this.pdfViewer.element;\n // eslint-disable-next-line\n var targetElement = event.target;\n if (viewerElement && targetElement) {\n if (viewerElement.id.split('_')[0] === targetElement.id.split('_')[0] && targetElement.id.split('_')[1] !== 'commenttextbox') {\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations(_this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode);\n }\n }\n }\n }\n }\n else if (event.button === 2) {\n if (_this.viewerContainer.contains(event.target) && _this.skipPreventDefault(event.target)) {\n if (_this.checkIsNormalText()) {\n window.getSelection().removeAllRanges();\n }\n }\n }\n if (_this.isViewerMouseDown) {\n _this.isViewerMouseDown = false;\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n _this.pdfViewer.textSelectionModule.clear();\n _this.pdfViewer.textSelectionModule.selectionStartPage = null;\n }\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n return true;\n }\n }\n };\n /**\n * @param {TouchEvent} event - The DragEvent.\n * @returns {void}\n */\n this.onWindowTouchEnd = function (event) {\n _this.signatureAdded = false;\n // eslint-disable-next-line max-len\n if (!_this.pdfViewer.element.contains(event.target) && !_this.contextMenuModule.contextMenuElement.contains(event.target)) {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n _this.pdfViewer.textSelectionModule.clearTextSelection();\n }\n }\n };\n /**\n * @param {TouchEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnTouchStart = function (event) {\n var touchPoints = event.touches;\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.setTouchPoints(touchPoints[0].clientX, touchPoints[0].clientY);\n }\n var target = event.target;\n // eslint-disable-next-line max-len\n if (touchPoints.length === 1 && !(target.classList.contains('e-pv-hyperlink')) && _this.skipPreventDefault(target)) {\n _this.preventTouchEvent(event);\n }\n if (event.touches.length === 1 && _this.isTextMarkupAnnotationModule() && !_this.getPopupNoteVisibleStatus()) {\n if (!_this.isToolbarInkClicked) {\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.onTextMarkupAnnotationTouchEnd(event);\n }\n }\n _this.touchClientX = touchPoints[0].clientX;\n _this.touchClientY = touchPoints[0].clientY;\n _this.scrollY = touchPoints[0].clientY;\n _this.previousTime = new Date().getTime();\n // eslint-disable-next-line max-len\n if (touchPoints.length === 1 && !(event.target.classList.contains('e-pv-touch-select-drop') || event.target.classList.contains('e-pv-touch-ellipse'))) {\n if ((Browser.isDevice && !_this.pdfViewer.enableDesktopMode) && _this.pageCount > 0 && !_this.isThumb && !(event.target.classList.contains('e-pv-hyperlink'))) {\n _this.handleTaps(touchPoints, event);\n }\n if (!isBlazor() || !Browser.isDevice || _this.pdfViewer.enableDesktopMode) {\n _this.handleTextBoxTaps(touchPoints);\n }\n var designerMode = _this.isDesignerMode(target);\n if (designerMode) {\n _this.contextMenuModule.close();\n // event.preventDefault();\n if (!_this.isLongTouchPropagated) {\n _this.longTouchTimer = setTimeout(function () {\n if (!_this.isMoving) {\n _this.isTouchDesignerMode = true;\n /* eslint-disable */\n _this.contextMenuModule.open(_this.touchClientY, _this.touchClientX, _this.viewerContainer);\n /* eslint-enable */\n }\n }, 1000);\n }\n _this.isLongTouchPropagated = true;\n _this.isMoving = false;\n }\n else if ((_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled)) {\n _this.pdfViewer.textSelectionModule.clearTextSelection();\n _this.contextMenuModule.close();\n // event.preventDefault();\n if (!_this.isLongTouchPropagated) {\n _this.longTouchTimer = setTimeout(function () {\n _this.viewerContainerOnLongTouch(event);\n }, 1000);\n }\n _this.isLongTouchPropagated = true;\n }\n }\n // eslint-disable-next-line\n var toolbarModule = _this.pdfViewer.toolbarModule ? _this.pdfViewer.toolbarModule.annotationToolbarModule : 'null';\n if (target.classList.contains('e-pv-text') && (!toolbarModule || !toolbarModule.textMarkupToolbarElement || toolbarModule.textMarkupToolbarElement.children.length === 0)) {\n target.classList.add('e-pv-text-selection-none');\n }\n _this.diagramMouseDown(event);\n // eslint-disable-next-line max-len\n if (_this.action === 'Perimeter' || _this.action === 'Distance' || _this.action === 'Line' || _this.action === 'Polygon' || _this.action === 'DrawTool' || _this.action === 'Drag' || _this.action.indexOf('Rotate') !== -1 || _this.action.indexOf('Resize') !== -1) {\n event.preventDefault();\n }\n };\n /**\n * @param {TouchEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnLongTouch = function (event) {\n _this.touchClientX = event.touches[0].clientX;\n _this.touchClientY = event.touches[0].clientY;\n event.preventDefault();\n if (_this.pdfViewer.textSelectionModule) {\n var target = event.target;\n if (target.classList.contains('e-pv-text-selection-none')) {\n target.classList.remove('e-pv-text-selection-none');\n }\n _this.pdfViewer.textSelectionModule.initiateTouchSelection(event, _this.touchClientX, _this.touchClientY);\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n clearTimeout(_this.singleTapTimer);\n _this.tapCount = 0;\n }\n }\n };\n /**\n * @param {PointerEvent} event - The PointerEvent.\n * @returns {void}\n */\n this.viewerContainerOnPointerDown = function (event) {\n if (event.pointerType === 'touch') {\n _this.pointerCount++;\n if (_this.pointerCount <= 2) {\n event.preventDefault();\n _this.pointersForTouch.push(event);\n if (_this.pointerCount === 2) {\n _this.pointerCount = 0;\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.setTouchPoints(event.clientX, event.clientY);\n }\n }\n }\n };\n /**\n * @param {TouchEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnTouchMove = function (event) {\n if (_this.action === 'Drag') {\n _this.isMoving = true;\n }\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n clearTimeout(_this.singleTapTimer);\n _this.singleTapTimer = null;\n _this.tapCount = 0;\n }\n _this.preventTouchEvent(event);\n if (_this.isToolbarInkClicked) {\n event.preventDefault();\n }\n var touchPoints = event.touches;\n if (_this.pdfViewer.magnificationModule) {\n _this.isTouchScrolled = true;\n if (touchPoints.length > 1 && _this.pageCount > 0) {\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n _this.isTouchScrolled = false;\n }\n if (_this.pdfViewer.enablePinchZoom) {\n // eslint-disable-next-line max-len\n _this.pdfViewer.magnificationModule.initiatePinchMove(touchPoints[0].clientX, touchPoints[0].clientY, touchPoints[1].clientX, touchPoints[1].clientY);\n }\n }\n else if (touchPoints.length === 1 && _this.getPagesPinchZoomed()) {\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n _this.isTouchScrolled = false;\n }\n _this.pdfViewer.magnificationModule.pinchMoveScroll();\n }\n }\n _this.mouseX = touchPoints[0].clientX;\n _this.mouseY = touchPoints[0].clientY;\n var canvas;\n // eslint-disable-next-line max-len\n if (event.target && (event.target.id.indexOf('_text') > -1 || event.target.id.indexOf('_annotationCanvas') > -1 || event.target.classList.contains('e-pv-hyperlink')) && _this.pdfViewer.annotation) {\n var pageIndex = _this.pdfViewer.annotation.getEventPageNumber(event);\n var diagram = document.getElementById(_this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n if (diagram) {\n var canvas1 = diagram.getBoundingClientRect();\n var left = canvas1.x ? canvas1.x : canvas1.left;\n var top_3 = canvas1.y ? canvas1.y : canvas1.top;\n canvas = new Rect(left + 10, top_3 + 10, canvas1.width - 10, canvas1.height - 10);\n }\n }\n if (canvas && canvas.containsPoint({ x: _this.mouseX, y: _this.mouseY }) || _this.action === 'Ink') {\n _this.diagramMouseMove(event);\n _this.annotationEvent = event;\n }\n else {\n _this.diagramMouseLeave(event);\n if (_this.isAnnotationDrawn) {\n _this.diagramMouseUp(event);\n _this.isAnnotationAdded = true;\n }\n }\n touchPoints = null;\n };\n /**\n * @param {PointerEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnPointerMove = function (event) {\n if (event.pointerType === 'touch' && _this.pageCount > 0) {\n event.preventDefault();\n if (_this.pointersForTouch.length === 2) {\n for (var i = 0; i < _this.pointersForTouch.length; i++) {\n if (event.pointerId === _this.pointersForTouch[parseInt(i.toString(), 10)].pointerId) {\n _this.pointersForTouch[parseInt(i.toString(), 10)] = event;\n break;\n }\n }\n if (_this.pdfViewer.magnificationModule && _this.pdfViewer.enablePinchZoom) {\n // eslint-disable-next-line max-len\n _this.pdfViewer.magnificationModule.initiatePinchMove(_this.pointersForTouch[0].clientX, _this.pointersForTouch[0].clientY, _this.pointersForTouch[1].clientX, _this.pointersForTouch[1].clientY);\n }\n }\n }\n };\n /**\n * @param {TouchEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnTouchEnd = function (event) {\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.pinchMoveEnd();\n }\n if (event.cancelable && !event.target.classList.contains('e-pv-touch-ellipse') && _this.pdfViewer.textSelectionModule && _this.pdfViewer.textSelectionModule.isTextSelection) {\n event.preventDefault();\n }\n _this.isLongTouchPropagated = false;\n clearInterval(_this.longTouchTimer);\n _this.longTouchTimer = null;\n if ((Browser.isDevice && !_this.isDeviceiOS && !_this.pdfViewer.enableDesktopMode) && _this.isTouchScrolled) {\n _this.currentTime = new Date().getTime();\n var duration = _this.currentTime - _this.previousTime;\n // eslint-disable-next-line\n var difference = _this.scrollY - event.changedTouches[0].pageY;\n // eslint-disable-next-line\n var speed = (difference) / (duration);\n if (Math.abs(speed) > 1.5) {\n // eslint-disable-next-line\n var scrollTop = (difference) + ((duration) * speed);\n if (scrollTop > 0) {\n _this.viewerContainer.scrollTop += scrollTop;\n _this.updateMobileScrollerPosition();\n }\n }\n }\n _this.diagramMouseUp(event);\n _this.renderStampAnnotation(event);\n if (!Browser.isDevice) {\n _this.focusViewerContainer();\n }\n };\n /**\n * @param {PointerEvent} event - The PointerEvent.\n * @returns {void}\n */\n this.viewerContainerOnPointerEnd = function (event) {\n if (event.pointerType === 'touch') {\n event.preventDefault();\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.pinchMoveEnd();\n }\n _this.pointersForTouch = [];\n _this.pointerCount = 0;\n }\n };\n // eslint-disable-next-line\n this.viewerContainerOnScroll = function (event) {\n var proxy = null;\n proxy = _this;\n var allowServerDataBind = proxy.pdfViewer.allowServerDataBinding;\n proxy.pdfViewer.enableServerDataBinding(false);\n var scrollposX = 0;\n var scrollposY = 0;\n if (event.touches && (Browser.isDevice && !_this.pdfViewer.enableDesktopMode)) {\n // eslint-disable-next-line\n var ratio = (_this.viewerContainer.scrollHeight - _this.viewerContainer.clientHeight) / (_this.viewerContainer.clientHeight - _this.toolbarHeight);\n if (_this.isThumb) {\n _this.ispageMoved = true;\n event.preventDefault();\n _this.mobilePageNoContainer.style.display = 'block';\n scrollposX = event.touches[0].pageX - _this.scrollX;\n scrollposY = event.touches[0].pageY - _this.viewerContainer.offsetTop;\n _this.viewerContainer.scrollTop = scrollposY * ratio;\n // eslint-disable-next-line\n var containerValue = event.touches[0].pageY;\n // eslint-disable-next-line\n var toolbarHeight = _this.pdfViewer.toolbarModule ? 0 : 50;\n if (_this.viewerContainer.scrollTop !== 0 && ((containerValue) <= (_this.viewerContainer.clientHeight - toolbarHeight))) {\n _this.mobileScrollerContainer.style.top = containerValue + 'px';\n }\n }\n else if (event.touches[0].target.className !== 'e-pv-touch-ellipse') {\n if (!(_this.isWebkitMobile && (Browser.isDevice && !_this.pdfViewer.enableDesktopMode))) {\n _this.mobilePageNoContainer.style.display = 'none';\n scrollposY = _this.touchClientY - event.touches[0].pageY;\n scrollposX = _this.touchClientX - event.touches[0].pageX;\n _this.viewerContainer.scrollTop = _this.viewerContainer.scrollTop + (scrollposY);\n _this.viewerContainer.scrollLeft = _this.viewerContainer.scrollLeft + (scrollposX);\n }\n // eslint-disable-next-line\n _this.updateMobileScrollerPosition();\n _this.touchClientY = event.touches[0].pageY;\n _this.touchClientX = event.touches[0].pageX;\n }\n }\n if (_this.scrollHoldTimer) {\n clearTimeout(_this.scrollHoldTimer);\n }\n var pageIndex = _this.currentPageNumber;\n _this.scrollHoldTimer = null;\n _this.contextMenuModule.close();\n var verticalScrollValue = _this.viewerContainer.scrollTop;\n // eslint-disable-next-line max-len\n for (var i = 0; i < _this.pageCount; i++) {\n if (_this.pageSize[parseInt(i.toString(), 10)] != null) {\n var pageHeight = _this.getPageHeight(i);\n if (pageHeight < 150) {\n _this.pageStopValue = 75;\n }\n else if (pageHeight >= 150 && pageHeight < 300) {\n _this.pageStopValue = 125;\n }\n else if (pageHeight >= 300 && pageHeight < 500) {\n _this.pageStopValue = 200;\n }\n else {\n _this.pageStopValue = 300;\n }\n // eslint-disable-next-line max-len\n if ((verticalScrollValue + _this.pageStopValue) <= (_this.getPageTop(i) + pageHeight)) {\n _this.currentPageNumber = i + 1;\n _this.pdfViewer.currentPageNumber = i + 1;\n break;\n }\n }\n }\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.magnificationModule && _this.pdfViewer.magnificationModule.fitType === 'fitToPage' && _this.currentPageNumber > 0) {\n if (_this.pageSize[_this.currentPageNumber - 1]) {\n if (!_this.isPanMode && (!Browser.isDevice && _this.pdfViewer.enableDesktopMode)) {\n _this.viewerContainer.scrollTop = _this.pageSize[_this.currentPageNumber - 1].top * _this.getZoomFactor();\n }\n }\n }\n _this.renderElementsVirtualScroll(_this.currentPageNumber);\n // eslint-disable-next-line max-len\n if (!_this.isViewerMouseDown && !_this.getPinchZoomed() && !_this.getPinchScrolled() && !_this.getPagesPinchZoomed() || _this.isViewerMouseWheel) {\n _this.pageViewScrollChanged(_this.currentPageNumber);\n _this.isViewerMouseWheel = false;\n }\n else {\n _this.showPageLoadingIndicator(_this.currentPageNumber - 1, false);\n }\n if (_this.pdfViewer.toolbarModule) {\n if (!isBlazor()) {\n _this.pdfViewer.toolbarModule.updateCurrentPage(_this.currentPageNumber);\n }\n if (!isBlazor()) {\n if (!Browser.isDevice || _this.pdfViewer.enableDesktopMode) {\n _this.pdfViewer.toolbarModule.updateNavigationButtons();\n }\n }\n }\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n _this.mobileSpanContainer.innerHTML = _this.currentPageNumber.toString();\n _this.mobilecurrentPageContainer.innerHTML = _this.currentPageNumber.toString();\n }\n if (pageIndex !== _this.currentPageNumber) {\n if (proxy.pdfViewer.thumbnailViewModule && (!Browser.isDevice || _this.pdfViewer.enableDesktopMode)) {\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.currentPageNumber - 1);\n proxy.pdfViewer.thumbnailViewModule.isThumbnailClicked = false;\n }\n _this.pdfViewer.firePageChange(pageIndex);\n }\n if (_this.pdfViewer.magnificationModule) {\n if (!_this.isPanMode && (!Browser.isDevice && _this.pdfViewer.enableDesktopMode)) {\n _this.pdfViewer.magnificationModule.updatePagesForFitPage(_this.currentPageNumber - 1);\n }\n }\n var currentPage = _this.getElement('_pageDiv_' + (_this.currentPageNumber - 1));\n if (currentPage) {\n currentPage.style.visibility = 'visible';\n }\n if (_this.isViewerMouseDown) {\n if (_this.getRerenderCanvasCreated() && !_this.isPanMode) {\n _this.pdfViewer.magnificationModule.clearIntervalTimer();\n }\n // eslint-disable-next-line\n var data = _this.clientSideRendering ? _this.getLinkInformation(_this.currentPageNumber) : _this.getStoredData(_this.currentPageNumber);\n if (data) {\n _this.isDataExits = true;\n _this.initiatePageViewScrollChanged();\n _this.isDataExits = false;\n }\n else {\n // eslint-disable-next-line max-len\n var timer = _this.pdfViewer.scrollSettings.delayPageRequestTimeOnScroll ? _this.pdfViewer.scrollSettings.delayPageRequestTimeOnScroll : 100;\n _this.scrollHoldTimer = setTimeout(function () {\n _this.initiatePageViewScrollChanged();\n }, timer);\n }\n }\n if (_this.pdfViewer.annotation && _this.navigationPane.commentPanelContainer) {\n _this.pdfViewer.annotation.stickyNotesAnnotationModule.updateCommentPanelScrollTop(_this.currentPageNumber);\n }\n // eslint-disable-next-line max-len\n if ((Browser.isDevice && !_this.pdfViewer.enableDesktopMode) && event.touches && event.touches[0].target.className !== 'e-pv-touch-ellipse') {\n setTimeout(function () {\n _this.updateMobileScrollerPosition();\n }, 500);\n }\n proxy.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n this.pdfViewer = viewer;\n this.navigationPane = new NavigationPane(this.pdfViewer, this);\n this.textLayer = new TextLayer(this.pdfViewer, this);\n this.accessibilityTags = new AccessibilityTags(this.pdfViewer, this);\n this.signatureModule = new Signature(this.pdfViewer, this);\n }\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.initializeComponent = function () {\n var element = document.getElementById(this.pdfViewer.element.id);\n if (element) {\n this.blazorUIAdaptor = isBlazor() ? new BlazorUiAdaptor(this.pdfViewer, this) : null;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewer.element.classList.add('e-pv-mobile-view');\n }\n var controlWidth = '100%';\n var toolbarDiv = void 0;\n this.viewerMainContainer = isBlazor() ? element.querySelector('.e-pv-viewer-main-container') : createElement('div', { id: this.pdfViewer.element.id + '_viewerMainContainer', className: 'e-pv-viewer-main-container' });\n this.viewerContainer = isBlazor() ? element.querySelector('.e-pv-viewer-container') : createElement('div', { id: this.pdfViewer.element.id + '_viewerContainer', className: 'e-pv-viewer-container' });\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.createMobilePageNumberContainer();\n }\n // eslint-disable-next-line\n this.viewerContainer.tabIndex = -1;\n if (this.pdfViewer.enableRtl) {\n this.viewerContainer.style.direction = 'rtl';\n }\n element.style.touchAction = 'pan-x pan-y';\n this.setMaximumHeight(element);\n this.mainContainer = isBlazor() ? element.querySelector('.e-pv-main-container') : createElement('div', { id: this.pdfViewer.element.id + '_mainContainer', className: 'e-pv-main-container' });\n this.mainContainer.appendChild(this.viewerMainContainer);\n element.appendChild(this.mainContainer);\n this.applyViewerHeight(this.mainContainer);\n if (this.pdfViewer.toolbarModule) {\n this.navigationPane.initializeNavigationPane();\n toolbarDiv = this.pdfViewer.toolbarModule.intializeToolbar(controlWidth);\n }\n else {\n if (isBlazor()) {\n this.navigationPane.initializeNavigationPane();\n toolbarDiv = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n if (!this.pdfViewer.enableToolbar) {\n this.toolbarHeight = 0;\n toolbarDiv.style.display = 'none';\n }\n if (!this.pdfViewer.enableNavigationToolbar && ((Browser.isDevice && this.pdfViewer.enableDesktopMode) || (!Browser.isDevice))) {\n this.navigationPane.sideBarToolbar.style.display = 'none';\n this.navigationPane.sideBarToolbarSplitter.style.display = 'none';\n if (this.navigationPane.isBookmarkOpen || this.navigationPane.isThumbnailOpen) {\n this.navigationPane.updateViewerContainerOnClose();\n }\n }\n }\n }\n if (toolbarDiv) {\n this.viewerContainer.style.height = this.updatePageHeight(this.pdfViewer.element.getBoundingClientRect().height, 56);\n }\n else {\n this.viewerContainer.style.height = this.updatePageHeight(this.pdfViewer.element.getBoundingClientRect().height, 0);\n }\n var viewerWidth = this.pdfViewer.element.clientWidth;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n viewerWidth = viewerWidth - (this.navigationPane.sideBarToolbar ? this.navigationPane.getViewerContainerLeft() : 0) -\n (this.navigationPane.commentPanelContainer ? this.navigationPane.getViewerContainerRight() : 0);\n }\n this.viewerContainer.style.width = viewerWidth + 'px';\n this.viewerMainContainer.appendChild(this.viewerContainer);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.mobileScrollerContainer.style.left = (viewerWidth - parseFloat(this.mobileScrollerContainer.style.width)) + 'px';\n this.mobilePageNoContainer.style.left = (viewerWidth / 2) - (parseFloat(this.mobilePageNoContainer.style.width) / 2) + 'px';\n this.mobilePageNoContainer.style.top = (this.pdfViewer.element.clientHeight / 2) + 'px';\n this.mobilePageNoContainer.style.display = 'none';\n this.mobilePageNoContainer.appendChild(this.mobilecurrentPageContainer);\n this.mobilePageNoContainer.appendChild(this.mobilenumberContainer);\n this.mobilePageNoContainer.appendChild(this.mobiletotalPageContainer);\n this.viewerContainer.appendChild(this.mobilePageNoContainer);\n this.viewerMainContainer.appendChild(this.mobileScrollerContainer);\n this.mobileScrollerContainer.appendChild(this.mobileSpanContainer);\n }\n this.pageContainer = createElement('div', { id: this.pdfViewer.element.id + '_pageViewContainer', className: 'e-pv-page-container', attrs: { 'role': 'document' } });\n if (this.pdfViewer.enableRtl) {\n this.pageContainer.style.direction = 'ltr';\n }\n this.viewerContainer.appendChild(this.pageContainer);\n this.pageContainer.style.width = this.viewerContainer.clientWidth + 'px';\n if (toolbarDiv && this.pdfViewer.thumbnailViewModule && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n this.pdfViewer.thumbnailViewModule.createThumbnailContainer();\n }\n this.createPrintPopup();\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.createGoToPagePopup();\n }\n var waitingPopup = createElement('div', { id: this.pdfViewer.element.id + '_loadingIndicator' });\n this.viewerContainer.appendChild(waitingPopup);\n createSpinner({ target: waitingPopup, cssClass: 'e-spin-center' });\n this.setLoaderProperties(waitingPopup);\n if (isBlazor()) {\n this.contextMenuModule = new BlazorContextMenu(this.pdfViewer, this);\n // eslint-disable-next-line\n var spinnerElement = document.getElementsByClassName(this.pdfViewer.element.id + '_spinner');\n if (spinnerElement && spinnerElement[0] && (!spinnerElement[0].classList.contains('e-spin-hide'))) {\n spinnerElement[0].classList.remove('e-spin-show');\n spinnerElement[0].classList.add('e-spin-hide');\n }\n }\n else {\n this.contextMenuModule = new ContextMenu(this.pdfViewer, this);\n }\n this.contextMenuModule.createContextMenu();\n this.createFileInputElement();\n this.wireEvents();\n if (this.pdfViewer.textSearchModule && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n this.pdfViewer.textSearchModule.createTextSearchBox();\n }\n if (this.pdfViewer.documentPath) {\n if (isBlazor()) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('LoadDocumentFromClient', this.pdfViewer.documentPath);\n }\n else {\n this.pdfViewer.load(this.pdfViewer.documentPath, null);\n }\n }\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.initializeCollection();\n }\n }\n if (Browser.isDevice && this.pdfViewer.enableDesktopMode && this.pdfViewer.toolbarModule) {\n this.pdfViewer.interactionMode = 'Pan';\n }\n };\n PdfViewerBase.prototype.createMobilePageNumberContainer = function () {\n this.mobilePageNoContainer = createElement('div', { id: this.pdfViewer.element.id + '_mobilepagenoContainer', className: 'e-pv-mobilepagenoscroll-container' });\n this.mobilecurrentPageContainer = createElement('span', { id: this.pdfViewer.element.id + '_mobilecurrentpageContainer', className: 'e-pv-mobilecurrentpage-container' });\n this.mobilenumberContainer = createElement('span', { id: this.pdfViewer.element.id + '_mobiledashedlineContainer', className: 'e-pv-mobiledashedline-container' });\n this.mobiletotalPageContainer = createElement('span', { id: this.pdfViewer.element.id + '_mobiletotalpageContainer', className: 'e-pv-mobiletotalpage-container' });\n this.mobileScrollerContainer = createElement('div', { id: this.pdfViewer.element.id + '_mobilescrollContainer', className: 'e-pv-mobilescroll-container' });\n this.mobileSpanContainer = createElement('span', { id: this.pdfViewer.element.id + '_mobilespanContainer', className: 'e-pv-mobilespanscroll-container' });\n this.mobileSpanContainer.innerHTML = '1';\n this.mobilecurrentPageContainer.innerHTML = '1';\n this.mobilenumberContainer.innerHTML = '―――――';\n this.mobileScrollerContainer.style.cssFloat = 'right';\n this.mobileScrollerContainer.style.width = '40px';\n this.mobileScrollerContainer.style.height = '32px';\n this.mobileScrollerContainer.style.zIndex = '100';\n this.mobilePageNoContainer.style.width = '120px';\n this.mobilePageNoContainer.style.height = '100px';\n this.mobilePageNoContainer.style.zIndex = '100';\n this.mobilePageNoContainer.style.position = 'fixed';\n this.mobileScrollerContainer.addEventListener('touchstart', this.mobileScrollContainerDown.bind(this));\n this.mobileScrollerContainer.addEventListener('touchend', this.mobileScrollContainerEnd.bind(this));\n this.mobileScrollerContainer.style.display = 'none';\n };\n /**\n * @private\n * @param {string} documentData - file name or base64 string.\n * @param {string} password - password of the PDF document.\n * @returns {void}\n */\n PdfViewerBase.prototype.initiatePageRender = function (documentData, password) {\n if (this.clientSideRendering) {\n this.pdfViewer.unload();\n }\n this.loadedData = documentData;\n this.documentId = this.createGUID();\n if (this.viewerContainer) {\n this.viewerContainer.scrollTop = 0;\n }\n this.showLoadingIndicator(true);\n this.hashId = ' ';\n this.isFileName = false;\n this.saveDocumentInfo();\n if (this.pdfViewer.interactionMode === 'Pan') {\n this.initiatePanning();\n }\n documentData = this.checkDocumentData(documentData);\n var isbase64 = this.loadedData.includes('pdf;base64,');\n if (isbase64 && this.clientSideRendering) {\n this.pdfViewer.fileByteArray = this.convertBase64(documentData);\n }\n this.setFileName();\n if (this.pdfViewer.downloadFileName) {\n this.downloadFileName = this.pdfViewer.downloadFileName;\n }\n else {\n this.downloadFileName = this.pdfViewer.fileName;\n }\n var jsonObject = this.constructJsonObject(documentData, password, isbase64);\n this.createAjaxRequest(jsonObject, documentData, password);\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.initiateLoadDocument = function (documentId, isFileName, fileName) {\n if (documentId) {\n this.documentId = documentId;\n }\n if (this.viewerContainer) {\n this.viewerContainer.scrollTop = 0;\n }\n this.showLoadingIndicator(true);\n this.hashId = ' ';\n this.isFileName = isFileName;\n this.saveDocumentInfo();\n if (this.pdfViewer.interactionMode === 'Pan') {\n this.initiatePanning();\n }\n this.setFileName();\n if (this.pdfViewer.fileName === null) {\n if (isFileName && fileName) {\n this.pdfViewer.fileName = fileName;\n this.jsonDocumentId = this.pdfViewer.fileName;\n }\n else {\n this.pdfViewer.fileName = 'undefined.pdf';\n this.jsonDocumentId = null;\n }\n }\n if (this.pdfViewer.downloadFileName) {\n this.downloadFileName = this.pdfViewer.downloadFileName;\n }\n else {\n this.downloadFileName = this.pdfViewer.fileName;\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.convertBase64 = function (base64) {\n return new Uint8Array(atob(base64).split('').map(function (char) { return char.charCodeAt(0); }));\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.loadSuccess = function (documentDetails, password) {\n // eslint-disable-next-line\n var data = documentDetails;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n this.onControlError(500, data, this.pdfViewer.serverActionSettings.load);\n data = null;\n }\n }\n if (data) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n // eslint-disable-next-line\n if (typeof parseInt(data) === 'number' && !isNaN(parseInt(data))) {\n // eslint-disable-next-line\n data = parseInt(data);\n break;\n }\n }\n if (data.StatusText && (data.StatusText === 'File Does not Exist')) {\n this.showLoadingIndicator(false);\n }\n // eslint-disable-next-line\n if (data.uniqueId === this.documentId || (typeof parseInt(data) === 'number' && !isNaN(parseInt(data)))) {\n this.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.load, data);\n this.requestSuccess(data, null, password);\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.mobileScrollContainerDown = function (event) {\n this.ispageMoved = false;\n this.isThumb = true;\n if (this.isTextMarkupAnnotationModule()) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage != null && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n var pageNumber = this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage = null;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.clearAnnotationSelection(pageNumber);\n this.pdfViewer.toolbar.showToolbar(true);\n }\n }\n this.mobileScrollerContainer.addEventListener('touchmove', this.viewerContainerOnScroll.bind(this), true);\n };\n /**\n * @private\n * @param {MouseEvent} e - default mouse event.\n * @returns {PointModel} - retuns the bounds.\n */\n PdfViewerBase.prototype.relativePosition = function (e) {\n // eslint-disable-next-line\n var currentRect = this.viewerContainer.getBoundingClientRect();\n var left = e.clientX - currentRect.left;\n var top = e.clientY - currentRect.top;\n return { x: left, y: top };\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.setMaximumHeight = function (element) {\n // eslint-disable-next-line\n var currentRect = element.getBoundingClientRect();\n if ((!Browser.isDevice || this.pdfViewer.enableDesktopMode) || (currentRect && currentRect.height === 0)) {\n element.style.minHeight = '500px';\n }\n this.updateWidth();\n this.updateHeight();\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.applyViewerHeight = function (element) {\n // eslint-disable-next-line\n var currentRect = element.getBoundingClientRect();\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && currentRect && currentRect.height === 0) {\n element.style.minHeight = '500px';\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateWidth = function () {\n if (this.pdfViewer.width.toString() !== 'auto') {\n // eslint-disable-next-line\n this.pdfViewer.element.style.width = this.pdfViewer.width;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateHeight = function () {\n if (this.pdfViewer.height.toString() !== 'auto') {\n // eslint-disable-next-line\n this.pdfViewer.element.style.height = this.pdfViewer.height;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateViewerContainer = function () {\n var sideBarContentContainer = this.getElement('_sideBarContentContainer');\n if (sideBarContentContainer && sideBarContentContainer.style.display === 'none') {\n this.navigationPane.updateViewerContainerOnClose();\n }\n else if (sideBarContentContainer && sideBarContentContainer.style.display === 'block') {\n this.navigationPane.updateViewerContainerOnExpand();\n }\n else {\n this.updateViewerContainerSize();\n }\n // eslint-disable-next-line\n var toolbarModule = this.pdfViewer.toolbarModule;\n if (toolbarModule) {\n if (isBlazor()) {\n if (this.pdfViewer.enableToolbar || this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('RefreshToolbarItems');\n }\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n toolbarModule.toolbar.refreshOverflow();\n }\n if (this.pdfViewer.enableAnnotationToolbar && toolbarModule.annotationToolbarModule) {\n toolbarModule.annotationToolbarModule.toolbar.refreshOverflow();\n }\n }\n }\n };\n PdfViewerBase.prototype.updateViewerContainerSize = function () {\n this.viewerContainer.style.width = this.pdfViewer.element.clientWidth + 'px';\n this.pageContainer.style.width = this.viewerContainer.offsetWidth + 'px';\n this.updateZoomValue();\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.mobileScrollContainerEnd = function (event) {\n if (!this.ispageMoved) {\n this.goToPagePopup.show();\n }\n this.isThumb = false;\n this.ispageMoved = false;\n this.mobileScrollerContainer.removeEventListener('touchmove', this.viewerContainerOnScroll.bind(this), true);\n this.mobilePageNoContainer.style.display = 'none';\n };\n /**\n * @private\n * @param {any} data - data.\n * @returns {boolean}\n */\n PdfViewerBase.prototype.checkRedirection = function (data) {\n var redirect = false;\n if (data && typeof (data) === 'object' && (data.redirectUrl || data.redirectUri || data.redirectUrl === \"\" || data.redirectUri === \"\")) {\n if (data.redirectUrl === \"\" || data.redirectUri === \"\") {\n redirect = true;\n }\n else {\n data.redirectUrl ? window.location.href = data.redirectUrl : window.location.href = data.redirectUri;\n }\n }\n else if (data && typeof (data) === 'string' && (data.includes('redirectUrl') || data.includes('redirectUri'))) {\n if (JSON.parse(data).redirectUrl === \"\" || JSON.parse(data).redirectUri === \"\") {\n redirect = true;\n }\n else {\n data.includes('redirectUrl') ? window.location.href = JSON.parse(data).redirectUrl : window.location.href = JSON.parse(data).redirectUri;\n }\n }\n return redirect;\n };\n PdfViewerBase.prototype.getPdfBase64 = function (input) {\n if (input.startsWith('http://') || input.startsWith('https://')) {\n return fetch(input)\n .then(function (response) {\n if (response.ok) {\n return response.arrayBuffer();\n }\n else {\n console.error('Error fetching PDF:', response.statusText);\n throw new Error(response.statusText);\n }\n })\n .then(function (pdfData) {\n var binary = new Uint8Array(pdfData).reduce(function (str, byte) { return str + String.fromCharCode(byte); }, '');\n var base64String = btoa(binary);\n return base64String;\n })\n .catch(function (error) {\n console.error('Error fetching PDF:', error.message);\n throw error;\n });\n }\n else {\n return Promise.resolve(input);\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.createAjaxRequest = function (jsonObject, documentData, password) {\n var _this = this;\n var proxy = null;\n proxy = this;\n if (this.pdfViewer.serverActionSettings) {\n this.loadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.loadRequestHandler.url = this.pdfViewer.serviceUrl + '/' + this.pdfViewer.serverActionSettings.load;\n this.loadRequestHandler.responseType = 'json';\n this.loadRequestHandler.mode = true;\n // eslint-disable-next-line\n jsonObject['action'] = 'Load';\n // eslint-disable-next-line\n jsonObject['elementId'] = this.pdfViewer.element.id;\n if (this.clientSideRendering) {\n this.getPdfBase64(documentData).then(function (pdfBase64) {\n var data = _this.pdfViewer.pdfRendererModule.load(pdfBase64, _this.documentId, password, jsonObject);\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.onControlError(500, data, _this.pdfViewer.serverActionSettings.load);\n data = null;\n }\n }\n if (data) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n // eslint-disable-next-line\n if (typeof parseInt(data) === 'number' && !isNaN(parseInt(data))) {\n // eslint-disable-next-line\n data = parseInt(data);\n break;\n }\n }\n // eslint-disable-next-line\n if (data.uniqueId === proxy.documentId || (typeof parseInt(data) === 'number' && !isNaN(parseInt(data)))) {\n proxy.updateFormFieldName(data);\n proxy.pdfViewer.fireAjaxRequestSuccess(_this.pdfViewer.serverActionSettings.load, data);\n if (!isNullOrUndefined(data['isTaggedPdf']) && data['isTaggedPdf']) {\n proxy.isTaggedPdf = true;\n }\n proxy.requestSuccess(data, documentData, password);\n }\n }\n }\n else {\n proxy.showLoadingIndicator(false);\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('Import PDF Failed'));\n }\n });\n }\n else {\n this.loadRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this.loadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n var redirect = proxy.checkRedirection(data);\n if (redirect) {\n proxy.showLoadingIndicator(false);\n }\n else {\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.onControlError(500, data, this.pdfViewer.serverActionSettings.load);\n data = null;\n }\n }\n if (data) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n // eslint-disable-next-line\n if (typeof parseInt(data) === 'number' && !isNaN(parseInt(data))) {\n // eslint-disable-next-line\n data = parseInt(data);\n break;\n }\n }\n // eslint-disable-next-line\n if (data.uniqueId === proxy.documentId || (typeof parseInt(data) === 'number' && !isNaN(parseInt(data)))) {\n proxy.updateFormFieldName(data);\n proxy.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.load, data);\n if (!isNullOrUndefined(data['isTaggedPdf']) && data['isTaggedPdf']) {\n proxy.isTaggedPdf = true;\n }\n proxy.requestSuccess(data, documentData, password);\n }\n }\n }\n else {\n proxy.showLoadingIndicator(false);\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('Import PDF Failed'));\n }\n }\n };\n // eslint-disable-next-line\n this.loadRequestHandler.onFailure = function (result) {\n var statusString = result.status.toString().split('')[0];\n if (statusString === '4') {\n proxy.openNotificationPopup('Client error');\n }\n else {\n proxy.openNotificationPopup();\n }\n proxy.showLoadingIndicator(false);\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.load);\n };\n // eslint-disable-next-line\n this.loadRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n proxy.showLoadingIndicator(false);\n // eslint-disable-next-line\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.load);\n };\n }\n }\n };\n // EJ2-60380 - As of now, in form designer the element name is taken fromfield.ActualFieldName (with hypen) but for\n // Form fields it is taken from field.FieldName (without hypen).\n // For this reason when user taken the form feilds on button click, name of the form feilds are different with and without form designer module\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateFormFieldName = function (data) {\n if (data && data.PdfRenderedFormFields && data.PdfRenderedFormFields.length > 0) {\n var field = void 0;\n for (var i = 0; i < data.PdfRenderedFormFields.length; i++) {\n field = data.PdfRenderedFormFields[parseInt(i.toString(), 10)];\n if (field) {\n if (field.ActualFieldName) {\n field.FieldName = field.ActualFieldName;\n }\n if (isNullOrUndefined(field.Value)) {\n field.Value = \"\";\n }\n }\n }\n }\n };\n /**\n * @private\n * @param {string} errorString - The message to be displayed.\n * @returns {void}\n */\n PdfViewerBase.prototype.openNotificationPopup = function (errorString) {\n var _this = this;\n if (this.pdfViewer.showNotificationDialog) {\n if (errorString === 'Client error') {\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Clienterror');\n promise.then(function (value) {\n _this.textLayer.createNotificationPopup(value);\n });\n }\n else {\n this.textLayer.createNotificationPopup(this.pdfViewer.localeObj.getConstant('Client error'));\n }\n }\n else {\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Servererror');\n promise.then(function (value) {\n _this.textLayer.createNotificationPopup(value);\n });\n }\n else {\n this.textLayer.createNotificationPopup(this.pdfViewer.localeObj.getConstant('Server error'));\n }\n }\n if (this.getElement('_notify')) {\n this.getElement('_notify').classList.add('e-pv-notification-large-content');\n }\n }\n };\n /**\n * @private\n * @param {string} errorString - The message to be shown.\n * @returns {void}\n */\n PdfViewerBase.prototype.showNotificationPopup = function (errorString) {\n if (!this.pdfViewer.showNotificationDialog && errorString !== '') {\n this.textLayer.createNotificationPopup(errorString);\n if (this.getElement('_notify')) {\n this.getElement('_notify').classList.add('e-pv-notification-large-content');\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.requestSuccess = function (data, documentData, password) {\n if (this.clientSideRendering) {\n if (data.isDigitalSignaturePresent && !isNullOrUndefined(data.digitialSignatureFile) && data.digitialSignatureFile != \"\") {\n this.pdfViewer.fileByteArray = this.convertBase64(data.digitialSignatureFile);\n }\n else if (data.fileByteArray) {\n this.pdfViewer.fileByteArray = this.convertBase64(data.fileByteArray);\n }\n else if (!this.pdfViewer.fileByteArray && !isNullOrUndefined(this.pdfViewer.toolbarModule) && this.pdfViewer.toolbarModule.uploadedFile) {\n this.pdfViewer.fileByteArray = this.convertBase64(this.pdfViewer.toolbarModule.uploadedFile.replace(/^data:+[a-zA-Z]+\\/[a-zA-Z]+;base64,/g, ''));\n }\n else if (!this.pdfViewer.fileByteArray && data.documentData) {\n this.pdfViewer.fileByteArray = this.convertBase64(data.documentData);\n }\n }\n if (data && data.pageCount !== undefined) {\n if (isBlazor() && this.isPassword) {\n this.isPassword = false;\n this.isPasswordAvailable = false;\n this.pdfViewer._dotnetInstance.invokeMethodAsync('ClosePasswordDialog');\n }\n if (password && password != '') {\n this.passwordData = password;\n }\n this.pdfViewer.allowServerDataBinding = false;\n this.pageCount = data.pageCount;\n this.pdfViewer.pageCount = data.pageCount;\n this.hashId = data.hashId;\n this.documentLiveCount = data.documentLiveCount;\n this.isAnnotationCollectionRemoved = false;\n this.saveDocumentHashData();\n this.saveFormfieldsData(data);\n this.pdfViewer.allowServerDataBinding = true;\n if (this.clientSideRendering) {\n this.isDigitalSignaturePresent = data.isDigitalSignaturePresent;\n }\n else {\n this.digitalSignaturePages = data.digitalSignaturePages;\n }\n this.pageRender(data);\n // eslint-disable-next-line\n var pageData = { pageCount: data.pageCount, pageSizes: data.pageSizes };\n window.sessionStorage.setItem(this.documentId + '_pagedata', JSON.stringify(pageData));\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.mobileScrollerContainer.style.display = '';\n // eslint-disable-next-line\n var toolbarHeight = this.pdfViewer.toolbarModule ? this.toolbarHeight : 0;\n this.mobileScrollerContainer.style.top = (toolbarHeight) + 'px';\n }\n this.restrictionList = data.RestrictionSummary;\n this.RestrictionEnabled(this.restrictionList, false);\n }\n else {\n this.pageCount = 0;\n this.currentPageNumber = 0;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.mobileScrollerContainer.style.display = 'none';\n }\n if (data === 4) {\n if (!isBlazor()) {\n // 4 is error code for encrypted document.\n this.renderPasswordPopup(documentData, password);\n }\n }\n else if (data === 3) {\n if (!isBlazor()) {\n // 3 is error code for corrupted document.\n this.renderCorruptPopup();\n }\n }\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.updateToolbarItems();\n }\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotationModule;\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.isEnableTextMarkupResizer(annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode)) {\n annotationModule.textMarkupAnnotationModule.createAnnotationSelectElement();\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.RestrictionEnabled = function (restrictionSummary, isEnable) {\n if (restrictionSummary) {\n for (var i = 0; i < restrictionSummary.length; i++) {\n this.EnableRestriction(restrictionSummary[parseInt(i.toString(), 10)], isEnable);\n if (!isBlazor()) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.DisableToolbarItems(restrictionSummary[parseInt(i.toString(), 10)], isEnable);\n }\n }\n else {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('RestrictToolbarItems', restrictionSummary, isEnable);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.EnableRestriction = function (restrictionSummary, isEnable) {\n switch (restrictionSummary) {\n case 'Print':\n this.pdfViewer.enablePrint = isEnable;\n break;\n case 'CopyContent':\n this.pdfViewer.enableTextSelection = isEnable;\n break;\n case 'FillFields':\n this.pdfViewer.enableFormFields = isEnable;\n this.enableFormFieldButton(isEnable);\n break;\n case 'EditAnnotations':\n this.pdfViewer.enableAnnotation = isEnable;\n break;\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.pageRender = function (data) {\n this.document = null;\n this.passwordDialogReset();\n if (this.passwordPopup) {\n this.passwordPopup.hide();\n }\n var pageIndex = 0;\n this.initPageDiv(data);\n this.currentPageNumber = pageIndex + 1;\n this.pdfViewer.currentPageNumber = pageIndex + 1;\n this.previousZoomValue = this.pdfViewer.zoomValue;\n var isZoomMode = false;\n if (this.pdfViewer.magnificationModule) {\n this.pdfViewer.magnificationModule.isAutoZoom = true;\n if (this.pdfViewer.zoomValue && this.pdfViewer.zoomValue > 0) {\n if (this.pdfViewer.zoomValue !== 100) {\n isZoomMode = true;\n }\n this.isInitialPageMode = true;\n this.pdfViewer.magnification.zoomTo(this.pdfViewer.zoomValue);\n }\n if (this.pdfViewer.zoomMode === 'FitToWidth') {\n this.isInitialPageMode = true;\n isZoomMode = true;\n this.pdfViewer.magnificationModule.fitToWidth();\n }\n else if (this.pdfViewer.zoomMode === 'FitToPage') {\n this.isInitialPageMode = true;\n isZoomMode = true;\n this.pdfViewer.magnificationModule.fitToPage();\n }\n this.documentLoaded = true;\n this.pdfViewer.magnificationModule.isInitialLoading = true;\n this.onWindowResize();\n this.documentLoaded = false;\n this.pdfViewer.magnificationModule.isInitialLoading = false;\n }\n this.isDocumentLoaded = true;\n // eslint-disable-next-line\n var viewPortWidth = 816;\n // eslint-disable-next-line radix\n viewPortWidth = parseInt(viewPortWidth);\n var pageWidth = this.pageSize[parseInt(pageIndex.toString(), 10)].width;\n if (this.clientSideRendering) {\n var proxy_1 = this;\n var fileByteArray = this.pdfViewer.fileByteArray;\n this.pdfViewerRunner.postMessage({ uploadedFile: fileByteArray, message: 'LoadPageCollection', password: this.passwordData, pageIndex: pageIndex, isZoomMode: isZoomMode });\n this.pdfViewerRunner.onmessage = function (event) {\n if (event.data.message === 'PageLoaded') {\n proxy_1.initialPagesRendered(event.data.pageIndex, event.data.isZoomMode);\n }\n };\n }\n else {\n this.initialPagesRendered(pageIndex, isZoomMode);\n }\n this.showLoadingIndicator(false);\n if (!isBlazor()) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.uploadedDocumentName = null;\n this.pdfViewer.toolbarModule.updateCurrentPage(this.currentPageNumber);\n this.pdfViewer.toolbarModule.updateToolbarItems();\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n this.pdfViewer.toolbar.annotationToolbarModule.enableAnnotationAddTools(true);\n }\n }\n }\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.mobileSpanContainer.innerHTML = this.currentPageNumber.toString();\n this.mobilecurrentPageContainer.innerHTML = this.currentPageNumber.toString();\n }\n };\n PdfViewerBase.prototype.initialPagesRendered = function (pageIndex, isZoomMode) {\n if (this.renderedPagesList.indexOf(pageIndex) === -1 && !isZoomMode) {\n this.createRequestForRender(pageIndex);\n var pageNumber = pageIndex + 1;\n var renderLimit = this.pdfViewer.initialRenderPages <= this.pageCount ? (this.pdfViewer.initialRenderPages > this.pageRenderCount) ? this.pdfViewer.initialRenderPages : 2 : this.pageCount;\n for (var i = 1; i < renderLimit; i++) {\n this.createRequestForRender(i);\n pageNumber = pageNumber + 1;\n }\n if (this.pageSize[parseInt(pageNumber.toString(), 10)]) {\n var pageTop = this.getPageTop(pageNumber);\n var viewerHeight = this.viewerContainer.clientHeight;\n while (viewerHeight > pageTop) {\n if (this.pageSize[parseInt(pageNumber.toString(), 10)]) {\n this.renderPageElement(pageNumber);\n this.createRequestForRender(pageNumber);\n pageTop = this.getPageTop(pageNumber);\n pageNumber = pageNumber + 1;\n }\n else {\n break;\n }\n }\n }\n }\n };\n PdfViewerBase.prototype.renderPasswordPopup = function (documentData, password) {\n var _this = this;\n if (!isBlazor()) {\n if (!this.isPasswordAvailable) {\n if (this.isFileName) {\n this.document = documentData;\n }\n else {\n this.document = 'data:application/pdf;base64,' + documentData;\n }\n this.isPasswordAvailable = true;\n this.createPasswordPopup();\n this.pdfViewer.fireDocumentLoadFailed(true, null);\n this.passwordPopup.show();\n }\n else {\n this.pdfViewer.fireDocumentLoadFailed(true, password);\n this.promptElement.classList.add('e-pv-password-error');\n this.promptElement.textContent = this.pdfViewer.localeObj.getConstant('Invalid Password');\n this.promptElement.focus();\n if (this.isFileName) {\n this.document = documentData;\n }\n else {\n this.document = 'data:application/pdf;base64,' + documentData;\n }\n this.passwordPopup.show();\n }\n }\n else {\n // eslint-disable-next-line\n var promptElement_1 = document.getElementById(this.pdfViewer.element.id + '_prompt');\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_EnterPassword');\n promise.then(function (value) {\n promptElement_1.textContent = value;\n });\n // eslint-disable-next-line\n var passwordInput_1 = document.querySelector('#' + this.pdfViewer.element.id + '_password_input');\n passwordInput_1.addEventListener('keyup', function () {\n if (passwordInput_1.value === '') {\n _this.passwordDialogReset();\n }\n });\n passwordInput_1.addEventListener('focus', function () {\n passwordInput_1.parentElement.classList.add('e-input-focus');\n });\n passwordInput_1.addEventListener('blur', function () {\n passwordInput_1.parentElement.classList.remove('e-input-focus');\n });\n if (!this.isPasswordAvailable) {\n if (this.isFileName) {\n this.document = documentData;\n }\n else {\n this.document = 'data:application/pdf;base64,' + documentData;\n }\n this.isPasswordAvailable = true;\n this.pdfViewer.fireDocumentLoadFailed(true, null);\n }\n else {\n this.pdfViewer.fireDocumentLoadFailed(true, password);\n promptElement_1.classList.add('e-pv-password-error');\n var promise_1 = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_InvalidPassword');\n promise_1.then(function (value) {\n promptElement_1.textContent = value;\n });\n promptElement_1.focus();\n if (this.isFileName) {\n this.document = documentData;\n }\n else {\n this.document = 'data:application/pdf;base64,' + documentData;\n }\n }\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenPasswordDialog');\n }\n };\n PdfViewerBase.prototype.renderCorruptPopup = function () {\n this.pdfViewer.fireDocumentLoadFailed(false, null);\n this.documentId = null;\n if (this.pdfViewer.showNotificationDialog) {\n if (!isBlazor()) {\n this.createCorruptedPopup();\n this.corruptPopup.show();\n }\n else {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenCorruptedDialog');\n }\n }\n };\n PdfViewerBase.prototype.constructJsonObject = function (documentData, password, isBase64String) {\n var jsonObject;\n if (password) {\n this.isPasswordAvailable = true;\n this.passwordData = password;\n // eslint-disable-next-line max-len\n jsonObject = { document: documentData, password: password, isClientsideLoading: isBase64String, zoomFactor: \"1\", isFileName: this.isFileName.toString(), uniqueId: this.documentId, showDigitalSignatureAppearance: this.pdfViewer.showDigitalSignatureAppearance };\n }\n else {\n this.isPasswordAvailable = false;\n this.passwordData = '';\n jsonObject = { document: documentData, zoomFactor: \"1\", isClientsideLoading: isBase64String, isFileName: this.isFileName.toString(), uniqueId: this.documentId, hideEmptyDigitalSignatureFields: this.pdfViewer.hideEmptyDigitalSignatureFields, showDigitalSignatureAppearance: this.pdfViewer.showDigitalSignatureAppearance };\n }\n return jsonObject;\n };\n PdfViewerBase.prototype.checkDocumentData = function (documentData) {\n var base64String = documentData.split('base64,')[1];\n if (base64String === undefined) {\n this.isFileName = true;\n this.jsonDocumentId = documentData;\n if (this.pdfViewer.fileName === null) {\n // eslint-disable-next-line max-len\n var documentStringArray = (documentData.indexOf('\\\\') !== -1) ? documentData.split('\\\\') : documentData.split('/');\n this.pdfViewer.fileName = documentStringArray[documentStringArray.length - 1];\n this.jsonDocumentId = this.pdfViewer.fileName;\n base64String = documentData;\n }\n }\n else {\n this.jsonDocumentId = null;\n }\n return base64String;\n };\n PdfViewerBase.prototype.setFileName = function () {\n if (this.pdfViewer.fileName === null) {\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.uploadedDocumentName) {\n this.pdfViewer.fileName = this.pdfViewer.toolbarModule.uploadedDocumentName;\n this.jsonDocumentId = this.pdfViewer.fileName;\n }\n else {\n this.pdfViewer.fileName = 'undefined.pdf';\n this.jsonDocumentId = null;\n }\n }\n };\n PdfViewerBase.prototype.saveDocumentInfo = function () {\n window.sessionStorage.setItem(this.documentId + '_currentDocument', this.documentId);\n window.sessionStorage.setItem(this.documentId + '_serviceURL', this.pdfViewer.serviceUrl);\n if (this.pdfViewer.serverActionSettings) {\n window.sessionStorage.setItem(this.documentId + '_unload', this.pdfViewer.serverActionSettings.unload);\n }\n };\n PdfViewerBase.prototype.saveDocumentHashData = function () {\n var hashId = '';\n if (Browser.isIE || Browser.info.name === 'edge') {\n hashId = encodeURI(this.hashId);\n }\n else {\n hashId = this.hashId;\n }\n window.sessionStorage.setItem(this.documentId + '_hashId', hashId);\n if (this.documentLiveCount) {\n window.sessionStorage.setItem(this.documentId + '_documentLiveCount', this.documentLiveCount.toString());\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.saveFormfieldsData = function (data) {\n this.pdfViewer.isFormFieldDocument = false;\n this.enableFormFieldButton(false);\n if (data && data.PdfRenderedFormFields && data.PdfRenderedFormFields.length > 0) {\n if (this.formfieldvalue) {\n if (this.pdfViewer.formFieldsModule) {\n this.setItemInSessionStorage(this.formfieldvalue, '_formfields');\n }\n this.formfieldvalue = null;\n }\n else if (this.pdfViewer.formFieldsModule) {\n for (var i = 0; i < data.PdfRenderedFormFields.length; i++) {\n if (data.PdfRenderedFormFields[parseInt(i.toString(), 10)].FieldName == '') {\n data.PdfRenderedFormFields.splice(i, 1);\n }\n }\n this.setItemInSessionStorage(data.PdfRenderedFormFields, '_formfields');\n }\n if (this.pdfViewer.enableFormFields && this.pdfViewer.formFieldsModule) {\n this.pdfViewer.formFieldsModule.formFieldCollections();\n }\n if (this.pdfViewer.formFieldCollections.length > 0) {\n this.pdfViewer.isFormFieldDocument = true;\n this.enableFormFieldButton(true);\n }\n }\n };\n /**\n * @param {boolean} isEnable - Enable or disable the toolbar itema.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.enableFormFieldButton = function (isEnable) {\n if (isEnable) {\n this.pdfViewer.isFormFieldDocument = true;\n }\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.submitItem) {\n this.pdfViewer.toolbarModule.toolbar.enableItems(this.pdfViewer.toolbarModule.submitItem.parentElement, isEnable);\n }\n };\n PdfViewerBase.prototype.updateWaitingPopup = function (pageNumber) {\n if (this.pageSize[parseInt(pageNumber.toString(), 10)].top != null) {\n // eslint-disable-next-line max-len\n var pageCurrentRect = this.getElement('_pageDiv_' + pageNumber).getBoundingClientRect();\n var waitingPopup = this.getElement('_pageDiv_' + pageNumber).firstChild.firstChild;\n if (pageCurrentRect.top < 0) {\n if (this.toolbarHeight + (this.viewerContainer.clientHeight / 2) - pageCurrentRect.top < pageCurrentRect.height) {\n waitingPopup.style.top = ((this.viewerContainer.clientHeight / 2) - pageCurrentRect.top) - this.toolbarHeight + 'px';\n }\n else {\n if (this.toolbarHeight + (pageCurrentRect.bottom / 2) - pageCurrentRect.top < pageCurrentRect.height) {\n waitingPopup.style.top = ((pageCurrentRect.bottom / 2) - pageCurrentRect.top) - this.toolbarHeight + 'px';\n }\n }\n }\n else {\n waitingPopup.style.top = this.viewerContainer.clientHeight / 2 + 'px';\n }\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && pageCurrentRect.width > this.viewerContainer.clientWidth) {\n waitingPopup.style.left = (this.viewerContainer.clientWidth / 2) + (this.viewerContainer.scrollLeft) + 'px';\n }\n else if (this.getZoomFactor() > 1.25 && pageCurrentRect.width > this.viewerContainer.clientWidth) {\n waitingPopup.style.left = this.viewerContainer.clientWidth / 2 + 'px';\n }\n else {\n waitingPopup.style.left = pageCurrentRect.width / 2 + 'px';\n }\n }\n };\n /**\n * @private\n * @returns {number} - returned the page value.\n */\n PdfViewerBase.prototype.getActivePage = function (isPageNumber) {\n if (this.activeElements && !isNullOrUndefined(this.activeElements.activePageID)) {\n if (isPageNumber) {\n return this.activeElements.activePageID + 1;\n }\n else {\n return this.activeElements.activePageID;\n }\n }\n else {\n if (isPageNumber) {\n return this.currentPageNumber;\n }\n else {\n return this.currentPageNumber - 1;\n }\n }\n };\n PdfViewerBase.prototype.createWaitingPopup = function (pageNumber) {\n // eslint-disable-next-line max-len\n var waitingPopup = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageNumber);\n if (waitingPopup) {\n createSpinner({ target: waitingPopup });\n this.setLoaderProperties(waitingPopup);\n }\n };\n PdfViewerBase.prototype.showLoadingIndicator = function (isShow) {\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup) {\n if (isShow) {\n waitingPopup.style.display = 'block';\n showSpinner(waitingPopup);\n }\n else {\n waitingPopup.style.display = 'none';\n hideSpinner(waitingPopup);\n }\n }\n };\n PdfViewerBase.prototype.spinnerPosition = function (container, pageIndex) {\n var inner = container.querySelector('.e-spinner-inner');\n var zoomValue = this.getZoomFactor();\n var width = this.pageSize[parseInt(pageIndex.toString(), 10)].width * zoomValue;\n var height = this.pageSize[parseInt(pageIndex.toString(), 10)].height * zoomValue;\n inner.style.top = (height / 2) + 'px';\n inner.style.left = (width / 2) + 'px';\n var circle = inner.children[0];\n if (zoomValue <= 0.20) {\n circle.style.width = '20px';\n circle.style.height = '20px';\n circle.style.transformOrigin = '10px 10px 10px';\n }\n else if (zoomValue <= 0.45) {\n circle.style.width = '30px';\n circle.style.height = '30px';\n circle.style.transformOrigin = '15px 15px 15px';\n }\n else {\n circle.style.width = '48px';\n circle.style.height = '48px';\n circle.style.transformOrigin = '24px 24px 24px';\n }\n };\n /**\n * @param {boolean} isShow - Show or hide page loading indicator.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.showPageLoadingIndicator = function (pageIndex, isShow) {\n var waitingPopup = this.getElement('_pageDiv_' + pageIndex);\n if (waitingPopup != null) {\n this.spinnerPosition(waitingPopup, pageIndex);\n if (isShow) {\n showSpinner(waitingPopup);\n }\n else {\n hideSpinner(waitingPopup);\n }\n this.updateWaitingPopup(pageIndex);\n }\n };\n /**\n * @param {boolean} isShow - Show or hide print loading indicator.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.showPrintLoadingIndicator = function (isShow) {\n var printWaitingPopup = this.getElement('_printLoadingIndicator');\n if (printWaitingPopup != null) {\n if (isShow) {\n this.printMainContainer.style.display = 'block';\n showSpinner(printWaitingPopup);\n }\n else {\n this.printMainContainer.style.display = 'none';\n hideSpinner(printWaitingPopup);\n }\n }\n };\n PdfViewerBase.prototype.setLoaderProperties = function (element) {\n var spinnerElement = element.firstChild.firstChild.firstChild;\n if (spinnerElement) {\n spinnerElement.style.height = '48px';\n spinnerElement.style.width = '48px';\n spinnerElement.style.transformOrigin = '24px 24px 24px';\n }\n };\n /**\n * @param {number} pageNumber - Specify the pageNumber.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.updateScrollTop = function (pageNumber) {\n var _this = this;\n // eslint-disable-next-line\n if (this.pageSize[pageNumber] != null) {\n this.renderElementsVirtualScroll(pageNumber);\n this.viewerContainer.scrollTop = this.getPageTop(pageNumber);\n if (this.renderedPagesList.indexOf(pageNumber) === -1) {\n this.createRequestForRender(pageNumber);\n }\n setTimeout(function () {\n var currentPageNumber = pageNumber + 1;\n if (currentPageNumber !== _this.currentPageNumber) {\n _this.pdfViewer.currentPageNumber = currentPageNumber;\n _this.currentPageNumber = currentPageNumber;\n if (_this.pdfViewer.toolbarModule) {\n _this.pdfViewer.toolbarModule.updateCurrentPage(currentPageNumber);\n }\n }\n }, 100);\n }\n };\n /**\n * @private\n * @returns {number} - Returns the zoom factor value.\n */\n PdfViewerBase.prototype.getZoomFactor = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.zoomFactor;\n }\n else {\n // default value\n return 1;\n }\n };\n /**\n * @private\n * @returns {boolean} - Returns whether the pinch zoom is performed or not.\n */\n PdfViewerBase.prototype.getPinchZoomed = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isPinchZoomed;\n }\n else {\n // default value\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} -Returns whether the zoom is performed or not.\n */\n PdfViewerBase.prototype.getMagnified = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isMagnified;\n }\n else {\n // default value\n return false;\n }\n };\n PdfViewerBase.prototype.getPinchScrolled = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isPinchScrolled;\n }\n else {\n // default value\n return false;\n }\n };\n PdfViewerBase.prototype.getPagesPinchZoomed = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isPagePinchZoomed;\n }\n else {\n // default value\n return false;\n }\n };\n PdfViewerBase.prototype.getPagesZoomed = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isPagesZoomed;\n }\n else {\n // default value\n return false;\n }\n };\n PdfViewerBase.prototype.getRerenderCanvasCreated = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isRerenderCanvasCreated;\n }\n else {\n // default value\n return false;\n }\n };\n /**\n * @private\n * @returns {string} - retrun the docuumentid.\n */\n PdfViewerBase.prototype.getDocumentId = function () {\n return this.documentId;\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.download = function () {\n if (this.pageCount > 0) {\n this.createRequestForDownload();\n }\n };\n /**\n * @private\n * @returns {promise} - Returns the blob object.\n */\n PdfViewerBase.prototype.saveAsBlob = function () {\n var _this = this;\n if (this.pageCount > 0) {\n return new Promise(function (resolve, reject) {\n _this.saveAsBlobRequest().then(function (value) {\n resolve(value);\n });\n });\n }\n return null;\n };\n PdfViewerBase.prototype.saveAsBlobRequest = function () {\n var _this = this;\n var proxy = null;\n proxy = this;\n var promise = new Promise(function (resolve, reject) {\n // eslint-disable-next-line\n var jsonObject = proxy.constructJsonDownload();\n _this.dowonloadRequestHandler = new AjaxHandler(_this.pdfViewer);\n _this.dowonloadRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.download;\n _this.dowonloadRequestHandler.responseType = 'text';\n if (_this.clientSideRendering) {\n var data = _this.pdfViewer.pdfRendererModule.getDocumentAsBase64(jsonObject);\n var resultdata = proxy.saveAsBlobFile(data, proxy);\n resolve(resultdata);\n }\n else {\n _this.dowonloadRequestHandler.send(jsonObject);\n }\n // eslint-disable-next-line\n _this.dowonloadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n var resultdata = proxy.saveAsBlobFile(data, proxy);\n resolve(resultdata);\n };\n // eslint-disable-next-line\n _this.dowonloadRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.download);\n };\n // eslint-disable-next-line\n _this.dowonloadRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.download);\n };\n });\n return promise;\n };\n PdfViewerBase.prototype.saveAsBlobFile = function (data, proxy) {\n return new Promise(function (resolve) {\n if (data) {\n if (typeof data === 'object') {\n data = JSON.parse(data);\n }\n if (typeof data !== 'object' && data.indexOf('data:application/pdf') === -1) {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.download);\n data = null;\n }\n if (data) {\n if (!proxy.clientSideRendering) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.download, data);\n }\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/pdf');\n resolve(blobUrl);\n }\n }\n });\n };\n /**\n * @param {boolean} isTriggerEvent - check to trigger the event.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.clear = function (isTriggerEvent) {\n var proxy = this;\n var pdfViewer = proxy.pdfViewer;\n var printModule = pdfViewer.printModule;\n var textSearchModule = pdfViewer.textSearchModule;\n var bookmarkViewModule = pdfViewer.bookmarkViewModule;\n var thumbnailViewModule = pdfViewer.thumbnailView;\n var annotationModule = pdfViewer.annotation;\n var magnificationModule = pdfViewer.magnificationModule;\n var textSelectionModule = pdfViewer.textSelectionModule;\n var formFieldsModule = pdfViewer.formFieldsModule;\n var signatureModule = proxy.signatureModule;\n proxy.isPasswordAvailable = false;\n proxy.isDocumentLoaded = false;\n proxy.isInitialLoaded = false;\n proxy.isImportAction = false;\n proxy.annotationPageList = [];\n proxy.annotationComments = null;\n pdfViewer.annotationCollection = [];\n pdfViewer.signatureCollection = [];\n pdfViewer.formFieldCollection = [];\n proxy.isAnnotationCollectionRemoved = false;\n proxy.documentAnnotationCollections = null;\n proxy.isDrawnCompletely = false;\n proxy.annotationRenderredList = [];\n proxy.isImportAction = false;\n proxy.isImportedAnnotation = false;\n proxy.importedAnnotation = [];\n proxy.isStorageExceed = false;\n proxy.annotationStorage = {};\n proxy.formFieldStorage = {};\n proxy.downloadCollections = {};\n proxy.annotationEvent = null;\n proxy.highestWidth = 0;\n proxy.highestHeight = 0;\n proxy.requestLists = [];\n proxy.tilerequestLists = [];\n proxy.isToolbarInkClicked = false;\n pdfViewer.formFieldCollections = [];\n proxy.passwordData = '';\n proxy.isFocusField = false;\n proxy.focusField = [];\n proxy.updateDocumentEditedProperty(false);\n pdfViewer.clipboardData.clipObject = {};\n if (pdfViewer.toolbar) {\n pdfViewer.toolbar.uploadedFile = null;\n }\n proxy.isTaggedPdf = false;\n if (pdfViewer.formDesignerModule) {\n pdfViewer.formDesignerModule.formFieldIndex = 0;\n if (proxy.activeElements) {\n pdfViewer.clearSelection(proxy.activeElements.activePageID);\n }\n pdfViewer.zIndexTable = [];\n }\n proxy.initiateTextSelectMode();\n proxy.RestrictionEnabled(proxy.restrictionList, true);\n proxy.restrictionList = null;\n if (!Browser.isDevice || pdfViewer.enableDesktopMode) {\n if (proxy.navigationPane.sideBarToolbar) {\n proxy.navigationPane.clear();\n }\n }\n if (!isBlazor() && Browser.isDevice || !pdfViewer.enableDesktopMode) {\n proxy.navigationPane.clear();\n }\n if (thumbnailViewModule) {\n thumbnailViewModule.clear();\n }\n if (bookmarkViewModule) {\n bookmarkViewModule.clear();\n }\n if (magnificationModule) {\n magnificationModule.isMagnified = false;\n magnificationModule.clearIntervalTimer();\n }\n if (textSelectionModule) {\n textSelectionModule.clearTextSelection();\n }\n if (textSearchModule) {\n textSearchModule.resetTextSearch();\n }\n if (annotationModule) {\n annotationModule.clear();\n annotationModule.initializeCollection();\n }\n if (formFieldsModule) {\n formFieldsModule.readOnlyCollection = [];\n formFieldsModule.signatureFieldCollection = [];\n formFieldsModule.renderedPageList = [];\n formFieldsModule.currentTarget = null;\n }\n if (signatureModule) {\n signatureModule.signaturecollection = [];\n signatureModule.outputcollection = [];\n signatureModule.signAnnotationIndex = [];\n }\n if (proxy.pageSize) {\n proxy.pageSize = [];\n }\n if (proxy.renderedPagesList) {\n proxy.renderedPagesList = [];\n }\n if (proxy.accessibilityTagsCollection) {\n proxy.accessibilityTagsCollection = [];\n }\n if (proxy.pageRequestListForAccessibilityTags) {\n proxy.pageRequestListForAccessibilityTags = [];\n }\n if (proxy.pageContainer) {\n while (proxy.pageContainer.hasChildNodes()) {\n proxy.pageContainer.removeChild(proxy.pageContainer.lastChild);\n }\n }\n if (proxy.pageCount > 0) {\n proxy.unloadDocument(proxy);\n // eslint-disable-next-line\n proxy.textLayer.characterBound = new Array();\n proxy.loadRequestHandler && proxy.loadRequestHandler.clear();\n if (proxy.requestCollection) {\n for (var i = 0; i < proxy.requestCollection.length; i++) {\n var request = proxy.requestCollection[parseInt(i.toString(), 10)];\n request.clear();\n }\n proxy.requestCollection = [];\n }\n proxy.virtualLoadRequestHandler && proxy.virtualLoadRequestHandler.clear();\n proxy.pageRequestHandler && proxy.pageRequestHandler.clear();\n proxy.dowonloadRequestHandler && proxy.dowonloadRequestHandler.clear();\n proxy.importAnnotationRequestHandler && proxy.importAnnotationRequestHandler.clear();\n proxy.exportAnnotationRequestHandler && proxy.exportAnnotationRequestHandler.clear();\n proxy.importFormFieldsRequestHandler && proxy.importFormFieldsRequestHandler.clear();\n proxy.exportFormFieldsRequestHandler && proxy.exportFormFieldsRequestHandler.clear();\n if (printModule && printModule.printRequestHandler) {\n printModule.printRequestHandler.clear();\n }\n }\n proxy.windowSessionStorageClear();\n if (proxy.pinchZoomStorage) {\n proxy.pinchZoomStorage = [];\n }\n if ((proxy.previousZoomValue || proxy.previousZoomValue === 0) && proxy.previousZoomValue !== pdfViewer.zoomValue) {\n pdfViewer.zoomValue = proxy.previousZoomValue;\n }\n if (isTriggerEvent && proxy.pageCount > 0) {\n pdfViewer.fireDocumentUnload(this.pdfViewer.fileName);\n }\n this.pdfViewer.fileName = null;\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.destroy = function () {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewer.element.classList.remove('e-pv-mobile-view');\n }\n this.unWireEvents();\n this.clear(false);\n if (this.pageContainer) {\n this.pageContainer.parentNode ? this.pageContainer.parentNode.removeChild(this.pageContainer) : null;\n }\n if (this.viewerContainer) {\n this.viewerContainer.parentNode ? this.viewerContainer.parentNode.removeChild(this.viewerContainer) : null;\n }\n if (this.contextMenuModule) {\n var contextMenuElement = this.contextMenuModule.contextMenuElement;\n contextMenuElement && contextMenuElement.ej2_instances && contextMenuElement.ej2_instances.length > 0 ? this.contextMenuModule.destroy() : null;\n }\n if (this.pdfViewer.toolbarModule) {\n this.navigationPane.destroy();\n }\n var measureElement = document.getElementById('measureElement');\n if (measureElement) {\n measureElement = undefined;\n }\n };\n /**\n * @param {PdfViewerBase} proxy - PdfviewerBase class.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.unloadDocument = function (proxy) {\n var documentId = '';\n var hashId = window.sessionStorage.getItem(this.documentId + '_hashId');\n var documentLiveCount = window.sessionStorage.getItem(this.documentId + '_documentLiveCount');\n var serviceURL = window.sessionStorage.getItem(this.documentId + '_serviceURL');\n if (Browser.isIE || Browser.info.name === 'edge') {\n documentId = decodeURI(hashId);\n }\n else {\n documentId = proxy.hashId ? proxy.hashId : hashId;\n }\n if (documentId !== null) {\n // eslint-disable-next-line max-len\n var jsonObject = { hashId: documentId, documentLiveCount: documentLiveCount, action: 'Unload', elementId: proxy.pdfViewer.element.id };\n var actionName = window.sessionStorage.getItem(this.documentId + '_unload');\n if (serviceURL !== \"undefined\" && serviceURL !== \"null\" && serviceURL !== \"\" && !isNullOrUndefined(serviceURL)) {\n try {\n // eslint-disable-next-line\n var browserSupportsKeepalive = 'keepalive' in new Request('');\n if (browserSupportsKeepalive) {\n // eslint-disable-next-line\n var headerValue = this.setUnloadRequestHeaders();\n var credentialsData = this.pdfViewer.ajaxRequestSettings.withCredentials ? 'include' : 'omit';\n fetch(serviceURL + '/' + actionName, {\n method: 'POST',\n credentials: credentialsData,\n headers: headerValue,\n body: JSON.stringify(jsonObject)\n });\n }\n }\n catch (error) {\n this.unloadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.unloadRequestHandler.send(jsonObject);\n }\n }\n else if (isBlazor()) {\n this.clearCache(actionName, jsonObject, proxy);\n }\n }\n if (this.pdfViewer.magnificationModule) {\n this.pdfViewer.magnificationModule.zoomFactor = 1;\n }\n this.formFieldCollection = [];\n this.textrequestLists = [];\n window.sessionStorage.removeItem(this.documentId + '_hashId');\n window.sessionStorage.removeItem(this.documentId + '_documentLiveCount');\n if (this.documentId) {\n window.sessionStorage.removeItem(this.documentId + '_formfields');\n window.sessionStorage.removeItem(this.documentId + '_formDesigner');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape_measure');\n window.sessionStorage.removeItem(this.documentId + '_annotations_stamp');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sticky');\n window.sessionStorage.removeItem(this.documentId + '_annotations_textMarkup');\n window.sessionStorage.removeItem(this.documentId + '_annotations_freetext');\n window.sessionStorage.removeItem(this.documentId + '_formfields');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sign');\n window.sessionStorage.removeItem(this.documentId + '_annotations_ink');\n window.sessionStorage.removeItem(this.documentId + '_pagedata');\n for (var i = 0; i < this.sessionStorage.length; i++) {\n window.sessionStorage.removeItem(this.sessionStorage[parseInt(i.toString(), 10)]);\n }\n }\n };\n PdfViewerBase.prototype.clearCache = function (actionName, jsonObject, proxy) {\n this.unloadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.unloadRequestHandler.url = window.sessionStorage.getItem(this.documentId + '_serviceURL') + '/' + actionName;\n this.unloadRequestHandler.mode = false;\n this.unloadRequestHandler.responseType = null;\n this.unloadRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this.unloadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n if (data.indexOf('Document') === -1) {\n proxy.onControlError(500, data, actionName);\n data = null;\n }\n }\n if (data) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.unload, data);\n }\n }\n };\n // eslint-disable-next-line\n this.unloadRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, actionName);\n };\n // eslint-disable-next-line\n this.unloadRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, actionName);\n };\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.setUnloadRequestHeaders = function () {\n // eslint-disable-next-line\n var myHeaders = new Headers();\n myHeaders.append('Content-Type', 'application/json;charset=UTF-8');\n for (var i = 0; i < this.pdfViewer.ajaxRequestSettings.ajaxHeaders.length; i++) {\n // eslint-disable-next-line max-len\n myHeaders.append(this.pdfViewer.ajaxRequestSettings.ajaxHeaders[parseInt(i.toString(), 10)].headerName, this.pdfViewer.ajaxRequestSettings.ajaxHeaders[parseInt(i.toString(), 10)].headerValue);\n }\n return myHeaders;\n };\n PdfViewerBase.prototype.windowSessionStorageClear = function () {\n window.sessionStorage.removeItem(this.documentId + '_currentDocument');\n window.sessionStorage.removeItem(this.documentId + '_serviceURL');\n window.sessionStorage.removeItem(this.documentId + '_unload');\n for (var i = 0; i < this.sessionStorage.length; i++) {\n window.sessionStorage.removeItem(this.sessionStorage[parseInt(i.toString(), 10)]);\n }\n };\n PdfViewerBase.prototype.updateCommentPanel = function () {\n // eslint-disable-next-line\n var moreOptionsButton = document.querySelectorAll('.e-pv-more-options-button');\n for (var i = 0; i < moreOptionsButton.length; i++) {\n moreOptionsButton[parseInt(i.toString(), 10)].style.visibility = 'hidden';\n }\n // eslint-disable-next-line\n var commentTextBox = document.querySelectorAll('.e-pv-new-comments-div');\n for (var j = 0; j < commentTextBox.length; j++) {\n commentTextBox[parseInt(j.toString(), 10)].style.display = 'none';\n }\n // eslint-disable-next-line\n var commentContainer = document.querySelectorAll('.e-pv-comments-border');\n for (var j = 0; j < commentContainer.length; j++) {\n commentContainer[parseInt(j.toString(), 10)].classList.remove('e-pv-comments-border');\n }\n // eslint-disable-next-line\n var editableElement = document.querySelectorAll('.e-editable-inline');\n for (var j = 0; j < editableElement.length; j++) {\n editableElement[parseInt(j.toString(), 10)].style.display = 'none';\n }\n // eslint-disable-next-line\n var commentSelect = document.querySelectorAll('.e-pv-comments-select');\n for (var z = 0; z < commentSelect.length; z++) {\n commentSelect[parseInt(z.toString(), 10)].classList.remove('e-pv-comments-select');\n }\n // eslint-disable-next-line\n var commentsDiv = document.querySelectorAll('.e-pv-comments-div');\n for (var j = 0; j < commentsDiv.length; j++) {\n commentsDiv[parseInt(j.toString(), 10)].style.minHeight = 60 + 'px';\n }\n };\n /**\n * @param {boolean} isMouseDown - check whether the mouse down is triggered.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.focusViewerContainer = function (isMouseDown) {\n var scrollX = window.scrollX;\n var scrollY = window.scrollY;\n // eslint-disable-next-line\n var parentNode = this.getScrollParent(this.viewerContainer);\n var scrollNodeX = 0;\n var scrollNodeY = 0;\n if (parentNode !== null) {\n scrollNodeX = parentNode.scrollLeft;\n scrollNodeY = parentNode.scrollTop;\n }\n this.viewerContainer.focus();\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.stickyNotesAnnotationModule.accordionContainer) {\n this.updateCommentPanel();\n }\n // eslint-disable-next-line max-len\n if ((navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > -1 || navigator.userAgent.indexOf('Edge') !== -1) && parentNode !== null) {\n parentNode.scrollLeft = scrollNodeX;\n parentNode.scrollTop = scrollNodeY;\n }\n else if (parentNode !== null) {\n parentNode.scrollTo(scrollNodeX, scrollNodeY);\n }\n window.scrollTo(scrollX, scrollY);\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.getScrollParent = function (node) {\n if (node === null || node.nodeName === 'HTML') {\n return null;\n }\n var style = getComputedStyle(node);\n if (this.viewerContainer.id !== node.id && (style.overflowY === 'scroll' || style.overflowY === 'auto')) {\n return node;\n }\n else {\n return this.getScrollParent(node.parentNode);\n }\n };\n PdfViewerBase.prototype.createCorruptedPopup = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n var popupElement = createElement('div', { id: this.pdfViewer.element.id + '_corrupted_popup', className: 'e-pv-corrupted-popup' });\n this.pageContainer.appendChild(popupElement);\n this.corruptPopup = new Dialog({\n showCloseIcon: true, closeOnEscape: true, isModal: true,\n // eslint-disable-next-line max-len\n header: '
' + this.pdfViewer.localeObj.getConstant('File Corrupted') + '
', visible: false,\n // eslint-disable-next-line max-len\n buttons: [{ buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true }, click: this.closeCorruptPopup.bind(this) }],\n target: this.pdfViewer.element, beforeClose: function () {\n _this.corruptPopup.destroy();\n _this.getElement('_corrupted_popup').remove();\n _this.corruptPopup = null;\n var waitingPopup = _this.getElement('_loadingIndicator');\n if (waitingPopup != null) {\n hideSpinner(waitingPopup);\n }\n }\n });\n if (this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n this.corruptPopup.content = '
' + this.pdfViewer.localeObj.getConstant('File Corrupted Content') + '
';\n this.corruptPopup.enableRtl = true;\n }\n else {\n // eslint-disable-next-line max-len\n this.corruptPopup.content = '
' + this.pdfViewer.localeObj.getConstant('File Corrupted Content') + '
';\n }\n this.corruptPopup.appendTo(popupElement);\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.hideLoadingIndicator = function () {\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup !== null) {\n hideSpinner(waitingPopup);\n }\n };\n PdfViewerBase.prototype.closeCorruptPopup = function () {\n this.corruptPopup.hide();\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup !== null) {\n hideSpinner(waitingPopup);\n }\n };\n PdfViewerBase.prototype.createPrintPopup = function () {\n var element = document.getElementById(this.pdfViewer.element.id);\n this.printMainContainer = createElement('div', {\n id: this.pdfViewer.element.id + '_printcontainer',\n className: 'e-pv-print-popup-container'\n });\n element.appendChild(this.printMainContainer);\n this.printMainContainer.style.display = 'none';\n var printWaitingPopup = createElement('div', {\n id: this.pdfViewer.element.id + '_printLoadingIndicator',\n className: 'e-pv-print-loading-container'\n });\n this.printMainContainer.appendChild(printWaitingPopup);\n createSpinner({ target: printWaitingPopup, cssClass: 'e-spin-center' });\n this.setLoaderProperties(printWaitingPopup);\n };\n PdfViewerBase.prototype.createGoToPagePopup = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n var popupElement = createElement('div', { id: this.pdfViewer.element.id + '_goTopage_popup', className: 'e-pv-gotopage-popup' });\n this.goToPageElement = createElement('span', { id: this.pdfViewer.element.id + '_prompt' });\n this.goToPageElement.textContent = this.pdfViewer.localeObj.getConstant('Enter pagenumber');\n popupElement.appendChild(this.goToPageElement);\n var inputContainer = createElement('span', { className: 'e-pv-text-input' });\n // eslint-disable-next-line max-len\n this.goToPageInput = createElement('input', { id: this.pdfViewer.element.id + '_page_input', className: 'e-input' });\n this.goToPageInput.type = 'text';\n this.goToPageInput.style.maxWidth = '80%';\n this.pageNoContainer = createElement('span', { className: '.e-pv-number-ofpages' });\n inputContainer.appendChild(this.goToPageInput);\n inputContainer.appendChild(this.pageNoContainer);\n popupElement.appendChild(inputContainer);\n this.pageContainer.appendChild(popupElement);\n this.goToPagePopup = new Dialog({\n showCloseIcon: true, closeOnEscape: false, isModal: true,\n header: this.pdfViewer.localeObj.getConstant('GoToPage'), visible: false, buttons: [\n {\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') },\n click: this.GoToPageCancelClick.bind(this)\n },\n // eslint-disable-next-line max-len\n {\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('Apply'), disabled: true, cssClass: 'e-pv-gotopage-apply-btn', isPrimary: true },\n click: this.GoToPageApplyClick.bind(this)\n }\n ], close: this.closeGoToPagePopUp.bind(this)\n });\n if (this.pdfViewer.enableRtl) {\n this.goToPagePopup.enableRtl = true;\n }\n this.goToPagePopup.appendTo(popupElement);\n if (!isBlazor()) {\n var goToPageTextBox = new NumericTextBox({ format: '##', showSpinButton: false });\n goToPageTextBox.appendTo(this.goToPageInput);\n }\n this.goToPageInput.addEventListener('keyup', function () {\n // eslint-disable-next-line\n var inputValue = _this.goToPageInput.value;\n if (inputValue !== '' && parseFloat(inputValue) > 0 && (_this.pdfViewer.pageCount + 1) > parseFloat(inputValue)) {\n _this.EnableApplyButton();\n }\n else {\n _this.DisableApplyButton();\n }\n });\n };\n PdfViewerBase.prototype.closeGoToPagePopUp = function () {\n this.goToPageInput.value = '';\n this.DisableApplyButton();\n };\n PdfViewerBase.prototype.EnableApplyButton = function () {\n // eslint-disable-next-line\n var popupElements = document.getElementsByClassName('e-pv-gotopage-apply-btn')[0];\n popupElements.removeAttribute('disabled');\n };\n PdfViewerBase.prototype.DisableApplyButton = function () {\n // eslint-disable-next-line\n var popupElements = document.getElementsByClassName('e-pv-gotopage-apply-btn')[0];\n popupElements.setAttribute('disabled', true);\n };\n PdfViewerBase.prototype.GoToPageCancelClick = function () {\n this.goToPagePopup.hide();\n };\n PdfViewerBase.prototype.GoToPageApplyClick = function () {\n this.goToPagePopup.hide();\n // eslint-disable-next-line\n var pageNumber = this.goToPageInput.value;\n this.pdfViewer.navigation.goToPage(pageNumber);\n this.updateMobileScrollerPosition();\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateMobileScrollerPosition = function () {\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && this.mobileScrollerContainer) {\n // eslint-disable-next-line\n var ratio = (this.viewerContainer.scrollHeight - this.viewerContainer.clientHeight) / (this.viewerContainer.clientHeight - 56);\n // eslint-disable-next-line\n var differenceRatio = (this.viewerContainer.scrollTop) / ratio;\n // eslint-disable-next-line\n var toolbarHeight = this.pdfViewer.toolbarModule ? this.toolbarHeight : 0;\n this.mobileScrollerContainer.style.top = (toolbarHeight + differenceRatio) + 'px';\n }\n };\n PdfViewerBase.prototype.createPasswordPopup = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n var popupElement = createElement('div', { id: this.pdfViewer.element.id + '_password_popup', className: 'e-pv-password-popup', attrs: { 'tabindex': '-1' } });\n this.promptElement = createElement('span', { id: this.pdfViewer.element.id + '_prompt', attrs: { 'tabindex': '-1' } });\n this.promptElement.textContent = this.pdfViewer.localeObj.getConstant('Enter Password');\n popupElement.appendChild(this.promptElement);\n var inputContainer = createElement('span', { className: 'e-input-group e-pv-password-input' });\n // eslint-disable-next-line max-len\n this.passwordInput = createElement('input', { id: this.pdfViewer.element.id + '_password_input', className: 'e-input' });\n this.passwordInput.type = 'password';\n this.passwordInput.name = 'Required';\n inputContainer.appendChild(this.passwordInput);\n popupElement.appendChild(inputContainer);\n this.pageContainer.appendChild(popupElement);\n this.passwordPopup = new Dialog({\n showCloseIcon: true, closeOnEscape: false, isModal: true,\n header: this.pdfViewer.localeObj.getConstant('Password Protected'), visible: false,\n close: this.passwordCancel.bind(this), target: this.pdfViewer.element, beforeClose: function () {\n _this.passwordPopup.destroy();\n _this.getElement('_password_popup').remove();\n _this.passwordPopup = null;\n var waitingPopup = _this.getElement('_loadingIndicator');\n if (waitingPopup != null) {\n hideSpinner(waitingPopup);\n }\n }\n });\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.passwordPopup.buttons = [\n {\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true },\n click: this.applyPassword.bind(this)\n },\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.passwordCancelClick.bind(this) }\n ];\n }\n else {\n this.passwordPopup.buttons = [\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.passwordCancelClick.bind(this) },\n {\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true },\n click: this.applyPassword.bind(this)\n }\n ];\n }\n if (this.pdfViewer.enableRtl) {\n this.passwordPopup.enableRtl = true;\n }\n this.passwordPopup.appendTo(popupElement);\n this.passwordInput.addEventListener('keyup', function () {\n if (_this.passwordInput.value === '') {\n _this.passwordDialogReset();\n }\n });\n this.passwordInput.addEventListener('focus', function () {\n _this.passwordInput.parentElement.classList.add('e-input-focus');\n });\n this.passwordInput.addEventListener('blur', function () {\n _this.passwordInput.parentElement.classList.remove('e-input-focus');\n });\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.passwordCancel = function (args) {\n if (args.isInteraction) {\n this.clear(false);\n this.passwordDialogReset();\n this.passwordInput.value = '';\n }\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup !== null) {\n hideSpinner(waitingPopup);\n }\n };\n PdfViewerBase.prototype.passwordCancelClick = function () {\n this.clear(false);\n this.passwordDialogReset();\n this.passwordPopup.hide();\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup !== null) {\n hideSpinner(waitingPopup);\n }\n };\n PdfViewerBase.prototype.passwordDialogReset = function () {\n if (!isBlazor()) {\n if (this.promptElement) {\n this.promptElement.classList.remove('e-pv-password-error');\n this.promptElement.textContent = this.pdfViewer.localeObj.getConstant('Enter Password');\n this.passwordInput.value = '';\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.applyPassword = function () {\n if (!isBlazor()) {\n var password = this.passwordInput.value;\n if (!isNullOrUndefined(password) && password.length > 0) {\n this.pdfViewer.load(this.document, password);\n }\n }\n this.focusViewerContainer();\n };\n PdfViewerBase.prototype.createFileInputElement = function () {\n if (Browser.isDevice || !this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.enableAnnotationToolbar && this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createCustomStampElement();\n }\n if (this.signatureModule) {\n this.signatureModule.createSignatureFileElement();\n }\n }\n };\n PdfViewerBase.prototype.wireEvents = function () {\n var _this = this;\n this.isDeviceiOS = (['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(navigator.platform) || (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document));\n this.isMacSafari = navigator.userAgent.indexOf(\"Safari\") > -1 && navigator.userAgent.indexOf(\"Chrome\") === -1 && !this.isDeviceiOS;\n this.isWebkitMobile = /Chrome/.test(navigator.userAgent) || /Google Inc/.test(navigator.vendor) || (navigator.userAgent.indexOf('Safari') !== -1);\n this.viewerContainer.addEventListener('scroll', this.viewerContainerOnScroll, true);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.viewerContainer.addEventListener('touchmove', this.viewerContainerOnScroll, true);\n }\n this.viewerContainer.addEventListener('mousedown', this.viewerContainerOnMousedown);\n this.viewerContainer.addEventListener('mouseup', this.viewerContainerOnMouseup);\n this.viewerContainer.addEventListener(\"wheel\", this.detectTouchPad, false);\n this.viewerContainer.addEventListener('wheel', this.viewerContainerOnMouseWheel);\n if (this.isMacSafari) {\n window.addEventListener('gesturestart', function (e) { return e.preventDefault(); });\n window.addEventListener('gesturechange', function (e) { return e.preventDefault(); });\n window.addEventListener('gestureend', function (e) { return e.preventDefault(); });\n this.viewerContainer.addEventListener('gesturestart', this.handleMacGestureStart, false);\n this.viewerContainer.addEventListener('gesturechange', this.handleMacGestureChange, false);\n this.viewerContainer.addEventListener('gestureend', this.handleMacGestureEnd, false);\n }\n this.viewerContainer.addEventListener('mousemove', this.viewerContainerOnMousemove);\n this.viewerContainer.addEventListener('mouseleave', this.viewerContainerOnMouseLeave);\n this.viewerContainer.addEventListener('mouseenter', this.viewerContainerOnMouseEnter);\n this.viewerContainer.addEventListener('mouseover', this.viewerContainerOnMouseOver);\n this.viewerContainer.addEventListener('click', this.viewerContainerOnClick);\n this.viewerContainer.addEventListener('dblclick', this.viewerContainerOnClick);\n this.viewerContainer.addEventListener('dragstart', this.viewerContainerOnDragStart);\n this.pdfViewer.element.addEventListener('keydown', this.viewerContainerOnKeyDown);\n window.addEventListener('keydown', this.onWindowKeyDown);\n window.addEventListener('mouseup', this.onWindowMouseUp);\n window.addEventListener('touchend', this.onWindowTouchEnd);\n this.unload = function () { return _this.pdfViewerRunner.terminate(); };\n this.unloadDocument(this);\n window.addEventListener('unload', this.unload);\n window.addEventListener('beforeunload', this.clearSessionStorage);\n window.addEventListener('resize', this.onWindowResize);\n // eslint-disable-next-line max-len\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.userAgent.indexOf('Edge') !== -1 || navigator.userAgent.indexOf('Trident') !== -1) {\n this.viewerContainer.addEventListener('pointerdown', this.viewerContainerOnPointerDown);\n this.viewerContainer.addEventListener('pointermove', this.viewerContainerOnPointerMove);\n this.viewerContainer.addEventListener('pointerup', this.viewerContainerOnPointerEnd);\n this.viewerContainer.addEventListener('pointerleave', this.viewerContainerOnPointerEnd);\n }\n else {\n this.viewerContainer.addEventListener('touchstart', this.viewerContainerOnTouchStart);\n if (this.isWebkitMobile && this.isDeviceiOS) {\n // eslint-disable-next-line max-len\n this.viewerContainer.addEventListener(\"touchmove\", function (e) { if (!isNullOrUndefined(e.scale) && (e.scale !== 1)) {\n e.preventDefault();\n } }, { passive: false });\n }\n this.viewerContainer.addEventListener('touchmove', this.viewerContainerOnTouchMove);\n this.viewerContainer.addEventListener('touchend', this.viewerContainerOnTouchEnd);\n this.viewerContainer.addEventListener('touchleave', this.viewerContainerOnTouchEnd);\n this.viewerContainer.addEventListener('touchcancel', this.viewerContainerOnTouchEnd);\n }\n };\n PdfViewerBase.prototype.unWireEvents = function () {\n if (this.viewerContainer) {\n this.viewerContainer.removeEventListener('scroll', this.viewerContainerOnScroll, true);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.viewerContainer.removeEventListener('touchmove', this.viewerContainerOnScroll, true);\n }\n this.viewerContainer.removeEventListener('mousedown', this.viewerContainerOnMousedown);\n this.viewerContainer.removeEventListener('mouseup', this.viewerContainerOnMouseup);\n this.viewerContainer.removeEventListener(\"wheel\", this.detectTouchPad, false);\n this.viewerContainer.removeEventListener('wheel', this.viewerContainerOnMouseWheel);\n if (this.isMacSafari) {\n window.removeEventListener('gesturestart', function (e) { return e.preventDefault(); });\n window.removeEventListener('gesturechange', function (e) { return e.preventDefault(); });\n window.removeEventListener('gestureend', function (e) { return e.preventDefault(); });\n this.viewerContainer.removeEventListener('gesturestart', this.handleMacGestureStart, false);\n this.viewerContainer.removeEventListener('gesturechange', this.handleMacGestureChange, false);\n this.viewerContainer.removeEventListener('gestureend', this.handleMacGestureEnd, false);\n }\n this.viewerContainer.removeEventListener('mousemove', this.viewerContainerOnMousemove);\n this.viewerContainer.removeEventListener('mouseleave', this.viewerContainerOnMouseLeave);\n this.viewerContainer.removeEventListener('mouseenter', this.viewerContainerOnMouseEnter);\n this.viewerContainer.removeEventListener('mouseover', this.viewerContainerOnMouseOver);\n this.viewerContainer.removeEventListener('click', this.viewerContainerOnClick);\n this.viewerContainer.removeEventListener('dragstart', this.viewerContainerOnDragStart);\n this.viewerContainer.removeEventListener('contextmenu', this.viewerContainerOnContextMenuClick);\n this.pdfViewer.element.removeEventListener('keydown', this.viewerContainerOnKeyDown);\n window.addEventListener('keydown', this.onWindowKeyDown);\n window.removeEventListener('mouseup', this.onWindowMouseUp);\n window.removeEventListener('unload', this.unload);\n window.removeEventListener('resize', this.onWindowResize);\n // eslint-disable-next-line max-len\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.userAgent.indexOf('Edge') !== -1 || navigator.userAgent.indexOf('Trident') !== -1) {\n this.viewerContainer.removeEventListener('pointerdown', this.viewerContainerOnPointerDown);\n this.viewerContainer.removeEventListener('pointermove', this.viewerContainerOnPointerMove);\n this.viewerContainer.removeEventListener('pointerup', this.viewerContainerOnPointerEnd);\n this.viewerContainer.removeEventListener('pointerleave', this.viewerContainerOnPointerEnd);\n }\n else {\n this.viewerContainer.removeEventListener('touchstart', this.viewerContainerOnTouchStart);\n if (this.isWebkitMobile && this.isDeviceiOS) {\n // eslint-disable-next-line max-len\n this.viewerContainer.removeEventListener(\"touchmove\", function (e) { if (!isNullOrUndefined(e.scale) && (e.scale !== 1)) {\n e.preventDefault();\n } }, false);\n }\n this.viewerContainer.removeEventListener('touchmove', this.viewerContainerOnTouchMove);\n this.viewerContainer.removeEventListener('touchend', this.viewerContainerOnTouchEnd);\n this.viewerContainer.removeEventListener('touchleave', this.viewerContainerOnTouchEnd);\n this.viewerContainer.removeEventListener('touchcancel', this.viewerContainerOnTouchEnd);\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateZoomValue = function () {\n if (this.pdfViewer.magnificationModule) {\n if (this.pdfViewer.magnificationModule.isAutoZoom) {\n this.pdfViewer.magnificationModule.fitToAuto();\n }\n else if (this.pdfViewer.zoomMode !== 'FitToWidth' && this.pdfViewer.magnificationModule.fitType === 'fitToWidth') {\n this.pdfViewer.magnificationModule.fitToWidth();\n }\n else if (this.pdfViewer.magnificationModule.fitType === 'fitToPage') {\n this.pdfViewer.magnificationModule.fitToPage();\n }\n }\n for (var i = 0; i < this.pageCount; i++) {\n this.applyLeftPosition(i);\n }\n };\n /**\n * @private\n * @param {any} annotation - The annotation type of any.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateFreeTextProperties = function (annotation) {\n if (this.pdfViewer.enableShapeLabel) {\n if (this.pdfViewer.shapeLabelSettings.fillColor) {\n annotation.labelFillColor = this.pdfViewer.shapeLabelSettings.fillColor;\n }\n if (this.pdfViewer.shapeLabelSettings.fontColor) {\n annotation.fontColor = this.pdfViewer.shapeLabelSettings.fontColor;\n }\n if (this.pdfViewer.shapeLabelSettings.fontSize) {\n annotation.fontSize = this.pdfViewer.shapeLabelSettings.fontSize;\n }\n if (this.pdfViewer.shapeLabelSettings.fontFamily) {\n annotation.fontFamily = this.pdfViewer.shapeLabelSettings.fontFamily;\n }\n if (this.pdfViewer.shapeLabelSettings.opacity) {\n annotation.labelOpacity = this.pdfViewer.shapeLabelSettings.opacity;\n }\n if (this.pdfViewer.shapeLabelSettings.labelContent) {\n annotation.labelContent = this.pdfViewer.shapeLabelSettings.labelContent;\n }\n }\n };\n /**\n * @private\n * @param {MouseEvent} event - The mouse event.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.mouseDownHandler = function (event) {\n var isEnableDelete = false;\n var isCancel;\n var hidenItems = [];\n var disabledItems = [];\n if (event && event.target) {\n this.mouseDownEvent = event;\n this.contextMenuModule.currentTarget = event.target;\n }\n if (this.pdfViewer.annotationModule) {\n isEnableDelete = this.pdfViewer.annotationModule.isEnableDelete();\n }\n if (!isEnableDelete) {\n disabledItems.push('DeleteContext');\n }\n if (this.pdfViewer.contextMenuOption === 'None') {\n isCancel = true;\n }\n else if (this.pdfViewer.textSelectionModule || this.isShapeBasedAnnotationsEnabled()) {\n if (event) {\n var isClickWithinSelectionBounds = this.isClickWithinSelectionBounds(event);\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus) {\n this.isFreeTextContextMenu = true;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.freeTextAnnotationModule && !this.pdfViewer.annotation.freeTextAnnotationModule.isTextSelected) {\n disabledItems.push('Cut');\n disabledItems.push('Copy');\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.freeTextAnnotationModule && this.pdfViewer.annotation.freeTextAnnotationModule.selectedText === '') {\n disabledItems.push('Paste');\n }\n hidenItems.push('HighlightContext');\n hidenItems.push('UnderlineContext');\n hidenItems.push('StrikethroughContext');\n hidenItems.push('ScaleRatio');\n hidenItems.push('Properties');\n hidenItems.push('Comment');\n hidenItems.push('DeleteContext');\n }\n else if (isClickWithinSelectionBounds && this.pdfViewer.textSelectionModule) {\n // eslint-disable-next-line max-len\n if ((!event.target.classList.contains('e-pv-maintaincontent') && event.target.classList.contains('e-pv-text') || event.target.classList.contains('e-pv-text-layer'))) {\n if (this.checkIsNormalText()) {\n isCancel = true;\n }\n // eslint-disable-next-line max-len\n }\n else if ((Browser.isIE || Browser.info.name === 'edge') && event.target.classList.contains('e-pv-page-container')) {\n isCancel = true;\n }\n hidenItems.push('Cut');\n hidenItems.push('Paste');\n hidenItems.push('DeleteContext');\n hidenItems.push('ScaleRatio');\n hidenItems.push('Comment');\n hidenItems.push('Properties');\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage')) {\n this.shapeMenuItems(hidenItems, disabledItems, false, true);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType !== 'Path') {\n this.shapeMenuItems(hidenItems, disabledItems, true);\n }\n else {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.isShapeCopied && (event.target.classList.contains('e-pv-text-layer') ||\n event.target.classList.contains('e-pv-text')) && !this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n hidenItems.push('Properties');\n this.shapeMenuItems(hidenItems, disabledItems, false);\n // eslint-disable-next-line max-len\n }\n else if (this.isCalibrateAnnotationModule() && this.pdfViewer.annotationModule.measureAnnotationModule.currentAnnotationMode) {\n hidenItems.push('HighlightContext');\n hidenItems.push('UnderlineContext');\n hidenItems.push('StrikethroughContext');\n hidenItems.push('Properties');\n disabledItems.push('Cut');\n disabledItems.push('Copy');\n disabledItems.push('Paste');\n disabledItems.push('DeleteContext');\n disabledItems.push('Comment');\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n hidenItems.push('HighlightContext');\n hidenItems.push('UnderlineContext');\n hidenItems.push('StrikethroughContext');\n hidenItems.push('Properties');\n hidenItems.push('Cut');\n hidenItems.push('Copy');\n hidenItems.push('Paste');\n hidenItems.push('ScaleRatio');\n }\n else {\n isCancel = true;\n }\n }\n }\n else if (this.pdfViewer.textSelectionModule && (this.pdfViewer.contextMenuOption === 'MouseUp')) {\n hidenItems.push('Cut');\n hidenItems.push('Paste');\n hidenItems.push('DeleteContext');\n hidenItems.push('ScaleRatio');\n hidenItems.push('Comment');\n hidenItems.push('Properties');\n }\n else if (this.pdfViewer.selectedItems.annotations.length === 0) {\n hidenItems.push('Cut');\n hidenItems.push('Paste');\n hidenItems.push('DeleteContext');\n hidenItems.push('ScaleRatio');\n hidenItems.push('Properties');\n }\n if (!this.pdfViewer.enableCommentPanel) {\n disabledItems.push('Comment');\n }\n }\n else {\n isCancel = true;\n }\n var eventArgs = { hidenItems: hidenItems, disabledItems: disabledItems, isCancel: isCancel };\n this.pdfViewer._dotnetInstance.invokeMethodAsync('MouseDownHandler', eventArgs);\n };\n /**\n * @private\n * @param {string} selectedMenu - The selected menu.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.OnItemSelected = function (selectedMenu) {\n // eslint-disable-next-line\n var target = this.contextMenuModule.currentTarget;\n switch (selectedMenu) {\n case this.pdfViewer.localeObj.getConstant('Copy'):\n this.CopyItemSelected();\n break;\n case this.pdfViewer.localeObj.getConstant('Highlight context'):\n this.TextMarkUpSelected('Highlight');\n break;\n case this.pdfViewer.localeObj.getConstant('Underline context'):\n this.TextMarkUpSelected('Underline');\n break;\n case this.pdfViewer.localeObj.getConstant('Strikethrough context'):\n this.TextMarkUpSelected('Strikethrough');\n break;\n case this.pdfViewer.localeObj.getConstant('Properties'):\n this.PropertiesItemSelected();\n break;\n case this.pdfViewer.localeObj.getConstant('Cut'):\n this.CutItemSelected(target);\n break;\n case this.pdfViewer.localeObj.getConstant('Paste'):\n this.pasteItemSelected(target);\n break;\n case this.pdfViewer.localeObj.getConstant('Delete Context'):\n this.DeleteItemSelected();\n break;\n case this.pdfViewer.localeObj.getConstant('Scale Ratio'):\n this.ScaleRatioSelected();\n break;\n case this.pdfViewer.localeObj.getConstant('Comment'):\n this.CommentItemSelected();\n break;\n default:\n break;\n }\n };\n PdfViewerBase.prototype.CommentItemSelected = function () {\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.showCommentsPanel();\n if (this.pdfViewer.selectedItems.annotations.length !== 0 ||\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n // eslint-disable-next-line\n var currentAnnotation = void 0;\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n currentAnnotation = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n else {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + this.pdfViewer.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(currentAnnotation.annotName);\n if (commentsDiv) {\n if (!commentsDiv.classList.contains('e-pv-comments-border')) {\n commentsDiv.firstChild.click();\n }\n }\n }\n }\n };\n PdfViewerBase.prototype.ScaleRatioSelected = function () {\n if (this.isCalibrateAnnotationModule()) {\n this.pdfViewer.annotation.measureAnnotationModule.createScaleRatioWindow();\n }\n };\n PdfViewerBase.prototype.DeleteItemSelected = function () {\n if (this.pdfViewer.formDesignerModule && this.pdfViewer.selectedItems.formFields.length !== 0) {\n this.pdfViewer.formDesignerModule.deleteFormField(this.pdfViewer.selectedItems.formFields[0].id);\n }\n else if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.deleteAnnotation();\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.pasteItemSelected = function (target) {\n // eslint-disable-next-line max-len\n if (this.isFreeTextContextMenu || (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus) && (target && target.className === 'free-text-input' && target.tagName === 'TEXTAREA')) {\n this.pdfViewer.annotation.freeTextAnnotationModule.pasteSelectedText(target);\n this.contextMenuModule.close();\n }\n else {\n this.pdfViewer.paste();\n this.contextMenuModule.previousAction = 'Paste';\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.CutItemSelected = function (target) {\n // eslint-disable-next-line max-len\n if (this.isFreeTextContextMenu || (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus) && (target && target.className === 'free-text-input' && target.tagName === 'TEXTAREA')) {\n this.pdfViewer.annotation.freeTextAnnotationModule.cutSelectedText(target);\n this.contextMenuModule.close();\n }\n else if (this.pdfViewer.selectedItems.annotations.length === 1) {\n var pageIndex = this.pdfViewer.selectedItems.annotations[0].pageIndex;\n this.pdfViewer.cut();\n this.contextMenuModule.previousAction = 'Cut';\n }\n else if (this.pdfViewer.selectedItems.formFields.length === 1) {\n this.pdfViewer.cut();\n this.contextMenuModule.previousAction = 'Cut';\n }\n };\n PdfViewerBase.prototype.CopyItemSelected = function () {\n var isSkip = false;\n // eslint-disable-next-line max-len\n if (this.isFreeTextContextMenu || (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus)) {\n this.pdfViewer.annotation.freeTextAnnotationModule.copySelectedText();\n this.contextMenuModule.close();\n isSkip = true;\n }\n else if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.copyText();\n this.contextMenuModule.close();\n }\n if (this.pdfViewer.selectedItems.annotations.length && !isSkip) {\n this.pdfViewer.copy();\n this.contextMenuModule.previousAction = 'Copy';\n }\n else if (this.pdfViewer.selectedItems.formFields.length > 0) {\n this.pdfViewer.copy();\n this.contextMenuModule.previousAction = 'Copy';\n }\n };\n PdfViewerBase.prototype.PropertiesItemSelected = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'LineWidthArrowHead' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance')) {\n this.pdfViewer.annotation.createPropertiesWindow();\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.formFields.length !== 0 && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType) {\n this.pdfViewer.formDesigner.createPropertiesWindow();\n }\n };\n PdfViewerBase.prototype.TextMarkUpSelected = function (type) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.textMarkupAnnotationModule) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.isSelectionMaintained = false;\n this.pdfViewer.annotation.textMarkupAnnotationModule.drawTextMarkupAnnotations(type);\n this.pdfViewer.annotation.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n this.pdfViewer.annotation.textMarkupAnnotationModule.currentTextMarkupAddMode = '';\n this.pdfViewer.annotation.textMarkupAnnotationModule.isSelectionMaintained = true;\n }\n };\n PdfViewerBase.prototype.shapeMenuItems = function (hidenItems, disabledItems, enableProperties, isSignature) {\n if (this.pdfViewer.annotation && !this.pdfViewer.annotation.isShapeCopied) {\n disabledItems.push('Paste');\n }\n hidenItems.push('HighlightContext');\n hidenItems.push('UnderlineContext');\n hidenItems.push('StrikethroughContext');\n hidenItems.push('ScaleRatio');\n if (enableProperties) {\n // eslint-disable-next-line max-len\n if (!(this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'LineWidthArrowHead' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance')) {\n hidenItems.push('Properties');\n }\n }\n else if (isSignature) {\n hidenItems.push('Properties');\n hidenItems.push('Comment');\n }\n else {\n hidenItems.push('Cut');\n hidenItems.push('Copy');\n hidenItems.push('DeleteContext');\n hidenItems.push('Comment');\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.checkIsRtlText = function (text) {\n // eslint-disable-next-line max-len\n var ltrChars = 'A-Za-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02B8\\\\u0300-\\\\u0590\\\\u0800-\\\\u1FFF' + '\\\\u2C00-\\\\uFB1C\\\\uFDFE-\\\\uFE6F\\\\uFEFD-\\\\uFFFF';\n var rtlChars = '\\\\u0591-\\\\u07FF\\\\uFB1D-\\\\uFDFD\\\\uFE70-\\\\uFEFC';\n // eslint-disable-next-line\n var rtlDirCheck = new RegExp('^[^' + ltrChars + ']*[' + rtlChars + ']');\n return rtlDirCheck.test(text);\n };\n /**\n * @private\n * @param {any} event - Specifies the event.\n * @returns {boolean} - retruned the beolean value.\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.isClickWithinSelectionBounds = function (event) {\n var bounds;\n var isWithin = false;\n var diCount = 5;\n var negativeCount = ((this.currentPageNumber - diCount) < 0) ? 0 : this.currentPageNumber - diCount;\n var positiveCount = ((this.currentPageNumber - diCount) > this.pageCount) ? this.pageCount : this.currentPageNumber + diCount;\n if (this.pdfViewer.textSelectionModule) {\n for (var i = negativeCount; i < positiveCount; i++) {\n if (i >= 0) {\n bounds = this.pdfViewer.textSelectionModule.getCurrentSelectionBounds(i);\n if (bounds) {\n var currentBound = bounds;\n if (this.getHorizontalValue(currentBound.left, i) < event.clientX && this.getHorizontalValue(currentBound.right, i) >\n event.clientX && this.getVerticalValue(currentBound.top, i) < event.clientY &&\n this.getVerticalValue(currentBound.bottom, i) > event.clientY) {\n isWithin = true;\n break;\n }\n }\n }\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && bounds) {\n isWithin = true;\n }\n }\n return isWithin;\n };\n PdfViewerBase.prototype.getHorizontalClientValue = function (value) {\n var pageDiv = this.getElement('_pageDiv_' + (this.currentPageNumber - 1));\n var pageBounds = pageDiv.getBoundingClientRect();\n return (value - pageBounds.left);\n };\n PdfViewerBase.prototype.getVerticalClientValue = function (value) {\n var pageDiv = this.getElement('_pageDiv_' + (this.currentPageNumber - 1));\n var pageBounds = pageDiv.getBoundingClientRect();\n return (value - pageBounds.top);\n };\n PdfViewerBase.prototype.getHorizontalValue = function (value, pageNumber) {\n var pageDiv = this.getElement('_pageDiv_' + (pageNumber || this.currentPageNumber - 1));\n var pageBounds = pageDiv.getBoundingClientRect();\n return (value * this.getZoomFactor()) + pageBounds.left;\n };\n PdfViewerBase.prototype.getVerticalValue = function (value, pageNumber) {\n var pageDiv = this.getElement('_pageDiv_' + (pageNumber || this.currentPageNumber - 1));\n var pageBounds = pageDiv.getBoundingClientRect();\n return (value * this.getZoomFactor()) + pageBounds.top;\n };\n /**\n * @private\n * @returns {boolean} - retruned the beolean value.\n */\n PdfViewerBase.prototype.checkIsNormalText = function () {\n var isText = true;\n var currentText = '';\n // eslint-disable-next-line\n var textSelectionModule = this.pdfViewer.textSelectionModule;\n if (textSelectionModule && textSelectionModule.selectionRangeArray && textSelectionModule.selectionRangeArray.length === 1) {\n currentText = textSelectionModule.selectionRangeArray[0].textContent;\n }\n else if (window.getSelection() && window.getSelection().anchorNode) {\n currentText = window.getSelection().toString();\n }\n if (currentText !== '' && this.checkIsRtlText(currentText)) {\n isText = false;\n }\n return isText;\n };\n PdfViewerBase.prototype.DeleteKeyPressed = function (event) {\n var isSearchboxDialogOpen;\n var searchBoxId = document.getElementById(this.pdfViewer.element.id + \"_search_box\");\n if (searchBoxId) {\n isSearchboxDialogOpen = searchBoxId.style.display !== \"none\";\n }\n if (this.pdfViewer.formDesignerModule && !this.pdfViewer.formDesigner.isPropertyDialogOpen && this.pdfViewer.designerMode && this.pdfViewer.selectedItems.formFields.length !== 0 && !isSearchboxDialogOpen) {\n this.pdfViewer.formDesignerModule.deleteFormField(this.pdfViewer.selectedItems.formFields[0].id);\n }\n else if (this.pdfViewer.annotation && !this.pdfViewer.designerMode && event.srcElement.parentElement.classList && !event.srcElement.parentElement.classList.contains(\"e-input-focus\")) {\n if (this.isTextMarkupAnnotationModule() && !this.getPopupNoteVisibleStatus() && !isSearchboxDialogOpen) {\n this.pdfViewer.annotationModule.deleteAnnotation();\n }\n if (this.pdfViewer.selectedItems.annotations.length > 0) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n var isReadOnly = true;\n var type = annotation.shapeAnnotationType;\n if (type === 'Path' || annotation.formFieldAnnotationType === 'SignatureField' || annotation.formFieldAnnotationType === 'InitialField' || type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') {\n var inputFields = document.getElementById(annotation.id);\n if (inputFields && inputFields.disabled) {\n isReadOnly = true;\n }\n }\n if (!isReadOnly) {\n if (annotation.annotationSettings && annotation.annotationSettings.isLock) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Delete', annotation)) {\n this.pdfViewer.remove(annotation);\n this.pdfViewer.renderSelector(this.pdfViewer.annotation.getEventPageNumber(event));\n }\n }\n else {\n this.pdfViewer.remove(annotation);\n this.pdfViewer.renderSelector(this.pdfViewer.annotation.getEventPageNumber(event));\n }\n }\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.initiatePanning = function () {\n this.isPanMode = true;\n this.textLayer.modifyTextCursor(false);\n this.disableTextSelectionMode();\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n this.pdfViewer.toolbar.annotationToolbarModule.deselectAllItems();\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.initiateTextSelectMode = function () {\n this.isPanMode = false;\n if (this.viewerContainer) {\n this.viewerContainer.style.cursor = 'auto';\n if (this.pdfViewer.textSelectionModule) {\n this.textLayer.modifyTextCursor(true);\n this.pdfViewer.textSelectionModule.enableTextSelectionMode();\n }\n if ((!Browser.isDevice || this.pdfViewer.enableDesktopMode) && !isBlazor()) {\n this.enableAnnotationAddTools(true);\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.initiateTextSelection = function () {\n if (this.pdfViewer.toolbar && !this.pdfViewer.toolbar.isSelectionToolDisabled) {\n this.initiateTextSelectMode();\n this.pdfViewer.toolbar.updateInteractionTools(true);\n }\n };\n PdfViewerBase.prototype.enableAnnotationAddTools = function (isEnable) {\n if (this.pdfViewer.toolbarModule) {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.enableAnnotationAddTools(isEnable);\n }\n }\n };\n PdfViewerBase.prototype.applySelection = function () {\n if (window.getSelection().anchorNode !== null) {\n this.pdfViewer.textSelectionModule.applySpanForSelection();\n }\n this.isViewerContainerDoubleClick = false;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.isDesignerMode = function (target) {\n var isDesignerMode = false;\n if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage')) {\n isDesignerMode = true;\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType !== 'Path') {\n isDesignerMode = true;\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.formFields.length !== 0 && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType && this.pdfViewer.designerMode) {\n isDesignerMode = true;\n }\n else {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.isShapeCopied && (target.classList.contains('e-pv-text-layer') ||\n // eslint-disable-next-line max-len\n target.classList.contains('e-pv-text')) && !this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n isDesignerMode = true;\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.formDesigner && this.pdfViewer.formDesigner.isShapeCopied && (target.classList.contains('e-pv-text-layer') ||\n target.classList.contains('e-pv-text'))) {\n isDesignerMode = true;\n }\n }\n this.designerModetarget = target;\n return isDesignerMode;\n };\n PdfViewerBase.prototype.handleTaps = function (touchPoints, event) {\n var _this = this;\n //EJ2CORE-813 - Implemented focus removing logic for iOS devices\n if (this.isDeviceiOS) {\n var obj = findActiveElement(event, this, this.pdfViewer);\n // eslint-disable-next-line\n var isRemoveFocus_1 = (!isNullOrUndefined(this.pdfViewer.annotation) && !isNullOrUndefined(this.pdfViewer.annotation.freeTextAnnotationModule) && !this.pdfViewer.annotation.freeTextAnnotationModule.isNewFreeTextAnnot) && (obj && this.pdfViewer.selectedItems.annotations[0] ? obj.id !== this.pdfViewer.selectedItems.annotations[0].id : true) && document.activeElement.classList.contains('free-text-input') && this.isFreeTextAnnotation(this.pdfViewer.selectedItems.annotations);\n if (!this.singleTapTimer) {\n this.singleTapTimer = setTimeout(function () {\n if (isRemoveFocus_1 && (!isNullOrUndefined(_this.pdfViewer.selectedItems) && !isNullOrUndefined(_this.pdfViewer.selectedItems.annotations[0]))) {\n _this.pdfViewer.clearSelection(_this.pdfViewer.selectedItems.annotations[0].pageIndex);\n _this.focusViewerContainer(true);\n }\n _this.onSingleTap(touchPoints);\n // eslint-disable-next-line\n }, 300);\n this.tapCount++;\n }\n else {\n if (this.pdfViewer.enablePinchZoom) {\n this.tapCount++;\n if (this.tapCount > 2) {\n this.tapCount = 2;\n }\n clearTimeout(this.singleTapTimer);\n this.singleTapTimer = null;\n this.onDoubleTap(touchPoints);\n }\n }\n }\n else {\n if (!this.singleTapTimer) {\n this.singleTapTimer = setTimeout(function () {\n _this.onSingleTap(touchPoints);\n // eslint-disable-next-line\n }, 300);\n this.tapCount++;\n }\n else {\n if (this.pdfViewer.enablePinchZoom) {\n this.tapCount++;\n if (this.tapCount > 2) {\n this.tapCount = 2;\n }\n clearTimeout(this.singleTapTimer);\n this.singleTapTimer = null;\n this.onDoubleTap(touchPoints);\n }\n }\n }\n };\n PdfViewerBase.prototype.handleTextBoxTaps = function (touchPoints) {\n var _this = this;\n setTimeout(function () {\n _this.inputTapCount = 0;\n }, 300);\n this.inputTapCount++;\n //EJ2CORE-813 - Removing timer function for iOS Devices\n if (this.isDeviceiOS) {\n // eslint-disable-next-line\n this.onTextBoxDoubleTap(touchPoints);\n }\n else {\n var timer = setTimeout(function () {\n _this.onTextBoxDoubleTap(touchPoints);\n }, 200);\n }\n if (this.inputTapCount > 2) {\n this.inputTapCount = 0;\n }\n };\n PdfViewerBase.prototype.onTextBoxDoubleTap = function (touches) {\n var target = touches[0].target;\n if (this.inputTapCount === 2) {\n if (this.pdfViewer.selectedItems.annotations.length !== 0) {\n if (this.pdfViewer.annotationModule) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n //EJ2CORE-813 - Removing focus from all active free text elements before focusing on free text annotation on iOS devices\n if (this.isDeviceiOS && document.activeElement.classList.contains('free-text-input') && (this.isFreeTextAnnotation(this.pdfViewer.selectedItems.annotations))) {\n this.focusViewerContainer(true);\n }\n this.pdfViewer.annotationModule.annotationSelect(currentAnnotation.annotName, currentAnnotation.pageIndex, currentAnnotation, null, true);\n }\n if (this.isFreeTextAnnotation(this.pdfViewer.selectedItems.annotations) && !(this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus)) {\n var elmtPosition = {};\n elmtPosition.x = this.pdfViewer.selectedItems.annotations[0].bounds.x;\n elmtPosition.y = this.pdfViewer.selectedItems.annotations[0].bounds.y;\n var targetAnnotation = void 0;\n if (this.pdfViewer.selectedItems.annotations[0].id == 'diagram_helper') {\n targetAnnotation = this.pdfViewer.nameTable[this.eventArgs.source.id];\n }\n else {\n targetAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.freeTextAnnotationModule.addInuptElemet(elmtPosition, targetAnnotation);\n }\n else if (this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].enableShapeLabel && !(this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus)) {\n var elmtPosition = {};\n elmtPosition.x = this.pdfViewer.selectedItems.annotations[0].bounds.x;\n elmtPosition.y = this.pdfViewer.selectedItems.annotations[0].bounds.y;\n this.pdfViewer.annotation.inputElementModule.editLabel(elmtPosition, this.pdfViewer.selectedItems.annotations[0]);\n }\n }\n }\n };\n PdfViewerBase.prototype.onSingleTap = function (touches) {\n var target = touches[0].target;\n var isFormfields = false;\n this.singleTapTimer = null;\n if (target && (target.classList.contains('e-pdfviewer-formFields')\n || target.classList.contains('e-pdfviewer-ListBox') || target.classList.contains('e-pdfviewer-signatureformfields'))) {\n isFormfields = true;\n }\n if (!this.isLongTouchPropagated && !this.navigationPane.isNavigationToolbarVisible && !isFormfields) {\n if (this.pdfViewer.toolbarModule) {\n if ((this.touchClientX >= touches[0].clientX - 10) && (this.touchClientX <= touches[0].clientX + 10) &&\n (this.touchClientY >= touches[0].clientY - 10) && (this.touchClientY <= touches[0].clientY + 10)) {\n if (!this.isTapHidden) {\n if (isBlazor()) {\n // eslint-disable-next-line max-len\n this.viewerContainer.scrollTop -= this.pdfViewer.element.querySelector('.e-pv-mobile-toolbar').clientHeight * this.getZoomFactor();\n }\n if (this.pdfViewer.toolbar.moreDropDown) {\n var dropDown = this.getElement('_more_option-popup');\n if (dropDown.firstElementChild) {\n dropDown.classList.remove('e-popup-open');\n dropDown.classList.add('e-popup-close');\n dropDown.removeChild(dropDown.firstElementChild);\n }\n }\n }\n else {\n if (isBlazor()) {\n // eslint-disable-next-line max-len\n this.viewerContainer.scrollTop += this.pdfViewer.element.querySelector('.e-pv-mobile-toolbar').clientHeight * this.getZoomFactor();\n }\n }\n if (this.isTapHidden && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n this.mobileScrollerContainer.style.display = '';\n this.updateMobileScrollerPosition();\n // eslint-disable-next-line max-len\n }\n else if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && this.getSelectTextMarkupCurrentPage() == null) {\n this.mobileScrollerContainer.style.display = 'none';\n }\n if (this.getSelectTextMarkupCurrentPage() == null) {\n if (!isBlazor()) {\n if (this.pdfViewer.enableToolbar) {\n this.pdfViewer.toolbarModule.showToolbar(true);\n }\n }\n else {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('TapOnMobileDevice', this.isTapHidden);\n this.blazorUIAdaptor.tapOnMobileDevice(this.isTapHidden);\n }\n this.isTapHidden = !this.isTapHidden;\n }\n }\n this.tapCount = 0;\n }\n }\n };\n PdfViewerBase.prototype.onDoubleTap = function (touches) {\n var target = touches[0].target;\n var isFormfields = false;\n if (target && (target.classList.contains('e-pdfviewer-formFields')\n || target.classList.contains('e-pdfviewer-ListBox') || target.classList.contains('e-pdfviewer-signatureformfields'))) {\n isFormfields = true;\n }\n if (this.tapCount === 2 && !isFormfields) {\n this.tapCount = 0;\n /**\n * Sometimes the values gets differ by some decimal points. So converted the decimal points values to Integer values.\n */\n // eslint-disable-next-line\n if ((this.touchClientX >= parseInt((touches[0].clientX - 10).toString())) && (this.touchClientX <= touches[0].clientX + 10) &&\n (this.touchClientY >= touches[0].clientY - 10) && (this.touchClientY <= touches[0].clientY + 30)) {\n if (this.pdfViewer.magnification && this.pdfViewer.selectedItems.annotations.length !== 1) {\n this.pdfViewer.magnification.onDoubleTapMagnification();\n }\n this.viewerContainer.style.height = this.updatePageHeight(this.pdfViewer.element.getBoundingClientRect().height, this.toolbarHeight);\n this.isTapHidden = false;\n clearTimeout(this.singleTapTimer);\n this.singleTapTimer = null;\n }\n }\n };\n PdfViewerBase.prototype.preventTouchEvent = function (event) {\n if (this.pdfViewer.textSelectionModule) {\n // eslint-disable-next-line max-len\n if (!this.isPanMode && this.pdfViewer.enableTextSelection && !this.isTextSelectionDisabled && this.getSelectTextMarkupCurrentPage() == null) {\n if (!(this.isWebkitMobile && (Browser.isDevice && !this.pdfViewer.enableDesktopMode))) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n };\n PdfViewerBase.prototype.renderStampAnnotation = function (event) {\n if (this.pdfViewer.annotation) {\n var zoomFactor = this.getZoomFactor();\n var pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n var pageDiv = this.getElement('_pageDiv_' + pageIndex);\n if (this.pdfViewer.enableStampAnnotations) {\n var stampModule = this.pdfViewer.annotationModule.stampAnnotationModule;\n if (stampModule && stampModule.isStampAnnotSelected) {\n if (pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n // eslint-disable-next-line max-len\n if (event.type === 'touchend' && this.pdfViewer.annotationModule.stampAnnotationModule.currentStampAnnotation.shapeAnnotationType === 'Image') {\n var currentStampObj = this.pdfViewer.annotationModule.stampAnnotationModule.currentStampAnnotation;\n currentStampObj.pageIndex = pageIndex;\n currentStampObj.bounds.x = (event.changedTouches[0].clientX - pageCurrentRect.left) / zoomFactor;\n currentStampObj.bounds.y = (event.changedTouches[0].clientY - pageCurrentRect.top) / zoomFactor;\n stampModule.updateDeleteItems(pageIndex, currentStampObj, currentStampObj.opacity);\n this.pdfViewer.add(currentStampObj);\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n this.pdfViewer.renderDrawing(canvas, pageIndex);\n }\n else {\n // eslint-disable-next-line max-len\n stampModule.renderStamp((event.changedTouches[0].clientX - pageCurrentRect.left) / zoomFactor, (event.changedTouches[0].clientY - pageCurrentRect.top) / zoomFactor, null, null, pageIndex, null, null, null, null);\n }\n stampModule.isStampAnnotSelected = false;\n }\n }\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n if (this.pdfViewer.enableHandwrittenSignature && this.isSignatureAdded && pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n this.currentSignatureAnnot.pageIndex = pageIndex;\n // eslint-disable-next-line max-len\n this.signatureModule.renderSignature((event.changedTouches[0].clientX - pageCurrentRect.left) / zoomFactor, (event.changedTouches[0].clientY - pageCurrentRect.top) / zoomFactor);\n this.isSignatureAdded = false;\n }\n if (event.touches.length === 1 && this.isTextMarkupAnnotationModule() && !this.getPopupNoteVisibleStatus()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.onTextMarkupAnnotationTouchEnd(event);\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.initPageDiv = function (pageValues) {\n if (!isBlazor()) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.updateTotalPage();\n }\n }\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && this.mobiletotalPageContainer) {\n this.mobiletotalPageContainer.innerHTML = this.pageCount.toString();\n this.pageNoContainer.innerHTML = '(1-' + this.pageCount.toString() + ')';\n }\n if (this.pageCount > 0) {\n var topValue = 0;\n var pageLimit = 0;\n this.isMixedSizeDocument = false;\n if (this.pageCount > 100) {\n // to render 100 pages intially.\n pageLimit = 100;\n this.pageLimit = pageLimit;\n }\n else {\n pageLimit = this.pageCount;\n }\n var isPortrait = false;\n var isLandscape = false;\n var differentPageSize = false;\n for (var i = 0; i < pageLimit; i++) {\n if (typeof pageValues.pageSizes[parseInt(i.toString(), 10)] !== 'object') {\n var pageSize = pageValues.pageSizes[parseInt(i.toString(), 10)].split(',');\n if (pageValues.pageSizes[i - 1] !== null && i !== 0) {\n var previousPageHeight = pageValues.pageSizes[i - 1].split(',');\n topValue = this.pageGap + parseFloat(previousPageHeight[1]) + topValue;\n }\n else {\n topValue = this.pageGap;\n }\n var size = { width: parseFloat(pageSize[0]), height: parseFloat(pageSize[1]), top: topValue };\n this.pageSize.push(size);\n }\n else {\n if (pageValues.pageSizes[i - 1] !== null && i !== 0) {\n // eslint-disable-next-line\n var previousPageHeight = pageValues.pageSizes[i - 1];\n topValue = this.pageGap + (parseFloat(previousPageHeight.height) ? parseFloat(previousPageHeight.height) : parseFloat(previousPageHeight.Height)) + topValue;\n }\n else {\n topValue = this.pageGap;\n }\n // eslint-disable-next-line max-len\n var size = { width: (pageValues.pageSizes[parseInt(i.toString(), 10)].width ? pageValues.pageSizes[parseInt(i.toString(), 10)].width : pageValues.pageSizes[parseInt(i.toString(), 10)].Width), height: (pageValues.pageSizes[parseInt(i.toString(), 10)].height ? pageValues.pageSizes[parseInt(i.toString(), 10)].height : pageValues.pageSizes[parseInt(i.toString(), 10)].Height), top: topValue, rotation: !isNullOrUndefined(pageValues.pageRotation) && pageValues.pageRotation.length > 0 ? pageValues.pageRotation[parseInt(i.toString(), 10)] : 0 };\n this.pageSize.push(size);\n }\n if (this.pageSize[parseInt(i.toString(), 10)].height > this.pageSize[parseInt(i.toString(), 10)].width) {\n isPortrait = true;\n }\n if (this.pageSize[parseInt(i.toString(), 10)].width > this.pageSize[parseInt(i.toString(), 10)].height) {\n isLandscape = true;\n }\n if (i > 0 && this.pageSize[parseInt(i.toString(), 10)].width !== this.pageSize[i - 1].width) {\n differentPageSize = true;\n }\n var pageWidth = this.pageSize[parseInt(i.toString(), 10)].width;\n if (pageWidth > this.highestWidth) {\n this.highestWidth = pageWidth;\n }\n var pageHeight = this.pageSize[parseInt(i.toString(), 10)].height;\n if (pageHeight > this.highestHeight) {\n this.highestHeight = pageHeight;\n }\n }\n if ((isPortrait && isLandscape) || differentPageSize) {\n this.isMixedSizeDocument = true;\n }\n var limit = void 0;\n if (this.pdfViewer.initialRenderPages > 10) {\n if (this.pdfViewer.initialRenderPages > 100) {\n limit = pageLimit;\n }\n else {\n limit = this.pdfViewer.initialRenderPages <= this.pageCount ? this.pdfViewer.initialRenderPages : this.pageCount;\n }\n }\n else {\n limit = this.pageCount < 10 ? this.pageCount : 10;\n }\n for (var i = 0; i < limit; i++) {\n this.renderPageContainer(i, this.getPageWidth(i), this.getPageHeight(i), this.getPageTop(i));\n }\n // eslint-disable-next-line max-len\n this.pageContainer.style.height = this.getPageTop(this.pageSize.length - 1) + this.getPageHeight(this.pageSize.length - 1) + 'px';\n this.pageContainer.style.position = 'relative';\n if (this.pageLimit === 100) {\n var pageDiv = this.getElement('_pageDiv_' + this.pageLimit);\n if (pageDiv === null && this.pageLimit < this.pageCount) {\n Promise.all([this.renderPagesVirtually()]);\n }\n }\n }\n };\n PdfViewerBase.prototype.renderElementsVirtualScroll = function (pageNumber) {\n var lowerLimit = 1;\n var higherLimit = 3;\n if (this.pageStopValue <= 200) {\n lowerLimit = 4;\n higherLimit = 4;\n }\n else {\n lowerLimit = 2;\n higherLimit = 3;\n }\n var pageValue = pageNumber + lowerLimit;\n if (pageValue > this.pageCount) {\n pageValue = this.pageCount;\n }\n for (var i = pageNumber - 1; i <= pageValue; i++) {\n if (i !== -1) {\n this.renderPageElement(i);\n }\n }\n var lowerPageValue = pageNumber - 3;\n if (lowerPageValue < 0) {\n lowerPageValue = 0;\n }\n for (var i = pageNumber - 1; i >= lowerPageValue; i--) {\n if (i !== -1) {\n this.renderPageElement(i);\n }\n }\n for (var j = 0; j < this.pageCount; j++) {\n if (!((lowerPageValue <= j) && (j <= pageValue))) {\n var pageDiv = this.getElement('_pageDiv_' + j);\n var pageCanvas = this.getElement('_pageCanvas_' + j);\n var textLayer = this.getElement('_textLayer_' + j);\n var initialLoadedPages = this.pdfViewer.initialRenderPages > this.pageRenderCount ? (this.pdfViewer.initialRenderPages <= this.pageCount) ? (this.pdfViewer.initialRenderPages - 1) : this.pageCount : -1;\n if (pageCanvas && j > initialLoadedPages) {\n pageCanvas.parentNode.removeChild(pageCanvas);\n if (textLayer) {\n if (this.pdfViewer.textSelectionModule && textLayer.childNodes.length !== 0 && !this.isTextSelectionDisabled) {\n this.pdfViewer.textSelectionModule.maintainSelectionOnScroll(j, true);\n }\n textLayer.parentNode.removeChild(textLayer);\n }\n var indexInArray = this.renderedPagesList.indexOf(j);\n if (indexInArray !== -1) {\n this.renderedPagesList.splice(indexInArray, 1);\n }\n }\n if (pageDiv && j > initialLoadedPages) {\n pageDiv.parentNode.removeChild(pageDiv);\n var indexInArray = this.renderedPagesList.indexOf(j);\n if (indexInArray !== -1) {\n this.renderedPagesList.splice(indexInArray, 1);\n }\n }\n }\n }\n if (isBlazor())\n this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateCurrentPageNumber', this.currentPageNumber);\n };\n PdfViewerBase.prototype.renderPageElement = function (i) {\n var pageDiv = this.getElement('_pageDiv_' + i);\n var canvas = this.getElement('_pageCanvas_' + i);\n if (canvas == null && pageDiv == null && i < this.pageSize.length) {\n // eslint-disable-next-line\n this.renderPageContainer(i, this.getPageWidth(i), this.getPageHeight(i), this.getPageTop(i));\n }\n };\n PdfViewerBase.prototype.renderPagesVirtually = function () {\n return __awaiter(this, void 0, void 0, function () {\n var proxy;\n var _this = this;\n return __generator(this, function (_a) {\n proxy = this;\n setTimeout(function () {\n _this.initiateRenderPagesVirtually(proxy);\n }, 500);\n return [2 /*return*/];\n });\n });\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.initiateRenderPagesVirtually = function (proxy) {\n var jsonObject = { hashId: proxy.hashId, isClientsideLoading: this.clientSideRendering, isCompletePageSizeNotReceived: true, action: 'VirtualLoad', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.documentId, password: proxy.passwordData };\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = proxy.jsonDocumentId;\n }\n this.virtualLoadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.virtualLoadRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.load;\n this.virtualLoadRequestHandler.responseType = 'json';\n this.virtualLoadRequestHandler.mode = true;\n if (this.clientSideRendering) {\n var data = this.pdfViewer.pdfRendererModule.load(null, this.documentId, null, jsonObject);\n this.viritualload(JSON.parse(data), this);\n }\n else {\n this.virtualLoadRequestHandler.send(jsonObject);\n }\n // eslint-disable-next-line\n this.virtualLoadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.onControlError(500, data, 'VirtualLoad');\n }\n }\n }\n if (data) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n }\n proxy.viritualload(data, proxy);\n }\n };\n // eslint-disable-next-line\n this.virtualLoadRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText);\n };\n // eslint-disable-next-line\n this.virtualLoadRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText);\n };\n };\n PdfViewerBase.prototype.viritualload = function (data, proxy) {\n if (proxy.documentId === data.uniqueId) {\n proxy.pdfViewer.fireAjaxRequestSuccess('VirtualLoad', data);\n // eslint-disable-next-line\n var pageValues = data;\n if (proxy.pageSize[proxy.pageLimit - 1]) {\n var topValue = proxy.pageSize[proxy.pageLimit - 1].top;\n for (var i_1 = proxy.pageLimit; i_1 < proxy.pageCount; i_1++) {\n if (typeof (pageValues.pageSizes[parseInt(i_1.toString(), 10)]) !== 'object') {\n var pageSize = pageValues.pageSizes[parseInt(i_1.toString(), 10)].split(',');\n if (proxy.pageSize[i_1 - 1] !== null && i_1 !== 0) {\n var previousPageHeight = proxy.pageSize[i_1 - 1].height;\n topValue = proxy.pageGap + parseFloat(previousPageHeight) + topValue;\n }\n var size = { width: parseFloat(pageSize[0]), height: parseFloat(pageSize[1]), top: topValue };\n proxy.pageSize.push(size);\n }\n else {\n if (proxy.pageSize[i_1 - 1] !== null && i_1 !== 0) {\n var previousPageHeight = proxy.pageSize[i_1 - 1].height;\n topValue = proxy.pageGap + parseFloat(previousPageHeight) + topValue;\n }\n // eslint-disable-next-line max-len\n var size = { width: (parseFloat(pageValues.pageSizes[parseInt(i_1.toString(), 10)].width) ? parseFloat(pageValues.pageSizes[parseInt(i_1.toString(), 10)].width) : parseFloat(pageValues.pageSizes[parseInt(i_1.toString(), 10)].Width)), height: (parseFloat(pageValues.pageSizes[parseInt(i_1.toString(), 10)].height) ? parseFloat(pageValues.pageSizes[parseInt(i_1.toString(), 10)].height) : parseFloat(pageValues.pageSizes[parseInt(i_1.toString(), 10)].Height)), top: topValue, rotation: pageValues.pageRotation[parseInt(i_1.toString(), 10)] };\n proxy.pageSize.push(size);\n }\n }\n // eslint-disable-next-line max-len\n proxy.pageContainer.style.height = proxy.getPageTop(proxy.pageSize.length - 1) + proxy.getPageHeight(proxy.pageSize.length - 1) + 'px';\n // eslint-disable-next-line\n var pageData = window.sessionStorage.getItem(proxy.documentId + '_pagedata');\n if (proxy.pageCount > 100) {\n if (this.pdfViewer.initialRenderPages > 100) {\n var limit = this.pdfViewer.initialRenderPages <= proxy.pageCount ? this.pdfViewer.initialRenderPages : proxy.pageCount;\n for (var i = 100; i < limit; i++) {\n proxy.renderPageContainer(i, proxy.getPageWidth(i), proxy.getPageHeight(i), proxy.getPageTop(i));\n proxy.createRequestForRender(i);\n }\n }\n proxy.pdfViewer.fireDocumentLoad(pageData);\n var linkAnnotationModule = proxy.pdfViewer.linkAnnotationModule;\n if (linkAnnotationModule && linkAnnotationModule.linkAnnotation && linkAnnotationModule.linkAnnotation.length > 0 && linkAnnotationModule.linkPage.length > 0) {\n linkAnnotationModule.renderDocumentLink(linkAnnotationModule.linkAnnotation, linkAnnotationModule.linkPage, linkAnnotationModule.annotationY, proxy.currentPageNumber - 1);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.tileRenderPage = function (data, pageIndex) {\n var _this = this;\n var proxy = null;\n proxy = this;\n if (data && this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n var pageWidth = this.getPageWidth(pageIndex);\n var pageHeight = this.getPageHeight(pageIndex);\n // eslint-disable-next-line max-len\n var canvas_1 = this.getElement('_pageCanvas_' + pageIndex);\n var pageDiv_1 = this.getElement('_pageDiv_' + pageIndex);\n var tileX = data.tileX ? data.tileX : 0;\n var tileY = data.tileY ? data.tileY : 0;\n if (pageDiv_1) {\n pageDiv_1.style.width = pageWidth + 'px';\n pageDiv_1.style.height = pageHeight + 'px';\n pageDiv_1.style.background = '#fff';\n pageDiv_1.style.top = this.getPageTop(pageIndex) + 'px';\n if (this.pdfViewer.enableRtl) {\n pageDiv_1.style.right = this.updateLeftPosition(pageIndex) + 'px';\n }\n else {\n pageDiv_1.style.left = this.updateLeftPosition(pageIndex) + 'px';\n }\n }\n if (canvas_1) {\n canvas_1.style.background = '#fff';\n }\n var imageData = data['image'];\n var zoomFactor = this.retrieveCurrentZoomFactor();\n var oldCanvases = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_tileimg_' + pageIndex + '_\"]');\n if (oldCanvases.length === 0) {\n this.isReRenderRequired = true;\n }\n if (this.isReRenderRequired) {\n if (data.zoomFactor) {\n zoomFactor = data.zoomFactor;\n }\n var currentString = this.documentId + '_' + pageIndex + '_' + zoomFactor + '_' + data.tileX + '_' + data.tileY;\n // eslint-disable-next-line max-len\n this.tilerequestLists.push(currentString);\n // eslint-disable-next-line\n var matrix = data['transformationMatrix'];\n // eslint-disable-next-line\n var width = data['width'];\n if (imageData) {\n var tileX_1 = data.tileX ? data.tileX : 0;\n var tileY_1 = data.tileY ? data.tileY : 0;\n var scaleFactor = (!isNullOrUndefined(data.scaleFactor)) ? data.scaleFactor : 1.5;\n var image_1 = document.getElementById(this.pdfViewer.element.id + '_tileimg_' + pageIndex + '_' + this.getZoomFactor() + '_' + tileX_1 + '_' + tileY_1);\n if (!image_1) {\n image_1 = new Image();\n image_1.id = this.pdfViewer.element.id + '_tileimg_' + pageIndex + '_' + this.getZoomFactor() + '_' + tileX_1 + '_' + tileY_1;\n if (pageDiv_1) {\n pageDiv_1.append(image_1);\n }\n }\n image_1.src = imageData;\n image_1.setAttribute('alt', '');\n image_1.onload = function () {\n proxy.showPageLoadingIndicator(pageIndex, false);\n proxy.tileRenderCount = proxy.tileRenderCount + 1;\n if ((tileX_1 === 0) && (tileY_1 === 0)) {\n if (pageIndex === 0 && _this.isDocumentLoaded) {\n proxy.renderPDFInformations();\n proxy.isInitialLoaded = true;\n // eslint-disable-next-line\n var pageData = window.sessionStorage.getItem(proxy.documentId + '_pagedata');\n if (proxy.pageCount <= 100) {\n proxy.pdfViewer.fireDocumentLoad(pageData);\n }\n proxy.isDocumentLoaded = false;\n if (proxy.pdfViewer.textSearch && proxy.pdfViewer.isExtractText) {\n proxy.pdfViewer.textSearchModule.getPDFDocumentTexts();\n }\n }\n }\n if (proxy.tileRenderCount === proxy.tileRequestCount) {\n if (proxy.isTextMarkupAnnotationModule()) {\n proxy.pdfViewer.annotationModule.textMarkupAnnotationModule.rerenderAnnotations(pageIndex);\n }\n if (canvas_1) {\n canvas_1.style.display = 'none';\n canvas_1.src = '#';\n }\n var oldPageDiv = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_oldCanvas\"]');\n for (var i = 0; i < oldPageDiv.length; i++) {\n pageDiv_1.removeChild(oldPageDiv[parseInt(i.toString(), 10)]);\n }\n proxy.isTileImageRendered = false;\n proxy.tileRenderCount = 0;\n if (proxy.pdfViewer.magnificationModule) {\n proxy.pdfViewer.magnificationModule.rerenderCountIncrement();\n }\n proxy.isDrawnCompletely = true;\n }\n image_1.setAttribute('alt', 'Page ' + (pageIndex + 1));\n };\n var currentImageWidth = (((width * this.getZoomFactor()) / zoomFactor) / scaleFactor);\n var matrixElements = matrix.Elements ? matrix.Elements : matrix.Values;\n var currentImageTop = (((matrixElements[5] * this.getZoomFactor()) / zoomFactor) / scaleFactor);\n var currentImageLeft = (((matrixElements[4] * this.getZoomFactor()) / zoomFactor) / scaleFactor);\n image_1.width = currentImageWidth;\n image_1.style.width = currentImageWidth + 'px';\n image_1.style.top = currentImageTop + 'px';\n image_1.style.left = currentImageLeft + 'px';\n image_1.style.position = 'absolute';\n }\n if ((tileX === 0) && (tileY === 0)) {\n this.onPageRender(data, pageIndex, pageDiv_1);\n }\n }\n else {\n var _loop_1 = function (l) {\n var tileImgId = oldCanvases[parseInt(l.toString(), 10)].id.split('_');\n var zoomFactor_1 = proxy.retrieveCurrentZoomFactor();\n var tileData = void 0;\n // eslint-disable-next-line\n if (this_1.clientSideRendering) {\n tileData = JSON.parse(proxy.getStoredTileImageDetails(pageIndex, parseFloat(tileImgId[tileImgId.length - 2]), parseFloat(tileImgId[tileImgId.length - 1]), zoomFactor_1));\n }\n else {\n tileData = JSON.parse(proxy.getWindowSessionStorageTile(pageIndex, parseFloat(tileImgId[tileImgId.length - 2]), parseFloat(tileImgId[tileImgId.length - 1]), zoomFactor_1));\n }\n if (tileData && tileData.zoomFactor) {\n zoomFactor_1 = tileData.zoomFactor;\n }\n if (parseFloat(tileImgId[tileImgId.length - 4]) === pageIndex) {\n var node_1 = oldCanvases[parseInt(l.toString(), 10)];\n // Make sure it's really an Element\n if (node_1.nodeType == Node.ELEMENT_NODE) {\n node_1.onload = function () {\n proxy.showPageLoadingIndicator(pageIndex, false);\n proxy.tileRenderCount = proxy.tileRenderCount + 1;\n if ((tileX_2 === 0) && (tileY_2 === 0)) {\n if (pageIndex === 0 && _this.isDocumentLoaded) {\n _this.renderPDFInformations();\n _this.isInitialLoaded = true;\n // eslint-disable-next-line\n var pageData = window.sessionStorage.getItem(proxy.documentId + '_pagedata');\n if (proxy.pageCount <= 100) {\n proxy.pdfViewer.fireDocumentLoad(pageData);\n }\n proxy.isDocumentLoaded = false;\n if (proxy.pdfViewer.textSearch && proxy.pdfViewer.isExtractText) {\n proxy.pdfViewer.textSearchModule.getPDFDocumentTexts();\n }\n }\n }\n if (proxy.tileRenderCount === proxy.tileRequestCount) {\n canvas_1.style.display = 'none';\n canvas_1.src = '#';\n if (proxy.isTextMarkupAnnotationModule()) {\n proxy.pdfViewer.annotationModule.textMarkupAnnotationModule.rerenderAnnotations(pageIndex);\n }\n var oldPageDiv = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_oldCanvas\"]');\n for (var i = 0; i < oldPageDiv.length; i++) {\n pageDiv_1.removeChild(oldPageDiv[parseInt(i.toString(), 10)]);\n }\n proxy.isTileImageRendered = false;\n proxy.tileRenderCount = 0;\n if (proxy.pdfViewer.magnificationModule) {\n proxy.pdfViewer.magnificationModule.rerenderCountIncrement();\n }\n proxy.isDrawnCompletely = true;\n }\n node_1.setAttribute('alt', 'Page ' + (pageIndex + 1));\n };\n if (tileData)\n node_1.src = tileData.image;\n }\n }\n };\n var this_1 = this;\n for (var l = 0; l < oldCanvases.length; l++) {\n _loop_1(l);\n }\n var tileX_2 = data.tileX ? data.tileX : 0;\n var tileY_2 = data.tileY ? data.tileY : 0;\n if ((tileX_2 === 0) && (tileY_2 === 0)) {\n this.onPageRender(data, pageIndex, pageDiv_1);\n }\n }\n }\n };\n PdfViewerBase.prototype.renderTileCanvas = function (pageWidth, pageHeight, pageIndex, pageDiv, zoomFactor, scaleFactor) {\n var pageCanvas = this.getElement('_pageTileCanvas_' + pageIndex);\n if (!pageCanvas) {\n pageCanvas = createElement('canvas', { id: this.pdfViewer.element.id + '_pageTileCanvas_' + pageIndex, className: 'e-pv-pageTile-canvas' });\n pageCanvas.style.width = pageWidth + 'px';\n pageCanvas.style.height = pageHeight + 'px';\n pageCanvas.style.display = 'none';\n pageCanvas.style.backgroundColor = '#fff';\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n pageCanvas.style.marginLeft = 'auto';\n pageCanvas.style.marginRight = 'auto';\n }\n pageDiv.appendChild(pageCanvas);\n }\n return pageCanvas;\n };\n PdfViewerBase.prototype.calculateImageWidth = function (pageWidth, zoomFactor, scaleFactor, imageWidth) {\n var width = (pageWidth / this.getZoomFactor()) * zoomFactor * scaleFactor;\n // eslint-disable-next-line\n if ((parseInt(imageWidth.toString())) === (parseInt(width.toString()))) {\n imageWidth = width;\n }\n imageWidth = ((imageWidth * this.getZoomFactor()) / zoomFactor);\n return imageWidth;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.renderPage = function (data, pageIndex, imageSource) {\n var _this = this;\n var proxy = this;\n if (data && this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n var pageWidth = this.getPageWidth(pageIndex);\n var pageHeight = this.getPageHeight(pageIndex);\n // eslint-disable-next-line max-len\n var canvas_2 = this.getElement('_pageCanvas_' + pageIndex);\n var pageDiv_2 = this.getElement('_pageDiv_' + pageIndex);\n if (pageDiv_2) {\n pageDiv_2.style.width = pageWidth + 'px';\n pageDiv_2.style.height = pageHeight + 'px';\n pageDiv_2.style.top = this.getPageTop(pageIndex) + 'px';\n if (this.pdfViewer.enableRtl) {\n pageDiv_2.style.right = this.updateLeftPosition(pageIndex) + 'px';\n }\n else {\n pageDiv_2.style.left = this.updateLeftPosition(pageIndex) + 'px';\n }\n }\n if (canvas_2) {\n canvas_2.style.background = '#fff';\n canvas_2.style.display = 'block';\n canvas_2.style.width = pageWidth + 'px';\n canvas_2.style.height = pageHeight + 'px';\n if (pageWidth < parseFloat(pageDiv_2.style.width)) {\n pageDiv_2.style.boxShadow = 'none';\n }\n // eslint-disable-next-line\n var imageData = (this.renderThumbnailImages && !this.clientSideRendering) ? imageSource : data['image'];\n if (imageData) {\n canvas_2.onload = function () {\n var oldCanvases = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_tileimg_\"]');\n var pageCanvas = proxy.getElement('_pageDiv_' + pageIndex);\n for (var i = 0; i < oldCanvases.length; i++) {\n var tileImgId = oldCanvases[parseInt(i.toString(), 10)].id.split('_');\n if (parseFloat(tileImgId[tileImgId.length - 3]) != proxy.getZoomFactor()) {\n if (pageIndex !== parseInt(tileImgId[tileImgId.length - 4], 10)) {\n proxy.getElement('_pageDiv_' + tileImgId[tileImgId.length - 4]).removeChild(oldCanvases[parseInt(i.toString(), 10)]);\n }\n else {\n pageCanvas.removeChild(oldCanvases[parseInt(i.toString(), 10)]);\n }\n }\n }\n var oldPageDiv = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_oldCanvas\"]');\n for (var i = 0; i < oldPageDiv.length; i++) {\n pageDiv_2.removeChild(oldPageDiv[parseInt(i.toString(), 10)]);\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.rerenderCountIncrement();\n }\n _this.showPageLoadingIndicator(pageIndex, false);\n if (pageIndex === 0 && _this.isDocumentLoaded) {\n _this.renderPDFInformations();\n _this.isInitialLoaded = true;\n // eslint-disable-next-line\n var pageData = window.sessionStorage.getItem(_this.documentId + '_pagedata');\n if (_this.pageCount <= 100) {\n _this.pdfViewer.fireDocumentLoad(pageData);\n }\n _this.isDocumentLoaded = false;\n if (_this.pdfViewer.textSearch && _this.pdfViewer.isExtractText) {\n _this.pdfViewer.textSearchModule.getPDFDocumentTexts();\n }\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.pushImageObjects(canvas_2);\n }\n canvas_2.setAttribute('alt', 'Page ' + (pageIndex + 1));\n };\n canvas_2.src = imageData;\n }\n this.onPageRender(data, pageIndex, pageDiv_2);\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.onPageRender = function (data, pageIndex, pageDiv) {\n // eslint-disable-next-line\n var aElement = pageDiv && pageDiv.getElementsByTagName('a');\n var isAnnotationRendered = false;\n if (aElement && aElement.length !== 0) {\n for (var index = aElement.length - 1; index >= 0; index--) {\n aElement[parseInt(index.toString(), 10)].parentNode.removeChild(aElement[parseInt(index.toString(), 10)]);\n }\n }\n if (this.pdfViewer.textSearchModule || this.pdfViewer.textSelectionModule || this.pdfViewer.annotationModule) {\n this.renderTextContent(data, pageIndex);\n }\n if (this.pdfViewer.formFieldsModule && !(this.pdfViewer.magnificationModule ? this.pdfViewer.magnificationModule.isFormFieldPageZoomed : false)) {\n this.pdfViewer.formFieldsModule.renderFormFields(pageIndex, false);\n }\n if (this.pdfViewer.accessibilityTagsModule && this.pdfViewer.enableAccessibilityTags && this.isTaggedPdf) {\n if (this.accessibilityTagsCollection[pageIndex.toString()]) {\n this.renderAccessibilityTags(pageIndex, this.accessibilityTagsCollection[pageIndex.toString()]);\n }\n else if (this.pageRequestListForAccessibilityTags.indexOf(pageIndex) === -1) {\n this.createRequestForAccessibilityTags(pageIndex);\n }\n }\n if (this.pdfViewer.formDesignerModule && !this.isDocumentLoaded) {\n this.pdfViewer.formDesignerModule.rerenderFormFields(pageIndex);\n }\n if (this.pdfViewer.formFieldsModule && !this.isDocumentLoaded && !this.pdfViewer.formDesignerModule) {\n this.pdfViewer.formFieldsModule.renderFormFields(pageIndex, false);\n }\n if (this.pdfViewer.formDesignerModule && this.isDocumentLoaded && (this.pdfViewer.magnificationModule ? this.pdfViewer.magnificationModule.isFormFieldPageZoomed : true) && this.pdfViewer.formFieldsModule) {\n this.pdfViewer.formFieldsModule.renderFormFields(pageIndex, false);\n if (this.pdfViewer.magnificationModule) {\n this.pdfViewer.magnificationModule.isFormFieldPageZoomed = false;\n }\n }\n if (this.pdfViewer.enableHyperlink && this.pdfViewer.linkAnnotationModule) {\n this.pdfViewer.linkAnnotationModule.renderHyperlinkContent(data, pageIndex);\n }\n if (this.pdfViewer.textSelectionModule && !this.isTextSelectionDisabled) {\n this.pdfViewer.textSelectionModule.applySelectionRangeOnScroll(pageIndex);\n }\n if (this.documentAnnotationCollections) {\n var isAnnotationAdded = false;\n for (var i = 0; i < this.annotationRenderredList.length; i++) {\n if (this.annotationRenderredList[parseInt(i.toString(), 10)] === pageIndex) {\n isAnnotationAdded = true;\n }\n }\n // eslint-disable-next-line\n var pageAnnotations = this.documentAnnotationCollections[pageIndex];\n if (pageAnnotations && !isAnnotationAdded) {\n data.shapeAnnotation = pageAnnotations.shapeAnnotation;\n data.measureShapeAnnotation = pageAnnotations.measureShapeAnnotation;\n data.textMarkupAnnotation = pageAnnotations.textMarkupAnnotation;\n data.freeTextAnnotation = pageAnnotations.freeTextAnnotation;\n data.stampAnnotations = pageAnnotations.stampAnnotations;\n data.stickyNotesAnnotation = pageAnnotations.stickyNotesAnnotation;\n data.signatureAnnotation = pageAnnotations.signatureAnnotation;\n data.signatureInkAnnotation = pageAnnotations.signatureInkAnnotation;\n this.annotationRenderredList.push(pageIndex);\n }\n }\n if (this.isImportAction) {\n // eslint-disable-next-line\n var pageAnnotations = this.checkDocumentCollectionData(pageIndex);\n this.drawPageAnnotations(this.importedAnnotation[parseInt(pageIndex.toString(), 10)], pageIndex);\n if (pageAnnotations) {\n data.shapeAnnotation = pageAnnotations.shapeAnnotation;\n data.measureShapeAnnotation = pageAnnotations.measureShapeAnnotation;\n data.textMarkupAnnotation = pageAnnotations.textMarkupAnnotation;\n data.freeTextAnnotation = pageAnnotations.freeTextAnnotation;\n data.stampAnnotations = pageAnnotations.stampAnnotations;\n data.stickyNotesAnnotation = pageAnnotations.stickyNotesAnnotation;\n data.signatureInkAnnotation = pageAnnotations.signatureInkAnnotation;\n isAnnotationRendered = true;\n }\n }\n if (!(this.isImportAction)) {\n if (this.pdfViewer.annotationModule && (this.isTextMarkupAnnotationModule() || this.isShapeBasedAnnotationsEnabled())) {\n if (this.isStampAnnotationModule()) {\n // eslint-disable-next-line\n var stampData = data['stampAnnotations'];\n if (isAnnotationRendered) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.renderStampAnnotations(stampData, pageIndex, null, true);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.renderStampAnnotations(stampData, pageIndex);\n }\n }\n if (isAnnotationRendered) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, data.shapeAnnotation, data.measureShapeAnnotation, data.textMarkupAnnotation, null, true);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, data.shapeAnnotation, data.measureShapeAnnotation, data.textMarkupAnnotation);\n }\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderStickyNotesAnnotations(data.stickyNotesAnnotation, pageIndex);\n }\n if (this.isFreeTextAnnotationModule() && data.freeTextAnnotation) {\n if (isAnnotationRendered) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.freeTextAnnotationModule.renderFreeTextAnnotations(data.freeTextAnnotation, pageIndex);\n }\n else {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.renderFreeTextAnnotations(data.freeTextAnnotation, pageIndex);\n }\n }\n if (this.isInkAnnotationModule() && data && data.signatureInkAnnotation) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.inkAnnotationModule.renderExistingInkSignature(data.signatureInkAnnotation, pageIndex, isAnnotationRendered);\n }\n }\n if (this.pdfViewer.formDesignerModule && !this.pdfViewer.annotationModule) {\n this.pdfViewer.formDesignerModule.updateCanvas(pageIndex);\n }\n if (this.pdfViewer.textSearchModule) {\n if (this.pdfViewer.textSearchModule.isTextSearch) {\n this.pdfViewer.textSearchModule.highlightOtherOccurrences(pageIndex);\n }\n }\n if (this.isShapeBasedAnnotationsEnabled()) {\n var canvas1 = this.getElement('_annotationCanvas_' + pageIndex);\n var commonStyle = 'position:absolute;top:0px;left:0px;overflow:hidden;pointer-events:none;z-index:1000';\n if (canvas1) {\n var bounds = canvas1.getBoundingClientRect();\n renderAdornerLayer(bounds, commonStyle, canvas1, pageIndex, this.pdfViewer);\n this.pdfViewer.renderSelector(pageIndex, this.pdfViewer.annotationSelectorSettings);\n }\n }\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.selectCommentsAnnotation(pageIndex);\n }\n if (data && data.signatureAnnotation && this.signatureModule) {\n this.signatureModule.renderExistingSignature(data.signatureAnnotation, pageIndex, false);\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.isAnnotationSelected && this.pdfViewer.annotationModule.annotationPageIndex === pageIndex) {\n this.pdfViewer.annotationModule.selectAnnotationFromCodeBehind();\n }\n this.isLoadedFormFieldAdded = false;\n };\n /**\n * @private\n * @param {number} pageIndex - page index for rendering the annotation.\n * @returns {void}\n */\n PdfViewerBase.prototype.renderAnnotations = function (pageIndex, annotationsCollection, isAddedProgrammatically) {\n // eslint-disable-next-line\n var data = {};\n if (this.documentAnnotationCollections) {\n var isAnnotationAdded = false;\n for (var i = 0; i < this.annotationRenderredList.length; i++) {\n if (this.annotationRenderredList[parseInt(i.toString(), 10)] === pageIndex) {\n isAnnotationAdded = true;\n }\n }\n // eslint-disable-next-line\n var pageAnnotations = this.documentAnnotationCollections[pageIndex];\n if (pageAnnotations && !isAnnotationAdded) {\n data.shapeAnnotation = pageAnnotations.shapeAnnotation;\n data.measureShapeAnnotation = pageAnnotations.measureShapeAnnotation;\n data.textMarkupAnnotation = pageAnnotations.textMarkupAnnotation;\n data.freeTextAnnotation = pageAnnotations.freeTextAnnotation;\n data.stampAnnotations = pageAnnotations.stampAnnotations;\n data.stickyNotesAnnotation = pageAnnotations.stickyNotesAnnotation;\n data.signatureAnnotation = pageAnnotations.signatureAnnotation;\n data.signatureInkAnnotation = pageAnnotations.signatureInkAnnotation;\n this.annotationRenderredList.push(pageIndex);\n }\n }\n if (this.isAnnotationCollectionRemoved) {\n data.shapeAnnotation = [];\n data.measureShapeAnnotation = [];\n data.textMarkupAnnotation = [];\n data.freeTextAnnotation = [];\n data.stampAnnotations = [];\n data.stickyNotesAnnotation = [];\n data.signatureInkAnnotation = [];\n }\n if (this.isImportAction) {\n var isAnnotationAdded = false;\n for (var i = 0; i < this.annotationPageList.length; i++) {\n if (this.annotationPageList[parseInt(i.toString(), 10)] === pageIndex) {\n isAnnotationAdded = true;\n }\n }\n if (!isAnnotationAdded) {\n if (this.importedAnnotation) {\n this.drawPageAnnotations(this.importedAnnotation, pageIndex, true);\n this.annotationPageList[this.annotationPageList.length] = pageIndex;\n }\n }\n }\n var annotData = [];\n var collection = annotationsCollection.annotationOrder;\n if (!isNullOrUndefined(collection)) {\n for (var l = 0; l < collection.length; l++) {\n var type = collection[parseInt(l.toString(), 10)].AnnotType ? collection[parseInt(l.toString(), 10)].AnnotType : collection[parseInt(l.toString(), 10)].AnnotationType;\n annotData.push(collection[parseInt(l.toString(), 10)]);\n switch (type) {\n case \"textMarkup\":\n if (!isNullOrUndefined(this.pdfViewer.annotationModule.textMarkupAnnotationModule)) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.renderTextMarkupAnnotationsInPage(annotData, pageIndex, null, true);\n }\n break;\n case \"shape_measure\":\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, null, annotData, null, null, null, true);\n break;\n case \"shape\":\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, annotData, null, null, null, null, true);\n break;\n case \"sticky\":\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderStickyNotesAnnotations(annotData, pageIndex);\n break;\n case \"stamp\":\n this.pdfViewer.annotationModule.stampAnnotationModule.renderStampAnnotations(annotData, pageIndex, null, null, true);\n break;\n case \"Ink\":\n this.pdfViewer.annotationModule.inkAnnotationModule.renderExistingInkSignature(annotData, pageIndex, false, true);\n break;\n case \"Text Box\":\n this.pdfViewer.annotationModule.freeTextAnnotationModule.renderFreeTextAnnotations(annotData, pageIndex, undefined, true);\n break;\n default:\n break;\n }\n annotData = [];\n }\n }\n if (data && data.signatureAnnotation) {\n this.signatureModule.renderExistingSignature(data.signatureAnnotation, pageIndex, false);\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.isAnnotationSelected) {\n this.pdfViewer.annotationModule.selectAnnotationFromCodeBehind();\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.renderTextContent = function (data, pageIndex) {\n // eslint-disable-next-line\n var texts = data['textContent'];\n // eslint-disable-next-line\n var bounds = data['textBounds'];\n // eslint-disable-next-line\n var rotation = data['rotation'];\n var rtldoc = data.documentTextCollection ? this.checkIsRtlText(data.documentTextCollection[0][parseInt(pageIndex.toString(), 10)].PageText) : this.checkIsRtlText(data.pageText);\n var textLayer = this.getElement('_textLayer_' + pageIndex);\n if (!textLayer) {\n // eslint-disable-next-line max-len\n textLayer = this.textLayer.addTextLayer(pageIndex, this.getPageWidth(pageIndex), this.getPageHeight(pageIndex), this.getElement('_pageDiv_' + pageIndex));\n }\n if (textLayer && texts && bounds) {\n textLayer.style.display = 'block';\n if (textLayer.childNodes.length === 0) {\n this.textLayer.renderTextContents(pageIndex, texts, bounds, rotation, rtldoc);\n }\n else {\n this.textLayer.resizeTextContents(pageIndex, texts, bounds, rotation, true);\n }\n }\n };\n PdfViewerBase.prototype.renderAccessibilityTags = function (pageIndex, taggedTextResponse) {\n this.accessibilityTags.renderAccessibilityTags(pageIndex, taggedTextResponse);\n };\n PdfViewerBase.prototype.returnPageListForAccessibilityTags = function (pageIndex) {\n var pageList = [];\n if (!this.enableAccessibilityMultiPageRequest) {\n return [pageIndex];\n }\n var minPage = pageIndex - 2 > 0 ? pageIndex - 2 : 0;\n var maxPage = pageIndex + 4 < this.pageCount - 1 ? pageIndex + 4 : this.pageCount - 1;\n for (var i = minPage; i <= maxPage; i++) {\n if (this.accessibilityTagsCollection[parseInt(i.toString(), 10)] === undefined) {\n pageList.push(parseInt(i.toString(), 10));\n }\n else {\n maxPage = maxPage + 1 < this.pageCount - 1 ? maxPage + 1 : this.pageCount - 1;\n }\n }\n this.pageRequestListForAccessibilityTags = pageList;\n return pageList;\n };\n PdfViewerBase.prototype.createRequestForAccessibilityTags = function (pageIndex) {\n var jsonObject;\n var proxy = this;\n jsonObject = { action: 'RenderTaggedContent', elementId: this.pdfViewer.element.id, hashId: this.hashId, uniqueId: this.documentId, pageList: JSON.stringify(this.returnPageListForAccessibilityTags(pageIndex)) };\n if (this.jsonDocumentId) {\n jsonObject.document = this.jsonDocumentId;\n }\n var url = this.pdfViewer.serviceUrl + '/' + \"RenderTaggedContent\";\n this.accessibilityTagsHandler = new AjaxHandler(this.pdfViewer);\n this.accessibilityTagsHandler.url = url;\n this.accessibilityTagsHandler.mode = true;\n this.accessibilityTagsHandler.responseType = 'text';\n this.accessibilityTagsHandler.send(jsonObject);\n this.accessibilityTagsHandler.onSuccess = function (result) {\n var data = JSON.parse(result.data);\n var pageData;\n for (var i = 0; i < data.length; i++) {\n pageData = data[parseInt(i.toString(), 10)];\n proxy.accessibilityTagsCollection[pageData[0]] = pageData[1];\n }\n proxy.pageRequestListForAccessibilityTags = [];\n if (proxy.accessibilityTagsCollection[parseInt(pageIndex.toString(), 10)]) {\n proxy.renderAccessibilityTags(pageIndex, proxy.accessibilityTagsCollection[parseInt(pageIndex.toString(), 10)]);\n }\n if (proxy.accessibilityTagsCollection[pageIndex - 1 <= 0 ? parseInt((pageIndex - 1).toString(), 10) : 0]) {\n proxy.renderAccessibilityTags(pageIndex - 1 <= 0 ? pageIndex - 1 : 0, proxy.accessibilityTagsCollection[pageIndex - 1 <= 0 ? parseInt((pageIndex - 1).toString(), 10) : 0]);\n }\n };\n };\n PdfViewerBase.prototype.renderPageContainer = function (pageNumber, pageWidth, pageHeight, topValue) {\n // eslint-disable-next-line max-len\n var pageDiv = createElement('div', { id: this.pdfViewer.element.id + '_pageDiv_' + pageNumber, className: 'e-pv-page-div', attrs: { 'tabindex': '-1' } });\n pageDiv.style.width = pageWidth + 'px';\n pageDiv.style.height = pageHeight + 'px';\n if (this.pdfViewer.enableRtl) {\n pageDiv.style.right = this.updateLeftPosition(pageNumber) + 'px';\n }\n else {\n pageDiv.style.left = this.updateLeftPosition(pageNumber) + 'px';\n }\n pageDiv.style.top = topValue + 'px';\n this.pageContainer.appendChild(pageDiv);\n this.pageContainer.style.width = (this.isMixedSizeDocument && (this.highestWidth * this.getZoomFactor()) > this.viewerContainer.clientWidth) ? (this.highestWidth * this.getZoomFactor()) + 'px' : this.viewerContainer.clientWidth + 'px';\n this.createWaitingPopup(pageNumber);\n this.orderPageDivElements(pageDiv, pageNumber);\n this.renderPageCanvas(pageDiv, pageWidth, pageHeight, pageNumber, 'block');\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && !this.isThumb) {\n this.updateMobileScrollerPosition();\n }\n };\n PdfViewerBase.prototype.renderPDFInformations = function () {\n if (this.pdfViewer.thumbnailViewModule && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n this.pdfViewer.thumbnailViewModule.createRequestForThumbnails();\n }\n if (this.pdfViewer.bookmarkViewModule) {\n this.pdfViewer.bookmarkViewModule.createRequestForBookmarks();\n }\n if (this.pdfViewer.annotationModule) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.initializeAcccordionContainer();\n }\n if (this.pdfViewer.isCommandPanelOpen) {\n this.pdfViewer.annotation.showCommentsPanel();\n }\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.createRequestForComments();\n }\n };\n PdfViewerBase.prototype.orderPageDivElements = function (pageDiv, pageIndex) {\n var nextElement = this.getElement('_pageDiv_' + (pageIndex + 1));\n if (this.pageContainer && pageDiv) {\n if (nextElement) {\n this.pageContainer.insertBefore(pageDiv, nextElement);\n }\n else {\n this.pageContainer.appendChild(pageDiv);\n }\n }\n };\n /**\n * @param pageDiv\n * @param pageWidth\n * @param pageHeight\n * @param pageNumber\n * @param displayMode\n * @param pageDiv\n * @param pageWidth\n * @param pageHeight\n * @param pageNumber\n * @param displayMode\n * @param pageDiv\n * @param pageWidth\n * @param pageHeight\n * @param pageNumber\n * @param displayMode\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.renderPageCanvas = function (pageDiv, pageWidth, pageHeight, pageNumber, displayMode) {\n if (pageDiv) {\n // eslint-disable-next-line\n var pageCanvas = this.getElement('_pageCanvas_' + pageNumber);\n if (pageCanvas) {\n pageCanvas.width = pageWidth;\n pageCanvas.height = pageHeight;\n pageCanvas.style.display = 'block';\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n pageCanvas.style.marginLeft = 'auto';\n pageCanvas.style.marginRight = 'auto';\n }\n }\n else {\n // eslint-disable-next-line max-len\n pageCanvas = createElement('img', { id: this.pdfViewer.element.id + '_pageCanvas_' + pageNumber, className: 'e-pv-page-canvas' });\n pageCanvas.width = pageWidth;\n pageCanvas.height = pageHeight;\n pageCanvas.style.display = displayMode;\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n pageCanvas.style.marginLeft = 'auto';\n pageCanvas.style.marginRight = 'auto';\n }\n pageDiv.appendChild(pageCanvas);\n }\n pageCanvas.setAttribute('alt', '');\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotation) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.createAnnotationLayer(pageDiv, pageWidth, pageHeight, pageNumber, displayMode);\n }\n if (this.pdfViewer.textSearchModule || this.pdfViewer.textSelectionModule || this.pdfViewer.formFieldsModule || this.pdfViewer.annotationModule) {\n this.textLayer.addTextLayer(pageNumber, pageWidth, pageHeight, pageDiv);\n }\n if (this.pdfViewer.formDesignerModule && !this.pdfViewer.annotationModule) {\n this.pdfViewer.formDesignerModule.createAnnotationLayer(pageDiv, pageWidth, pageHeight, pageNumber, displayMode);\n }\n return pageCanvas;\n }\n };\n /**\n * @private\n * @param {any} pageCanvas - The canvas for rendering the page.\n * @param {any} pageNumber - The page number for adding styles.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.applyElementStyles = function (pageCanvas, pageNumber) {\n if (this.isMixedSizeDocument && pageCanvas) {\n var canvasElement = document.getElementById(this.pdfViewer.element.id + '_pageCanvas_' + pageNumber);\n var oldCanvas = document.getElementById(this.pdfViewer.element.id + '_oldCanvas_' + pageNumber);\n if (pageCanvas && canvasElement && canvasElement.offsetLeft > 0) {\n pageCanvas.style.marginLeft = canvasElement.offsetLeft + 'px';\n pageCanvas.style.marginRight = canvasElement.offsetLeft + 'px';\n }\n else if (oldCanvas && oldCanvas.offsetLeft > 0) {\n pageCanvas.style.marginLeft = oldCanvas.offsetLeft + 'px';\n pageCanvas.style.marginRight = oldCanvas.offsetLeft + 'px';\n }\n else {\n pageCanvas.style.marginLeft = 'auto';\n pageCanvas.style.marginRight = 'auto';\n }\n }\n };\n /**\n * @private\n * @param {number} pageIndex - page index for updating positon.\n * @returns {void}\n */\n PdfViewerBase.prototype.updateLeftPosition = function (pageIndex) {\n var leftPosition;\n var width = this.viewerContainer.getBoundingClientRect().width;\n if (width === 0) {\n width = parseFloat(this.pdfViewer.width.toString());\n }\n // eslint-disable-next-line max-len\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n if (this.viewerContainer.clientWidth > 0) {\n leftPosition = (this.viewerContainer.clientWidth - (this.highestWidth * this.getZoomFactor())) / 2;\n }\n else {\n leftPosition = (width - (this.highestWidth * this.getZoomFactor())) / 2;\n }\n var pageDiff = (this.highestWidth * this.getZoomFactor() - this.getPageWidth(pageIndex)) / 2;\n if (leftPosition > 0) {\n leftPosition += pageDiff;\n }\n else {\n leftPosition = pageDiff;\n }\n this.pageContainer.style.width = ((this.highestWidth * this.getZoomFactor()) > this.viewerContainer.clientWidth) ? (this.highestWidth * this.getZoomFactor()) + 'px' : this.viewerContainer.clientWidth + 'px';\n }\n else {\n if (this.viewerContainer.clientWidth > 0) {\n leftPosition = (this.viewerContainer.clientWidth - this.getPageWidth(pageIndex)) / 2;\n }\n else {\n leftPosition = (width - this.getPageWidth(pageIndex)) / 2;\n }\n }\n var isLandscape = false;\n if (this.pageSize[parseInt(pageIndex.toString(), 10)].width > this.pageSize[parseInt(pageIndex.toString(), 10)].height) {\n isLandscape = true;\n }\n // eslint-disable-next-line max-len\n if (leftPosition < 0 || (this.pdfViewer.magnificationModule ? ((this.pdfViewer.magnificationModule.isAutoZoom && this.getZoomFactor() < 1) || this.pdfViewer.magnificationModule.fitType === 'fitToWidth') : false)) {\n var leftValue = leftPosition;\n if (leftPosition > 0 && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n // eslint-disable-next-line\n leftPosition = leftValue;\n }\n else {\n leftPosition = this.pageLeft;\n }\n if ((leftPosition > 0) && this.isMixedSizeDocument) {\n if (leftValue > 0) {\n leftPosition = leftValue;\n }\n }\n }\n return leftPosition;\n };\n /**\n * @private\n * @param {number} pageIndex - The page index for positon.\n * @returns {void}\n */\n PdfViewerBase.prototype.applyLeftPosition = function (pageIndex) {\n var leftPosition;\n if (this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n if (this.viewerContainer.clientWidth > 0) {\n // eslint-disable-next-line max-len\n leftPosition = (this.viewerContainer.clientWidth - (this.highestWidth * this.getZoomFactor())) / 2;\n }\n else {\n // eslint-disable-next-line max-len\n leftPosition = (this.viewerContainer.getBoundingClientRect().width - (this.highestWidth * this.getZoomFactor())) / 2;\n }\n var pageDiff = (this.highestWidth * this.getZoomFactor() - this.getPageWidth(pageIndex)) / 2;\n if (leftPosition > 0) {\n leftPosition += pageDiff;\n }\n else {\n leftPosition = pageDiff;\n }\n }\n else {\n if (this.viewerContainer.clientWidth > 0) {\n // eslint-disable-next-line max-len\n leftPosition = (this.viewerContainer.clientWidth - this.pageSize[parseInt(pageIndex.toString(), 10)].width * this.getZoomFactor()) / 2;\n }\n else {\n // eslint-disable-next-line max-len\n leftPosition = (this.viewerContainer.getBoundingClientRect().width - this.pageSize[parseInt(pageIndex.toString(), 10)].width * this.getZoomFactor()) / 2;\n }\n }\n var isLandscape = false;\n if (this.pageSize[parseInt(pageIndex.toString(), 10)].width > this.pageSize[parseInt(pageIndex.toString(), 10)].height) {\n isLandscape = true;\n }\n // eslint-disable-next-line max-len\n if (leftPosition < 0 || (this.pdfViewer.magnificationModule ? ((this.pdfViewer.magnificationModule.isAutoZoom && this.getZoomFactor() < 1) || this.pdfViewer.magnificationModule.fitType === 'fitToWidth') : false)) {\n var leftValue = leftPosition;\n leftPosition = this.pageLeft;\n // eslint-disable-next-line max-len\n if ((leftValue > 0) && this.isMixedSizeDocument) {\n leftPosition = leftValue;\n }\n }\n // eslint-disable-next-line max-len\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n if (pageDiv) {\n if (!this.pdfViewer.enableRtl) {\n pageDiv.style.left = leftPosition + 'px';\n }\n else {\n pageDiv.style.right = leftPosition + 'px';\n }\n }\n }\n };\n PdfViewerBase.prototype.updatePageHeight = function (viewerHeight, toolbarHeight) {\n return ((viewerHeight - toolbarHeight) / viewerHeight) * 100 + '%';\n };\n /**\n * @private\n * @param {Point} clientPoint - The user should provide a x, y coordinates.\n * @returns {number}\n */\n PdfViewerBase.prototype.getPageNumberFromClientPoint = function (clientPoint) {\n var pointX = clientPoint.x + this.viewerContainer.scrollLeft;\n var pointY = clientPoint.y + this.viewerContainer.scrollTop;\n for (var i = 0; i < this.pageCount; i++) {\n var pageTop = this.pageSize[parseInt(i.toString(), 10)].height + this.viewerContainer.scrollTop;\n if (pointY < (this.pageSize[parseInt(i.toString(), 10)].top + pageTop)) {\n var viewerContainerBounds = this.getElement('_pageViewContainer').getBoundingClientRect();\n var pageLeft = ((viewerContainerBounds.width - this.pageSize[parseInt(i.toString(), 10)].width) / 2) + viewerContainerBounds.x;\n var verticalScrollPosition = 0;\n if (pointY > this.pageSize[parseInt(i.toString(), 10)].top) {\n verticalScrollPosition = (pointY - this.pageSize[parseInt(i.toString(), 10)].top);\n }\n else {\n verticalScrollPosition = (this.pageSize[parseInt(i.toString(), 10)].top - pointY);\n }\n if (verticalScrollPosition > 0) {\n if (this.pageSize[parseInt(i.toString(), 10)] != null) {\n var pageHeight = this.getPageHeight(i);\n if (pageLeft >= 0) {\n if ((pointX < pageLeft) || (pointX > (pageLeft + (this.pageSize[parseInt(i.toString(), 10)].width)))) {\n return -1;\n }\n }\n if (verticalScrollPosition <= (this.getPageTop(i) + pageTop)) {\n return i + 1;\n }\n }\n }\n }\n }\n return -1;\n };\n /**\n * @private\n * @param {Point} clientPoint - The user should provide a x, y coordinates.\n * @param {number} pageNumber - We need to pass pageNumber.\n * @returns {Point}\n */\n PdfViewerBase.prototype.convertClientPointToPagePoint = function (clientPoint, pageNumber) {\n if (pageNumber !== -1) {\n var viewerContainerBounds = this.getElement('_pageViewContainer').getBoundingClientRect();\n var pageLeft = ((viewerContainerBounds.width - this.pageSize[pageNumber - 1].width) / 2) + viewerContainerBounds.x;\n var pagePoint = { x: (clientPoint.x + this.viewerContainer.scrollLeft) - pageLeft, y: (clientPoint.y + this.viewerContainer.scrollTop) - this.pageSize[pageNumber - 1].top };\n return pagePoint;\n }\n return null;\n };\n /**\n * @private\n * @param {Point} pagePoint - The user needs to provide a page x, y position.\n * @param {number} pageNumber - We need to pass pageNumber.\n * @returns {Point}\n */\n PdfViewerBase.prototype.convertPagePointToClientPoint = function (pagePoint, pageNumber) {\n if (pageNumber !== -1) {\n var viewerContainerBounds = this.getElement('_pageViewContainer').getBoundingClientRect();\n var pageLeft = ((viewerContainerBounds.width - this.pageSize[pageNumber - 1].width) / 2) + viewerContainerBounds.x;\n var clientPoint = { x: pagePoint.x + pageLeft, y: pagePoint.y + this.pageSize[pageNumber - 1].top };\n return clientPoint;\n }\n return null;\n };\n /**\n * @private\n * @param {Point} pagePoint - The user needs to provide a page x, y position.\n * @param {number} pageNumber - We need to pass pageNumber.\n * @returns {Point}\n */\n PdfViewerBase.prototype.convertPagePointToScrollingPoint = function (pagePoint, pageNumber) {\n if (pageNumber !== -1) {\n var scrollingPoint = { x: pagePoint.x + this.viewerContainer.scrollLeft, y: pagePoint.y + this.viewerContainer.scrollTop };\n return scrollingPoint;\n }\n return null;\n };\n PdfViewerBase.prototype.initiatePageViewScrollChanged = function () {\n if (this.scrollHoldTimer) {\n clearTimeout(this.scrollHoldTimer);\n }\n this.scrollHoldTimer = null;\n if ((this.scrollPosition * this.getZoomFactor()) !== this.viewerContainer.scrollTop) {\n this.scrollPosition = this.viewerContainer.scrollTop;\n this.pageViewScrollChanged(this.currentPageNumber);\n }\n };\n PdfViewerBase.prototype.renderCountIncrement = function () {\n if (this.pdfViewer.magnificationModule) {\n this.pdfViewer.magnificationModule.renderCountIncrement();\n }\n };\n /**\n * @private\n * @param {number} currentPageNumber - The current pagenumber.\n * @returns {void}\n */\n PdfViewerBase.prototype.pageViewScrollChanged = function (currentPageNumber) {\n if (this.isPanMode) {\n if (this.renderedPagesList.indexOf(currentPageNumber - 1) === -1) {\n this.reRenderedCount = 0;\n }\n }\n else {\n this.reRenderedCount = 0;\n }\n var currentPageIndex = currentPageNumber - 1;\n if (currentPageNumber !== this.previousPage && currentPageNumber <= this.pageCount) {\n var isSkip = false;\n var storeData = this.clientSideRendering ? this.getLinkInformation(currentPageIndex) : this.getStoredData(currentPageIndex);\n if (this.isDataExits && !this.getStoredData(currentPageIndex)) {\n isSkip = true;\n }\n if (this.renderedPagesList.indexOf(currentPageIndex) === -1 && !this.getMagnified() && !isSkip) {\n this.renderCountIncrement();\n this.createRequestForRender(currentPageIndex);\n }\n }\n if (!(this.getMagnified() || this.getPagesPinchZoomed())) {\n var previous = currentPageIndex - 1;\n var isSkip = false;\n var canvas = this.getElement('_pageCanvas_' + previous);\n var storeData = this.clientSideRendering ? this.getLinkInformation(previous) : this.getStoredData(previous);\n if (this.isDataExits && !this.getStoredData(previous)) {\n isSkip = true;\n }\n if (canvas !== null && !isSkip) {\n if (this.renderedPagesList.indexOf(previous) === -1 && !this.getMagnified()) {\n this.renderCountIncrement();\n this.createRequestForRender(previous);\n }\n }\n if (this.isMinimumZoom) {\n this.renderPreviousPagesInScroll(previous);\n }\n var next = currentPageIndex + 1;\n var pageHeight = 0;\n if (next < this.pageCount) {\n pageHeight = this.getPageHeight(next);\n var allowPageRendering = this.isMinimumZoom ? this.isMinimumZoom : this.renderedPagesList.indexOf(next) === -1;\n if (allowPageRendering && !this.getMagnified() && pageHeight) {\n if (this.isDocumentLoaded && this.pdfViewer.initialRenderPages > this.pageRenderCount && (this.getPageHeight(this.pdfViewer.initialRenderPages - 1) + this.getPageTop(this.pdfViewer.initialRenderPages - 1)) > this.viewerContainer.clientHeight) {\n var renderLimit = this.pdfViewer.initialRenderPages <= this.pageCount ? this.pdfViewer.initialRenderPages : this.pageCount;\n for (var i = 1; i < renderLimit; i++) {\n this.createRequestForRender(i);\n }\n }\n else {\n this.createRequestForRender(next);\n this.renderCountIncrement();\n while (this.viewerContainer.clientHeight > pageHeight) {\n next = next + 1;\n if (next < this.pageCount) {\n this.renderPageElement(next);\n this.createRequestForRender(next);\n pageHeight += this.getPageHeight(next);\n this.renderCountIncrement();\n }\n else {\n break;\n }\n }\n }\n }\n }\n }\n };\n PdfViewerBase.prototype.renderPreviousPagesInScroll = function (pageIndex) {\n var next = pageIndex - 1;\n var pageNumber = next - 1;\n if (next > 0) {\n if (this.renderedPagesList.indexOf(next) === -1 && !this.getMagnified()) {\n this.createRequestForRender(next);\n this.renderCountIncrement();\n }\n if (pageNumber > 0) {\n if (this.renderedPagesList.indexOf(pageNumber) === -1 && !this.getMagnified()) {\n this.createRequestForRender(pageNumber);\n this.renderCountIncrement();\n }\n }\n }\n };\n PdfViewerBase.prototype.downloadDocument = function (blobUrl) {\n // eslint-disable-next-line\n var Url = URL || webkitURL;\n blobUrl = Url.createObjectURL(blobUrl);\n var anchorElement = createElement('a');\n if (anchorElement.click) {\n anchorElement.href = blobUrl;\n anchorElement.target = '_parent';\n if ('download' in anchorElement) {\n anchorElement.download = this.downloadFileName;\n }\n (document.body || document.documentElement).appendChild(anchorElement);\n anchorElement.click();\n anchorElement.parentNode.removeChild(anchorElement);\n }\n else {\n if (window.top === window &&\n blobUrl.split('#')[0] === window.location.href.split('#')[0]) {\n var padCharacter = blobUrl.indexOf('?') === -1 ? '?' : '&';\n blobUrl = blobUrl.replace(/#|$/, padCharacter + '$&');\n }\n /* eslint-disable */\n window.open(blobUrl, '_parent');\n /* eslint-enable */\n }\n };\n PdfViewerBase.prototype.downloadExportFormat = function (blobUrl, annotationDataFormat, formFieldDataFormat, isForm) {\n var isJson = annotationDataFormat === 'Json' || formFieldDataFormat === 'Json';\n // eslint-disable-next-line max-len\n var extension = isJson ? '.json' : formFieldDataFormat === 'Fdf' ? '.fdf' : formFieldDataFormat === 'Xml' ? '.xml' : (annotationDataFormat === 'Xfdf' || formFieldDataFormat === 'Xfdf') ? '.xfdf' : null;\n if (!isNullOrUndefined(extension)) {\n // eslint-disable-next-line\n var Url = URL || webkitURL;\n blobUrl = Url.createObjectURL(blobUrl);\n var anchorElement = createElement('a');\n if (anchorElement.click) {\n anchorElement.href = blobUrl;\n anchorElement.target = '_parent';\n if ('download' in anchorElement) {\n if (this.pdfViewer.exportAnnotationFileName !== null) {\n anchorElement.download = this.pdfViewer.exportAnnotationFileName.split('.')[0] + extension;\n }\n else {\n anchorElement.download = this.pdfViewer.fileName.split('.')[0] + extension;\n }\n }\n (document.body || document.documentElement).appendChild(anchorElement);\n anchorElement.click();\n anchorElement.parentNode.removeChild(anchorElement);\n if (isForm) {\n this.pdfViewer.fireFormExportSuccess(blobUrl, anchorElement.download);\n }\n else {\n this.pdfViewer.fireExportSuccess(blobUrl, anchorElement.download);\n }\n }\n else if (isJson) {\n if (window.top === window &&\n blobUrl.split('#')[0] === window.location.href.split('#')[0]) {\n var padCharacter = blobUrl.indexOf('?') === -1 ? '?' : '&';\n blobUrl = blobUrl.replace(/#|$/, padCharacter + '$&');\n }\n /* eslint-disable */\n window.open(blobUrl, '_parent');\n /* eslint-enable */\n if (isForm) {\n this.pdfViewer.fireFormExportSuccess(blobUrl, this.pdfViewer.fileName.split('.')[0] + extension);\n }\n else {\n this.pdfViewer.fireExportSuccess(blobUrl, this.pdfViewer.fileName.split('.')[0] + extension);\n }\n }\n }\n };\n /**\n * @private\n * @param {string} data - The data for exporting the fields.\n * @returns {void}\n */\n PdfViewerBase.prototype.exportFormFields = function (data, formFieldDataFormat) {\n this.createRequestForExportFormfields(false, formFieldDataFormat, data);\n };\n /**\n * @param data\n * @param formFieldDataFormat\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.importFormFields = function (data, formFieldDataFormat) {\n this.createRequestForImportingFormfields(data, formFieldDataFormat);\n };\n /**\n * @param {boolean} isObject\n * @param {FormFieldDataFormat} formFieldDataFormat\n * @param {string} data - The data for exporting the fields.\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForExportFormfields = function (isObject, formFieldDataFormat, data) {\n var _this = this;\n var proxy = null;\n proxy = this;\n var promise = new Promise(function (resolve, reject) {\n // eslint-disable-next-line\n var jsonObject = proxy.createFormfieldsJsonData();\n var canExport = false;\n if (formFieldDataFormat === 'Json' || formFieldDataFormat === 'Fdf' || formFieldDataFormat === 'Xfdf' || formFieldDataFormat === \"Xml\") {\n jsonObject.formFieldDataFormat = formFieldDataFormat;\n canExport = proxy.pdfViewer.fireFormExportStarted(jsonObject);\n }\n if (canExport) {\n jsonObject.action = 'ExportFormFields';\n // eslint-disable-next-line\n jsonObject['hashId'] = proxy.hashId;\n // eslint-disable-next-line\n jsonObject['fileName'] = proxy.pdfViewer.fileName;\n if (data && data !== '' && !isObject) {\n // eslint-disable-next-line\n jsonObject['filePath'] = data;\n }\n // eslint-disable-next-line\n jsonObject['elementId'] = _this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.document = proxy.jsonDocumentId;\n }\n var formFieldsPageList = _this.getFormFieldsPageList(jsonObject[\"formDesigner\"]);\n jsonObject['formFieldsPageList'] = JSON.stringify(formFieldsPageList);\n jsonObject['isFormFieldAnnotationsExist'] = _this.isAnnotationsExist(jsonObject[\"formDesigner\"]) || _this.isFieldsDataExist(jsonObject[\"fieldsData\"]) || formFieldsPageList.length > 0;\n var url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.exportFormFields;\n proxy.exportFormFieldsRequestHandler = new AjaxHandler(_this.pdfViewer);\n proxy.exportFormFieldsRequestHandler.url = url;\n proxy.exportFormFieldsRequestHandler.mode = true;\n proxy.exportFormFieldsRequestHandler.responseType = 'text';\n if (!proxy.clientSideRendering) {\n proxy.exportFormFieldsRequestHandler.send(jsonObject);\n }\n else {\n var resultData = proxy.pdfViewer.pdfRendererModule.exportFormFields(jsonObject, isObject);\n if (isObject) {\n var annotData = _this.getDataOnSuccess(resultData);\n resolve(annotData);\n }\n else {\n proxy.exportFileDownload(resultData, proxy, formFieldDataFormat, jsonObject, isObject);\n }\n }\n // eslint-disable-next-line\n proxy.exportFormFieldsRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n var redirect = proxy.checkRedirection(data);\n if (!redirect) {\n if (data) {\n if (isObject) {\n var annotData = proxy.exportFileDownload(data, proxy, formFieldDataFormat, jsonObject, isObject);\n resolve(annotData);\n }\n else {\n proxy.exportFileDownload(data, proxy, formFieldDataFormat, jsonObject, isObject);\n }\n }\n }\n };\n // eslint-disable-next-line\n proxy.exportFormFieldsRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireFormExportFailed(jsonObject.pdfAnnotation, result.statusText);\n };\n // eslint-disable-next-line\n proxy.exportFormFieldsRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireFormExportFailed(jsonObject.pdfAnnotation, result.statusText);\n };\n }\n });\n if (isObject) {\n return promise;\n }\n else {\n return true;\n }\n };\n PdfViewerBase.prototype.exportFileDownload = function (data, proxy, formFieldDataFormat, jsonObject, isObject) {\n return new Promise(function (resolve) {\n if (data) {\n if (!proxy.clientSideRendering) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.exportFormFields, data);\n }\n if (isObject) {\n // eslint-disable-next-line\n var annotationJson = decodeURIComponent(escape(atob(data.split(',')[1])));\n resolve(annotationJson);\n proxy.pdfViewer.fireFormExportSuccess(annotationJson, proxy.pdfViewer.fileName);\n }\n else if (data.split('base64,')[1]) {\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/json');\n if (Browser.isIE || Browser.info.name === 'edge') {\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.pdfViewer.fileName.split('.')[0] + '.json');\n }\n else if (jsonObject.formFieldDataFormat === 'Json' || jsonObject.formFieldDataFormat === 'Fdf' || jsonObject.formFieldDataFormat === 'Xfdf' || jsonObject.formFieldDataFormat === 'Xml') {\n proxy.downloadExportFormat(blobUrl, null, formFieldDataFormat, true);\n }\n }\n }\n });\n };\n /**\n * @param {string} fileName - Gets the name of the file name for slicing the last index\n * @param {string} sliceBy - A type to slice the file name; example (\".\", \"_\")\n * @returns {string}\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.getLastIndexValue = function (fileName, sliceBy) {\n var indexName = fileName.slice(fileName.lastIndexOf(sliceBy) + 1);\n return indexName;\n };\n /**\n * @param source\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForImportingFormfields = function (source, formFieldDataFormat) {\n var proxy = null;\n var index = \".\";\n proxy = this;\n // eslint-disable-next-line\n var jsonObject = {};\n var sourceName = this.getLastIndexValue(source, index);\n if (typeof source !== 'object' && (sourceName === 'json' || sourceName === 'fdf' || sourceName === 'xfdf' || sourceName === 'xml')) {\n jsonObject.data = source;\n jsonObject['fileName'] = proxy.pdfViewer.fileName;\n jsonObject.formFieldDataFormat = formFieldDataFormat;\n }\n else {\n jsonObject.formFieldDataFormat = formFieldDataFormat;\n if (formFieldDataFormat === 'Json') {\n jsonObject.data = JSON.stringify(source);\n }\n else {\n jsonObject.data = source;\n }\n }\n proxy.pdfViewer.fireFormImportStarted(source);\n // eslint-disable-next-line\n jsonObject['hashId'] = proxy.hashId;\n // eslint-disable-next-line\n jsonObject['elementId'] = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.document = proxy.jsonDocumentId;\n }\n jsonObject = Object.assign(jsonObject, this.constructJsonDownload());\n // eslint-disable-next-line\t\n jsonObject.action = 'ImportFormFields';\n var url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.importFormFields;\n proxy.importFormFieldsRequestHandler = new AjaxHandler(this.pdfViewer);\n proxy.importFormFieldsRequestHandler.url = url;\n proxy.importFormFieldsRequestHandler.mode = true;\n proxy.importFormFieldsRequestHandler.responseType = 'text';\n if (!proxy.clientSideRendering) {\n proxy.importFormFieldsRequestHandler.send(jsonObject);\n }\n else {\n var resultData = proxy.pdfViewer.pdfRendererModule.importFormFields(jsonObject);\n this.importClientSideFormFields(resultData, source);\n }\n // eslint-disable-next-line\n proxy.importFormFieldsRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n var redirect = proxy.checkRedirection(data);\n if (!redirect) {\n if (data && data !== 'null') {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n if (typeof data !== 'object') {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.importFormFields);\n proxy.pdfViewer.fireFormImportFailed(source, result.statusText);\n data = null;\n }\n }\n catch (error) {\n proxy.pdfViewer.fireFormImportFailed(source, proxy.pdfViewer.localeObj.getConstant('File not found'));\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_FileNotFound');\n promise.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('File not found'));\n }\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.importFormFields);\n data = null;\n }\n }\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.importFormFields, data);\n proxy.pdfViewer.fireFormImportSuccess(source);\n window.sessionStorage.removeItem(this.documentId + '_formfields');\n this.pdfViewer.formFieldsModule.removeExistingFormFields();\n window.sessionStorage.removeItem(this.documentId + '_formDesigner');\n proxy.saveFormfieldsData(data);\n for (var i = 0; i < proxy.renderedPagesList.length; i++) {\n this.pdfViewer.formFieldsModule.renderFormFields(proxy.renderedPagesList[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n proxy.pdfViewer.fireFormImportFailed(source, result.statusText);\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_FileNotFound');\n promise.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('File not found'));\n }\n }\n }\n };\n // eslint-disable-next-line\n proxy.importFormFieldsRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireFormImportFailed(source, result.statusText);\n };\n // eslint-disable-next-line\n proxy.importFormFieldsRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireFormImportFailed(source, result.statusText);\n };\n };\n PdfViewerBase.prototype.importClientSideFormFields = function (result, source) {\n if (!isNullOrUndefined(result)) {\n this.pdfViewer.fireFormImportSuccess(source);\n window.sessionStorage.removeItem(this.documentId + '_formfields');\n this.pdfViewer.formFieldsModule.removeExistingFormFields();\n window.sessionStorage.removeItem(this.documentId + '_formDesigner');\n this.saveFormfieldsData(result);\n for (var i = 0; i < this.renderedPagesList.length; i++) {\n this.pdfViewer.formFieldsModule.renderFormFields(this.renderedPagesList[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n this.pdfViewer.fireFormImportFailed(source, null);\n this.openImportExportNotificationPopup(this.pdfViewer.localeObj.getConstant('File not found'));\n }\n };\n /**\n * @public\n * @returns {any} - Returns the Json data.\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createFormfieldsJsonData = function () {\n // eslint-disable-next-line\n var jsonObject = {};\n if (this.pdfViewer.formDesignerModule) {\n var fieldsData = this.pdfViewer.formDesignerModule.downloadFormDesigner();\n // eslint-disable-next-line\n jsonObject['formDesigner'] = fieldsData;\n }\n else if (this.pdfViewer.formFieldsModule) {\n var fieldsData = this.pdfViewer.formFieldsModule.downloadFormFieldsData();\n // eslint-disable-next-line\n jsonObject['fieldsData'] = fieldsData;\n }\n return jsonObject;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.constructJsonDownload = function () {\n // eslint-disable-next-line\n var jsonObject = { hashId: this.hashId };\n if (this.jsonDocumentId) {\n jsonObject.documentId = this.jsonDocumentId;\n }\n jsonObject.uniqueId = this.documentId;\n this.importPageList = [];\n if (this.pdfViewer.annotationModule) {\n this.saveImportedAnnotations();\n }\n if (this.isTextMarkupAnnotationModule()) {\n this.isJsonExported = false;\n // eslint-disable-next-line max-len\n var textMarkupAnnotationCollection = this.pdfViewer.annotationModule.textMarkupAnnotationModule.saveTextMarkupAnnotations();\n // eslint-disable-next-line\n jsonObject['textMarkupAnnotations'] = textMarkupAnnotationCollection;\n }\n if (this.isShapeAnnotationModule()) {\n this.isJsonExported = false;\n // eslint-disable-next-line max-len\n var shapeAnnotations = this.pdfViewer.annotationModule.shapeAnnotationModule.saveShapeAnnotations();\n // eslint-disable-next-line\n jsonObject['shapeAnnotations'] = shapeAnnotations;\n }\n if (this.isCalibrateAnnotationModule()) {\n this.isJsonExported = false;\n // eslint-disable-next-line max-len\n var calibrateAnnotations = this.pdfViewer.annotationModule.measureAnnotationModule.saveMeasureShapeAnnotations();\n // eslint-disable-next-line\n jsonObject['measureShapeAnnotations'] = calibrateAnnotations;\n }\n if (this.isStampAnnotationModule()) {\n // eslint-disable-next-line max-len\n var stampAnnotationCollection = this.pdfViewer.annotationModule.stampAnnotationModule.saveStampAnnotations();\n // eslint-disable-next-line\n jsonObject['stampAnnotations'] = stampAnnotationCollection;\n }\n if (this.isCommentAnnotationModule()) {\n // eslint-disable-next-line max-len\n var stickyAnnotationCollection = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.saveStickyAnnotations();\n // eslint-disable-next-line\n jsonObject['stickyNotesAnnotation'] = stickyAnnotationCollection;\n }\n if (this.isImportAction) {\n var importList = JSON.stringify(this.importPageList);\n // eslint-disable-next-line\n jsonObject['importPageList'] = importList;\n }\n if (this.pdfViewer.formDesignerModule) {\n var fieldsData = this.pdfViewer.formDesignerModule.downloadFormDesigner();\n // eslint-disable-next-line\n jsonObject['formDesigner'] = fieldsData;\n }\n else if (this.pdfViewer.formFieldsModule) {\n var fieldsData = this.pdfViewer.formFieldsModule.downloadFormFieldsData();\n // eslint-disable-next-line\n jsonObject['fieldsData'] = fieldsData;\n }\n var signatureData = this.signatureModule.saveSignature();\n // eslint-disable-next-line\n jsonObject['signatureData'] = signatureData;\n if (this.pdfViewer.isSignatureEditable) {\n // eslint-disable-next-line\n jsonObject['isSignatureEdited'] = this.pdfViewer.isSignatureEditable;\n }\n if (this.isFreeTextAnnotationModule()) {\n // eslint-disable-next-line max-len\n var freeTextAnnotationCollection = this.pdfViewer.annotationModule.freeTextAnnotationModule.saveFreeTextAnnotations();\n // eslint-disable-next-line\n jsonObject['freeTextAnnotation'] = freeTextAnnotationCollection;\n }\n if (this.isInkAnnotationModule()) {\n var inkSignatureData = this.pdfViewer.annotationModule.inkAnnotationModule.saveInkSignature();\n // eslint-disable-next-line\n jsonObject['inkSignatureData'] = inkSignatureData;\n }\n // eslint-disable-next-line\n jsonObject['action'] = 'Download';\n // eslint-disable-next-line\n jsonObject['elementId'] = this.pdfViewer.element.id;\n if (this.pdfViewer.annotationModule) {\n var annotationsPageList = this.getAnnotationsPageList();\n jsonObject['isAnnotationsExist'] = this.isAnnotationsExist(jsonObject[\"textMarkupAnnotations\"]) || this.isAnnotationsExist(jsonObject[\"shapeAnnotations\"]) || this.isAnnotationsExist(jsonObject[\"measureShapeAnnotations\"]) || this.isAnnotationsExist(jsonObject[\"stampAnnotations\"]) || this.isAnnotationsExist(jsonObject[\"stickyNotesAnnotation\"]) || this.isAnnotationsExist(jsonObject[\"signatureData\"]) || this.isAnnotationsExist(jsonObject[\"freeTextAnnotation\"]) || this.isAnnotationsExist(jsonObject[\"inkSignatureData\"]) || annotationsPageList.length > 0;\n jsonObject['annotationsPageList'] = JSON.stringify(annotationsPageList);\n }\n if (this.pdfViewer.formDesignerModule || this.pdfViewer.formFieldsModule) {\n var formFieldsPageList = this.getFormFieldsPageList(jsonObject[\"formDesigner\"]);\n jsonObject['isFormFieldAnnotationsExist'] = this.isAnnotationsExist(jsonObject[\"formDesigner\"]) || this.isFieldsDataExist(jsonObject[\"fieldsData\"]) || formFieldsPageList.length > 0;\n jsonObject['formFieldsPageList'] = JSON.stringify(formFieldsPageList);\n }\n if (this.pdfViewer.annotationCollection) {\n jsonObject['annotationCollection'] = JSON.stringify(this.pdfViewer.annotationCollection);\n }\n return jsonObject;\n };\n /**\n * @private\n * @returns {boolean} - Returns whether annotation is present.\n */\n PdfViewerBase.prototype.isAnnotationsExist = function (annotationInfo) {\n // eslint-disable-next-line max-len\n return !isNullOrUndefined(annotationInfo) ? JSON.parse(annotationInfo).flat(1).length > 0 : false;\n };\n /**\n * @private\n * @returns {boolean} - Returns whether fields data is present.\n */\n PdfViewerBase.prototype.isFieldsDataExist = function (fieldsData) {\n // eslint-disable-next-line max-len\n return !isNullOrUndefined(fieldsData) ? Object.entries(JSON.parse(fieldsData)).length !== 0 : false;\n };\n /**\n * @private\n * @returns {boolean} - Returns annotations page number list.\n */\n PdfViewerBase.prototype.getAnnotationsPageList = function () {\n // eslint-disable-next-line max-len\n var annotCollection = this.pdfViewer.annotationCollection.map(function (a) { return a.pageNumber; });\n var annotActionCollection = this.pdfViewer.annotationModule.actionCollection.filter(function (value, index, self) { return value.annotation.propName !== \"formFields\" && value.annotation.formFieldAnnotationType == undefined; }).map(function (a) { return a.pageIndex; });\n var fullPageList = annotCollection.concat(annotActionCollection);\n return fullPageList.filter(function (value, index, self) { return self.indexOf(value) === index && value !== undefined; });\n };\n /**\n * @private\n * @returns {boolean} - Returns form fields page number list.\n */\n PdfViewerBase.prototype.getFormFieldsPageList = function (formDesignerData) {\n // eslint-disable-next-line max-len\n var formFieldsCollection = this.pdfViewer.formFieldCollection.map(function (item) {\n if (!isNullOrUndefined(item.properties)) {\n return item.properties.pageNumber;\n }\n else {\n return item.pageNumber + 1;\n }\n });\n var annotActionCollection = !isNullOrUndefined(this.pdfViewer.annotationModule) ? this.pdfViewer.annotationModule.actionCollection.filter(function (value, index, self) { return value.annotation.propName == \"formFields\" || value.annotation.formFieldAnnotationType != undefined; }).map(function (a) { return a.pageIndex; }) : [];\n var fullPageList = formFieldsCollection.concat(annotActionCollection);\n var designerDataList;\n if (!isNullOrUndefined(formDesignerData)) {\n designerDataList = JSON.parse(formDesignerData).map(function (item) {\n return item.FormField.pageNumber;\n });\n }\n var totalPageList = fullPageList.concat(designerDataList);\n return totalPageList.filter(function (value, index, self) { return self.indexOf(value) === index && value !== undefined; });\n };\n /**\n * @private\n * @param {string} annotationID - The annotationID.\n * @returns {any} - Returns collection of type.\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkFormFieldCollection = function (annotationID) {\n var isFormFieldAnnotation = false;\n // eslint-disable-next-line\n var formDesignerData = null;\n formDesignerData = this.getItemFromSessionStorage('_formDesigner');\n if (formDesignerData) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(formDesignerData);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[parseInt(i.toString(), 10)].FormField.formFieldAnnotationType === 'RadioButton') {\n for (var j = 0; j < formFieldsData[parseInt(i.toString(), 10)].FormField.radiobuttonItem.length; j++) {\n if (annotationID === formFieldsData[parseInt(i.toString(), 10)].FormField.radiobuttonItem[parseInt(j.toString(), 10)].id.split('_')[0]) {\n isFormFieldAnnotation = true;\n break;\n }\n }\n }\n else if (formFieldsData[parseInt(i.toString(), 10)].Key.split('_')[0] === annotationID) {\n isFormFieldAnnotation = true;\n break;\n }\n }\n }\n return isFormFieldAnnotation;\n };\n /**\n * @private\n * @returns {boolean} - Returns whether freetext module is enabled.\n */\n PdfViewerBase.prototype.isFreeTextAnnotationModule = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.freeTextAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForDownload = function () {\n var proxy = null;\n proxy = this;\n proxy.pdfViewer.fireDownloadStart(proxy.downloadFileName);\n // eslint-disable-next-line\n var jsonObject = this.constructJsonDownload();\n var digitalSignature = proxy.clientSideRendering ? proxy.isDigitalSignaturePresent : (proxy.digitalSignaturePages && proxy.digitalSignaturePages.length !== 0);\n if (digitalSignature) {\n if (proxy.pdfViewer.isDocumentEdited) {\n jsonObject['digitalSignatureDocumentEdited'] = true;\n }\n else {\n jsonObject['digitalSignatureDocumentEdited'] = false;\n }\n }\n this.dowonloadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.dowonloadRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.download;\n this.dowonloadRequestHandler.responseType = 'text';\n if (this.validateForm && this.pdfViewer.enableFormFieldsValidation) {\n this.pdfViewer.fireValidatedFailed(proxy.pdfViewer.serverActionSettings.download);\n this.validateForm = false;\n }\n else if (!this.clientSideRendering) {\n this.dowonloadRequestHandler.send(jsonObject);\n }\n else {\n var data = this.pdfViewer.pdfRendererModule.getDocumentAsBase64(jsonObject);\n this.fileDownload(data, this);\n }\n // eslint-disable-next-line\n this.dowonloadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n var redirect = proxy.checkRedirection(data);\n if (!redirect) {\n if (data) {\n proxy.fileDownload(data, proxy);\n }\n else {\n proxy.pdfViewer.fireDownloadEnd(proxy.downloadFileName, 'PDF Document saved in server side successfully');\n }\n }\n };\n // eslint-disable-next-line\n this.dowonloadRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.download);\n };\n // eslint-disable-next-line\n this.dowonloadRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.download);\n };\n };\n PdfViewerBase.prototype.fileDownload = function (data, proxy) {\n if (data) {\n if (typeof data !== 'object' && data.indexOf('data:application/pdf') === -1) {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.download);\n data = null;\n }\n if (typeof data === 'object') {\n data = JSON.parse(data);\n }\n if (data) {\n if (proxy.pdfViewer.downloadFileName && (proxy.pdfViewer.downloadFileName !== proxy.downloadFileName)) {\n proxy.downloadFileName = proxy.pdfViewer.downloadFileName;\n }\n if (proxy.clientSideRendering) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.download, data);\n }\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/pdf');\n if (Browser.isIE || Browser.info.name === 'edge') {\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.downloadFileName);\n }\n else {\n proxy.downloadDocument(blobUrl);\n }\n proxy.pdfViewer.fireDownloadEnd(proxy.downloadFileName, data);\n }\n proxy.updateDocumentAnnotationCollections();\n }\n };\n /**\n * @param pageWidth\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.getTileCount = function (pageWidth) {\n if (pageWidth && typeof pageWidth === 'number') {\n var defaultWidth = 816;\n var tileCount = 1;\n if (this.getZoomFactor() > 2 && pageWidth <= 1200) {\n tileCount = 2;\n }\n else {\n tileCount = pageWidth / defaultWidth;\n }\n // eslint-disable-next-line radix\n var tileValue = Math.ceil(tileCount);\n if (tileValue <= 0) {\n return 1;\n }\n else {\n if (this.pdfViewer.tileRenderingSettings.enableTileRendering) {\n return tileValue;\n }\n else {\n return 1;\n }\n }\n }\n else {\n return 1;\n }\n };\n PdfViewerBase.prototype.createRequestForRender = function (pageIndex) {\n var proxy = null;\n proxy = this;\n var canvas = proxy.getElement('_pageCanvas_' + pageIndex);\n var oldCanvas = proxy.getElement('_oldCanvas_' + pageIndex);\n if (this.pageSize && this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n var pageWidth_1 = this.pageSize[parseInt(pageIndex.toString(), 10)].width;\n var pageHeight = this.pageSize[parseInt(pageIndex.toString(), 10)].height;\n var tilecanvas = this.getElement('_pageCanvas_' + pageIndex);\n // eslint-disable-next-line\n var viewPortWidth_1 = 1200; // On diving the value greater than 1200 we will get the tile count as 2.\n // eslint-disable-next-line\n var viewPortHeight = proxy.pdfViewer.element.clientHeight > 0 ? proxy.pdfViewer.element.clientHeight : proxy.pdfViewer.element.style.height;\n // eslint-disable-next-line radix\n viewPortWidth_1 = parseInt(viewPortWidth_1);\n // eslint-disable-next-line radix\n viewPortHeight = parseInt(viewPortHeight) ? parseInt(viewPortHeight) : 500; //we have applied minimum-height as 500.\n var noTileX = void 0;\n var noTileY = void 0;\n var thumbnailImageElement = void 0;\n var imageSource = void 0;\n var object = new Object();\n if ((this.isMinimumZoom && document.getElementById(this.pdfViewer.element.id + '_thumbnail_Selection_Ring_' + pageIndex))) {\n this.renderThumbnailImages = true;\n thumbnailImageElement = document.getElementById(this.pdfViewer.element.id + '_thumbnail_Selection_Ring_' + pageIndex).children[0];\n imageSource = thumbnailImageElement.src;\n }\n else {\n this.renderThumbnailImages = false;\n }\n var tileCount = this.getTileCount(pageWidth_1);\n if (canvas) {\n if (!isNaN(parseFloat(canvas.style.width)) || oldCanvas) {\n if (proxy.isInitialLoaded) {\n proxy.showPageLoadingIndicator(pageIndex, false);\n }\n }\n // eslint-disable-next-line\n var data = proxy.getStoredData(pageIndex);\n noTileX = noTileY = tileCount;\n var tileSettings = proxy.pdfViewer.tileRenderingSettings;\n if (tileSettings.enableTileRendering && tileSettings.x > 0 && tileSettings.y > 0) {\n if ((viewPortWidth_1 < pageWidth_1 || this.getZoomFactor() > 2)) {\n noTileX = tileSettings.x;\n noTileY = tileSettings.y;\n }\n }\n proxy.tileRequestCount = noTileX * noTileY;\n var zoomFactor = this.retrieveCurrentZoomFactor();\n var isPageRequestSent = void 0;\n if (tileCount === 1) {\n data = proxy.getStoredData(pageIndex);\n isPageRequestSent = proxy.pageRequestSent(pageIndex, 0, 0);\n }\n else {\n // eslint-disable-next-line\n var tileData = JSON.parse(proxy.getWindowSessionStorageTile(pageIndex, 0, 0, zoomFactor));\n if (tileCount > 1) {\n data = tileData;\n }\n }\n if (data && data.uniqueId === proxy.documentId && (data['image'] || this.isMinimumZoom)) {\n canvas.style.backgroundColor = '#fff';\n if ((proxy.pdfViewer.magnification && proxy.pdfViewer.magnification.isPinchZoomed) || !this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n return;\n }\n var zoomFactor_2 = this.retrieveCurrentZoomFactor();\n if (zoomFactor_2 > 2 && pageWidth_1 <= 1200) {\n viewPortWidth_1 = 700;\n }\n else {\n viewPortWidth_1 = 1200;\n }\n if (!proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n viewPortWidth_1 = 1200;\n }\n if ((viewPortWidth_1 >= pageWidth_1) || !proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n if (this.renderThumbnailImages && tileCount === 1) {\n proxy.renderPage(data, pageIndex, imageSource);\n }\n else {\n proxy.renderPage(data, pageIndex);\n }\n }\n else {\n proxy.isTileImageRendered = true;\n proxy.tileRenderCount = 0;\n if (this.renderThumbnailImages && tileCount === 1) {\n proxy.renderPage(data, pageIndex, imageSource);\n }\n else {\n proxy.tileRenderPage(data, pageIndex);\n for (var k = 0; k < noTileX; k++) {\n for (var l = 0; l < noTileY; l++) {\n if (k === 0 && l === 0) {\n continue;\n }\n data = this.clientSideRendering ? JSON.parse(this.getStoredTileImageDetails(pageIndex, k, l, zoomFactor_2)) : JSON.parse(this.getWindowSessionStorageTile(pageIndex, k, l, zoomFactor_2));\n if (data) {\n proxy.tileRenderPage(data, pageIndex);\n }\n }\n }\n }\n }\n data = null;\n }\n else if (data === null || !isPageRequestSent) {\n if (!this.renderThumbnailImages) {\n if (this.getPagesPinchZoomed()) {\n proxy.showPageLoadingIndicator(pageIndex, false);\n }\n else {\n proxy.showPageLoadingIndicator(pageIndex, true);\n }\n if (proxy.getPagesZoomed()) {\n if (proxy.isInitialLoaded) {\n proxy.showPageLoadingIndicator(pageIndex, false);\n }\n }\n }\n if (proxy.pdfViewer.magnification && proxy.pdfViewer.magnification.isPinchZoomed) {\n return;\n }\n if (!proxy.pdfViewer.tileRenderingSettings.enableTileRendering || this.renderThumbnailImages) {\n noTileX = 1;\n noTileY = 1;\n }\n proxy.tileRenderCount = 0;\n proxy.isTileImageRendered = true;\n for (var x = 0; x < noTileX; x++) {\n for (var y = 0; y < noTileY; y++) {\n var jsonObject = null;\n var zoomFactor_3 = this.retrieveCurrentZoomFactor();\n if (zoomFactor_3 > 2 && pageWidth_1 <= 1200) {\n viewPortWidth_1 = 700;\n }\n else {\n viewPortWidth_1 = 1200;\n }\n if (!proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n viewPortWidth_1 = 1200;\n }\n if (this.renderThumbnailImages && !this.clientSideRendering) {\n proxy.renderPage(object, pageIndex, imageSource);\n if (this.textrequestLists.indexOf(pageIndex) == -1) {\n jsonObject = { pageStartIndex: pageIndex, pageEndIndex: pageIndex + 1, documentId: proxy.getDocumentId(), hashId: proxy.hashId, action: 'RenderPdfTexts', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.documentId };\n if (this.jsonDocumentId) {\n jsonObject.documentId = this.jsonDocumentId;\n }\n this.textRequestHandler = new AjaxHandler(this.pdfViewer);\n this.textRequestHandler.url = this.pdfViewer.serviceUrl + '/' + this.pdfViewer.serverActionSettings.renderTexts;\n this.textRequestHandler.responseType = 'json';\n if (!this.clientSideRendering) {\n this.textRequestHandler.send(jsonObject);\n }\n this.textrequestLists.push(pageIndex);\n proxy.textRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line max-len\n if ((proxy.pdfViewer.magnification && proxy.pdfViewer.magnification.isPinchZoomed) || !proxy.pageSize[parseInt(pageIndex.toString(), 10)]) {\n return;\n }\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.renderTexts);\n data = null;\n }\n }\n }\n if (data) {\n proxy.pageTextRequestOnSuccess(data, proxy, pageIndex);\n }\n };\n // eslint-disable-next-line\n this.textRequestHandler.onFailure = function (result) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderTexts);\n };\n // eslint-disable-next-line\n this.textRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderTexts);\n };\n if (this.clientSideRendering) {\n this.pdfViewer.pdfRendererModule.getDocumentText(jsonObject).then(function (data) {\n proxy.pageTextRequestOnSuccess(data, proxy, pageIndex);\n });\n }\n }\n }\n else {\n // eslint-disable-next-line max-len\n jsonObject = {\n xCoordinate: (x).toString(), yCoordinate: (y).toString(), viewPortWidth: (viewPortWidth_1).toString(), viewPortHeight: (viewPortHeight).toString(),\n pageNumber: (pageIndex).toString(), hashId: proxy.hashId, tilecount: (tileCount).toString(), tileXCount: (noTileX).toString(), tileYCount: (noTileY).toString(),\n // eslint-disable-next-line max-len\n zoomFactor: (zoomFactor_3).toString(), action: 'RenderPdfPages', uniqueId: this.documentId, elementId: proxy.pdfViewer.element.id, digitalSignaturePresent: proxy.digitalSignaturePresent(pageIndex)\n };\n if (this.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.jsonDocumentId;\n }\n proxy.pageRequestHandler = new AjaxHandler(this.pdfViewer);\n // eslint-disable-next-line max-len\n proxy.pageRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.renderPages;\n proxy.pageRequestHandler.responseType = 'json';\n if (!isNullOrUndefined(proxy.hashId)) {\n this.requestCollection.push(this.pageRequestHandler);\n this.clientSideRendering ? '' : proxy.pageRequestHandler.send(jsonObject);\n }\n proxy.requestLists.push(proxy.documentId + '_' + pageIndex + '_' + x + '_' + y + '_' + zoomFactor_3);\n // eslint-disable-next-line\n proxy.pageRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line max-len\n if ((proxy.pdfViewer.magnification && proxy.pdfViewer.magnification.isPinchZoomed) || !proxy.pageSize[parseInt(pageIndex.toString(), 10)]) {\n return;\n }\n // eslint-disable-next-line\n var data = result.data;\n var redirect = proxy.checkRedirection(data);\n if (redirect) {\n proxy.showLoadingIndicator(false);\n }\n else {\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.renderPages);\n data = null;\n }\n }\n }\n if (data) {\n proxy.pageRequestOnSuccess(data, proxy, viewPortWidth_1, pageWidth_1, pageIndex);\n }\n }\n };\n // eslint-disable-next-line\n this.pageRequestHandler.onFailure = function (result) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderPages);\n };\n // eslint-disable-next-line\n this.pageRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderPages);\n };\n if (this.clientSideRendering) {\n var textDetailsId = proxy.documentId + '_' + pageIndex + '_textDetails';\n var isTextNeed = proxy.pageTextDetails ? proxy.pageTextDetails[\"\" + textDetailsId] ? false : true : true;\n if (viewPortWidth_1 >= pageWidth_1 || !proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n this.pdfViewerRunner.postMessage({ pageIndex: pageIndex, message: 'renderPage', zoomFactor: zoomFactor_3, isTextNeed: isTextNeed, textDetailsId: textDetailsId });\n }\n else {\n this.showPageLoadingIndicator(pageIndex, true);\n this.pdfViewerRunner.postMessage({\n pageIndex: pageIndex,\n message: 'renderImageAsTile',\n zoomFactor: zoomFactor_3,\n tileX: x,\n tileY: y,\n tileXCount: noTileX,\n tileYCount: noTileY,\n isTextNeed: isTextNeed,\n textDetailsId: textDetailsId\n });\n }\n this.pdfViewerRunner.onmessage = function (event) {\n switch (event.data.message) {\n case 'imageRendered':\n if (event.data.message === 'imageRendered') {\n var canvas_3 = document.createElement('canvas');\n var _a = event.data, value = _a.value, width = _a.width, height = _a.height, pageIndex_1 = _a.pageIndex;\n canvas_3.width = width;\n canvas_3.height = height;\n var canvasContext = canvas_3.getContext('2d');\n var imageData = canvasContext.createImageData(width, height);\n imageData.data.set(value);\n canvasContext.putImageData(imageData, 0, 0);\n var imageUrl = canvas_3.toDataURL();\n var textBounds = event.data.textBounds;\n var textContent = event.data.textContent;\n var pageText = event.data.pageText;\n var rotation = event.data.rotation;\n var characterBounds = event.data.characterBounds;\n var hyperlinksDetails = proxy.pdfViewer.pdfRendererModule.getHyperlinks(pageIndex_1);\n var data_1 = ({ image: imageUrl, pageNumber: pageIndex_1, uniqueId: proxy.documentId, pageWidth: event.data.pageWidth, zoomFactor: event.data.zoomFactor, hyperlinks: hyperlinksDetails.hyperlinks, hyperlinkBounds: hyperlinksDetails.hyperlinkBounds, linkAnnotation: hyperlinksDetails.linkAnnotation, linkPage: hyperlinksDetails.linkPage, annotationLocation: hyperlinksDetails.annotationLocation, characterBounds: characterBounds });\n if (event.data.isTextNeed) {\n data_1.textBounds = textBounds;\n data_1.textContent = textContent;\n data_1.rotation = rotation;\n data_1.pageText = pageText;\n proxy.storeTextDetails(pageIndex_1, textBounds, textContent, pageText, rotation, characterBounds);\n }\n else {\n var textDetails = JSON.parse(proxy.pageTextDetails[\"\" + event.data.textDetailsId]);\n data_1.textBounds = textDetails.textBounds;\n data_1.textContent = textDetails.textContent;\n data_1.rotation = textDetails.rotation;\n data_1.pageText = textDetails.pageText;\n data_1.characterBounds = textDetails.characterBounds;\n }\n if (data_1 && data_1.image && data_1.uniqueId === proxy.documentId) {\n var currentPageWidth = (data_1.pageWidth && data_1.pageWidth > 0) ? data_1.pageWidth : pageWidth_1;\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.renderPages, data_1);\n var pageNumber = (data_1.pageNumber !== undefined) ? data_1.pageNumber : pageIndex_1;\n var blobObj = proxy.createBlobUrl(data_1.image.split('base64,')[1], 'image/png');\n var Url = URL || webkitURL;\n var blobUrl = Url.createObjectURL(blobObj);\n var storeObject = {\n // eslint-disable-next-line\n image: blobUrl, width: data_1.pageWidth, uniqueId: data_1.uniqueId, zoomFactor: data_1.zoomFactor\n };\n proxy.storeImageData(pageNumber, storeObject);\n proxy.pageRequestOnSuccess(data_1, proxy, viewPortWidth_1, pageWidth_1, pageIndex_1);\n }\n }\n break;\n case 'renderTileImage':\n if (event.data.message === 'renderTileImage') {\n var canvas_4 = document.createElement('canvas');\n var _b = event.data, value = _b.value, w = _b.w, h = _b.h, noTileX_1 = _b.noTileX, noTileY_1 = _b.noTileY, x_1 = _b.x, y_1 = _b.y, pageIndex_2 = _b.pageIndex;\n canvas_4.setAttribute('height', h);\n canvas_4.setAttribute('width', w);\n canvas_4.width = w;\n canvas_4.height = h;\n var canvasContext = canvas_4.getContext('2d');\n var imageData = canvasContext.createImageData(w, h);\n imageData.data.set(value);\n canvasContext.putImageData(imageData, 0, 0);\n var imageUrl = canvas_4.toDataURL();\n var tileWidth = w;\n var tileHeight = h;\n var textBounds = event.data.textBounds;\n var textContent = event.data.textContent;\n var pageText = event.data.pageText;\n var rotation = event.data.rotation;\n var characterBounds = event.data.characterBounds;\n var tileData = {\n image: imageUrl,\n noTileX: noTileX_1,\n noTileY: noTileY_1,\n pageNumber: pageIndex_2,\n tileX: x_1,\n tileY: y_1,\n uniqueId: proxy.documentId,\n pageWidth: pageWidth_1,\n width: tileWidth,\n transformationMatrix: {\n Values: [1, 0, 0, 1, tileWidth * x_1, tileHeight * y_1, 0, 0, 0]\n },\n zoomFactor: event.data.zoomFactor,\n characterBounds: characterBounds,\n isTextNeed: event.data.isTextNeed,\n textDetailsId: event.data.textDetailsId,\n textBounds: textBounds,\n textContent: textContent,\n pageText: pageText\n };\n if (tileData && tileData.image && tileData.uniqueId === proxy.documentId) {\n var currentPageWidth = (tileData.pageWidth && tileData.pageWidth > 0) ? tileData.pageWidth : pageWidth_1;\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.renderPages, tileData);\n var pageNumber = (tileData.pageNumber !== undefined) ? tileData.pageNumber : pageIndex_2;\n if (x_1 == 0 && y_1 == 0) {\n var blobObj = proxy.createBlobUrl(tileData.image.split('base64,')[1], 'image/png');\n var Url = URL || webkitURL;\n var blobUrl = Url.createObjectURL(blobObj);\n if (tileData.isTextNeed) {\n tileData.textBounds = textBounds;\n tileData.textContent = textContent;\n tileData.rotation = rotation;\n tileData.pageText = pageText;\n proxy.storeTextDetails(pageIndex_2, textBounds, textContent, pageText, rotation, characterBounds);\n }\n else {\n var textDetails = JSON.parse(proxy.pageTextDetails[\"\" + tileData.textDetailsId]);\n tileData.textBounds = textDetails.textBounds;\n tileData.textContent = textDetails.textContent;\n tileData.rotation = textDetails.rotation;\n tileData.pageText = textDetails.pageText;\n tileData.characterBounds = textDetails.characterBounds;\n }\n var storeObject = {\n // eslint-disable-next-line\n image: blobUrl, width: tileData.width, uniqueId: tileData.uniqueId, tileX: tileData.tileX, tileY: tileData.tileY,\n zoomFactor: tileData.zoomFactor, transformationMatrix: tileData.transformationMatrix, pageText: tileData.pageText, textContent: tileData.textContent, textBounds: tileData.textBounds\n };\n proxy.storeImageData(pageNumber, storeObject, tileData.tileX, tileData.tileY);\n }\n else {\n var blobObj = proxy.createBlobUrl(tileData.image.split('base64,')[1], 'image/png');\n var Url = URL || webkitURL;\n var blobUrl = Url.createObjectURL(blobObj);\n var storeObject = {\n // eslint-disable-next-line\n image: blobUrl, width: tileData.width, uniqueId: tileData.uniqueId, tileX: tileData.tileX, tileY: tileData.tileY, zoomFactor: tileData.zoomFactor, transformationMatrix: tileData.transformationMatrix\n };\n proxy.storeImageData(pageNumber, storeObject, tileData.tileX, tileData.tileY);\n }\n proxy.pageRequestOnSuccess(tileData, proxy, viewPortWidth_1, pageWidth_1, pageIndex_2, true);\n }\n }\n break;\n case 'renderThumbnail':\n proxy.pdfViewer.thumbnailViewModule.thumbnailOnMessage(event);\n break;\n case 'printImage':\n proxy.pdfViewer.printModule.printOnMessage(event);\n break;\n }\n };\n }\n }\n }\n }\n }\n if (this.renderedPagesList.indexOf(pageIndex) === -1) {\n proxy.renderedPagesList.push(pageIndex);\n }\n }\n }\n };\n PdfViewerBase.prototype.pageRequestOnSuccess = function (data, proxy, viewPortWidth, pageWidth, pageIndex, isTileRender) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n }\n if (data.image && data.uniqueId === proxy.documentId) {\n var currentPageWidth = (data.pageWidth && data.pageWidth > 0) ? data.pageWidth : pageWidth;\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.renderPages, data);\n var pageNumber = (data.pageNumber !== undefined) ? data.pageNumber : pageIndex;\n if (((viewPortWidth >= currentPageWidth) || !proxy.pdfViewer.tileRenderingSettings.enableTileRendering) && !isTileRender) {\n proxy.storeWinData(data, pageNumber);\n }\n else {\n proxy.storeWinData(data, pageNumber, data.tileX, data.tileY);\n }\n if (((viewPortWidth >= currentPageWidth) || !proxy.pdfViewer.tileRenderingSettings.enableTileRendering) && !isTileRender) {\n proxy.renderPage(data, pageNumber);\n }\n else {\n proxy.tileRenderPage(data, pageNumber);\n }\n }\n };\n PdfViewerBase.prototype.pageTextRequestOnSuccess = function (data, proxy, pageIndex) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n }\n if (data.documentTextCollection && data.uniqueId === proxy.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.renderTexts, data);\n var pageNumber = (data.pageNumber !== undefined) ? data.pageNumber : pageIndex;\n proxy.storeWinData(data, pageNumber);\n proxy.renderPage(data, pageIndex);\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.requestForTextExtraction = function (pageIndex, annotationObject) {\n var jsonObject;\n var proxy = this;\n jsonObject = { pageStartIndex: pageIndex, pageEndIndex: pageIndex + 1, documentId: proxy.getDocumentId(), hashId: proxy.hashId, action: 'RenderPdfTexts', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.documentId };\n if (this.jsonDocumentId) {\n jsonObject.documentId = this.jsonDocumentId;\n }\n this.textRequestHandler = new AjaxHandler(this.pdfViewer);\n this.textRequestHandler.url = this.pdfViewer.serviceUrl + '/' + this.pdfViewer.serverActionSettings.renderTexts;\n this.textRequestHandler.responseType = 'json';\n if (!this.clientSideRendering) {\n this.textRequestHandler.send(jsonObject);\n }\n this.textrequestLists.push(pageIndex);\n proxy.textRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line max-len\n if ((proxy.pdfViewer.magnification && proxy.pdfViewer.magnification.isPinchZoomed) || !proxy.pageSize[parseInt(pageIndex.toString(), 10)]) {\n return;\n }\n // eslint-disable-next-line\n var data = result.data;\n var redirect = proxy.checkRedirection(data);\n if (!redirect) {\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.renderTexts);\n data = null;\n }\n }\n }\n if (data) {\n proxy.textRequestOnSuccess(data, proxy, pageIndex, annotationObject);\n }\n }\n };\n // eslint-disable-next-line\n this.textRequestHandler.onFailure = function (result) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderTexts);\n };\n // eslint-disable-next-line\n this.textRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderTexts);\n };\n if (this.clientSideRendering) {\n this.pdfViewer.pdfRendererModule.getDocumentText(jsonObject).then(function (data) {\n proxy.textRequestOnSuccess(data, proxy, pageIndex, annotationObject);\n });\n }\n };\n PdfViewerBase.prototype.textRequestOnSuccess = function (data, proxy, pageIndex, annotationObject) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n }\n if (data.documentTextCollection && data.uniqueId === proxy.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.renderTexts, data);\n var pageNumber = (data.pageNumber !== undefined) ? data.pageNumber : pageIndex;\n proxy.storeWinData(data, pageNumber);\n if (!isNullOrUndefined(annotationObject)) {\n var markedBounds = annotationObject.bounds[0];\n var pageCharText = data.documentTextCollection[0][parseInt(pageIndex.toString(), 10)].PageText.split('');\n var characterBounds = data.characterBounds;\n var textMarkupContent = proxy.textMarkUpContent(markedBounds, pageCharText, characterBounds);\n annotationObject.textMarkupContent = textMarkupContent;\n this.pdfViewer.annotationModule.storeAnnotations(pageIndex, annotationObject, '_annotations_textMarkup');\n }\n else {\n proxy.renderPage(data, pageIndex);\n }\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.textMarkUpContent = function (markedBounds, pageCharText, characterBounds) {\n var textMarkupContent = '';\n for (var j = 0; j < characterBounds.length; j++) {\n var buffer = 0.5;\n if (characterBounds[parseInt(j.toString(), 10)].Y >= markedBounds.Y - buffer && characterBounds[parseInt(j.toString(), 10)].X >= markedBounds.X - buffer && characterBounds[parseInt(j.toString(), 10)].Y <= markedBounds.Y + markedBounds.Height + buffer && characterBounds[parseInt(j.toString(), 10)].X <= markedBounds.X + markedBounds.Width + buffer) {\n textMarkupContent += pageCharText[parseInt(j.toString(), 10)];\n }\n }\n return textMarkupContent.replace((/(\\r\\n)/gm), '');\n };\n /**\n * @private\n * @returns {boolean}\n */\n PdfViewerBase.prototype.digitalSignaturePresent = function (pageIndex) {\n var digitalSignaturePresent = false;\n if (this.digitalSignaturePages && (this.digitalSignaturePages.length !== 0) && (this.digitalSignaturePages.indexOf(pageIndex) != -1)) {\n digitalSignaturePresent = true;\n }\n return digitalSignaturePresent;\n };\n PdfViewerBase.prototype.pageRequestSent = function (pageIndex, tileX, tileY) {\n var zoomFactor = this.retrieveCurrentZoomFactor();\n var currentString = this.documentId + '_' + pageIndex + '_' + tileX + '_' + tileY + '_' + zoomFactor;\n if (this.requestLists && this.requestLists.indexOf(currentString) > -1) {\n return true;\n }\n return false;\n };\n /**\n * @private\n * @param {string} status - The status message.\n * @param {string} errorMessage - The error message.\n * @param {string} action - The action.\n * @returns {void}\n */\n PdfViewerBase.prototype.onControlError = function (status, errorMessage, action) {\n this.openNotificationPopup();\n this.pdfViewer.fireAjaxRequestFailed(status, errorMessage, action);\n };\n /**\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.getStoredData = function (pageIndex, isTextSearch) {\n var zoomFactor = this.retrieveCurrentZoomFactor();\n if (this.pdfViewer.restrictZoomRequest && !this.pdfViewer.tileRenderingSettings.enableTileRendering) {\n zoomFactor = 1;\n }\n // eslint-disable-next-line\n var storedData = this.getWindowSessionStorage(pageIndex, zoomFactor) ? this.getWindowSessionStorage(pageIndex, zoomFactor) : this.getPinchZoomPage(pageIndex);\n if (!storedData && isTextSearch) {\n // eslint-disable-next-line\n var storedTileData = this.clientSideRendering ? this.getStoredTileImageDetails(pageIndex, 0, 0, zoomFactor) : this.getWindowSessionStorageTile(pageIndex, 0, 0, zoomFactor);\n if (storedTileData) {\n storedData = storedTileData;\n }\n }\n // eslint-disable-next-line\n var data = null;\n if (storedData) {\n // eslint-disable-next-line\n data = storedData;\n if (!this.isPinchZoomStorage) {\n data = JSON.parse(storedData);\n }\n this.isPinchZoomStorage = false;\n }\n return data;\n };\n /**\n * @private\n * @param {any} data - The data.\n * @param {number} pageIndex - The pageIndex.\n * @param {number} tileX - The tileX.\n * @param {number} tileY - The tileY.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.storeWinData = function (data, pageIndex, tileX, tileY) {\n var storeObject;\n if (!data['image']) {\n var pageItems = data.documentTextCollection[0][parseInt(pageIndex.toString(), 10)];\n storeObject = {\n // eslint-disable-next-line\n textContent: data['textContent'], textBounds: data['textBounds'], pageText: pageItems.PageText, rotation: data['rotation'], uniqueId: data['uniqueId']\n };\n if (this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n // eslint-disable-next-line\n this.pageSize[pageIndex].rotation = parseFloat(data['rotation']);\n }\n // eslint-disable-next-line\n this.textLayer.characterBound[pageIndex] = data['characterBounds'];\n }\n else {\n // eslint-disable-next-line\n var blobObj = this.createBlobUrl(data['image'].split('base64,')[1], 'image/png');\n // eslint-disable-next-line\n var Url = URL || webkitURL;\n var blobUrl = Url.createObjectURL(blobObj);\n // eslint-disable-next-line\n if ((isNaN(tileX) && isNaN(tileY)) || (tileX === 0 && tileY === 0)) {\n storeObject = {\n // eslint-disable-next-line\n image: blobUrl, transformationMatrix: data['transformationMatrix'], hyperlinks: data['hyperlinks'], hyperlinkBounds: data['hyperlinkBounds'], linkAnnotation: data['linkAnnotation'], linkPage: data['linkPage'], annotationLocation: data['annotationLocation'],\n // eslint-disable-next-line\n textContent: data['textContent'], width: data['width'], textBounds: data['textBounds'], pageText: data['pageText'], rotation: data['rotation'], scaleFactor: data['scaleFactor'], uniqueId: data['uniqueId'], zoomFactor: data['zoomFactor'], tileX: tileX, tileY: tileY\n };\n if (this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n // eslint-disable-next-line\n this.pageSize[pageIndex].rotation = parseFloat(data['rotation']);\n }\n // eslint-disable-next-line\n this.textLayer.characterBound[pageIndex] = data['characterBounds'];\n }\n else {\n storeObject = {\n // eslint-disable-next-line\n image: blobUrl, transformationMatrix: data['transformationMatrix'], tileX: tileX, tileY: tileY, width: data['width'], zoomFactor: data['zoomFactor']\n };\n }\n }\n // eslint-disable-next-line\n var viewPortWidth = 816;\n var pageWidth = 0;\n if (this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n pageWidth = this.pageSize[parseInt(pageIndex.toString(), 10)].width;\n }\n this.manageSessionStorage(pageIndex, storeObject, tileX, tileY);\n };\n /**\n * @private\n * @param {XMLHttpRequest} request - The Xml request.\n * @returns {void}\n */\n PdfViewerBase.prototype.setCustomAjaxHeaders = function (request) {\n for (var i = 0; i < this.pdfViewer.ajaxRequestSettings.ajaxHeaders.length; i++) {\n // eslint-disable-next-line max-len\n request.setRequestHeader(this.pdfViewer.ajaxRequestSettings.ajaxHeaders[parseInt(i.toString(), 10)].headerName, this.pdfViewer.ajaxRequestSettings.ajaxHeaders[parseInt(i.toString(), 10)].headerValue);\n }\n };\n /**\n * @private\n * @param {number} pageIndex - Page index.\n * @returns {object}\n */\n PdfViewerBase.prototype.getPinchZoomPage = function (pageIndex) {\n // eslint-disable-next-line\n for (var key in this.pinchZoomStorage) {\n // eslint-disable-next-line\n if (this.pinchZoomStorage.hasOwnProperty(key)) {\n /* eslint-disable-next-line security/detect-object-injection */\n if (this.pinchZoomStorage[key].index === pageIndex) {\n this.isPinchZoomStorage = true;\n /* eslint-disable-next-line security/detect-object-injection */\n return this.pinchZoomStorage[key].pinchZoomStorage;\n }\n }\n }\n return null;\n };\n /**\n * @private\n * @param {number} pageIndex - current page index.\n * @param {number} zoomFactor - cuurent zoom factor\n * @returns {string}\n */\n PdfViewerBase.prototype.getWindowSessionStorage = function (pageIndex, zoomFactor) {\n return window.sessionStorage.getItem(this.documentId + '_' + pageIndex + '_' + zoomFactor);\n };\n /**\n * @private\n * @param {number} pageIndex - current page index.\n * @param {number} tileX - cuurent tile x\n * @param {number} tileY - cuurent tile y\n * @param {number} zoomFactor - cuurent zoom factor\n * @returns {string}\n */\n PdfViewerBase.prototype.getWindowSessionStorageTile = function (pageIndex, tileX, tileY, zoomFactor) {\n return window.sessionStorage.getItem(this.documentId + '_' + pageIndex + '_' + tileX + '_' + tileY + '_' + zoomFactor);\n };\n /**\n * @private\n *\n */\n PdfViewerBase.prototype.getStoredTileImageDetails = function (pageIndex, tileX, tileY, zoomFactor) {\n return this.pageImageDetails[this.documentId + '_' + pageIndex + '_' + tileX + '_' + tileY + '_' + zoomFactor + '_imageUrl'] || null;\n };\n /**\n * @private\n * @returns {number}\n */\n PdfViewerBase.prototype.retrieveCurrentZoomFactor = function () {\n var zoomFactor = this.getZoomFactor();\n if (this.pdfViewer.enableZoomOptimization) {\n if ((zoomFactor) <= 1) {\n zoomFactor = 1;\n }\n else if ((zoomFactor) > 1 && zoomFactor <= 2) {\n zoomFactor = 2;\n }\n else if ((zoomFactor) > 2 && zoomFactor <= 3) {\n zoomFactor = 3;\n }\n else if ((zoomFactor) > 3 && zoomFactor <= 4) {\n zoomFactor = 4;\n }\n return zoomFactor;\n }\n else {\n if (zoomFactor <= 0) {\n zoomFactor = 1;\n }\n return zoomFactor;\n }\n };\n /**\n * @private\n *\n */\n PdfViewerBase.prototype.storeTextDetails = function (pageNumber, textBounds, textContent, pageText, rotation, characterBounds) {\n var textObject = ({ textBounds: textBounds, textContent: textContent, rotation: rotation, pageText: pageText, characterBounds: characterBounds });\n if (this.pageSize[parseInt(pageNumber.toString(), 10)]) {\n this.pageSize[parseInt(pageNumber.toString(), 10)].rotation = rotation;\n }\n this.textLayer.characterBound[parseInt(pageNumber.toString(), 10)] = characterBounds;\n this.pageTextDetails[this.documentId + '_' + pageNumber + '_textDetails'] = JSON.stringify(textObject);\n };\n /**\n * @private\n *\n */\n PdfViewerBase.prototype.storeImageData = function (pageNumber, storeObject, tileX, tileY) {\n var zoomFactor = !isNullOrUndefined(storeObject.zoomFactor) ? storeObject.zoomFactor : this.retrieveCurrentZoomFactor();\n if (isNaN(tileX) && isNaN(tileY)) {\n this.pageImageDetails[this.documentId + '_' + pageNumber + '_' + zoomFactor + '_imageUrl'] = JSON.stringify(storeObject);\n }\n else {\n this.pageImageDetails[this.documentId + '_' + pageNumber + '_' + tileX + '_' + tileY + '_' + zoomFactor + '_imageUrl'] = JSON.stringify(storeObject);\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.manageSessionStorage = function (pageIndex, storeObject, tileX, tileY) {\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n var maxSessionSize = 5000;\n if (sessionSize >= maxSessionSize) {\n if (!this.isStorageExceed) {\n // eslint-disable-next-line\n var annotationList = [];\n var formFieldsList = [];\n for (var i = 0; i < window.sessionStorage.length; i++) {\n if (window.sessionStorage.key(i) && window.sessionStorage.key(i).split('_')[3]) {\n if (window.sessionStorage.key(i).split('_')[3] === 'annotations') {\n // eslint-disable-next-line max-len\n this.annotationStorage[window.sessionStorage.key(i)] = window.sessionStorage.getItem(window.sessionStorage.key(i));\n annotationList.push(window.sessionStorage.key(i));\n }\n else if (window.sessionStorage.key(i).split('_')[3] === 'formfields') {\n // eslint-disable-next-line max-len\n this.formFieldStorage[window.sessionStorage.key(i)] = window.sessionStorage.getItem(window.sessionStorage.key(i));\n formFieldsList.push(window.sessionStorage.key(i));\n }\n else if (window.sessionStorage.key(i).split('_')[3] === 'formDesigner') {\n this.formFieldStorage[window.sessionStorage.key(i)] = window.sessionStorage.getItem(window.sessionStorage.key(i));\n formFieldsList.push(window.sessionStorage.key(i));\n }\n }\n }\n if (annotationList) {\n for (var i = 0; i < annotationList.length; i++) {\n window.sessionStorage.removeItem(annotationList[parseInt(i.toString(), 10)]);\n }\n }\n if (formFieldsList) {\n for (var i = 0; i < formFieldsList.length; i++) {\n window.sessionStorage.removeItem(formFieldsList[parseInt(i.toString(), 10)]);\n }\n }\n }\n this.isStorageExceed = true;\n sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n if (sessionSize >= 5000) {\n var storageLength = window.sessionStorage.length;\n if (storageLength > 200) {\n storageLength = 200;\n }\n for (var i = 0; i < storageLength; i++) {\n if (window.sessionStorage.key(i) && window.sessionStorage.key(i).split('_')[3]) {\n if (window.sessionStorage.key(i).split('_')[3] !== 'annotations') {\n window.sessionStorage.removeItem(window.sessionStorage.key(i));\n }\n }\n }\n }\n }\n var zoomFactor = this.retrieveCurrentZoomFactor();\n if (isNaN(tileX) && isNaN(tileY)) {\n // eslint-disable-next-line max-len\n window.sessionStorage.setItem(this.documentId + '_' + pageIndex + '_' + zoomFactor, JSON.stringify(storeObject));\n this.sessionStorage.push(this.documentId + '_' + pageIndex + '_' + zoomFactor);\n }\n else {\n this.sessionStorage.push(this.documentId + '_' + pageIndex + '_' + tileX + '_' + tileY + '_' + zoomFactor);\n // eslint-disable-next-line max-len\n window.sessionStorage.setItem(this.documentId + '_' + pageIndex + '_' + tileX + '_' + tileY + '_' + zoomFactor, JSON.stringify(storeObject));\n }\n };\n /**\n * @private\n *\n */\n PdfViewerBase.prototype.createBlobUrl = function (base64String, contentType) {\n var sliceSize = 512;\n var byteCharacters = atob(base64String);\n // eslint-disable-next-line\n var byteArrays = [];\n for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n var slice = byteCharacters.slice(offset, offset + sliceSize);\n // eslint-disable-next-line\n var byteNumbers = new Array(slice.length);\n for (var i = 0; i < slice.length; i++) {\n /* eslint-disable-next-line security/detect-object-injection */\n byteNumbers[i] = slice.charCodeAt(i);\n }\n // eslint-disable-next-line\n var byteArray = new Uint8Array(byteNumbers);\n byteArrays.push(byteArray);\n }\n // eslint-disable-next-line\n var blob = new Blob(byteArrays, { type: contentType });\n return blob;\n };\n PdfViewerBase.prototype.getRandomNumber = function () {\n // eslint-disable-next-line\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n // eslint-disable-next-line\n var random = Math.random() * 16 | 0, v = c == 'x' ? random : (random & 0x3 | 0x8);\n return random.toString(16);\n });\n };\n PdfViewerBase.prototype.createGUID = function () {\n // eslint-disable-next-line max-len\n return 'Sync_PdfViewer_' + this.getRandomNumber();\n };\n /**\n * @private\n * @param {MouseEvent} event - The mouse event.\n * @param {boolean} isNeedToSet - Is need to test.\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.isClickedOnScrollBar = function (event, isNeedToSet) {\n var isScrollBar = false;\n if (isNeedToSet) {\n this.setScrollDownValue(event.type, false);\n }\n // eslint-disable-next-line max-len\n if ((this.viewerContainer.clientWidth + this.viewerContainer.offsetLeft) < event.clientX && event.clientX < (this.viewerContainer.offsetWidth + this.viewerContainer.offsetLeft)) {\n isScrollBar = true;\n if (isNeedToSet) {\n this.setScrollDownValue(event.type, true);\n }\n }\n // eslint-disable-next-line max-len\n if ((this.viewerContainer.clientHeight + this.viewerContainer.offsetTop) < event.clientY && event.clientY < (this.viewerContainer.offsetHeight + this.viewerContainer.offsetTop)) {\n isScrollBar = true;\n if (isNeedToSet) {\n this.setScrollDownValue(event.type, true);\n }\n }\n return isScrollBar;\n };\n PdfViewerBase.prototype.setScrollDownValue = function (eventType, boolValue) {\n if (eventType === 'mousedown') {\n this.isScrollbarMouseDown = boolValue;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.disableTextSelectionMode = function () {\n this.isTextSelectionDisabled = true;\n this.viewerContainer.classList.remove('e-enable-text-selection');\n if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.clearTextSelection();\n }\n this.viewerContainer.classList.add('e-disable-text-selection');\n this.viewerContainer.addEventListener('selectstart', function () {\n return false;\n });\n };\n /**\n * @private\n * @param {string} idString - The Id string.\n * @returns {HTMLElement} - The html element.\n */\n PdfViewerBase.prototype.getElement = function (idString) {\n return document.getElementById(this.pdfViewer.element.id + idString);\n };\n /**\n * @private\n * @param {number} pageIndex - The pageIndex\n * @returns {number} - Returns number\n */\n PdfViewerBase.prototype.getPageWidth = function (pageIndex) {\n if (this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n return this.pageSize[parseInt(pageIndex.toString(), 10)].width * this.getZoomFactor();\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @param {number} pageIndex - The pageIndex\n * @returns {number} - Returns number\n */\n PdfViewerBase.prototype.getPageHeight = function (pageIndex) {\n if (this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n return this.pageSize[parseInt(pageIndex.toString(), 10)].height * this.getZoomFactor();\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @param {number} pageIndex - The pageIndex.\n * @returns {number} - Returns number\n */\n PdfViewerBase.prototype.getPageTop = function (pageIndex) {\n if (this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n return this.pageSize[parseInt(pageIndex.toString(), 10)].top * this.getZoomFactor();\n }\n else {\n return 0;\n }\n };\n PdfViewerBase.prototype.isAnnotationToolbarHidden = function () {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule) {\n return this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden;\n }\n else {\n return true;\n }\n };\n PdfViewerBase.prototype.isFormDesignerToolbarHidded = function () {\n var formDesignerToolbar = this.pdfViewer.toolbarModule.formDesignerToolbarModule;\n if (formDesignerToolbar) {\n return formDesignerToolbar.isToolbarHidden;\n }\n else {\n return true;\n }\n };\n /**\n * @private\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.getTextMarkupAnnotationMode = function () {\n if (this.isTextMarkupAnnotationModule()) {\n return this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode;\n }\n else {\n return false;\n }\n };\n PdfViewerBase.prototype.isNewFreeTextAnnotation = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule) {\n if (!this.pdfViewer.annotationModule.freeTextAnnotationModule.isNewFreeTextAnnot) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return true;\n }\n };\n PdfViewerBase.prototype.getCurrentTextMarkupAnnotation = function () {\n if (this.isTextMarkupAnnotationModule()) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {number} - Returns page number.\n */\n PdfViewerBase.prototype.getSelectTextMarkupCurrentPage = function () {\n if (this.isTextMarkupAnnotationModule()) {\n return this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage;\n }\n else {\n return null;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.getAnnotationToolStatus = function () {\n if (this.pdfViewer.toolbarModule) {\n return this.pdfViewer.toolbarModule.annotationToolbarModule.isAnnotationButtonsEnabled();\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.getPopupNoteVisibleStatus = function () {\n if (this.pdfViewer.annotationModule) {\n return this.pdfViewer.annotationModule.isPopupNoteVisible;\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {TextMarkupAnnotation} - TextMarkupAnnotation.\n */\n PdfViewerBase.prototype.isTextMarkupAnnotationModule = function () {\n if (this.pdfViewer.annotationModule) {\n return this.pdfViewer.annotationModule.textMarkupAnnotationModule;\n }\n else {\n return null;\n }\n };\n /**\n * @private\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.isShapeAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.shapeAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isFormDesignerModule = function () {\n if (this.pdfViewer.formDesignerModule) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isCalibrateAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.measureAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isStampAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.stampAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isInkAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.inkAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isCommentAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.stickyNotesAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isShapeBasedAnnotationsEnabled = function () {\n // eslint-disable-next-line max-len\n if (this.isShapeAnnotationModule() || this.isCalibrateAnnotationModule() || this.isStampAnnotationModule() || this.isCommentAnnotationModule() || this.isFormDesignerModule()) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @param {MouseEvent | PointerEvent | TouchEvent} e - Returns event.\n * @returns {PointModel} - Returns points.\n */\n PdfViewerBase.prototype.getMousePosition = function (e) {\n var touchArg;\n var offsetX;\n var offsetY;\n var currentTarget = e.target.parentElement;\n if (e.type.indexOf('touch') !== -1) {\n touchArg = e;\n if (this.pdfViewer.annotation || this.isDeviceiOS) {\n var pageNumber = this.pdfViewer.currentPageNumber - 1;\n if (this.pdfViewer.annotation && !isNaN(this.pdfViewer.annotation.getEventPageNumber(e))) {\n pageNumber = this.pdfViewer.annotation.getEventPageNumber(e);\n }\n if (isNaN(pageNumber) && this.pdfViewer.formDesignerModule) {\n pageNumber = this.pdfViewer.formDesignerModule.getEventPageNumber(e);\n }\n var pageDiv = this.getElement('_pageDiv_' + pageNumber);\n if (pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n offsetX = touchArg.changedTouches[0].clientX - pageCurrentRect.left;\n offsetY = touchArg.changedTouches[0].clientY - pageCurrentRect.top;\n }\n }\n }\n else {\n if (e.target.classList.contains('e-pv-hyperlink')) {\n offsetX = e.offsetX + e.target.offsetLeft;\n offsetY = e.offsetY + e.target.offsetTop;\n }\n else if (e.target.classList.contains('e-pv-text') && currentTarget) {\n var targetParentRect = currentTarget.getBoundingClientRect();\n offsetX = e.clientX - targetParentRect.left;\n offsetY = e.clientY - targetParentRect.top;\n // eslint-disable-next-line\n }\n else if (e.target && (e && e.path) && currentTarget && (currentTarget.classList.contains('foreign-object') || currentTarget.parentElement.classList.contains('foreign-object'))) {\n // eslint-disable-next-line\n var targetParentRect = void 0;\n if (e.path[4].className === 'e-pv-page-div') {\n targetParentRect = e.path[4].getBoundingClientRect();\n }\n else {\n for (var i = 0; i < e.path.length; i++) {\n if (e.path[parseInt(i.toString(), 10)].className === 'e-pv-page-div') {\n targetParentRect = e.path[parseInt(i.toString(), 10)].getBoundingClientRect();\n break;\n }\n }\n }\n offsetX = e.clientX - targetParentRect.left;\n offsetY = e.clientY - targetParentRect.top;\n // eslint-disable-next-line\n }\n else if (e.target && currentTarget && currentTarget.classList.contains('foreign-object') || (e.target.classList.contains('e-pv-checkbox-div'))) {\n // eslint-disable-next-line\n var targetParentRect = void 0;\n if ((e.target.classList.contains('e-pv-checkbox-div'))) {\n targetParentRect = e.target.offsetParent.offsetParent.offsetParent.offsetParent.getBoundingClientRect();\n }\n else {\n targetParentRect = e.target.offsetParent.offsetParent.offsetParent.getBoundingClientRect();\n }\n offsetX = e.clientX - targetParentRect.left;\n offsetY = e.clientY - targetParentRect.top;\n }\n else {\n offsetX = e.offsetX;\n offsetY = e.offsetY;\n }\n }\n return { x: offsetX, y: offsetY };\n };\n PdfViewerBase.prototype.getMouseEventArgs = function (position, args, evt, source) {\n args.position = position;\n var obj;\n var objects;\n if (!source) {\n if (this.action === 'Drag' || this.action === 'ConnectorSourceEnd' || this.action === 'SegmentEnd' ||\n this.action === 'OrthoThumb' || this.action === 'BezierSourceThumb' || this.action === 'BezierTargetThumb' ||\n this.action === 'ConnectorTargetEnd' || this.action.indexOf('Rotate') !== -1 || this.action.indexOf('Resize') !== -1) {\n obj = this.pdfViewer.selectedItems;\n if (this.action === 'Drag' && obj && this.pdfViewer.selectedItems.annotations.length > 0) {\n obj = findActiveElement(evt, this, this.pdfViewer);\n }\n else if (this.action === 'Drag' && obj && this.pdfViewer.selectedItems.formFields.length > 0) {\n obj = findActiveElement(evt, this, this.pdfViewer);\n }\n }\n else {\n obj = findActiveElement(evt, this, this.pdfViewer);\n }\n }\n else {\n // objects = this.diagram.findObjectsUnderMouse(this.currentPosition, source);\n obj = findActiveElement(evt, this, this.pdfViewer);\n }\n var wrapper;\n if (obj) {\n wrapper = obj.wrapper;\n }\n if (!source) {\n args.source = obj;\n args.sourceWrapper = wrapper;\n }\n else {\n args.target = obj;\n args.targetWrapper = wrapper;\n }\n args.actualObject = this.eventArgs.actualObject;\n //args.startTouches = this.touchStartList;\n //args.moveTouches = this.touchMoveList;\n return args;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - The object.\n * @param {PointModel} position - The position.\n * @returns {Actions | string} - Returns the string.\n */\n PdfViewerBase.prototype.findToolToActivate = function (obj, position) {\n position = { x: position.x / this.getZoomFactor(), y: position.y / this.getZoomFactor() };\n var element = this.pdfViewer.selectedItems.wrapper;\n if (element && obj) {\n var selectorBnds = element.bounds; //let handle: SelectorModel = diagram.selectedItems;\n var paddedBounds = new Rect(selectorBnds.x, selectorBnds.y, selectorBnds.width, selectorBnds.height);\n if (obj.shapeAnnotationType === 'Line' || obj.shapeAnnotationType === 'LineWidthArrowHead' ||\n obj.shapeAnnotationType === 'Distance' || obj.shapeAnnotationType === 'Polygon') {\n var conn = this.pdfViewer.selectedItems.annotations[0];\n if (conn) {\n for (var i = 0; i < conn.vertexPoints.length; i++) {\n if (contains(position, conn.vertexPoints[parseInt(i.toString(), 10)], 10) && conn.leaderHeight !== 0) {\n return 'ConnectorSegmentPoint_' + i;\n }\n }\n }\n }\n if (obj.shapeAnnotationType === 'Distance') {\n var leaderCount = 0;\n var newPoint1 = void 0;\n if (obj && obj.wrapper) {\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var elementAngle = Point.findAngle(obj.sourcePoint, obj.targetPoint);\n // eslint-disable-next-line\n var segment = obj.wrapper.children[i];\n if (segment.id.indexOf('leader') > -1) {\n var centerPoint = obj.wrapper.children[0].bounds.center;\n if (leaderCount === 0) {\n newPoint1 = { x: obj.sourcePoint.x, y: obj.sourcePoint.y - obj.leaderHeight };\n centerPoint = obj.sourcePoint;\n }\n else {\n newPoint1 = { x: obj.targetPoint.x, y: obj.targetPoint.y - obj.leaderHeight };\n centerPoint = obj.targetPoint;\n }\n var matrix_1 = identityMatrix();\n rotateMatrix(matrix_1, elementAngle, centerPoint.x, centerPoint.y);\n var rotatedPoint = transformPointByMatrix(matrix_1, { x: newPoint1.x, y: newPoint1.y });\n if (contains(position, rotatedPoint, 10)) {\n return 'Leader' + leaderCount;\n }\n leaderCount++;\n }\n }\n }\n }\n var ten = this.pdfViewer.touchPadding;\n if (this.getZoomFactor() <= 1.5) {\n ten = ten / this.getZoomFactor();\n }\n var matrix = identityMatrix();\n rotateMatrix(matrix, obj.rotateAngle + element.parentTransform, element.offsetX, element.offsetY);\n //check for resizing tool\n var x = element.offsetX - element.pivot.x * element.actualSize.width;\n var y = element.offsetY - element.pivot.y * element.actualSize.height;\n var rotateThumb = {\n x: x + ((element.pivot.x === 0.5 ? element.pivot.x * 2 : element.pivot.x) * element.actualSize.width / 2),\n y: y - 30 / this.getZoomFactor()\n };\n rotateThumb = transformPointByMatrix(matrix, rotateThumb);\n if (obj.shapeAnnotationType === 'Stamp' && contains(position, rotateThumb, ten)) {\n return 'Rotate';\n }\n paddedBounds = this.inflate(ten, paddedBounds);\n if (paddedBounds.containsPoint(position, 0)) {\n var action = this.checkResizeHandles(this.pdfViewer, element, position, matrix, x, y);\n if (action) {\n return action;\n }\n }\n if (this.pdfViewer.selectedItems.annotations.indexOf(obj) > -1) {\n return 'Drag';\n }\n else if (this.pdfViewer.selectedItems.formFields.indexOf(obj) > -1 && this.pdfViewer.designerMode) {\n return 'Drag';\n }\n return 'Select';\n }\n return this.pdfViewer.tool || 'Select';\n };\n PdfViewerBase.prototype.inflate = function (padding, bound) {\n bound.x -= padding;\n bound.y -= padding;\n bound.width += padding * 2;\n bound.height += padding * 2;\n return bound;\n };\n PdfViewerBase.prototype.checkResizeHandles = function (diagram, element, position, matrix, x, y) {\n var action;\n if (!action) {\n action = this.checkForResizeHandles(diagram, element, position, matrix, x, y);\n }\n if (action) {\n return action;\n }\n return null;\n };\n PdfViewerBase.prototype.checkForResizeHandles = function (diagram, element, position, matrix, x, y) {\n var forty = 40 / 1;\n var ten = this.pdfViewer.touchPadding / 1;\n // Resizer cursor adjustment factor for higher zoom values\n var resizerBuffer = 1.9;\n if (this.getZoomFactor() >= 2.0 && !Browser.isDevice) {\n ten = ten / (this.getZoomFactor() / resizerBuffer);\n }\n if (element.actualSize.width < 40 || element.actualSize.height < 40 && Browser.isDevice) {\n ten = ten / 2 * this.getZoomFactor() / 1;\n }\n var selectedItems = diagram.selectedItems;\n var isStamp = false;\n var isSticky = false;\n var isNodeShape = false;\n var isInk = false;\n var resizerLocation = this.pdfViewer.annotationSelectorSettings.resizerLocation;\n if (resizerLocation < 1 || resizerLocation > 3) {\n resizerLocation = 3;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Stamp'\n || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Image' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature'\n || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage')) {\n isStamp = true;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'StickyNotes') {\n isSticky = true;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ink') {\n isInk = true;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ellipse' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Radius' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Rectangle')) {\n isNodeShape = true;\n }\n if (!isSticky) {\n // eslint-disable-next-line max-len\n if ((isInk || isStamp || (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage')) || ((element.actualSize.width >= forty && element.actualSize.height >= forty) && isNodeShape && (resizerLocation === 1 || resizerLocation === 3)))) {\n if (contains(position, transformPointByMatrix(matrix, { x: x + element.actualSize.width, y: y + element.actualSize.height }), ten)) {\n return 'ResizeSouthEast';\n }\n if (contains(position, transformPointByMatrix(matrix, { x: x, y: y + element.actualSize.height }), ten)) {\n return 'ResizeSouthWest';\n }\n if (contains(position, transformPointByMatrix(matrix, { x: x + element.actualSize.width, y: y }), ten)) {\n return 'ResizeNorthEast';\n }\n if (contains(position, transformPointByMatrix(matrix, { x: x, y: y }), ten)) {\n return 'ResizeNorthWest';\n }\n }\n // eslint-disable-next-line max-len\n if (isInk || !isNodeShape || (isNodeShape && (resizerLocation === 2 || resizerLocation === 3 || (!(element.actualSize.width >= forty && element.actualSize.height >= forty) && resizerLocation === 1)))) {\n if (contains(\n // eslint-disable-next-line max-len\n position, transformPointByMatrix(matrix, { x: x + element.actualSize.width, y: y + element.actualSize.height / 2 }), ten) && !isStamp) {\n return 'ResizeEast';\n }\n // eslint-disable-next-line max-len\n if (contains(position, transformPointByMatrix(matrix, { x: x, y: y + element.actualSize.height / 2 }), ten) && !isStamp) {\n return 'ResizeWest';\n }\n if (contains(\n // eslint-disable-next-line max-len\n position, transformPointByMatrix(matrix, { x: x + element.actualSize.width / 2, y: y + element.actualSize.height }), ten) && !isStamp) {\n return 'ResizeSouth';\n }\n // eslint-disable-next-line max-len\n if (contains(position, transformPointByMatrix(matrix, { x: x + element.actualSize.width / 2, y: y }), ten) && !isStamp) {\n return 'ResizeNorth';\n }\n }\n }\n return null;\n };\n /**\n * @private\n * @param {string} fieldID - The fieldID\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.checkSignatureFormField = function (fieldID) {\n var isFormFieldSign = false;\n if (this.pdfViewer.formDesignerModule) {\n fieldID = fieldID.split('_')[0];\n }\n // eslint-disable-next-line\n var formField = this.pdfViewer.nameTable[fieldID];\n if (formField) {\n if (formField.formFieldAnnotationType === 'SignatureField' || formField.formFieldAnnotationType === 'InitialField' || formField.annotName === 'SignatureField') {\n isFormFieldSign = true;\n }\n }\n return isFormFieldSign;\n };\n /**\n * @private\n * @param {MouseEvent | TouchEvent} evt - The event.\n * @returns {void}\n */\n PdfViewerBase.prototype.diagramMouseMove = function (evt) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n var pageDiv = this.getElement('_pageDiv_' + (this.currentPageNumber - 1));\n this.pdfViewer.enableServerDataBinding(false);\n this.currentPosition = this.getMousePosition(evt);\n this.pdfViewer.firePageMouseover(this.currentPosition.x, this.currentPosition.y);\n if (this.pdfViewer.annotation) {\n this.activeElements.activePageID = this.pdfViewer.annotation.getEventPageNumber(evt);\n }\n else if (this.pdfViewer.formDesignerModule) {\n this.activeElements.activePageID = this.pdfViewer.formDesignerModule.getEventPageNumber(evt);\n }\n var obj = findActiveElement(evt, this, this.pdfViewer);\n if ((this.tool instanceof NodeDrawingTool) || (this.tool instanceof LineTool)) {\n obj = this.pdfViewer.drawingObject;\n }\n var target;\n var isFormFieldSign = this.pdfViewer.selectedItems.annotations.length > 0 ? this.checkSignatureFormField(this.pdfViewer.selectedItems.annotations[0].id) : false;\n if ((Point.equals(this.currentPosition, this.prevPosition) === false || this.inAction)) {\n if (this.isMouseDown === false) {\n this.eventArgs = {};\n var sourceDrawingElement = null;\n if (obj) {\n this.tool = this.getTool(this.action);\n if (obj.wrapper) {\n sourceDrawingElement = obj.wrapper.children[0];\n if (sourceDrawingElement) {\n target = obj;\n }\n }\n }\n var eventTarget = evt.target;\n this.action = this.findToolToActivate(obj, this.currentPosition);\n // eslint-disable-next-line\n if (obj && obj.annotationSettings && obj.annotationSettings.isLock) {\n if (this.action === 'Select') {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Select', obj)) {\n this.action = '';\n }\n }\n if (this.action === 'Drag') {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Move', obj)) {\n this.action = 'Select';\n }\n }\n // eslint-disable-next-line max-len\n if (this.action === 'ResizeSouthEast' || this.action === 'ResizeNorthEast' || this.action === 'ResizeNorthWest' || this.action === 'ResizeSouthWest' ||\n // eslint-disable-next-line max-len\n this.action === 'ResizeNorth' || this.action === 'ResizeWest' || this.action === 'ResizeEast' || this.action === 'ResizeSouth' || this.action.includes('ConnectorSegmentPoint') || this.action.includes('Leader')) {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Resize', obj)) {\n this.action = 'Select';\n }\n }\n }\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.designerMode && ((!isNullOrUndefined(target) && (!isNullOrUndefined(target.formFieldAnnotationType))) || isFormFieldSign)) {\n if (this.action === 'ResizeSouthEast' || this.action === 'ResizeNorthEast' || this.action === 'ResizeNorthWest' || this.action === 'ResizeSouthWest' ||\n // eslint-disable-next-line max-len\n this.action === 'ResizeNorth' || this.action === 'Drag' || this.action === 'ResizeWest' || this.action === 'ResizeEast' || this.action === 'ResizeSouth' || this.action.includes('ConnectorSegmentPoint') || this.action.includes('Leader')) {\n this.action = '';\n }\n }\n this.tool = this.getTool(this.action);\n this.setCursor(eventTarget, evt);\n if (this.pdfViewer.linkAnnotationModule && this.pdfViewer.selectedItems.annotations.length != 0 && this.pdfViewer.selectedItems.formFields.length != 0) {\n this.pdfViewer.linkAnnotationModule.disableHyperlinkNavigationUnderObjects(eventTarget, evt, this);\n }\n }\n else {\n if (!this.tool && this.action && this.action === 'Rotate') {\n this.tool = this.getTool(this.action);\n if (evt.target) {\n this.setCursor(evt.target, evt);\n }\n }\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.designerMode && ((!isNullOrUndefined(target) && (!isNullOrUndefined(target.formFieldAnnotationType))) || isFormFieldSign)) {\n if (this.action === 'ResizeSouthEast' || this.action === 'ResizeNorthEast' || this.action === 'ResizeNorthWest' || this.action === 'ResizeSouthWest' ||\n // eslint-disable-next-line max-len\n this.action === 'ResizeNorth' || this.action === 'Drag' || this.action === 'ResizeWest' || this.action === 'ResizeEast' || this.action === 'ResizeSouth' || this.action.includes('ConnectorSegmentPoint') || this.action.includes('Leader')) {\n this.action = '';\n this.tool = null;\n }\n }\n if (this.eventArgs && this.eventArgs.source) {\n var eventTarget = evt.target;\n this.updateDefaultCursor(this.eventArgs.source, eventTarget, evt);\n }\n else {\n this.setCursor(evt.target, evt);\n }\n this.diagramMouseActionHelper(evt);\n if (this.tool) {\n var currentObject = obj;\n if (currentObject && currentObject.shapeAnnotationType === 'FreeText') {\n if (this.pdfViewer.freeTextSettings.allowEditTextOnly && this.action !== \"Ink\" &&\n (this.eventArgs.source && this.eventArgs.source.shapeAnnotationType === \"FreeText\")) {\n var eventTarget = event.target;\n eventTarget.style.cursor = 'default';\n this.tool = null;\n }\n }\n if (this.tool != null) {\n var info = { ctrlKey: evt.ctrlKey, shiftKey: evt.shiftKey };\n this.eventArgs.info = info;\n this.tool.mouseMove(this.eventArgs);\n }\n }\n }\n if (this.pdfViewer.drawingObject && this.pdfViewer.drawingObject.formFieldAnnotationType && this.action !== 'Drag') {\n if (!(this.tool instanceof ResizeTool)) {\n this.tool = this.getTool(this.action);\n if (this.tool instanceof NodeDrawingTool) {\n var obj_1 = this.pdfViewer.drawingObject;\n // eslint-disable-next-line\n var bounds = this.pdfViewer.formDesignerModule.updateFormFieldInitialSize(obj_1, obj_1.formFieldAnnotationType);\n var pageWidth = this.pageContainer.firstElementChild.clientWidth - bounds.width;\n var pageHeight = this.pageContainer.firstElementChild.clientHeight - bounds.height;\n if (this.pdfViewer.formDesignerModule && obj_1.formFieldAnnotationType\n && this.currentPosition.x < pageWidth && this.currentPosition.y < pageHeight) {\n // eslint-disable-next-line\n var formFieldElement = document.getElementById('FormField_helper_html_element');\n if (!formFieldElement) {\n // eslint-disable-next-line max-len\n this.pdfViewer.formDesignerModule.drawHelper(obj_1.formFieldAnnotationType, obj_1, evt);\n }\n else if (formFieldElement) {\n var previousActivePage = formFieldElement.parentElement.id.split(\"_text_\")[1] || formFieldElement.parentElement.id.split(\"_textLayer_\")[1] || formFieldElement.parentElement.id.split(\"_annotationCanvas_\")[1] || formFieldElement.parentElement.id.split(\"_pageDiv_\")[1];\n if (parseInt(previousActivePage) !== this.activeElements.activePageID) {\n formFieldElement.remove(\"FormField_helper_html_element\");\n }\n else {\n // eslint-disable-next-line\n var point = this.getMousePosition(event);\n if (obj_1.formFieldAnnotationType === 'Checkbox' && formFieldElement.firstElementChild.firstElementChild.lastElementChild) {\n formFieldElement.firstElementChild.firstElementChild.lastElementChild.style.visibility = 'visible';\n }\n else if (obj_1.formFieldAnnotationType === 'SignatureField' || obj_1.formFieldAnnotationType === 'InitialField') {\n formFieldElement.firstElementChild.firstElementChild.style.visibility = 'visible';\n formFieldElement.firstElementChild.lastElementChild.style.visibility = 'visible';\n }\n else {\n formFieldElement.firstElementChild.firstElementChild.style.visibility = 'visible';\n }\n formFieldElement.setAttribute('style', 'height:' + bounds.height + 'px; width:' + bounds.width + 'px;left:' + point.x + 'px; top:' + point.y + 'px;' +\n 'position:absolute;opacity: 0.5;');\n }\n }\n }\n else if (this.currentPosition.x > pageWidth || this.currentPosition.y > pageHeight) {\n // eslint-disable-next-line\n var formFieldElement = document.getElementById('FormField_helper_html_element');\n if (!formFieldElement) {\n // eslint-disable-next-line max-len\n this.pdfViewer.formDesignerModule.drawHelper(obj_1.formFieldAnnotationType, obj_1, evt);\n }\n else if (formFieldElement) {\n // eslint-disable-next-line\n var point = this.getMousePosition(event);\n formFieldElement.setAttribute('style', 'height:' + bounds.height + 'px; width:' + bounds.width + 'px;left:' + point.x + 'px; top:' + point.y + 'px;' +\n 'position:absolute;opacity: 0.5;');\n if ((this.currentPosition.x + parseInt(formFieldElement.style.width)) > parseInt(pageDiv.style.width)) {\n if (obj_1.formFieldAnnotationType === 'Checkbox' && formFieldElement.firstElementChild.firstElementChild.lastElementChild) {\n formFieldElement.firstElementChild.firstElementChild.lastElementChild.style.visibility = 'hidden';\n }\n else if (obj_1.formFieldAnnotationType === 'SignatureField' || obj_1.formFieldAnnotationType === 'InitialField') {\n formFieldElement.firstElementChild.firstElementChild.style.visibility = 'hidden';\n formFieldElement.firstElementChild.lastElementChild.style.visibility = 'hidden';\n }\n else {\n formFieldElement.firstElementChild.firstElementChild.style.visibility = 'hidden';\n }\n }\n else {\n if (obj_1.formFieldAnnotationType === 'Checkbox' && formFieldElement.firstElementChild.firstElementChild.lastElementChild) {\n formFieldElement.firstElementChild.firstElementChild.lastElementChild.style.visibility = 'visible';\n }\n else if (obj_1.formFieldAnnotationType === 'SignatureField' || obj_1.formFieldAnnotationType === 'InitialField') {\n formFieldElement.firstElementChild.firstElementChild.style.visibility = 'visible';\n formFieldElement.firstElementChild.lastElementChild.style.visibility = 'visible';\n }\n else {\n formFieldElement.firstElementChild.firstElementChild.style.visibility = 'visible';\n }\n }\n }\n }\n }\n }\n }\n this.prevPosition = this.currentPosition;\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateDefaultCursor = function (source, target, event) {\n // eslint-disable-next-line max-len\n if (source && source.pageIndex !== undefined && source.pageIndex !== this.activeElements.activePageID && target) {\n // eslint-disable-next-line\n this.isPanMode ? target.style.cursor = 'grab' : target.style.cursor = 'default';\n }\n else {\n this.setCursor(target, event);\n }\n };\n /**\n * @private\n * @param {MouseEvent | TouchEvent} evt - The event.\n * @returns {void}\n */\n PdfViewerBase.prototype.diagramMouseLeave = function (evt) {\n this.currentPosition = this.getMousePosition(evt);\n if (this.pdfViewer.annotation) {\n this.activeElements.activePageID = this.pdfViewer.annotation.getEventPageNumber(evt);\n }\n if (isNaN(this.activeElements.activePageID) && this.pdfViewer.formDesignerModule) {\n this.activeElements.activePageID = this.pdfViewer.formDesignerModule.getEventPageNumber(evt);\n }\n var shapeElement = findActiveElement(evt, this, this.pdfViewer);\n var mouseMoveforce = false;\n var target;\n if (Point.equals(this.currentPosition, this.prevPosition) === false || this.inAction) {\n if (this.isMouseDown === false || mouseMoveforce) {\n this.eventArgs = {};\n var sourceElement = null;\n if (shapeElement) {\n sourceElement = shapeElement.wrapper.children[0];\n if (sourceElement) {\n target = shapeElement;\n }\n mouseMoveforce = false;\n }\n }\n else {\n this.diagramMouseActionHelper(evt);\n // eslint-disable-next-line max-len\n if (this.tool && this.action !== 'Drag' && this.pdfViewer.tool !== 'Stamp' && this.tool.currentElement && this.tool.currentElement.shapeAnnotationType !== 'Stamp') {\n this.tool.mouseLeave(this.eventArgs);\n this.tool = null;\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotationModule.renderAnnotations(this.previousPage, null, null, null);\n }\n }\n }\n this.prevPosition = this.currentPosition;\n }\n };\n PdfViewerBase.prototype.diagramMouseActionHelper = function (evt) {\n this.eventArgs.position = this.currentPosition;\n if (this.action === 'Drag' &&\n this.eventArgs.source instanceof Selector) {\n this.getMouseEventArgs(this.currentPosition, this.eventArgs, evt);\n }\n this.getMouseEventArgs(this.currentPosition, this.eventArgs, evt, this.eventArgs.source);\n this.inAction = true;\n this.initialEventArgs = null;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.setCursor = function (eventTarget, event) {\n // eslint-disable-next-line max-len\n var freeTextAnnotModule = this.pdfViewer.annotationModule ? this.pdfViewer.annotationModule.freeTextAnnotationModule : null;\n var cursorType;\n if (this.tool instanceof ResizeTool) {\n if (this.tool.corner === 'ResizeNorthWest') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'nw-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeNorthEast') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'ne-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeSouthWest') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'sw-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeSouthEast') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'se-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeNorth') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'n-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeWest') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'w-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeEast') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'e-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeSouth') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 's-resize' : cursorType;\n }\n }\n else if (this.isCommentIconAdded && this.isAddComment) {\n eventTarget.style.cursor = 'crosshair';\n }\n else if (this.pdfViewer.enableHandwrittenSignature && this.isNewSignatureAdded && this.tool instanceof StampTool) {\n eventTarget.style.cursor = 'crosshair';\n }\n else if (this.tool instanceof MoveTool) {\n eventTarget.style.cursor = 'move';\n // eslint-disable-next-line max-len\n }\n else if (this.tool instanceof NodeDrawingTool || this.tool instanceof LineTool || this.tool instanceof PolygonDrawingTool || (freeTextAnnotModule && freeTextAnnotModule.isNewAddedAnnot) || this.tool instanceof InkDrawingTool) {\n eventTarget.style.cursor = 'crosshair';\n }\n else if (this.tool instanceof ConnectTool) {\n if (this.tool.endPoint && this.tool.endPoint.indexOf('Leader0')) {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'nw-resize' : cursorType;\n }\n else if (this.tool.endPoint && this.tool.endPoint.indexOf('Leader1')) {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'ne-resize' : cursorType;\n }\n else if (this.tool.endPoint && this.tool.endPoint.indexOf('ConnectorSegmentPoint')) {\n eventTarget.style.cursor = 'sw-resize';\n }\n }\n else {\n if (eventTarget.classList.contains('e-pv-text')) {\n eventTarget.style.cursor = 'text';\n }\n else if (eventTarget.classList.contains('e-pv-hyperlink')) {\n eventTarget.style.cursor = 'pointer';\n }\n else if (this.isPanMode) {\n if (this.isViewerMouseDown && event.type === 'mousemove') {\n eventTarget.style.cursor = 'grabbing';\n }\n else {\n var obj = findActiveElement(event, this, this.pdfViewer);\n if (obj && event.type === 'mousemove') {\n eventTarget.style.cursor = 'pointer';\n // eslint-disable-next-line max-len\n var currentObject = obj;\n // eslint-disable-next-line\n var currentPosition = this.getMousePosition(event);\n // eslint-disable-next-line\n var relativePosition = this.relativePosition(event);\n // eslint-disable-next-line\n var viewerPositions = { left: relativePosition.x, top: relativePosition.y };\n // eslint-disable-next-line\n var mousePositions = { left: currentPosition.x, top: currentPosition.y };\n // eslint-disable-next-line\n var annotationSettings = { opacity: currentObject.opacity, fillColor: currentObject.fillColor, strokeColor: currentObject.strokeColor, thicknes: currentObject.thickness, author: currentObject.author, subject: currentObject.subject, modifiedDate: currentObject.modifiedDate };\n // eslint-disable-next-line max-len\n this.isMousedOver = true;\n var isFormField = this.checkSignatureFormField(currentObject.id);\n if (currentObject.formFieldAnnotationType) {\n this.isFormFieldMousedOver = true;\n var field_1 = {\n // eslint-disable-next-line\n value: currentObject.value, fontFamily: currentObject.fontFamily, fontSize: currentObject.fontSize, fontStyle: currentObject.fontStyle,\n // eslint-disable-next-line max-len\n color: currentObject.color, backgroundColor: currentObject.backgroundColor, borderColor: currentObject.borderColor,\n // eslint-disable-next-line\n thickness: currentObject.thickness, alignment: currentObject.alignment, isReadonly: currentObject.isReadonly, visibility: currentObject.visibility,\n // eslint-disable-next-line\n maxLength: currentObject.maxLength, isRequired: currentObject.isRequired, isPrint: currentObject.isPrint, rotation: currentObject.rotateAngle, tooltip: currentObject.tooltip, options: currentObject.options,\n // eslint-disable-next-line\n isChecked: currentObject.isChecked, isSelected: currentObject.isSelected\n };\n this.pdfViewer.fireFormFieldMouseoverEvent('formFieldMouseover', field_1, currentObject.pageIndex, relativePosition.x, relativePosition.y, currentPosition.x, currentPosition.y);\n }\n else {\n if (!isFormField)\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationMouseover(currentObject.annotName, currentObject.pageIndex, currentObject.shapeAnnotationType, currentObject.bounds, annotationSettings, mousePositions, viewerPositions);\n }\n }\n else {\n eventTarget.style.cursor = 'grab';\n if (this.isMousedOver) {\n var pageIndex = void 0;\n if (this.pdfViewer.formDesignerModule) {\n pageIndex = this.pdfViewer.formDesignerModule.getEventPageNumber(event);\n }\n else {\n pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n }\n if (this.isFormFieldMousedOver) {\n this.pdfViewer.fireFormFieldMouseLeaveEvent('formFieldMouseLeave', null, pageIndex);\n }\n else {\n this.pdfViewer.fireAnnotationMouseLeave(pageIndex);\n }\n this.isMousedOver = false;\n this.isFormFieldMousedOver = false;\n }\n }\n }\n }\n else {\n var obj = findActiveElement(event, this, this.pdfViewer);\n if (obj && this.pdfViewer.selectedItems.annotations.length === 0 && event.type === 'mousemove') {\n var currentObject = obj;\n // eslint-disable-next-line\n var annotationObject = this.pdfViewer.nameTable[currentObject.id];\n // eslint-disable-next-line max-len\n if (annotationObject.shapeAnnotationType !== 'HandWrittenSignature' && annotationObject.shapeAnnotationType !== 'Ink' && annotationObject.annotationSettings && annotationObject.annotationSettings.isLock !== undefined) {\n annotationObject.annotationSettings.isLock = JSON.parse(annotationObject.annotationSettings.isLock);\n }\n if (annotationObject.annotationSettings && annotationObject.annotationSettings.isLock) {\n eventTarget.style.cursor = 'default';\n }\n else {\n eventTarget.style.cursor = 'pointer';\n }\n // eslint-disable-next-line\n var currentPosition = this.getMousePosition(event);\n // eslint-disable-next-line\n var relativePosition = this.relativePosition(event);\n // eslint-disable-next-line\n var viewerPositions = { left: relativePosition.x, top: relativePosition.y };\n // eslint-disable-next-line\n var mousePositions = { left: currentPosition.x, top: currentPosition.y };\n // eslint-disable-next-line\n var annotationSettings = { opacity: currentObject.opacity, fillColor: currentObject.fillColor, strokeColor: currentObject.strokeColor, thicknes: currentObject.thickness, author: currentObject.author, subject: currentObject.subject, modifiedDate: currentObject.modifiedDate };\n // eslint-disable-next-line max-len\n this.isMousedOver = true;\n var isFormField = this.checkSignatureFormField(currentObject.id);\n if (currentObject.formFieldAnnotationType) {\n this.isFormFieldMousedOver = true;\n var field_2 = {\n // eslint-disable-next-line\n value: currentObject.value, fontFamily: currentObject.fontFamily, fontSize: currentObject.fontSize, fontStyle: currentObject.fontStyle,\n // eslint-disable-next-line max-len\n color: currentObject.color, backgroundColor: currentObject.backgroundColor, borderColor: currentObject.borderColor,\n // eslint-disable-next-line\n thickness: currentObject.thickness, alignment: currentObject.alignment, isReadonly: currentObject.isReadonly, visibility: currentObject.visibility,\n // eslint-disable-next-line\n maxLength: currentObject.maxLength, isRequired: currentObject.isRequired, isPrint: currentObject.isPrint, rotation: currentObject.rotateAngle, tooltip: currentObject.tooltip, options: currentObject.options,\n // eslint-disable-next-line\n isChecked: currentObject.isChecked, isSelected: currentObject.isSelected\n };\n this.fromTarget = currentObject;\n this.pdfViewer.fireFormFieldMouseoverEvent('formFieldMouseover', field_2, currentObject.pageIndex, relativePosition.x, relativePosition.y, currentPosition.x, currentPosition.y);\n }\n else {\n if (!isFormField)\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationMouseover(currentObject.annotName, currentObject.pageIndex, currentObject.shapeAnnotationType, currentObject.bounds, annotationSettings, mousePositions, viewerPositions);\n }\n }\n else if (!this.pdfViewer.formDesignerModule && event.target.classList.contains('e-pdfviewer-formFields')) {\n var pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n var currentPosition = this.getMousePosition(event);\n var relativePosition = this.relativePosition(event);\n var viewerPositions = { left: relativePosition.x, top: relativePosition.y };\n var mousePositions = { left: currentPosition.x, top: currentPosition.y };\n var dataJson = this.getItemFromSessionStorage('_formfields');\n var data = JSON.parse(dataJson);\n for (var i = 0; i < data.length; i++) {\n if (data[parseInt(i.toString(), 10)].FieldName === event.target.name) {\n var field = { name: data[parseInt(i.toString(), 10)].FieldName };\n }\n }\n this.isMousedOver = true;\n this.isFormFieldMousedOver = true;\n this.pdfViewer.fireFormFieldMouseoverEvent('formFieldMouseover', field, pageIndex, relativePosition.x, relativePosition.y, currentPosition.x, currentPosition.y);\n }\n else {\n if (this.isMousedOver) {\n var pageIndex = void 0;\n if (this.pdfViewer.formDesignerModule) {\n pageIndex = this.pdfViewer.formDesignerModule.getEventPageNumber(event);\n }\n else {\n pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n }\n if (this.isFormFieldMousedOver) {\n if (this.fromTarget) {\n var field_3 = {\n // eslint-disable-next-line\n name: this.fromTarget.name, id: this.fromTarget.id, value: this.fromTarget.value, fontFamily: this.fromTarget.fontFamily, fontSize: this.fromTarget.fontSize, fontStyle: this.fromTarget.fontStyle,\n // eslint-disable-next-line max-len\n color: this.fromTarget.color, backgroundColor: this.fromTarget.backgroundColor, borderColor: this.fromTarget.borderColor,\n // eslint-disable-next-line\n thickness: this.fromTarget.thickness, alignment: this.fromTarget.alignment, isReadonly: this.fromTarget.isReadonly, visibility: this.fromTarget.visibility,\n // eslint-disable-next-line\n maxLength: this.fromTarget.maxLength, isRequired: this.fromTarget.isRequired, isPrint: this.fromTarget.isPrint, rotation: this.fromTarget.rotateAngle, tooltip: this.fromTarget.tooltip, options: this.fromTarget.options,\n // eslint-disable-next-line\n isChecked: this.fromTarget.isChecked, isSelected: this.fromTarget.isSelected\n };\n this.pdfViewer.fireFormFieldMouseLeaveEvent('formFieldMouseLeave', field_3, pageIndex);\n }\n else {\n this.pdfViewer.fireFormFieldMouseLeaveEvent('formFieldMouseLeave', null, pageIndex);\n }\n }\n else {\n this.pdfViewer.fireAnnotationMouseLeave(pageIndex);\n }\n this.isMousedOver = false;\n this.isFormFieldMousedOver = false;\n eventTarget.style.cursor = 'default';\n }\n if (obj && this.pdfViewer.selectedItems.annotations.length === 1 && event.type === 'mousemove') {\n eventTarget.style.cursor = 'pointer';\n }\n else {\n eventTarget.style.cursor = 'default';\n }\n }\n }\n }\n };\n PdfViewerBase.prototype.setResizerCursorType = function () {\n var cursorType;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && isNullOrUndefined(this.pdfViewer.selectedItems.annotations[0].annotationSelectorSettings.resizerCursorType)) {\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings) ? this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Stamp') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings) ? this.pdfViewer.stampSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) ? this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ink') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) ? this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (!this.pdfViewer.selectedItems.annotations[0].measureType) {\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings) ? this.pdfViewer.lineSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'LineWidthArrowHead') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings) ? this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Rectangle') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings) ? this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ellipse') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings) ? this.pdfViewer.circleSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Polygon') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings) ? this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n }\n else if (this.pdfViewer.selectedItems.annotations[0].measureType) {\n if (this.pdfViewer.selectedItems.annotations[0].subject === 'Distance calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings) ? this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].subject === 'Perimeter calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings) ? this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].subject === 'Area calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings) ? this.pdfViewer.areaSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].subject === 'Radius calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings) ? this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].subject === 'Volume calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings) ? this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n }\n }\n else {\n if (this.pdfViewer.selectedItems.annotations[0]) {\n cursorType = this.pdfViewer.selectedItems.annotations[0].annotationSelectorSettings.resizerCursorType;\n }\n }\n if (!cursorType) {\n cursorType = this.pdfViewer.annotationSelectorSettings.resizerCursorType;\n }\n return cursorType;\n };\n /**\n * @private\n * @param {Actions | string} action - The actions.\n * @returns {ToolBase} - Returns tools.\n */\n PdfViewerBase.prototype.getTool = function (action) {\n switch (action) {\n case 'Select':\n return new SelectTool(this.pdfViewer, this);\n case 'Drag':\n return new MoveTool(this.pdfViewer, this);\n case 'ResizeSouthEast':\n case 'ResizeSouthWest':\n case 'ResizeNorthEast':\n case 'ResizeNorthWest':\n case 'ResizeSouth':\n case 'ResizeNorth':\n case 'ResizeWest':\n case 'ResizeEast':\n return new ResizeTool(this.pdfViewer, this, action);\n case 'ConnectorSourceEnd':\n case 'ConnectorTargetEnd':\n case 'Leader':\n case 'ConnectorSegmentPoint':\n return new ConnectTool(this.pdfViewer, this, action);\n case 'DrawTool':\n return new NodeDrawingTool(this.pdfViewer, this, this.pdfViewer.drawingObject);\n case 'Polygon':\n return new PolygonDrawingTool(this.pdfViewer, this, 'Polygon');\n case 'Distance':\n return new LineTool(this.pdfViewer, this, 'Leader1', undefined);\n case 'Line':\n return new LineTool(this.pdfViewer, this, 'ConnectorSegmentPoint_1', this.pdfViewer.drawingObject);\n case 'Perimeter':\n return new PolygonDrawingTool(this.pdfViewer, this, 'Perimeter');\n case 'Rotate':\n return new RotateTool(this.pdfViewer, this);\n case 'Stamp':\n return new StampTool(this.pdfViewer, this);\n case 'Ink':\n return new InkDrawingTool(this.pdfViewer, this, this.pdfViewer.drawingObject);\n }\n if (action.indexOf('ConnectorSegmentPoint') > -1 || action.indexOf('Leader') > -1) {\n return new ConnectTool(this.pdfViewer, this, action);\n }\n return null;\n };\n /**\n * @private\n * @param {MouseEvent | TouchEvent} evt - The events.\n * @returns {void}\n */\n PdfViewerBase.prototype.diagramMouseUp = function (evt) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n var touches;\n var isAnnotResized = (this.action.toLowerCase().includes('resize') || this.action.toLowerCase().includes('connectorsegmentpoint'));\n var isAnnotationDrawn = (this.action === 'Drag' || isAnnotResized) || ((this.tool instanceof NodeDrawingTool || this.tool instanceof LineTool || this.tool instanceof PolygonDrawingTool) && (this.tool.dragging && this.tool.drawingObject));\n if (this.tool) {\n if (!this.inAction && evt.which !== 3) {\n if (this.action === 'Drag') {\n this.action = 'Select';\n var obj = findActiveElement(evt, this, this.pdfViewer);\n var isMultipleSelect = true;\n }\n }\n var isGroupAction = void 0;\n if (!(this.tool instanceof PolygonDrawingTool) && !(this.tool instanceof LineTool) && !(this.tool instanceof NodeDrawingTool)) {\n this.inAction = false;\n this.isMouseDown = false;\n }\n this.currentPosition = this.getMousePosition(evt);\n if (this.tool) {\n this.eventArgs.position = this.currentPosition;\n this.getMouseEventArgs(this.currentPosition, this.eventArgs, evt, this.eventArgs.source);\n var ctrlKey = this.isMetaKey(evt);\n var info = { ctrlKey: evt.ctrlKey, shiftKey: evt.shiftKey };\n this.eventArgs.info = info;\n this.eventArgs.clickCount = evt.detail;\n this.tool.mouseUp(this.eventArgs);\n this.isAnnotationMouseDown = false;\n this.isFormFieldMouseDown = false;\n // eslint-disable-next-line max-len\n if ((this.tool instanceof NodeDrawingTool || this.tool instanceof LineTool || this.tool instanceof PolygonDrawingTool) && !this.tool.dragging) {\n this.inAction = false;\n this.isMouseDown = false;\n }\n if (isAnnotationDrawn) {\n var obj = findActiveElement(evt, this, this.pdfViewer);\n // eslint-disable-next-line max-len\n if ((this.isShapeAnnotationModule() || this.isCalibrateAnnotationModule())) {\n this.pdfViewer.annotation.onShapesMouseup(obj, evt);\n }\n }\n this.isAnnotationDrawn = false;\n }\n }\n var target = evt.target;\n // eslint-disable-next-line max-len\n if (!touches && (evt.cancelable && !(this.isDeviceiOS && !this.pdfViewer.annotationModule)) && this.skipPreventDefault(target)) {\n evt.preventDefault();\n }\n this.eventArgs = {};\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @private\n * @param {HTMLElement} target - The target.\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.skipPreventDefault = function (target) {\n var isSkipped = false;\n var isSkip = false;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus) {\n isSkip = true;\n }\n // eslint-disable-next-line max-len\n if (target.parentElement && target.parentElement.className !== 'foreign-object' && !target.classList.contains('e-pv-radio-btn') && !target.classList.contains('e-pv-radiobtn-span') && !target.classList.contains('e-pv-checkbox-div') && !target.classList.contains('e-pdfviewer-formFields')\n && !target.classList.contains('e-pdfviewer-ListBox') && !target.classList.contains('e-pdfviewer-signatureformfields')\n && !((target).className === 'free-text-input' && (target).tagName === 'TEXTAREA')\n && !isSkip && !((target).className === 'e-pv-hyperlink') && target.parentElement.classList.length > 0 && !target.parentElement.classList.contains(\"e-editable-elements\")) {\n isSkipped = true;\n }\n return isSkipped;\n };\n PdfViewerBase.prototype.isMetaKey = function (evt) {\n return navigator.platform.match('Mac') ? evt.metaKey : evt.ctrlKey;\n };\n /**\n * @private\n * @param {MouseEvent | TouchEvent} evt - The events.\n * @returns {void}\n */\n PdfViewerBase.prototype.diagramMouseDown = function (evt) {\n var _this = this;\n if (this.tool instanceof MoveTool && !(this.tool instanceof StampTool) && this.tool['inAction']) {\n this.diagramMouseUp(evt);\n if (evt.which === 1) {\n this.preventContextmenu = true;\n setTimeout(function () {\n _this.preventContextmenu = false;\n }, 200);\n }\n }\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n var touches = null;\n touches = evt.touches;\n this.isMouseDown = true;\n this.isAnnotationAdded = false;\n this.currentPosition = this.prevPosition = this.getMousePosition(evt);\n this.eventArgs = {};\n var isStamp = false;\n if (this.pdfViewer.tool === 'Stamp') {\n this.pdfViewer.tool = '';\n isStamp = true;\n }\n var target;\n if (this.pdfViewer.annotation) {\n this.activeElements.activePageID = this.pdfViewer.annotation.getEventPageNumber(evt) ? this.pdfViewer.annotation.getEventPageNumber(evt) : this.pdfViewer.currentPageNumber - 1;\n }\n var obj = findActiveElement(evt, this, this.pdfViewer);\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && (obj && !(obj instanceof PdfFormFieldBase))) {\n evt.preventDefault();\n }\n if (this.pdfViewer.annotation && this.pdfViewer.enableStampAnnotations) {\n var stampModule = this.pdfViewer.annotationModule.stampAnnotationModule;\n if (stampModule && stampModule.isNewStampAnnot) {\n var stampObj = obj;\n if (!stampObj && this.pdfViewer.selectedItems.annotations[0]) {\n stampObj = this.pdfViewer.selectedItems.annotations[0];\n }\n if (stampObj) {\n this.isViewerMouseDown = false;\n stampObj.opacity = this.pdfViewer.stampSettings.opacity;\n this.isNewStamp = true;\n var opacity = void 0;\n if (stampObj.shapeAnnotationType === 'Image') {\n opacity = this.pdfViewer.customStampSettings.opacity;\n }\n else {\n opacity = this.pdfViewer.stampSettings.opacity;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.nodePropertyChange(stampObj, { opacity: opacity });\n this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = false;\n if (stampObj.shapeAnnotationType === 'Image' && !this.isAlreadyAdded) {\n this.stampAdded = true;\n var stampName = stampObj.id;\n if (stampModule.currentStampAnnotation && stampModule.currentStampAnnotation.signatureName) {\n stampName = stampModule.currentStampAnnotation.signatureName;\n }\n var isSkip = false;\n for (var i = 0; i < this.customStampCollection.length; i++) {\n if (this.customStampCollection[parseInt(i.toString(), 10)].customStampName === stampName) {\n isSkip = true;\n break;\n }\n }\n if (isSkip) {\n stampName = stampObj.id;\n }\n stampName = stampModule.customStampName ? stampModule.customStampName : stampModule.currentStampAnnotation.signatureName;\n this.customStampCollection.push({ customStampName: stampName, customStampImageSource: stampObj.data });\n if (isBlazor()) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync(\"UpdateCustomStampCollection\", stampName, stampObj.data);\n }\n }\n if (this.pdfViewer.customStampSettings.enableCustomStamp && this.pdfViewer.customStampSettings.isAddToMenu) {\n this.stampAdded = true;\n }\n this.isAlreadyAdded = false;\n stampModule.updateDeleteItems(stampObj.pageIndex, stampObj, stampObj.opacity);\n stampModule.resetAnnotation();\n stampModule.isNewStampAnnot = false;\n }\n }\n }\n if (this.isNewSignatureAdded) {\n this.signatureCount++;\n this.currentSignatureAnnot = null;\n var signObject = obj;\n if (isNullOrUndefined(signObject) && this.pdfViewer.selectedItems.annotations[0]) {\n signObject = this.pdfViewer.selectedItems.annotations[0];\n }\n if (signObject) {\n var signatureData = '';\n this.signatureAdded = true;\n this.signatureModule.storeSignatureData(signObject.pageIndex, signObject);\n // eslint-disable-next-line\n var bounds = { left: signObject.bounds.x, top: signObject.bounds.y, width: signObject.bounds.width, height: signObject.bounds.height };\n if (this.signatureModule.signaturetype === 'Draw') {\n signatureData = this.signatureModule.saveImageString;\n }\n else {\n signatureData = signObject.data;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignatureAdd(signObject.pageIndex, signObject.signatureName, signObject.shapeAnnotationType, bounds, signObject.opacity, signObject.strokeColor, signObject.thickness, signatureData);\n }\n this.isNewSignatureAdded = false;\n }\n if (this.pdfViewer.annotationModule) {\n var freeTextAnnotModule = this.pdfViewer.annotationModule.freeTextAnnotationModule;\n var canvasPaddingLeft = 5, canvasPaddingWidth = 10;\n // eslint-disable-next-line\n if (freeTextAnnotModule.isNewFreeTextAnnot === true) {\n var canvas = void 0;\n // eslint-disable-next-line max-len\n if (evt.target && (evt.target.id.indexOf('_text') > -1 || evt.target.id.indexOf('_annotationCanvas') > -1 || evt.target.classList.contains('e-pv-hyperlink')) && this.pdfViewer.annotation) {\n var pageIndex = this.pdfViewer.annotation.getEventPageNumber(evt);\n var diagram = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n if (diagram) {\n var canvas1 = diagram.getBoundingClientRect();\n var left = canvas1.x ? canvas1.x : canvas1.left;\n var top_4 = canvas1.y ? canvas1.y : canvas1.top;\n canvas = new Rect(left + canvasPaddingLeft, top_4 + canvasPaddingLeft, canvas1.width - canvasPaddingWidth, canvas1.height - canvasPaddingWidth);\n }\n }\n if (touches) {\n this.mouseX = touches[0].clientX;\n this.mouseY = touches[0].clientY;\n }\n if (canvas && canvas.containsPoint({ x: this.mouseX, y: this.mouseY }) && freeTextAnnotModule.isNewAddedAnnot) {\n var pageIndex = this.pdfViewer.annotation.getEventPageNumber(evt);\n if (!this.pdfViewer.freeTextSettings.enableAutoFit) {\n var zoomFactor = this.getZoomFactor();\n var width = this.currentPosition.x + (freeTextAnnotModule.defautWidth * zoomFactor);\n var pageWidth = this.getPageWidth(pageIndex);\n if (width >= pageWidth) {\n this.currentPosition.x = pageWidth - (freeTextAnnotModule.defautWidth * zoomFactor);\n this.currentPosition.x <= 0 ? this.currentPosition.x = canvasPaddingLeft : this.currentPosition.x;\n freeTextAnnotModule.defautWidth = (freeTextAnnotModule.defautWidth * zoomFactor) >= pageWidth ? pageWidth - canvasPaddingWidth : freeTextAnnotModule.defautWidth;\n }\n }\n freeTextAnnotModule.addInuptElemet(this.currentPosition, null, pageIndex);\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n // eslint-disable-next-line\n var annotModule = this.pdfViewer.toolbar.annotationToolbarModule;\n if (!isBlazor()) {\n annotModule.primaryToolbar.deSelectItem(annotModule.freeTextEditItem);\n }\n }\n evt.preventDefault();\n freeTextAnnotModule.isNewAddedAnnot = false;\n }\n }\n }\n var sourceElement = null;\n if (obj) {\n sourceElement = obj.wrapper.children[0];\n if (sourceElement) {\n target = obj;\n }\n }\n if (!this.tool || (this.tool && !this.tool.drawingObject)) {\n if (!isStamp) {\n this.action = this.findToolToActivate(obj, this.currentPosition);\n // eslint-disable-next-line\n if (obj && obj.annotationSettings && obj.annotationSettings.isLock) {\n if (this.action === 'Select') {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Select', obj)) {\n this.action = '';\n }\n }\n if (this.action === 'Drag') {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Move', obj)) {\n this.action = 'Select';\n }\n }\n if (this.action === 'Rotate') {\n this.action = 'Select';\n }\n // eslint-disable-next-line max-len\n if (this.action === 'ResizeSouthEast' || this.action === 'ResizeNorthEast' || this.action === 'ResizeNorthWest' || this.action === 'ResizeSouthWest' || this.action === 'ResizeSouth' || // eslint-disable-next-line max-len\n this.action === 'ResizeNorth' || this.action === 'ResizeWest' || this.action === 'ResizeEast' || this.action.includes('ConnectorSegmentPoint') || this.action.includes('Leader')) {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Resize', obj)) {\n this.action = 'Select';\n }\n }\n }\n this.tool = this.getTool(this.action);\n if (!this.tool) {\n this.action = this.pdfViewer.tool || 'Select';\n this.tool = this.getTool(this.action);\n }\n }\n else {\n this.action = 'Select';\n this.tool = this.getTool(this.action);\n }\n }\n this.getMouseEventArgs(this.currentPosition, this.eventArgs, evt);\n this.eventArgs.position = this.currentPosition;\n if (this.tool) {\n this.isAnnotationMouseDown = false;\n this.isFormFieldMouseDown = false;\n this.isAnnotationMouseMove = false;\n this.isFormFieldMouseMove = false;\n this.tool.mouseDown(this.eventArgs);\n this.isAnnotationDrawn = true;\n this.signatureAdded = true;\n }\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n if (this.pdfViewer.selectedItems && this.pdfViewer.selectedItems.formFields.length === 1) {\n if (!isNullOrUndefined(this.pdfViewer.toolbar) && !isNullOrUndefined(this.pdfViewer.toolbar.formDesignerToolbarModule)) {\n this.pdfViewer.toolbar.formDesignerToolbarModule.showHideDeleteIcon(true);\n }\n }\n var signatureFieldAnnotation = this.pdfViewer.selectedItems.annotations.length === 1 ? this.pdfViewer.nameTable[this.pdfViewer.selectedItems.annotations[0].id.split('_')[0] + '_content'] : null;\n if (!signatureFieldAnnotation) {\n signatureFieldAnnotation = this.pdfViewer.selectedItems.annotations.length === 1 ? this.pdfViewer.nameTable[this.pdfViewer.selectedItems.annotations[0].id] : null;\n }\n // eslint-disable-next-line max-len\n if (this.eventArgs && this.eventArgs.source && (this.eventArgs.source.formFieldAnnotationType || signatureFieldAnnotation) && !this.pdfViewer.designerMode) {\n var currentObject = void 0;\n if (signatureFieldAnnotation) {\n currentObject = this.pdfViewer.nameTable[this.pdfViewer.selectedItems.annotations[0].id.split('_')[0]];\n }\n else {\n currentObject = this.eventArgs.source;\n }\n if (!currentObject) {\n currentObject = this.pdfViewer.formFieldCollections[this.pdfViewer.formFieldCollections.findIndex(function (el) { return el.id === signatureFieldAnnotation.id; })];\n }\n if (currentObject) {\n // eslint-disable-next-line\n var field = {\n // eslint-disable-next-line max-len\n name: currentObject.name, id: currentObject.id, fontFamily: currentObject.fontFamily, fontSize: currentObject.fontSize, fontStyle: currentObject.fontStyle,\n // eslint-disable-next-line\n color: currentObject.color, value: currentObject.value, type: currentObject.formFieldAnnotationType ? currentObject.formFieldAnnotationType : currentObject.type, backgroundColor: currentObject.backgroundColor, alignment: currentObject.alignment\n };\n var target_1 = document.getElementById(currentObject.id);\n target_1 = target_1 ? target_1 : (document.getElementById(currentObject.id + '_content_html_element') ? document.getElementById(currentObject.id + '_content_html_element').children[0].children[0] : null);\n if (target_1) {\n this.currentTarget = target_1;\n this.pdfViewer.fireFormFieldClickEvent('formFieldClicked', field, false, evt.button === 0);\n }\n }\n }\n this.initialEventArgs = { source: this.eventArgs.source, sourceWrapper: this.eventArgs.sourceWrapper };\n this.initialEventArgs.position = this.currentPosition;\n this.initialEventArgs.info = this.eventArgs.info;\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.exportAnnotationsAsObject = function (annotationDataFormat) {\n var _this = this;\n if (this.pdfViewer.annotationModule) {\n var isAnnotations = this.updateExportItem();\n if (isAnnotations) {\n return new Promise(function (resolve, reject) {\n _this.createRequestForExportAnnotations(true, annotationDataFormat).then(function (value) {\n resolve(value);\n });\n });\n }\n }\n };\n /**\n * @private\n * @param {string} type - The type.\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.getItemFromSessionStorage = function (type) {\n if (this.isStorageExceed) {\n return this.formFieldStorage[this.documentId + type];\n }\n else {\n return window.sessionStorage.getItem(this.documentId + type);\n }\n };\n /**\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewerBase.prototype.setStyleToTextDiv = function (textDiv, left, top, fontHeight, width, height, isPrint) {\n var zoomvalue = this.getZoomFactor();\n if (isPrint) {\n zoomvalue = 1;\n textDiv.style.position = 'absolute';\n }\n textDiv.style.left = left * zoomvalue + 'px';\n textDiv.style.top = top * zoomvalue + 'px';\n textDiv.style.height = height * zoomvalue + 'px';\n textDiv.style.width = width * zoomvalue + 'px';\n textDiv.style.margin = '0px';\n if (fontHeight > 0) {\n textDiv.style.fontSize = fontHeight * zoomvalue + 'px';\n }\n };\n /**\n * @param number\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.ConvertPointToPixel = function (number) {\n return (number * (96 / 72));\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.setItemInSessionStorage = function (formFieldsData, type) {\n // eslint-disable-next-line\n var formFieldsSize = Math.round(JSON.stringify(formFieldsData).length / 1024);\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n if (formFieldsSize > 4500) {\n this.isStorageExceed = true;\n if (this.pdfViewer.formFieldsModule) {\n if (!(this.isFormStorageExceed)) {\n this.pdfViewer.formFieldsModule.clearFormFieldStorage();\n this.isFormStorageExceed = true;\n }\n }\n }\n if (this.isStorageExceed) {\n this.formFieldStorage[this.documentId + type] = JSON.stringify(formFieldsData);\n }\n else if ((formFieldsSize + sessionSize) > 4500) {\n this.isStorageExceed = true;\n if (this.pdfViewer.formFieldsModule) {\n this.pdfViewer.formFieldsModule.clearFormFieldStorage();\n }\n this.isFormStorageExceed = true;\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.clearAnnotationStorage();\n }\n this.formFieldStorage[this.documentId + type] = JSON.stringify(formFieldsData);\n }\n else {\n window.sessionStorage.setItem(this.documentId + type, JSON.stringify(formFieldsData));\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.exportFormFieldsAsObject = function (formFieldDataFormat) {\n var _this = this;\n if (this.pdfViewer.formFieldsModule) {\n return new Promise(function (resolve, reject) {\n _this.createRequestForExportFormfields(true, formFieldDataFormat).then(function (value) {\n resolve(value);\n });\n });\n }\n };\n /**\n * @param importData\n * @param annotationDataFormat\n * @param isXfdf\n * @param importData\n * @param annotationDataFormat\n * @param isXfdf\n * @param importData\n * @param annotationDataFormat\n * @param isXfdf\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.importAnnotations = function (importData, annotationDataFormat, isXfdf) {\n if (this.pdfViewer.annotationModule) {\n this.createRequestForImportAnnotations(importData, annotationDataFormat, isXfdf);\n }\n };\n /**\n * @private\n * @param {AnnotationDataFormat} annotationDataFormat - The annotationDataFormat.\n * @returns {void}\n */\n PdfViewerBase.prototype.exportAnnotations = function (annotationDataFormat) {\n if (this.pdfViewer.annotationModule) {\n var isAnnotations = this.updateExportItem();\n if (isAnnotations) {\n this.createRequestForExportAnnotations(false, annotationDataFormat);\n }\n }\n };\n /**\n * @param isObject\n * @param annotationDataFormat\n * @param isBase64String\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForExportAnnotations = function (isObject, annotationDataFormat, isBase64String) {\n var _this = this;\n var proxy = null;\n proxy = this;\n var promise = new Promise(function (resolve, reject) {\n // eslint-disable-next-line\n var jsonObject;\n var canExport = false;\n jsonObject = _this.constructJsonDownload();\n jsonObject.annotationDataFormat = annotationDataFormat;\n // eslint-disable-next-line\n jsonObject['action'] = 'ExportAnnotations';\n canExport = proxy.pdfViewer.fireExportStart(jsonObject);\n if (canExport) {\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.document = proxy.jsonDocumentId;\n }\n var url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.exportAnnotations;\n proxy.exportAnnotationRequestHandler = new AjaxHandler(_this.pdfViewer);\n proxy.exportAnnotationRequestHandler.url = url;\n proxy.exportAnnotationRequestHandler.mode = true;\n proxy.exportAnnotationRequestHandler.responseType = 'text';\n if (!_this.clientSideRendering) {\n proxy.exportAnnotationRequestHandler.send(jsonObject);\n }\n else {\n var resultData = _this.pdfViewer.pdfRendererModule.exportAnnotation(jsonObject, isObject);\n if (isObject) {\n proxy.exportAnnotationFileDownload(resultData, proxy, annotationDataFormat, jsonObject, isObject, isBase64String).then(function (annotData) {\n resolve(annotData);\n });\n }\n else {\n proxy.exportAnnotationFileDownload(resultData, proxy, annotationDataFormat, jsonObject, isObject, isBase64String).then(function (annotData) {\n resolve(annotData);\n });\n }\n }\n // eslint-disable-next-line\n proxy.exportAnnotationRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n var redirect = proxy.checkRedirection(data);\n if (!redirect) {\n if (data) {\n if (isObject) {\n proxy.exportAnnotationFileDownload(data, proxy, annotationDataFormat, jsonObject, isObject, isBase64String).then(function (annotData) {\n resolve(annotData);\n });\n }\n else {\n proxy.exportAnnotationFileDownload(data, proxy, annotationDataFormat, jsonObject, isObject, isBase64String).then(function (annotData) {\n resolve(annotData);\n });\n }\n }\n else {\n var fileName = void 0;\n if (proxy.pdfViewer.exportAnnotationFileName !== null) {\n fileName = proxy.pdfViewer.exportAnnotationFileName;\n }\n else {\n fileName = proxy.pdfViewer.fileName;\n }\n proxy.pdfViewer.fireExportSuccess('Exported data saved in server side successfully', fileName);\n }\n }\n };\n // eslint-disable-next-line\n proxy.exportAnnotationRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, result.statusText);\n };\n // eslint-disable-next-line\n proxy.exportAnnotationRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, result.statusText);\n };\n }\n });\n if (isObject || isBase64String) {\n return promise;\n }\n else {\n return true;\n }\n };\n PdfViewerBase.prototype.exportAnnotationFileDownload = function (data, proxy, annotationDataFormat, jsonObject, isObject, isBase64String) {\n var _this = this;\n return new Promise(function (resolve) {\n if (data) {\n if (typeof data === 'object') {\n data = JSON.parse(data);\n }\n if (data) {\n var isCancel = proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.exportAnnotations, data);\n if (isObject || (isBase64String && !isBlazor())) {\n if (data.split('base64,')[1]) {\n var exportObject = data;\n // eslint-disable-next-line \n var annotationJson = atob(data.split(',')[1]);\n if (isObject) {\n if (jsonObject.annotationDataFormat === 'Json') {\n annotationJson = proxy.getSanitizedString(annotationJson);\n exportObject = JSON.parse(annotationJson);\n }\n else {\n exportObject = annotationJson;\n }\n }\n if (proxy.pdfViewer.exportAnnotationFileName !== null) {\n proxy.pdfViewer.fireExportSuccess(exportObject, proxy.pdfViewer.exportAnnotationFileName);\n }\n else {\n proxy.pdfViewer.fireExportSuccess(exportObject, proxy.pdfViewer.fileName);\n }\n proxy.updateDocumentAnnotationCollections();\n if (isBase64String) {\n resolve(data);\n }\n else {\n resolve(annotationJson);\n }\n }\n else {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n }\n else {\n if (annotationDataFormat === 'Json') {\n if (data.split('base64,')[1]) {\n if (!isCancel) {\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/json');\n if (Browser.isIE || Browser.info.name === 'edge') {\n if (proxy.pdfViewer.exportAnnotationFileName !== null) {\n // eslint-disable-next-line max-len\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.pdfViewer.exportAnnotationFileName.split('.')[0] + '.json');\n }\n else {\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.pdfViewer.fileName.split('.')[0] + '.json');\n }\n }\n else {\n proxy.downloadExportFormat(blobUrl, annotationDataFormat);\n }\n proxy.updateDocumentAnnotationCollections();\n }\n else {\n return data;\n }\n }\n else {\n if (isBlazor()) {\n var promise = _this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_ExportFailed');\n promise.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n }\n else {\n if (data.split('base64,')[1]) {\n if (!isCancel) {\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/vnd.adobe.xfdf');\n if (Browser.isIE || Browser.info.name === 'edge') {\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.pdfViewer.fileName.split('.')[0] + '.xfdf');\n }\n else {\n proxy.downloadExportFormat(blobUrl, annotationDataFormat);\n }\n proxy.updateDocumentAnnotationCollections();\n }\n else {\n return data;\n }\n }\n else {\n if (isBlazor()) {\n var promise = _this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_ExportFailed');\n promise.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireExportFailed(jsonObject, proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n }\n }\n }\n if (typeof data !== 'string') {\n try {\n if (typeof data === 'string') {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.exportAnnotations);\n data = null;\n }\n }\n catch (error) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.exportAnnotations);\n data = null;\n }\n }\n }\n return '';\n });\n };\n PdfViewerBase.prototype.getDataOnSuccess = function (resultData) {\n var _this = this;\n return new Promise(function (resolve) {\n var proxy = null;\n proxy = _this;\n proxy.pdfViewer.fireExportSuccess(resultData, proxy.pdfViewer.fileName);\n proxy.updateDocumentAnnotationCollections();\n resolve(resultData);\n });\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.updateModifiedDateToLocalDate = function (newData, annotationType) {\n if (newData[\"\" + annotationType] && newData[\"\" + annotationType].length > 0) {\n var data = newData[\"\" + annotationType];\n if (data) {\n for (var j = 0; j < data.length; j++) {\n data[parseInt(j.toString(), 10)].ModifiedDate = this.convertUTCDateTimeToLocalDateTime(data[parseInt(j.toString(), 10)].ModifiedDate);\n if (data[parseInt(j.toString(), 10)].Comments) {\n for (var i = 0; i < data[parseInt(j.toString(), 10)].Comments.length; i++) {\n data[parseInt(j.toString(), 10)].Comments[parseInt(i.toString(), 10)].ModifiedDate = this.convertUTCDateTimeToLocalDateTime(data[parseInt(j.toString(), 10)].Comments[parseInt(i.toString(), 10)].ModifiedDate);\n }\n }\n }\n }\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.convertUTCDateTimeToLocalDateTime = function (date) {\n var dateTime;\n // We have globalized the date and time based on the given locale.\n this.globalize = new Internationalization(this.pdfViewer.locale);\n if (date !== null && date !== undefined && date !== '') {\n if (!this.clientSideRendering) {\n dateTime = new Date(Date.parse(date + ' ' + 'UTC'));\n }\n else {\n dateTime = new Date(date);\n }\n }\n else {\n var now = new Date();\n var now_utc = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());\n dateTime = new Date(now_utc);\n }\n var dateTimeValue = this.globalize.formatDate(dateTime, { format: this.pdfViewer.dateTimeFormat, type: 'dateTime' });\n return dateTimeValue;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForImportAnnotations = function (importData, annotationDataFormat, isXfdf) {\n var jsonObject;\n var proxy = null;\n proxy = this;\n if (!isXfdf && proxy.isPDFViewerJson) {\n this.isJsonImported = true;\n }\n else {\n this.isJsonImported = false;\n }\n if (typeof importData === 'object') {\n if (importData && importData.pdfAnnotation) {\n var newArray = Object.keys(importData.pdfAnnotation);\n for (var i = 0; i < newArray.length; i++) {\n var newData = importData.pdfAnnotation[newArray[parseInt(i.toString(), 10)]];\n this.updateModifiedDateToLocalDate(newData, \"freeTextAnnotation\");\n this.updateModifiedDateToLocalDate(newData, \"measureShapeAnnotation\");\n this.updateModifiedDateToLocalDate(newData, \"shapeAnnotation\");\n this.updateModifiedDateToLocalDate(newData, \"signatureAnnotation\");\n this.updateModifiedDateToLocalDate(newData, \"signatureInkAnnotation\");\n this.updateModifiedDateToLocalDate(newData, \"stampAnnotations\");\n this.updateModifiedDateToLocalDate(newData, \"stickyNotesAnnotation\");\n this.updateModifiedDateToLocalDate(newData, \"textMarkupAnnotation\");\n }\n }\n proxy.reRenderAnnotations(importData.pdfAnnotation);\n proxy.isImportedAnnotation = true;\n proxy.updateDocumentEditedProperty(true);\n if (!this.isAddAnnotation) {\n proxy.pdfViewer.fireImportSuccess(importData.pdfAnnotation);\n }\n }\n else {\n proxy.pdfViewer.fireImportStart(importData);\n if (annotationDataFormat === 'Json') {\n // eslint-disable-next-line max-len\n if (proxy.isPDFViewerJson) {\n jsonObject = { fileName: importData, action: 'ImportAnnotations', elementId: proxy.pdfViewer.element.id, hashId: proxy.hashId, uniqueId: proxy.documentId, annotationDataFormat: annotationDataFormat };\n }\n else {\n jsonObject = { importedData: importData, action: 'ImportAnnotations', elementId: proxy.pdfViewer.element.id, hashId: proxy.hashId, uniqueId: proxy.documentId, annotationDataFormat: annotationDataFormat };\n }\n }\n else {\n if (!isXfdf) {\n importData = btoa(importData);\n }\n importData = importData.split(',')[1] ? importData.split(',')[1] : importData.split(',')[0];\n // eslint-disable-next-line max-len\n jsonObject = { importedData: importData, action: 'ImportAnnotations', elementId: proxy.pdfViewer.element.id, hashId: proxy.hashId, uniqueId: proxy.documentId, annotationDataFormat: annotationDataFormat };\n }\n jsonObject = Object.assign(jsonObject, this.constructJsonDownload());\n jsonObject[\"action\"] = 'ImportAnnotations';\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n if (jsonObject.documentId) {\n delete jsonObject['documentId'];\n }\n jsonObject.document = proxy.jsonDocumentId;\n }\n var url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.importAnnotations;\n proxy.importAnnotationRequestHandler = new AjaxHandler(proxy.pdfViewer);\n proxy.importAnnotationRequestHandler.url = url;\n proxy.importAnnotationRequestHandler.mode = true;\n proxy.importAnnotationRequestHandler.responseType = 'text';\n if (!this.clientSideRendering) {\n proxy.importAnnotationRequestHandler.send(jsonObject);\n }\n else {\n var resultData = this.pdfViewer.pdfRendererModule.importAnnotations(jsonObject);\n if (resultData) {\n this.addAnnotationOnImport(resultData, importData);\n }\n }\n // eslint-disable-next-line\n proxy.importAnnotationRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n var redirect = proxy.checkRedirection(data);\n if (!redirect) {\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n if (typeof data !== 'object') {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.importAnnotations);\n data = null;\n }\n }\n catch (error) {\n proxy.pdfViewer.fireImportFailed(importData, proxy.pdfViewer.localeObj.getConstant('File not found'));\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_FileNotFound');\n promise.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('File not found'));\n }\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.importAnnotations);\n data = null;\n }\n }\n if (data) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.importAnnotations, data);\n if (data.pdfAnnotation) {\n var newArray_1;\n var newData_1;\n newArray_1 = Object.keys(data.pdfAnnotation);\n for (var i = 0; i < Object.keys(data.pdfAnnotation).length; i++) {\n newData_1 = data.pdfAnnotation[newArray_1[parseInt(i.toString(), 10)]];\n proxy.updateModifiedDateToLocalDate(newData_1, \"annotationOrder\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"freeTextAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"measureShapeAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"shapeAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"signatureAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"signatureInkAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"stampAnnotations\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"stickyNotesAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"textMarkupAnnotation\");\n }\n proxy.reRenderAnnotations(data.pdfAnnotation);\n proxy.isImportedAnnotation = true;\n proxy.updateDocumentEditedProperty(true);\n proxy.pdfViewer.fireImportSuccess(data.pdfAnnotation);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n proxy.importAnnotationRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireImportFailed(importData, result.statusText);\n };\n // eslint-disable-next-line\n proxy.importAnnotationRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireImportFailed(importData, result.statusText);\n };\n }\n };\n PdfViewerBase.prototype.addAnnotationOnImport = function (resultData, importData) {\n var proxy = null;\n proxy = this;\n if (resultData) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.importAnnotations, resultData);\n if (resultData.pdfAnnotation) {\n var newArray = void 0;\n var newData = void 0;\n newArray = Object.keys(resultData.pdfAnnotation);\n for (var i = 0; i < Object.keys(resultData.pdfAnnotation).length; i++) {\n newData = resultData.pdfAnnotation[newArray[parseInt(i.toString(), 10)]];\n proxy.updateModifiedDateToLocalDate(newData, \"annotationOrder\");\n proxy.updateModifiedDateToLocalDate(newData, \"freeTextAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData, \"measureShapeAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData, \"shapeAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData, \"signatureAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData, \"signatureInkAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData, \"stampAnnotations\");\n proxy.updateModifiedDateToLocalDate(newData, \"stickyNotesAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData, \"textMarkupAnnotation\");\n }\n proxy.reRenderAnnotations(resultData.pdfAnnotation);\n proxy.isImportedAnnotation = true;\n proxy.updateDocumentEditedProperty(true);\n proxy.pdfViewer.fireImportSuccess(resultData.pdfAnnotation);\n }\n else {\n proxy.pdfViewer.fireImportFailed(importData, proxy.pdfViewer.localeObj.getConstant('File not found'));\n }\n }\n };\n /**\n * @private\n * @param {string} errorDetails - The error details.\n * @returns {void}\n */\n PdfViewerBase.prototype.openImportExportNotificationPopup = function (errorDetails) {\n if (this.pdfViewer.showNotificationDialog) {\n this.textLayer.createNotificationPopup(errorDetails);\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.reRenderAnnotations = function (annotation) {\n if (annotation) {\n this.isImportAction = true;\n var count = 0;\n if (this.isImportedAnnotation) {\n this.importedAnnotation = this.combineImportedData(this.importedAnnotation, annotation);\n }\n else {\n if (this.pageCount > 0) {\n this.importedAnnotation = annotation;\n }\n }\n if (!this.isImportedAnnotation) {\n count = 0;\n }\n for (var i = 0; i < this.pageCount; i++) {\n if (annotation[parseInt(i.toString(), 10)]) {\n // eslint-disable-next-line\n var importPageCollections = [];\n // eslint-disable-next-line\n var textMarkupObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n // eslint-disable-next-line\n var shapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n // eslint-disable-next-line\n var measureShapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n // eslint-disable-next-line\n var stampObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n // eslint-disable-next-line\n var stickyObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n // eslint-disable-next-line\n var freeTextObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n // eslint-disable-next-line\n var signatureObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n // eslint-disable-next-line\n var inkObject = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n if (this.isStorageExceed) {\n textMarkupObject = this.annotationStorage[this.documentId + '_annotations_textMarkup'];\n shapeObject = this.annotationStorage[this.documentId + '_annotations_shape'];\n measureShapeObject = this.annotationStorage[this.documentId + '_annotations_shape_measure'];\n stampObject = this.annotationStorage[this.documentId + '_annotations_stamp'];\n stickyObject = this.annotationStorage[this.documentId + '_annotations_sticky'];\n freeTextObject = this.annotationStorage[this.documentId + '_annotations_freetext'];\n inkObject = this.annotationStorage[this.documentId + '_annotations_ink'];\n }\n this.drawPageAnnotations(annotation[parseInt(i.toString(), 10)], i);\n if (this.isImportedAnnotation) {\n var isAdded = false;\n for (var j = 0; j < this.annotationPageList.length; j++) {\n if (this.annotationPageList[parseInt(j.toString(), 10)] === i) {\n isAdded = true;\n }\n }\n if (isAdded) {\n this.annotationPageList[parseInt(count.toString(), 10)] = i;\n count = count + 1;\n }\n }\n else {\n this.annotationPageList[parseInt(count.toString(), 10)] = i;\n count = count + 1;\n }\n if (annotation[parseInt(i.toString(), 10)].textMarkupAnnotation && annotation[parseInt(i.toString(), 10)].textMarkupAnnotation.length !== 0) {\n if (textMarkupObject) {\n var annotObject = JSON.parse(textMarkupObject);\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].textMarkupAnnotation = this.checkAnnotationCollections(annotObject, annotation[parseInt(i.toString(), 10)].textMarkupAnnotation, i);\n }\n annotation[parseInt(i.toString(), 10)].textMarkupAnnotation = this.checkAnnotationCommentsCollections(annotation[parseInt(i.toString(), 10)].textMarkupAnnotation, i);\n importPageCollections.textMarkupAnnotation = annotation[parseInt(i.toString(), 10)].textMarkupAnnotation;\n }\n if (annotation[parseInt(i.toString(), 10)].shapeAnnotation && annotation[parseInt(i.toString(), 10)].shapeAnnotation.length !== 0) {\n if (shapeObject) {\n var annotObject = JSON.parse(shapeObject);\n annotation[parseInt(i.toString(), 10)].shapeAnnotation = this.checkAnnotationCollections(annotObject, annotation[parseInt(i.toString(), 10)].shapeAnnotation, i);\n }\n annotation[parseInt(i.toString(), 10)].shapeAnnotation = this.checkAnnotationCommentsCollections(annotation[parseInt(i.toString(), 10)].shapeAnnotation, i);\n importPageCollections.shapeAnnotation = annotation[parseInt(i.toString(), 10)].shapeAnnotation;\n }\n if (annotation[parseInt(i.toString(), 10)].measureShapeAnnotation && annotation[parseInt(i.toString(), 10)].measureShapeAnnotation.length !== 0) {\n if (measureShapeObject) {\n var annotObject = JSON.parse(measureShapeObject);\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].measureShapeAnnotation = this.checkAnnotationCollections(annotObject, annotation[parseInt(i.toString(), 10)].measureShapeAnnotation, i);\n }\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].measureShapeAnnotation = this.checkAnnotationCommentsCollections(annotation[parseInt(i.toString(), 10)].measureShapeAnnotation, i);\n importPageCollections.measureShapeAnnotation = annotation[parseInt(i.toString(), 10)].measureShapeAnnotation;\n }\n if (annotation[parseInt(i.toString(), 10)].stampAnnotations && annotation[parseInt(i.toString(), 10)].stampAnnotations.length !== 0) {\n if (stampObject) {\n var annotObject = JSON.parse(stampObject);\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].stampAnnotations = this.checkAnnotationCollections(annotObject, annotation[parseInt(i.toString(), 10)].stampAnnotations, i);\n }\n annotation[parseInt(i.toString(), 10)].stampAnnotations = this.checkAnnotationCommentsCollections(annotation[parseInt(i.toString(), 10)].stampAnnotations, i);\n importPageCollections.stampAnnotations = annotation[parseInt(i.toString(), 10)].stampAnnotations;\n }\n if (annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation && annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation.length !== 0) {\n if (stickyObject) {\n var annotObject = JSON.parse(stickyObject);\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation = this.checkAnnotationCollections(annotObject, annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation, i);\n }\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation = this.checkAnnotationCommentsCollections(annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation, i);\n importPageCollections.stickyNotesAnnotation = annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation;\n }\n if (annotation[parseInt(i.toString(), 10)].freeTextAnnotation && annotation[parseInt(i.toString(), 10)].freeTextAnnotation.length !== 0) {\n if (freeTextObject) {\n var annotObject = JSON.parse(freeTextObject);\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].freeTextAnnotation = this.checkAnnotationCollections(annotObject, annotation[parseInt(i.toString(), 10)].freeTextAnnotation, i);\n }\n annotation[parseInt(i.toString(), 10)].freeTextAnnotation = this.checkAnnotationCommentsCollections(annotation[parseInt(i.toString(), 10)].freeTextAnnotation, i);\n importPageCollections.freeTextAnnotation = annotation[parseInt(i.toString(), 10)].freeTextAnnotation;\n }\n if (annotation[parseInt(i.toString(), 10)].signatureAnnotation && annotation[parseInt(i.toString(), 10)].signatureAnnotation.length !== 0) {\n if (signatureObject) {\n var annotObject = JSON.parse(signatureObject);\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].signatureAnnotation = this.checkSignatureCollections(annotObject, annotation[parseInt(i.toString(), 10)].signatureAnnotation, i);\n }\n importPageCollections.signatureAnnotation = annotation[parseInt(i.toString(), 10)].signatureAnnotation;\n }\n if (annotation[parseInt(i.toString(), 10)].signatureInkAnnotation && annotation[parseInt(i.toString(), 10)].signatureInkAnnotation.length !== 0) {\n if (inkObject) {\n var annotObject = JSON.parse(inkObject);\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].signatureInkAnnotation = this.checkAnnotationCollections(annotObject, annotation[parseInt(i.toString(), 10)].signatureInkAnnotation, i);\n }\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].signatureInkAnnotation = this.checkAnnotationCommentsCollections(annotation[parseInt(i.toString(), 10)].signatureInkAnnotation, i);\n importPageCollections.signatureInkAnnotation = annotation[parseInt(i.toString(), 10)].signatureInkAnnotation;\n }\n if (annotation[parseInt(i.toString(), 10)].annotationOrder) {\n var annotationOrderCollection = annotation[parseInt(i.toString(), 10)].annotationOrder;\n var annotationData = [];\n for (var index = 0; index < annotationOrderCollection.length; index++) {\n var annotationName = annotationOrderCollection[parseInt(index.toString(), 10)].AnnotType ? annotationOrderCollection[parseInt(index.toString(), 10)].AnnotType : annotationOrderCollection[parseInt(index.toString(), 10)].AnnotationType;\n annotationData.push(annotationOrderCollection[parseInt(index.toString(), 10)]);\n var annotObject = void 0;\n switch (annotationName) {\n case 'textMarkup':\n if (annotation[parseInt(i.toString(), 10)].textMarkupAnnotation.length !== 0 || annotationData.length !== 0) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotationData, i);\n for (var j = 0; j < annotationData.length; j++) {\n if (!isNullOrUndefined(this.pdfViewer.annotationModule.textMarkupAnnotationModule)) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.textMarkupAnnotationModule.updateTextMarkupAnnotationCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i));\n }\n }\n }\n break;\n case 'shape':\n if (annotation[parseInt(i.toString(), 10)].shapeAnnotation.length !== 0 || annotationData.length !== 0) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotationData, i);\n for (var j = 0; j < annotationData.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.shapeAnnotationModule.updateShapeAnnotationCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i));\n }\n }\n break;\n case 'shape_measure':\n if (annotation[parseInt(i.toString(), 10)].measureShapeAnnotation.length !== 0 || annotationData.length !== 0) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotationData, i);\n for (var j = 0; j < annotationData.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.measureAnnotationModule.updateMeasureAnnotationCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i));\n }\n }\n break;\n case 'stamp':\n if (annotation[parseInt(i.toString(), 10)].stampAnnotations.length !== 0 || annotationData.length !== 0) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotationData, i);\n for (var j = 0; j < annotationData.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.stampAnnotationModule.updateStampAnnotationCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i));\n }\n }\n break;\n case 'Text Box':\n case 'freeText':\n if (annotation[parseInt(i.toString(), 10)].freeTextAnnotation.length !== 0 || annotationData.length !== 0) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotationData, i);\n for (var j = 0; j < annotationData.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.freeTextAnnotationModule.updateFreeTextAnnotationCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i));\n }\n }\n break;\n case 'sticky':\n if (annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation.length !== 0 || annotationData.length !== 0) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotationData, i);\n for (var j = 0; j < annotationData.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateStickyNotesAnnotationCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i));\n }\n }\n break;\n case 'signature':\n if (annotation[parseInt(i.toString(), 10)].signatureAnnotation.length !== 0 || annotationData.length !== 0) {\n for (var j = 0; j < annotationData.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.signatureModule.updateSignatureCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i), true);\n }\n }\n break;\n case 'Ink':\n case 'ink':\n if (annotation[parseInt(i.toString(), 10)].signatureInkAnnotation.length !== 0 || annotationData.length !== 0) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotationData, i);\n for (var j = 0; j < annotation[parseInt(i.toString(), 10)].annotationOrder[parseInt(index.toString(), 10)].length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.inkAnnotationModule.updateInkCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i));\n }\n }\n break;\n }\n annotationData = [];\n }\n }\n this.updateImportedAnnotationsInDocumentCollections(importPageCollections, i);\n }\n }\n if (this.pageCount > 0) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule.stickyNotesAnnotationModule && !this.pdfViewer.annotationModule.stickyNotesAnnotationModule.isAnnotationRendered) {\n // eslint-disable-next-line\n var annotationCollection = this.createAnnotationsCollection();\n if (annotationCollection) {\n // eslint-disable-next-line max-len\n this.documentAnnotationCollections = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationsInDocumentCollections(this.importedAnnotation, annotationCollection);\n }\n }\n }\n }\n this.isImportAction = false;\n };\n /**\n * @param importedAnnotations\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateImportedAnnotationsInDocumentCollections = function (importedAnnotations, pageNumber) {\n if (this.documentAnnotationCollections) {\n // eslint-disable-next-line\n var documentAnnotationCollection = this.documentAnnotationCollections;\n // eslint-disable-next-line\n var pageCollections = documentAnnotationCollection[pageNumber];\n if (pageCollections) {\n if (importedAnnotations.textMarkupAnnotation && importedAnnotations.textMarkupAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.textMarkupAnnotation.length; i++) {\n pageCollections.textMarkupAnnotation.push(importedAnnotations.textMarkupAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (importedAnnotations.shapeAnnotation && importedAnnotations.shapeAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.shapeAnnotation.length; i++) {\n pageCollections.shapeAnnotation.push(importedAnnotations.shapeAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (importedAnnotations.measureShapeAnnotation && importedAnnotations.measureShapeAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.measureShapeAnnotation.length; i++) {\n pageCollections.measureShapeAnnotation.push(importedAnnotations.measureShapeAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (importedAnnotations.stampAnnotations && importedAnnotations.stampAnnotations.length !== 0) {\n for (var i = 0; i < importedAnnotations.stampAnnotations.length; i++) {\n pageCollections.stampAnnotations.push(importedAnnotations.stampAnnotations[parseInt(i.toString(), 10)]);\n }\n }\n if (importedAnnotations.stickyNotesAnnotation && importedAnnotations.stickyNotesAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.stickyNotesAnnotation.length; i++) {\n pageCollections.stickyNotesAnnotation.push(importedAnnotations.stickyNotesAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (importedAnnotations.freeTextAnnotation && importedAnnotations.freeTextAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.freeTextAnnotation.length; i++) {\n pageCollections.freeTextAnnotation.push(importedAnnotations.freeTextAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (importedAnnotations.signatureAnnotation && importedAnnotations.signatureAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.signatureAnnotation.length; i++) {\n pageCollections.signatureAnnotation.push(importedAnnotations.signatureAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (importedAnnotations.signatureInkAnnotation && importedAnnotations.signatureInkAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.signatureInkAnnotation.length; i++) {\n pageCollections.signatureInkAnnotation.push(importedAnnotations.signatureInkAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n this.documentAnnotationCollections[parseInt(pageNumber.toString(), 10)] = pageCollections;\n }\n }\n };\n /**\n * @param pageIndex\n * @param pageCollections\n * @param pageIndex\n * @param pageCollections\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkDocumentCollectionData = function (pageIndex, pageCollections) {\n // eslint-disable-next-line\n var importPageCollections;\n if (pageCollections) {\n importPageCollections = pageCollections;\n }\n else if (this.documentAnnotationCollections) {\n // eslint-disable-next-line\n var documetCollections = this.documentAnnotationCollections[pageIndex];\n if (documetCollections) {\n importPageCollections = cloneObject(documetCollections);\n }\n }\n if (importPageCollections) {\n // eslint-disable-next-line\n var textMarkupObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n // eslint-disable-next-line\n var shapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n // eslint-disable-next-line\n var measureShapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n // eslint-disable-next-line\n var stampObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n // eslint-disable-next-line\n var stickyObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n // eslint-disable-next-line\n var freeTextObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n // eslint-disable-next-line\n var inkObject = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n // eslint-disable-next-line\n var signatureObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n if (this.isStorageExceed) {\n textMarkupObject = this.annotationStorage[this.documentId + '_annotations_textMarkup'];\n shapeObject = this.annotationStorage[this.documentId + '_annotations_shape'];\n measureShapeObject = this.annotationStorage[this.documentId + '_annotations_shape_measure'];\n stampObject = this.annotationStorage[this.documentId + '_annotations_stamp'];\n stickyObject = this.annotationStorage[this.documentId + '_annotations_sticky'];\n freeTextObject = this.annotationStorage[this.documentId + '_annotations_freetext'];\n inkObject = this.annotationStorage[this.documentId + '_annotations_ink'];\n signatureObject = this.annotationStorage[this.documentId + '_annotations_sign'];\n }\n if (importPageCollections.textMarkupAnnotation && importPageCollections.textMarkupAnnotation.length !== 0) {\n if (textMarkupObject) {\n var annotationObject = JSON.parse(textMarkupObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.textMarkupAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.textMarkupAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.shapeAnnotation && importPageCollections.shapeAnnotation.length !== 0) {\n if (shapeObject) {\n var annotationObject = JSON.parse(shapeObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.shapeAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.shapeAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.measureShapeAnnotation && importPageCollections.measureShapeAnnotation.length !== 0) {\n if (measureShapeObject) {\n var annotationObject = JSON.parse(measureShapeObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.measureShapeAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.measureShapeAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.stampAnnotations && importPageCollections.stampAnnotations.length !== 0) {\n if (stampObject) {\n var annotationObject = JSON.parse(stampObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.stampAnnotations = this.findImportedAnnotations(annotationObject, importPageCollections.stampAnnotations, pageIndex);\n }\n }\n }\n if (importPageCollections.stickyNotesAnnotation && importPageCollections.stickyNotesAnnotation.length !== 0) {\n if (stickyObject) {\n var annotationObject = JSON.parse(stickyObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.stickyNotesAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.stickyNotesAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.freeTextAnnotation && importPageCollections.freeTextAnnotation.length !== 0) {\n if (freeTextObject) {\n var annotationObject = JSON.parse(freeTextObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.freeTextAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.freeTextAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.signatureInkAnnotation && importPageCollections.signatureInkAnnotation.length !== 0) {\n if (inkObject) {\n var annotationObject = JSON.parse(inkObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.signatureInkAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.signatureInkAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.signatureAnnotation && importPageCollections.signatureAnnotation.length !== 0) {\n if (signatureObject) {\n var annotationObject = JSON.parse(inkObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.signatureAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.signatureAnnotation, pageIndex);\n }\n }\n }\n return importPageCollections;\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.findImportedAnnotations = function (annotationCollection, importAnnotations, pageNumber) {\n // eslint-disable-next-line\n var pageCollections = null;\n for (var a = 0; a < annotationCollection.length; a++) {\n if (annotationCollection[parseInt(a.toString(), 10)].pageIndex === pageNumber) {\n pageCollections = annotationCollection[parseInt(a.toString(), 10)].annotations;\n }\n }\n if (pageCollections) {\n for (var i = 0; i < pageCollections.length; i++) {\n for (var j = 0; j < importAnnotations.length; j++) {\n if (pageCollections[parseInt(i.toString(), 10)].annotName === importAnnotations[parseInt(j.toString(), 10)].AnnotName) {\n importAnnotations.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n pageCollections = null;\n return importAnnotations;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.drawPageAnnotations = function (annotation, pageIndex, isNewlyAdded) {\n if (isNewlyAdded) {\n annotation = annotation[parseInt(pageIndex.toString(), 10)];\n }\n // When utilising the addAnnotation API, the annotationOrder object is not available; thus, the following code is used to put the annotation object into the annotationOrder.\n if (annotation && !(annotation.annotationOrder)) {\n var annotationTypes = ['freeTextAnnotation', 'measureShapeAnnotation', 'shapeAnnotation', 'signatureAnnotation', 'signatureInkAnnotation', 'stampAnnotations', 'stickyNotesAnnotation', 'textMarkupAnnotation'];\n // eslint-disable-next-line\n var foundAnnotationType = annotationTypes.find(function (type) {\n if (annotation[\"\" + type] && annotation[\"\" + type].length !== 0) {\n return annotation[\"\" + type];\n }\n });\n if (foundAnnotationType) {\n // eslint-disable-next-line\n annotation.annotationOrder = annotation[foundAnnotationType];\n }\n }\n if (annotation) {\n var annotationOrderCollection = annotation.annotationOrder;\n var annotationData = [];\n var isRefreshRequired = true;\n for (var index = 0; index < annotationOrderCollection.length; index++) {\n var annotationName = annotationOrderCollection[parseInt(index.toString(), 10)].AnnotType ? annotationOrderCollection[parseInt(index.toString(), 10)].AnnotType : annotationOrderCollection[parseInt(index.toString(), 10)].AnnotationType;\n annotationData.push(annotationOrderCollection[parseInt(index.toString(), 10)]);\n var storeObject = void 0;\n var annotObject = void 0;\n switch (annotationName) {\n case 'textMarkup':\n isRefreshRequired = false;\n storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_textMarkup'];\n }\n if (storeObject) {\n annotObject = JSON.parse(storeObject);\n if (annotObject) {\n annotationData = this.checkAnnotationCollections(annotObject, annotationData, pageIndex);\n }\n }\n annotation.textMarkupAnnotation = this.checkAnnotationCommentsCollections(annotation.textMarkupAnnotation, pageIndex);\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, null, null, annotationData, null, true);\n break;\n case 'shape':\n isRefreshRequired = false;\n storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_shape'];\n }\n if (storeObject) {\n annotObject = JSON.parse(storeObject);\n annotationData = this.checkAnnotationCollections(annotObject, annotationData, pageIndex);\n }\n annotation.shapeAnnotation = this.checkAnnotationCommentsCollections(annotation.shapeAnnotation, pageIndex);\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, annotationData, null, null, null, true);\n break;\n case 'shape_measure':\n isRefreshRequired = false;\n storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_shape_measure'];\n }\n if (storeObject) {\n annotObject = JSON.parse(storeObject);\n annotationData = this.checkAnnotationCollections(annotObject, annotationData, pageIndex);\n }\n annotation.measureShapeAnnotation = this.checkAnnotationCommentsCollections(annotation.measureShapeAnnotation, pageIndex);\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, null, annotationData, null, null, true);\n break;\n case 'stamp':\n storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_stamp'];\n }\n if (storeObject) {\n annotObject = JSON.parse(storeObject);\n annotationData = this.checkAnnotationCollections(annotObject, annotationData, pageIndex);\n }\n annotation.stampAnnotations = this.checkAnnotationCommentsCollections(annotation.stampAnnotations, pageIndex);\n this.pdfViewer.annotationModule.stampAnnotationModule.renderStampAnnotations(annotationData, pageIndex, null, true);\n break;\n case 'Text Box':\n case 'freeText':\n storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_freetext'];\n }\n if (storeObject) {\n annotObject = JSON.parse(storeObject);\n annotationData = this.checkAnnotationCollections(annotObject, annotationData, pageIndex);\n }\n annotation.freeTextAnnotation = this.checkAnnotationCommentsCollections(annotation.freeTextAnnotation, pageIndex);\n this.pdfViewer.annotationModule.freeTextAnnotationModule.renderFreeTextAnnotations(annotationData, pageIndex, true);\n break;\n case 'sticky':\n storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_sticky'];\n }\n if (storeObject) {\n annotObject = JSON.parse(storeObject);\n annotationData = this.checkAnnotationCollections(annotObject, annotationData, pageIndex);\n }\n annotation.stickyNotesAnnotation = this.checkAnnotationCommentsCollections(annotation.stickyNotesAnnotation, pageIndex);\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderStickyNotesAnnotations(annotationData, pageIndex);\n break;\n case 'signature':\n storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n annotObject = JSON.parse(storeObject);\n if (annotObject) {\n annotation.signatureAnnotation = this.checkSignatureCollections(annotObject, annotationData, pageIndex);\n }\n this.signatureModule.renderExistingSignature(annotationData, pageIndex, true);\n break;\n case 'Ink':\n case 'ink':\n storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_ink'];\n }\n if (storeObject) {\n annotObject = JSON.parse(storeObject);\n annotationData = this.checkAnnotationCollections(annotObject, annotationData, pageIndex);\n }\n annotation.signatureInkAnnotation = this.checkAnnotationCommentsCollections(annotation.signatureInkAnnotation, pageIndex);\n this.pdfViewer.annotationModule.inkAnnotationModule.renderExistingInkSignature(annotationData, pageIndex, true);\n break;\n default:\n break;\n }\n annotationData = [];\n }\n if (isRefreshRequired) {\n var canvas = this.getElement('_annotationCanvas_' + pageIndex);\n this.pdfViewer.drawing.refreshCanvasDiagramLayer(canvas, pageIndex);\n }\n }\n ;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkSignatureCollections = function (annotationCollection, annotation, pageNumber) {\n // eslint-disable-next-line\n var pageCollections = null;\n for (var a = 0; a < annotationCollection.length; a++) {\n if (annotationCollection[parseInt(a.toString(), 10)].pageIndex === pageNumber) {\n pageCollections = annotationCollection[parseInt(a.toString(), 10)].annotations;\n }\n }\n if (pageCollections) {\n for (var i = 0; i < pageCollections.length; i++) {\n for (var j = 0; j < annotation.length; j++) {\n if (pageCollections[parseInt(i.toString(), 10)].signatureName === annotation[parseInt(j.toString(), 10)].SignatureName) {\n annotation.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n pageCollections = null;\n return annotation;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkAnnotationCollections = function (annotationCollection, annotation, pageNumber) {\n // eslint-disable-next-line\n var pageCollections = null;\n for (var a = 0; a < annotationCollection.length; a++) {\n if (annotationCollection[parseInt(a.toString(), 10)].pageIndex === pageNumber) {\n pageCollections = annotationCollection[parseInt(a.toString(), 10)].annotations;\n }\n }\n if (pageCollections) {\n for (var i = 0; i < pageCollections.length; i++) {\n for (var j = 0; j < annotation.length; j++) {\n if (pageCollections[parseInt(i.toString(), 10)].annotName === annotation[parseInt(j.toString(), 10)].AnnotName) {\n annotation.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n pageCollections = null;\n return annotation;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkAnnotationCommentsCollections = function (annotation, pageNumber) {\n if (this.annotationComments) {\n // eslint-disable-next-line\n var annotationCollections = this.annotationComments[pageNumber];\n annotationCollections = this.selectAnnotationCollections(annotationCollections);\n if (annotationCollections) {\n for (var i = 0; i < annotationCollections.length; i++) {\n for (var j = 0; j < annotation.length; j++) {\n if (annotationCollections[parseInt(i.toString(), 10)].AnnotName === annotation[parseInt(j.toString(), 10)].AnnotName) {\n annotation.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n annotationCollections = null;\n }\n return annotation;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.selectAnnotationCollections = function (pageAnnotations) {\n // eslint-disable-next-line\n var pageCollections = [];\n if (pageAnnotations) {\n if (pageAnnotations.textMarkupAnnotation && pageAnnotations.textMarkupAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.textMarkupAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.textMarkupAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (pageAnnotations.shapeAnnotation && pageAnnotations.shapeAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.shapeAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.shapeAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (pageAnnotations.measureShapeAnnotation && pageAnnotations.measureShapeAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.measureShapeAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.measureShapeAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (pageAnnotations.stampAnnotations && pageAnnotations.stampAnnotations.length !== 0) {\n for (var i = 0; i < pageAnnotations.stampAnnotations.length; i++) {\n pageCollections.push(pageAnnotations.stampAnnotations[parseInt(i.toString(), 10)]);\n }\n }\n if (pageAnnotations.stickyNotesAnnotation && pageAnnotations.stickyNotesAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.stickyNotesAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.stickyNotesAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (pageAnnotations.freeTextAnnotation && pageAnnotations.freeTextAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.freeTextAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.freeTextAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (pageAnnotations.signatureInkAnnotation && pageAnnotations.signatureInkAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.signatureInkAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.signatureInkAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n }\n return pageCollections;\n };\n PdfViewerBase.prototype.saveImportedAnnotations = function () {\n // eslint-disable-next-line\n var textMarkupObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n // eslint-disable-next-line\n var shapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n // eslint-disable-next-line\n var measureShapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n // eslint-disable-next-line\n var stampObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n // eslint-disable-next-line\n var stickyObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n // eslint-disable-next-line\n var freeTextObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n // eslint-disable-next-line\n var inkObject = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n // eslint-disable-next-line\n var signatureObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n if (this.isStorageExceed) {\n textMarkupObject = this.annotationStorage[this.documentId + '_annotations_textMarkup'];\n shapeObject = this.annotationStorage[this.documentId + '_annotations_shape'];\n measureShapeObject = this.annotationStorage[this.documentId + '_annotations_shape_measure'];\n stampObject = this.annotationStorage[this.documentId + '_annotations_stamp'];\n stickyObject = this.annotationStorage[this.documentId + '_annotations_sticky'];\n freeTextObject = this.annotationStorage[this.documentId + '_annotations_freetext'];\n inkObject = this.annotationStorage[this.documentId + '_annotations_ink'];\n signatureObject = this.annotationStorage[this.documentId + '_annotations_sign'];\n }\n // eslint-disable-next-line max-len\n this.downloadCollections = { textMarkupObject: textMarkupObject, shapeObject: shapeObject, measureShapeObject: measureShapeObject, stampObject: stampObject, stickyObject: stickyObject, freeTextObject: freeTextObject, inkObject: inkObject, signatureObject: signatureObject };\n if (this.documentAnnotationCollections) {\n for (var i = 0; i < this.pageCount; i++) {\n if (this.documentAnnotationCollections[parseInt(i.toString(), 10)]) {\n // eslint-disable-next-line\n var pageCollections = cloneObject(this.documentAnnotationCollections[i]);\n pageCollections = this.checkDocumentCollectionData(i, pageCollections);\n this.savePageAnnotations(pageCollections, i);\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.savePageAnnotations = function (annotation, pageIndex) {\n if (annotation.textMarkupAnnotation.length !== 0) {\n for (var s = 0; s < annotation.textMarkupAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(this.pdfViewer.annotationModule.textMarkupAnnotationModule)) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.saveImportedTextMarkupAnnotations(annotation.textMarkupAnnotation[parseInt(s.toString(), 10)], pageIndex);\n }\n }\n }\n if (annotation.shapeAnnotation.length !== 0) {\n for (var s = 0; s < annotation.shapeAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.shapeAnnotationModule.saveImportedShapeAnnotations(annotation.shapeAnnotation[parseInt(s.toString(), 10)], pageIndex);\n }\n }\n if (annotation.measureShapeAnnotation.length !== 0) {\n for (var s = 0; s < annotation.measureShapeAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.measureAnnotationModule.saveImportedMeasureAnnotations(annotation.measureShapeAnnotation[parseInt(s.toString(), 10)], pageIndex);\n }\n }\n if (annotation.stampAnnotations.length !== 0) {\n for (var s = 0; s < annotation.stampAnnotations.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.saveImportedStampAnnotations(annotation.stampAnnotations[parseInt(s.toString(), 10)], pageIndex);\n }\n }\n if (annotation.stickyNotesAnnotation.length !== 0) {\n for (var s = 0; s < annotation.stickyNotesAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.saveImportedStickyNotesAnnotations(annotation.stickyNotesAnnotation[parseInt(s.toString(), 10)], pageIndex);\n }\n }\n if (annotation.freeTextAnnotation.length !== 0) {\n for (var s = 0; s < annotation.freeTextAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.freeTextAnnotationModule.saveImportedFreeTextAnnotations(annotation.freeTextAnnotation[parseInt(s.toString(), 10)], pageIndex);\n }\n }\n if (annotation.signatureInkAnnotation.length !== 0) {\n for (var s = 0; s < annotation.signatureInkAnnotation.length; s++) {\n this.pdfViewer.annotationModule.inkAnnotationModule.saveImportedInkAnnotation(annotation.signatureInkAnnotation[parseInt(s.toString(), 10)], pageIndex);\n }\n }\n };\n PdfViewerBase.prototype.updateDocumentAnnotationCollections = function () {\n window.sessionStorage.removeItem(this.documentId + '_annotations_textMarkup');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape_measure');\n window.sessionStorage.removeItem(this.documentId + '_annotations_stamp');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sticky');\n window.sessionStorage.removeItem(this.documentId + '_annotations_freetext');\n window.sessionStorage.removeItem(this.documentId + '_annotations_ink');\n if (this.downloadCollections) {\n if (this.isStorageExceed) {\n this.annotationStorage[this.documentId + '_annotations_textMarkup'] = this.downloadCollections.textMarkupObject;\n this.annotationStorage[this.documentId + '_annotations_shape'] = this.downloadCollections.shapeObject;\n this.annotationStorage[this.documentId + '_annotations_shape_measure'] = this.downloadCollections.measureShapeObject;\n this.annotationStorage[this.documentId + '_annotations_stamp'] = this.downloadCollections.stampObject;\n this.annotationStorage[this.documentId + '_annotations_sticky'] = this.downloadCollections.stickyObject;\n this.annotationStorage[this.documentId + '_annotations_freetext'] = this.downloadCollections.freeTextObject;\n this.annotationStorage[this.documentId + '_annotations_ink'] = this.downloadCollections.inkObject;\n }\n else {\n if (this.downloadCollections.textMarkupObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_textMarkup', this.downloadCollections.textMarkupObject);\n }\n if (this.downloadCollections.shapeObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_shape', this.downloadCollections.shapeObject);\n }\n if (this.downloadCollections.measureShapeObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_shape_measure', this.downloadCollections.measureShapeObject);\n }\n if (this.downloadCollections.stampObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_stamp', this.downloadCollections.stampObject);\n }\n if (this.downloadCollections.stickyObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_sticky', this.downloadCollections.stickyObject);\n }\n if (this.downloadCollections.freeTextObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_freetext', this.downloadCollections.freeTextObject);\n }\n if (this.downloadCollections.inkObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_ink', this.downloadCollections.inkObject);\n }\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createAnnotationJsonData = function () {\n // eslint-disable-next-line\n var annotationCollection = {};\n var textMarkupAnnotationCollection;\n var shapeAnnotations;\n var calibrateAnnotations;\n var stampAnnotationCollection;\n var stickyAnnotationCollection;\n var freeTextAnnotationCollection;\n var signaturCollection;\n var signaturInkCollection;\n this.saveImportedAnnotations();\n if (this.isTextMarkupAnnotationModule()) {\n this.isJsonExported = true;\n // eslint-disable-next-line max-len\n textMarkupAnnotationCollection = this.pdfViewer.annotationModule.textMarkupAnnotationModule.saveTextMarkupAnnotations();\n }\n if (this.isShapeAnnotationModule()) {\n this.isJsonExported = true;\n // eslint-disable-next-line max-len\n shapeAnnotations = this.pdfViewer.annotationModule.shapeAnnotationModule.saveShapeAnnotations();\n }\n if (this.isCalibrateAnnotationModule()) {\n this.isJsonExported = true;\n // eslint-disable-next-line max-len\n calibrateAnnotations = this.pdfViewer.annotationModule.measureAnnotationModule.saveMeasureShapeAnnotations();\n }\n if (this.isStampAnnotationModule()) {\n // eslint-disable-next-line max-len\n stampAnnotationCollection = this.pdfViewer.annotationModule.stampAnnotationModule.saveStampAnnotations();\n }\n if (this.isCommentAnnotationModule()) {\n // eslint-disable-next-line max-len\n stickyAnnotationCollection = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.saveStickyAnnotations();\n }\n if (this.isFreeTextAnnotationModule()) {\n // eslint-disable-next-line max-len\n freeTextAnnotationCollection = this.pdfViewer.annotationModule.freeTextAnnotationModule.saveFreeTextAnnotations();\n }\n if (this.isInkAnnotationModule()) {\n // eslint-disable-next-line\n signaturInkCollection = this.pdfViewer.annotationModule.inkAnnotationModule.saveInkSignature();\n }\n if (this.pdfViewer.isSignatureEditable) {\n // eslint-disable-next-line\n signaturCollection = this.signatureModule.saveSignature();\n }\n else {\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pageCount; j++) {\n annotations[parseInt(j.toString(), 10)] = [];\n }\n signaturCollection = JSON.stringify(annotations);\n }\n for (var s = 0; s < this.pageCount; s++) {\n // eslint-disable-next-line max-len\n var annotation = {\n textMarkupAnnotation: JSON.parse(textMarkupAnnotationCollection)[parseInt(s.toString(), 10)], shapeAnnotation: JSON.parse(shapeAnnotations)[parseInt(s.toString(), 10)],\n measureShapeAnnotation: JSON.parse(calibrateAnnotations)[parseInt(s.toString(), 10)], stampAnnotations: JSON.parse(stampAnnotationCollection)[parseInt(s.toString(), 10)],\n // eslint-disable-next-line max-len\n stickyNotesAnnotation: JSON.parse(stickyAnnotationCollection)[parseInt(s.toString(), 10)], freeTextAnnotation: JSON.parse(freeTextAnnotationCollection)[parseInt(s.toString(), 10)], signatureAnnotation: JSON.parse(signaturCollection)[parseInt(s.toString(), 10)], signatureInkAnnotation: JSON.parse(signaturInkCollection)[parseInt(s.toString(), 10)]\n };\n annotationCollection[parseInt(s.toString(), 10)] = annotation;\n }\n return JSON.stringify(annotationCollection);\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.combineImportedData = function (excistingImportAnnotation, newlyImportAnnotation) {\n for (var i = 0; i < this.pageCount; i++) {\n if (newlyImportAnnotation[parseInt(i.toString(), 10)]) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)]) {\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation && newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation.length !== 0) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation = this.checkImportedData(excistingImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation, newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation, i);\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation = excistingImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation.concat(newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation);\n }\n }\n else {\n excistingImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation = newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation;\n }\n }\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation && newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation.length !== 0) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation = this.checkImportedData(excistingImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation, newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation, i);\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation = excistingImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation.concat(newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation);\n }\n }\n else {\n excistingImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation = newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation;\n }\n }\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation && newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation.length !== 0) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation = this.checkImportedData(excistingImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation, newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation, i);\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation = excistingImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation.concat(newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation);\n }\n }\n else {\n excistingImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation = newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation;\n }\n }\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations && newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations.length !== 0) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations = this.checkImportedData(excistingImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations, newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations, i);\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations = excistingImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations.concat(newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations);\n }\n }\n else {\n excistingImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations = newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations;\n }\n }\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation && newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation.length !== 0) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation = this.checkImportedData(excistingImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation, newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation, i);\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation = excistingImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation.concat(newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation);\n }\n }\n else {\n excistingImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation = newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation;\n }\n }\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation && newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation.length !== 0) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation = this.checkImportedData(excistingImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation, newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation, i);\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation = excistingImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation.concat(newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation);\n }\n }\n else {\n excistingImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation = newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation;\n }\n }\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation && newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation.length !== 0) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation = this.checkImportedData(excistingImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation, newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation, i);\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation = excistingImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation.concat(newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation);\n }\n }\n else {\n excistingImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation = newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation;\n }\n }\n }\n else {\n // eslint-disable-next-line max-len\n var annotation = {\n // eslint-disable-next-line max-len\n textMarkupAnnotation: newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation, shapeAnnotation: newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation,\n // eslint-disable-next-line max-len\n measureShapeAnnotation: newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation, stampAnnotations: newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations,\n // eslint-disable-next-line max-len\n stickyNotesAnnotation: newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation, freeTextAnnotation: newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation,\n signatureInkAnnotation: newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation\n };\n excistingImportAnnotation[parseInt(i.toString(), 10)] = annotation;\n }\n }\n }\n return excistingImportAnnotation;\n };\n /**\n * @private\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.updateExportItem = function () {\n // eslint-disable-next-line\n var shapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n // eslint-disable-next-line\n var measureObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n // eslint-disable-next-line\n var stampObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n // eslint-disable-next-line\n var stickyObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n // eslint-disable-next-line\n var textMarkupObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n // eslint-disable-next-line\n var freeTextObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n var isSignatureEditable = false;\n // eslint-disable-next-line\n var inkAnnotationObjct = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n if (this.pdfViewer.isSignatureEditable) {\n // eslint-disable-next-line\n var signatureObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n if (signatureObject) {\n isSignatureEditable = true;\n }\n }\n // eslint-disable-next-line max-len\n if (shapeObject || measureObject || stampObject || stickyObject || textMarkupObject || freeTextObject || this.isImportAction || this.isStorageExceed || isSignatureEditable || inkAnnotationObjct) {\n return true;\n }\n else {\n return false;\n }\n };\n PdfViewerBase.prototype.isFreeTextAnnotation = function (annotations) {\n var resut = false;\n if (annotations && annotations.length > 0) {\n resut = annotations.some(function (s) { return s.shapeAnnotationType === 'FreeText' && s.subject === 'Text Box'; });\n }\n return resut;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkImportedData = function (existingCollection, newCollection, pageIndex) {\n for (var i = 0; i < existingCollection.length; i++) {\n for (var j = 0; j < newCollection.length; j++) {\n if (existingCollection[parseInt(i.toString(), 10)].AnnotName === newCollection[parseInt(j.toString(), 10)].AnnotName) {\n var len = this.pdfViewer.annotationCollection.length;\n for (var x = 0; x < len; x++) {\n if (this.pdfViewer.annotationCollection[parseInt(x.toString(), 10)].annotationId === newCollection[parseInt(j.toString(), 10)].AnnotName) {\n // To update the comment panel values in a collections while importing the annotation with the same name. (EJ2-62092)\n this.pdfViewer.annotationCollection[parseInt(x.toString(), 10)].comments = this.pdfViewer.annotationModule.getAnnotationComments(newCollection[parseInt(j.toString(), 10)].Comments, newCollection[parseInt(j.toString(), 10)], newCollection[parseInt(j.toString(), 10)].Author);\n this.pdfViewer.annotationCollection[parseInt(x.toString(), 10)].review = { state: newCollection[parseInt(j.toString(), 10)].State, stateModel: newCollection[parseInt(j.toString(), 10)].StateModel, modifiedDate: newCollection[parseInt(j.toString(), 10)].ModifiedDate, author: newCollection[parseInt(j.toString(), 10)].Author };\n this.pdfViewer.annotationCollection[parseInt(x.toString(), 10)].note = newCollection[parseInt(j.toString(), 10)].Note;\n var annot = this.pdfViewer.annotationCollection[parseInt(x.toString(), 10)];\n if (existingCollection[parseInt(i.toString(), 10)].AnnotType === \"shape\" && this.pdfViewer.annotationModule.shapeAnnotationModule) {\n this.documentAnnotationCollections[parseInt(pageIndex.toString(), 10)].shapeAnnotation[parseInt(i.toString(), 10)] = newCollection[parseInt(j.toString(), 10)];\n this.updateAnnotationsInSessionStorage(newCollection[parseInt(j.toString(), 10)], annot, \"_annotations_shape\");\n }\n else if (existingCollection[parseInt(i.toString(), 10)].AnnotType === \"textMarkup\" && this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n this.documentAnnotationCollections[parseInt(pageIndex.toString(), 10)].textMarkupAnnotation[parseInt(i.toString(), 10)] = newCollection[parseInt(j.toString(), 10)];\n this.updateAnnotationsInSessionStorage(newCollection[parseInt(j.toString(), 10)], annot, \"_annotations_textMarkup\");\n }\n else if (existingCollection[parseInt(i.toString(), 10)].AnnotType === \"shape_measure\" && this.pdfViewer.annotationModule.measureAnnotationModule) {\n this.documentAnnotationCollections[parseInt(pageIndex.toString(), 10)].measureShapeAnnotation[parseInt(i.toString(), 10)] = newCollection[parseInt(j.toString(), 10)];\n this.updateAnnotationsInSessionStorage(newCollection[parseInt(j.toString(), 10)], annot, \"_annotations_shape_measure\");\n }\n else if (existingCollection[parseInt(i.toString(), 10)].AnnotType === \"stamp\" && this.pdfViewer.annotationModule.stampAnnotationModule) {\n this.documentAnnotationCollections[parseInt(pageIndex.toString(), 10)].stampAnnotations[parseInt(i.toString(), 10)] = newCollection[parseInt(j.toString(), 10)];\n this.updateAnnotationsInSessionStorage(newCollection[parseInt(j.toString(), 10)], annot, \"_annotations_stamp\");\n }\n else if (existingCollection[parseInt(i.toString(), 10)].AnnotType === \"freeText\" && this.pdfViewer.annotationModule.freeTextAnnotationModule) {\n this.documentAnnotationCollections[parseInt(pageIndex.toString(), 10)].freeTextAnnotation[parseInt(i.toString(), 10)] = newCollection[parseInt(j.toString(), 10)];\n this.updateAnnotationsInSessionStorage(newCollection[parseInt(j.toString(), 10)], annot, \"_annotations_freetext\");\n }\n else if (existingCollection[parseInt(i.toString(), 10)].AnnotType === \"ink\" && this.pdfViewer.annotationModule.inkAnnotationModule) {\n this.documentAnnotationCollections[parseInt(pageIndex.toString(), 10)].signatureInkAnnotation[parseInt(i.toString(), 10)] = newCollection[parseInt(j.toString(), 10)];\n this.updateAnnotationsInSessionStorage(newCollection[parseInt(j.toString(), 10)], annot, \"_annotations_ink\");\n }\n else if (existingCollection[parseInt(i.toString(), 10)].AnnotType === \"sticky\") {\n this.documentAnnotationCollections[parseInt(pageIndex.toString(), 10)].stickyNotesAnnotation[parseInt(i.toString(), 10)] = newCollection[parseInt(j.toString(), 10)];\n this.updateAnnotationsInSessionStorage(newCollection[parseInt(j.toString(), 10)], annot, \"_annotations_sticky\");\n }\n break;\n }\n }\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.createCommentControlPanel(newCollection[parseInt(j.toString(), 10)], (pageIndex + 1), null, null, true);\n newCollection.splice(j, 1);\n j = j - 1;\n }\n }\n }\n if (this.annotationComments) {\n // eslint-disable-next-line\n var annotationCollections = this.annotationComments[pageIndex];\n annotationCollections = this.selectAnnotationCollections(annotationCollections);\n if (annotationCollections) {\n for (var i = 0; i < annotationCollections.length; i++) {\n for (var j = 0; j < newCollection.length; j++) {\n if (annotationCollections[parseInt(i.toString(), 10)].AnnotName === newCollection[parseInt(j.toString(), 10)].AnnotName) {\n newCollection.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n }\n return newCollection;\n };\n // To update the comment panel values in a session storage while importing the annotation with the same name. (EJ2-62092)\n PdfViewerBase.prototype.updateAnnotationsInSessionStorage = function (newCollection, annot, type) {\n var annotation = window.sessionStorage.getItem(this.documentId + type);\n var annotObject = JSON.parse(annotation);\n if (annotObject) {\n for (var b = 0; b < annotObject.length; b++) {\n if (annotObject[parseInt(b.toString(), 10)].annotations) {\n for (var z = 0; z < annotObject[parseInt(b.toString(), 10)].annotations.length; z++) {\n if (annotObject[parseInt(b.toString(), 10)].annotations[parseInt(z.toString(), 10)].annotName === newCollection.AnnotName) {\n annotObject[parseInt(b.toString(), 10)].annotations[parseInt(z.toString(), 10)].comments = annot.comments;\n annotObject[parseInt(b.toString(), 10)].annotations[parseInt(z.toString(), 10)].review = annot.review;\n annotObject[parseInt(b.toString(), 10)].annotations[parseInt(z.toString(), 10)].note = annot.note;\n break;\n }\n }\n }\n }\n window.sessionStorage.setItem(this.documentId + type, JSON.stringify(annotObject));\n }\n };\n /**\n * @param points\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkAnnotationWidth = function (points) {\n var width = 0;\n var height = 0;\n var minWidth;\n var maxWidth;\n var minHeight;\n var maxHeight;\n for (var i = 0; i < points.length; i++) {\n if (!minWidth) {\n minWidth = points[parseInt(i.toString(), 10)].x;\n maxWidth = points[parseInt(i.toString(), 10)].x;\n minHeight = points[parseInt(i.toString(), 10)].y;\n maxHeight = points[parseInt(i.toString(), 10)].y;\n }\n else {\n if (minWidth > points[parseInt(i.toString(), 10)].x) {\n minWidth = points[parseInt(i.toString(), 10)].x;\n }\n else if (maxWidth < points[parseInt(i.toString(), 10)].x) {\n maxWidth = points[parseInt(i.toString(), 10)].x;\n }\n if (minHeight > points[parseInt(i.toString(), 10)].y) {\n minHeight = points[parseInt(i.toString(), 10)].y;\n }\n else if (maxHeight < points[parseInt(i.toString(), 10)].y) {\n maxHeight = points[parseInt(i.toString(), 10)].y;\n }\n }\n }\n width = maxWidth - minWidth;\n height = maxHeight - minHeight;\n return { width: width, height: height };\n };\n PdfViewerBase.prototype.deleteAnnotations = function () {\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotations = [];\n this.pdfViewer.zIndexTable = [];\n this.pdfViewer.annotationCollection = [];\n this.pdfViewer.signatureCollection = [];\n // eslint-disable-next-line\n var annotationCollection = this.createAnnotationsCollection();\n this.annotationComments = annotationCollection;\n this.documentAnnotationCollections = annotationCollection;\n this.annotationRenderredList = [];\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape_measure');\n window.sessionStorage.removeItem(this.documentId + '_annotations_stamp');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sticky');\n window.sessionStorage.removeItem(this.documentId + '_annotations_textMarkup');\n window.sessionStorage.removeItem(this.documentId + '_annotations_freetext');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sign');\n window.sessionStorage.removeItem(this.documentId + '_annotations_ink');\n for (var i = 0; i < this.pageCount; i++) {\n this.pdfViewer.annotationModule.renderAnnotations(i, null, null, null);\n this.pdfViewer.renderDrawing(undefined, i);\n this.pdfViewer.clearSelection(i);\n var accordionContent = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + (i + 1));\n if (accordionContent) {\n accordionContent.remove();\n }\n // eslint-disable-next-line max-len\n var accordionContentContainer = document.getElementById(this.pdfViewer.element.id + '_accordionContentContainer');\n if (accordionContentContainer) {\n if (accordionContentContainer.childElementCount === 0) {\n accordionContentContainer.style.display = 'none';\n if (document.getElementById(this.pdfViewer.element.id + '_commentsPanelText')) {\n // eslint-disable-next-line max-len\n this.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], false);\n document.getElementById(this.pdfViewer.element.id + '_commentsPanelText').style.display = 'block';\n }\n }\n }\n }\n this.isImportedAnnotation = false;\n this.isImportAction = false;\n this.importedAnnotation = [];\n this.annotationPageList = [];\n this.pdfViewer.annotationModule.freeTextAnnotationModule.freeTextPageNumbers = [];\n this.pdfViewer.annotationModule.stampAnnotationModule.stampPageNumber = [];\n this.pdfViewer.annotation.inkAnnotationModule.inkAnnotationindex = [];\n this.isAnnotationCollectionRemoved = true;\n }\n };\n /**\n * @param pageNumber\n * @param isObject\n * @param pageNumber\n * @param isObject\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createAnnotationsCollection = function (pageNumber, isObject) {\n // eslint-disable-next-line\n var annotationCollectionList = [];\n if (!isObject) {\n for (var i = 0; i < this.pageCount; i++) {\n var annotation = {\n // eslint-disable-next-line max-len\n textMarkupAnnotation: [], shapeAnnotation: [], measureShapeAnnotation: [], stampAnnotations: [], stickyNotesAnnotation: [], freeTextAnnotation: [], signatureAnnotation: [], signatureInkAnnotation: []\n };\n annotationCollectionList.push(annotation);\n }\n }\n else {\n annotationCollectionList = {};\n var annotation = {\n // eslint-disable-next-line max-len\n textMarkupAnnotation: [], shapeAnnotation: [], measureShapeAnnotation: [], stampAnnotations: [], stickyNotesAnnotation: [], freeTextAnnotation: [], signatureAnnotation: [], signatureInkAnnotation: []\n };\n annotationCollectionList[parseInt(pageNumber.toString(), 10)] = annotation;\n }\n return annotationCollectionList;\n };\n /**\n * @param importAnnotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.addAnnotation = function (importAnnotation) {\n // eslint-disable-next-line\n var pdfAnnotation = {};\n // eslint-disable-next-line\n var documentCollections;\n if (importAnnotation) {\n var isAnnotationObject = false;\n var annotationCount = 1;\n if (importAnnotation.shapeAnnotationType || importAnnotation.author) {\n isAnnotationObject = true;\n documentCollections = this.createAnnotationsCollection(importAnnotation.pageNumber, true);\n }\n else {\n if (importAnnotation.length) {\n annotationCount = importAnnotation.length;\n documentCollections = this.createAnnotationsCollection();\n }\n else {\n isAnnotationObject = true;\n documentCollections = this.createAnnotationsCollection(importAnnotation.pageNumber, true);\n }\n }\n for (var a = 0; a < annotationCount; a++) {\n // eslint-disable-next-line\n var annotation = void 0;\n if (isAnnotationObject) {\n annotation = importAnnotation;\n }\n else {\n annotation = importAnnotation[parseInt(a.toString(), 10)];\n }\n // eslint-disable-next-line\n var newAnnotation = {};\n newAnnotation.ShapeAnnotationType = annotation.shapeAnnotationType;\n newAnnotation.AnnotationAddMode = annotation.annotationAddMode;\n newAnnotation.Author = annotation.author;\n newAnnotation.AnnotationSelectorSettings = annotation.annotationSelectorSettings;\n newAnnotation.AnnotationSettings = annotation.annotationSettings;\n newAnnotation.PageNumber = annotation.pageNumber;\n newAnnotation.ModifiedDate = annotation.modifiedDate;\n newAnnotation.Subject = annotation.subject;\n newAnnotation.Note = annotation.note;\n newAnnotation.AnnotName = annotation.annotationId;\n newAnnotation.IsCommentLock = annotation.isCommentLock;\n newAnnotation.Comments = annotation.comments;\n if (annotation.comments && annotation.comments.length > 0) {\n // eslint-disable-next-line\n var comments = [];\n for (var i = 0; i < annotation.comments.length; i++) {\n comments.push(this.updateComments(annotation, annotation.comments[parseInt(i.toString(), 10)]));\n }\n newAnnotation.Comments = comments;\n }\n if (annotation.review) {\n newAnnotation.State = annotation.review.state;\n newAnnotation.StateModel = annotation.review.stateModel;\n }\n newAnnotation.CustomData = annotation.customData;\n newAnnotation.Opacity = annotation.opacity;\n if (annotation.shapeAnnotationType === 'textMarkup') {\n newAnnotation.AnnotType = 'textMarkup';\n newAnnotation.Color = annotation.color;\n newAnnotation.IsMultiSelect = annotation.isMultiSelect;\n newAnnotation.TextMarkupAnnotationType = annotation.textMarkupAnnotationType;\n newAnnotation.TextMarkupContent = annotation.textMarkupContent;\n newAnnotation.TextMarkupStartIndex = annotation.textMarkupStartIndex;\n newAnnotation.TextMarkupEndIndex = annotation.textMarkupEndIndex;\n if (annotation.rect) {\n newAnnotation.Rect = this.convertBounds(annotation.rect, true);\n }\n if (annotation.bounds && annotation.bounds.length >= 1) {\n // eslint-disable-next-line\n var bounds = new Array();\n for (var i = 0; i < annotation.bounds.length; i++) {\n bounds.push(this.convertBounds(annotation.bounds[parseInt(i.toString(), 10)]));\n }\n newAnnotation.Bounds = bounds;\n }\n documentCollections[annotation.pageNumber].textMarkupAnnotation.push(newAnnotation);\n }\n else if (annotation.shapeAnnotationType === 'sticky') {\n newAnnotation.AnnotType = 'sticky';\n newAnnotation.Icon = 'Comment';\n newAnnotation.Bounds = this.convertBounds(annotation.bounds);\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.Color = annotation.color;\n documentCollections[annotation.pageNumber].stickyNotesAnnotation.push(newAnnotation);\n }\n else if (annotation.shapeAnnotationType === 'FreeText') {\n newAnnotation.AnnotType = 'freeText';\n newAnnotation.Name = annotation.annotationId;\n newAnnotation.MarkupText = annotation.dynamicText;\n newAnnotation.Text = annotation.dynamicText;\n newAnnotation.Note = annotation.dynamicText;\n newAnnotation.TextAlign = annotation.textAlign;\n newAnnotation.Thickness = annotation.thicknes;\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.FillColor = annotation.fillColor;\n newAnnotation.FontColor = annotation.fontColor;\n newAnnotation.FontSize = annotation.fontSize;\n newAnnotation.FontFamily = annotation.fontFamily;\n newAnnotation.Rotate = annotation.rotateAngle;\n newAnnotation.Bounds = this.convertBounds(annotation.bounds);\n // eslint-disable-next-line max-len\n newAnnotation.Font = { 'Name': annotation.fontFamily, 'Size': annotation.fontSize, 'Bold': annotation.font.isBold, 'Italic': annotation.font.isItalic, 'Strikeout': annotation.font.isStrikeout, 'Underline': annotation.font.isUnderline };\n documentCollections[annotation.pageNumber].freeTextAnnotation.push(newAnnotation);\n }\n else if (annotation.shapeAnnotationType === 'stamp') {\n newAnnotation.AnnotType = 'stamp';\n newAnnotation.Icon = annotation.icon;\n newAnnotation.isDynamic = false;\n newAnnotation.Rect = this.convertBounds(annotation.bounds, false, true);\n newAnnotation.RotateAngle = annotation.rotateAngle;\n newAnnotation.FillColor = annotation.fillColor;\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.StampAnnotationType = annotation.stampAnnotationType;\n newAnnotation.CreationDate = annotation.creationDate;\n if (annotation.stampAnnotationType === 'image') {\n // eslint-disable-next-line\n var apperarance = [];\n // eslint-disable-next-line\n var imageData = { 'imagedata': annotation.stampAnnotationPath };\n apperarance.push(imageData);\n newAnnotation.Apperarance = apperarance;\n }\n if (annotation.isDynamicStamp) {\n newAnnotation.IsDynamic = true;\n newAnnotation.StrokeColor = annotation.stampFillcolor;\n // eslint-disable-next-line\n var apperarance = [];\n // eslint-disable-next-line\n var imageData = { 'type': 'string', 'text': annotation.dynamicText, 'currentFontname': '95b303ab-d397-438a-83af-e2ff8a9900f1', 'baseFontName': 'Helvetica-BoldOblique', 'fontSize': 10, 'isImport': true };\n apperarance.push(imageData);\n newAnnotation.Apperarance = apperarance;\n }\n documentCollections[annotation.pageNumber].stampAnnotations.push(newAnnotation);\n }\n else if (annotation.shapeAnnotationType === 'Ink' || annotation.shapeAnnotationType === 'Signature') {\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.FillColor = annotation.fillColor;\n newAnnotation.Thickness = annotation.thickness;\n newAnnotation.Bounds = this.convertBounds(annotation.bounds);\n newAnnotation.PathData = annotation.data;\n newAnnotation.pageIndex = annotation.pageNumber;\n if (annotation.shapeAnnotationType === 'Ink') {\n newAnnotation.AnnotType = 'Ink';\n newAnnotation.IsPathData = true;\n documentCollections[annotation.pageNumber].signatureInkAnnotation.push(newAnnotation);\n }\n if (annotation.shapeAnnotationType === 'Signature') {\n newAnnotation.AnnotType = 'Signature';\n newAnnotation.SignatureName = annotation.annotationId;\n newAnnotation.IsSignature = true;\n documentCollections[annotation.pageNumber].signatureAnnotation.push(newAnnotation);\n }\n }\n else {\n // eslint-disable-next-line max-len\n if (annotation.shapeAnnotationType === 'Line' || annotation.shapeAnnotationType === 'LineWidthArrowHead' || annotation.shapeAnnotationType === 'Polyline' || annotation.shapeAnnotationType === 'Polygon' || annotation.shapeAnnotationType === 'Polyline' || annotation.shapeAnnotationType === 'Circle' || annotation.shapeAnnotationType === 'Oval' || annotation.shapeAnnotationType === 'Rectangle' || annotation.shapeAnnotationType === 'Square' || annotation.shapeAnnotationType === 'Ellipse') {\n newAnnotation.AnnotType = 'shape';\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.FillColor = annotation.fillColor;\n newAnnotation.Thickness = annotation.thickness;\n newAnnotation.BorderStyle = annotation.borderStyle;\n newAnnotation.BorderDashArray = annotation.borderDashArray;\n newAnnotation.RotateAngle = annotation.rotateAngle;\n newAnnotation.IsCloudShape = annotation.isCloudShape;\n newAnnotation.CloudIntensity = annotation.cloudIntensity;\n newAnnotation.RectangleDifference = annotation.rectangleDifference;\n newAnnotation.LineHeadStart = annotation.lineHeadStart;\n newAnnotation.LineHeadEnd = annotation.lineHeadEnd;\n newAnnotation.IsLocked = annotation.isLocked;\n newAnnotation.EnableShapeLabel = annotation.enableShapeLabel;\n newAnnotation.LabelContent = annotation.labelContent;\n newAnnotation.LabelFillColor = annotation.labelFillColor;\n newAnnotation.LabelBorderColor = annotation.labelBorderColor;\n newAnnotation.FontColor = annotation.fontColor;\n newAnnotation.FontSize = annotation.fontSize;\n newAnnotation.LabelBounds = this.convertBounds(annotation.labelBounds);\n newAnnotation.LabelSettings = annotation.labelSettings;\n newAnnotation.Bounds = this.convertBounds(annotation.bounds);\n newAnnotation.LeaderLength = annotation.leaderLength;\n newAnnotation.LeaderLineExtenstion = annotation.leaderLineExtension;\n if (annotation.vertexPoints && annotation.vertexPoints.length >= 1) {\n // eslint-disable-next-line\n var points = new Array();\n for (var i = 0; i < annotation.vertexPoints.length; i++) {\n points.push(this.convertVertexPoints(annotation.vertexPoints[parseInt(i.toString(), 10)]));\n }\n newAnnotation.VertexPoints = points;\n }\n newAnnotation.EnableShapeLabel = annotation.enableShapeLabel;\n // eslint-disable-next-line max-len\n if (annotation.subject === 'Distance calculation' || annotation.subject === 'Perimeter calculation' || annotation.subject === 'Area calculation' || annotation.subject === 'Radius calculation' || annotation.subject === 'Volume calculation') {\n newAnnotation.AnnotType = 'shape_measure';\n // eslint-disable-next-line\n var calibrate = annotation.calibrate;\n if (calibrate) {\n // eslint-disable-next-line\n newAnnotation.Calibrate = {\n 'Ratio': calibrate.ratio, 'X': [{ 'Unit': calibrate.x[0].unit, 'ConversionFactor': calibrate.x[0].conversionFactor, 'FractionalType': calibrate.x[0].fractionalType, 'Denominator': calibrate.x[0].denominator, 'FormatDenominator': calibrate.x[0].formatDenominator }],\n // eslint-disable-next-line\n 'Distance': [{ 'Unit': calibrate.distance[0].unit, 'ConversionFactor': calibrate.distance[0].conversionFactor, 'FractionalType': calibrate.distance[0].fractionalType, 'Denominator': calibrate.distance[0].denominator, 'FormatDenominator': calibrate.distance[0].formatDenominator }],\n // eslint-disable-next-line\n 'Area': [{ 'Unit': calibrate.area[0].unit, 'ConversionFactor': calibrate.area[0].conversionFactor, 'FractionalType': calibrate.area[0].fractionalType, 'Denominator': calibrate.area[0].denominator, 'FormatDenominator': calibrate.area[0].formatDenominator }],\n // eslint-disable-next-line\n 'Angle': null, 'Volume': null, 'TargetUnitConversion': calibrate.targetUnitConversion, 'Depth': calibrate.depth\n };\n }\n newAnnotation.Indent = annotation.indent;\n newAnnotation.Caption = annotation.caption;\n newAnnotation.CaptionPosition = annotation.captionPosition;\n newAnnotation.LeaderLineExtension = annotation.leaderLineExtension;\n newAnnotation.LeaderLength = annotation.leaderLength;\n newAnnotation.LeaderLineOffset = annotation.leaderLineOffset;\n documentCollections[annotation.pageNumber].measureShapeAnnotation.push(newAnnotation);\n }\n else {\n documentCollections[annotation.pageNumber].shapeAnnotation.push(newAnnotation);\n }\n }\n }\n }\n pdfAnnotation.pdfAnnotation = documentCollections;\n this.pdfViewer.importAnnotation(pdfAnnotation);\n }\n };\n /**\n * @param bounds\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.convertBounds = function (bounds, isRect, isStamp) {\n if (bounds) {\n if (isRect) {\n var left = bounds.left ? bounds.left : bounds.Left ? bounds.Left : 0;\n var right = bounds.right ? bounds.right : bounds.Right ? bounds.Right : 0;\n var bottom = bounds.bottom ? bounds.bottom : bounds.Bottom ? bounds.Bottom : 0;\n var top_5 = bounds.top ? bounds.top : bounds.Top ? bounds.Top : 0;\n return { left: left, right: right, bottom: bottom, top: top_5 };\n }\n else {\n var x = bounds.x ? bounds.x : bounds.left ? bounds.left : bounds.Left ? bounds.Left : 0;\n var y = bounds.y ? bounds.y : bounds.top ? bounds.top : bounds.Top ? bounds.Top : 0;\n var width = bounds.width ? bounds.width : bounds.Width ? bounds.Width : 0;\n var height = bounds.height ? bounds.height : bounds.Height ? bounds.Height : 0;\n if (isStamp) {\n return { X: this.ConvertPixelToPoint(x), Y: this.ConvertPixelToPoint(y), Left: this.ConvertPixelToPoint(x), Top: this.ConvertPixelToPoint(y), Height: this.ConvertPixelToPoint(height), Width: this.ConvertPixelToPoint(width) };\n }\n else {\n return { X: x, Y: y, Left: x, Top: y, Height: height, Width: width };\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.ConvertPixelToPoint = function (number) {\n return (number * (72 / 96));\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.convertVertexPoints = function (points) {\n if (points) {\n var x = points.x ? points.x : points.X ? points.X : 0;\n var y = points.y ? points.y : points.Y ? points.Y : 0;\n return { X: x, Y: y, Left: x, Top: y };\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateComments = function (annotation, comments) {\n if (annotation && comments) {\n // eslint-disable-next-line\n var newAnnotation = {};\n newAnnotation.ShapeAnnotationType = annotation.shapeAnnotationType;\n newAnnotation.Author = comments.author;\n newAnnotation.AnnotationSelectorSettings = annotation.annotationSelectorSettings;\n newAnnotation.AnnotationSettings = annotation.annotationSettings;\n newAnnotation.PageNumber = annotation.pageNumber;\n newAnnotation.ModifiedDate = comments.modifiedDate;\n newAnnotation.Subject = annotation.subject;\n newAnnotation.Note = comments.note;\n newAnnotation.AnnotName = comments.annotName;\n newAnnotation.Comments = comments.comments;\n newAnnotation.State = comments.review.state;\n newAnnotation.StateModel = comments.review.stateModel;\n newAnnotation.CustomData = annotation.customData;\n newAnnotation.IsLock = comments.isLock;\n return newAnnotation;\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.removeFocus = function () {\n if (isBlazor()) {\n // eslint-disable-next-line\n var currentPageContainer = this.pdfViewer.element.querySelector('#' + this.pdfViewer.element.id + '_totalPage');\n // eslint-disable-next-line max-len\n if (currentPageContainer && currentPageContainer.firstElementChild && currentPageContainer.firstElementChild.firstElementChild) {\n currentPageContainer.firstElementChild.firstElementChild.blur();\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateDocumentEditedProperty = function (isEdited) {\n this.pdfViewer.allowServerDataBinding = true;\n this.pdfViewer.isDocumentEdited = isEdited;\n this.pdfViewer.allowServerDataBinding = false;\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.getWindowDevicePixelRatio = function () {\n var devicePixelRatio = window.devicePixelRatio;\n if (!Browser.isDevice) {\n return devicePixelRatio;\n }\n else {\n return devicePixelRatio = 2;\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.getZoomRatio = function (zoom) {\n var zoomFactor = this.getZoomFactor();\n var zoomValue = zoom ? zoom : 1;\n var ratio;\n var devicePixelRatio = this.getWindowDevicePixelRatio();\n if (!Browser.isDevice || (Browser.isDevice && zoomFactor <= 0.7)) {\n ratio = zoomValue * devicePixelRatio;\n }\n else {\n ratio = zoomValue;\n }\n return ratio;\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.importJsonForRotatedDocuments = function (Rotate, pageNumber, bounds, originalRotation) {\n // eslint-disable-next-line\n var rotateAngle = Math.abs(Rotate);\n var pageDetails = this.pageSize[parseInt(pageNumber.toString(), 10)];\n //originalRotation = !isNullOrUndefined(originalRotation) ? originalRotation : pageDetails.rotation;\n if (originalRotation !== pageDetails.rotation) {\n rotateAngle = this.getRotationAngle(originalRotation, pageNumber);\n this.isPageRotated = true;\n }\n else {\n rotateAngle = 0;\n this.isPageRotated = false;\n }\n if (rotateAngle === 1) {\n return { X: pageDetails.width - bounds.Y - bounds.Height, Y: bounds.X, Height: bounds.Width, Width: bounds.Height };\n }\n else if (rotateAngle === 2) {\n return { X: pageDetails.width - bounds.X - bounds.Width, Y: pageDetails.height - bounds.Y - bounds.Height, Height: bounds.Height, Width: bounds.Width };\n }\n else if (rotateAngle === 3) {\n return { X: bounds.Y, Y: pageDetails.height - bounds.X - bounds.Width, Height: bounds.Width, Width: bounds.Height };\n }\n else {\n return bounds;\n }\n };\n PdfViewerBase.prototype.getRotationAngle = function (originalRotation, pageNumber) {\n var pageDetails = this.pageSize[parseInt(pageNumber.toString(), 10)];\n originalRotation = Math.abs(originalRotation);\n var rotateAngle;\n if (originalRotation === 0) {\n return rotateAngle = pageDetails.rotation;\n }\n else if (originalRotation === 1 || originalRotation === 90) {\n if (pageDetails.rotation == 0) {\n return rotateAngle = 3;\n }\n else if (pageDetails.rotation === 2) {\n return rotateAngle = 1;\n }\n else if (pageDetails.rotation === 3) {\n return rotateAngle = 2;\n }\n }\n else if (originalRotation === 2 || originalRotation === 180) {\n if (pageDetails.rotation == 0) {\n return rotateAngle = 2;\n }\n else if (pageDetails.rotation === 1) {\n return rotateAngle = 3;\n }\n else if (pageDetails.rotation === 3) {\n return rotateAngle = 1;\n }\n }\n else if (originalRotation === 3 || originalRotation === 270) {\n if (pageDetails.rotation == 0) {\n return rotateAngle = 1;\n }\n else if (pageDetails.rotation === 2) {\n return rotateAngle = 3;\n }\n else if (pageDetails.rotation === 1) {\n return rotateAngle = 2;\n }\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.calculateVertexPoints = function (Rotate, pageNumber, vertexPoints, originalRotation) {\n // eslint-disable-next-line\n var rotateAngle = Math.abs(Rotate);\n var vPoints = [];\n var pageDetails = this.pageSize[parseInt(pageNumber.toString(), 10)];\n var x;\n var y;\n var point;\n //originalRotation = !isNullOrUndefined(originalRotation) ? originalRotation : pageDetails.rotation;\n if (originalRotation !== pageDetails.rotation) {\n rotateAngle = this.getRotationAngle(originalRotation, pageNumber);\n }\n else {\n rotateAngle = 0;\n }\n for (var j = 0; j < vertexPoints.length; j++) {\n if (rotateAngle === 1) {\n x = vertexPoints[parseInt(j.toString(), 10)].Y ? pageDetails.width - vertexPoints[parseInt(j.toString(), 10)].Y : pageDetails.width - vertexPoints[parseInt(j.toString(), 10)].y;\n y = vertexPoints[parseInt(j.toString(), 10)].X ? vertexPoints[parseInt(j.toString(), 10)].X : vertexPoints[parseInt(j.toString(), 10)].x;\n point = { x: x, y: y };\n vPoints.push(point);\n }\n else if (rotateAngle === 2) {\n x = vertexPoints[parseInt(j.toString(), 10)].X ? pageDetails.width - vertexPoints[parseInt(j.toString(), 10)].X : pageDetails.width - vertexPoints[parseInt(j.toString(), 10)].x;\n y = vertexPoints[parseInt(j.toString(), 10)].Y ? pageDetails.height - vertexPoints[parseInt(j.toString(), 10)].Y : pageDetails.height - vertexPoints[parseInt(j.toString(), 10)].y;\n var point_1 = { x: x, y: y };\n vPoints.push(point_1);\n }\n else if (rotateAngle == 3) {\n x = vertexPoints[parseInt(j.toString(), 10)].Y ? vertexPoints[parseInt(j.toString(), 10)].Y : vertexPoints[parseInt(j.toString(), 10)].y;\n y = vertexPoints[parseInt(j.toString(), 10)].X ? pageDetails.height - vertexPoints[parseInt(j.toString(), 10)].X : pageDetails.height - vertexPoints[parseInt(j.toString(), 10)].x;\n point = { x: x, y: y };\n vPoints.push(point);\n }\n else {\n x = vertexPoints[parseInt(j.toString(), 10)].X ? vertexPoints[parseInt(j.toString(), 10)].X : vertexPoints[parseInt(j.toString(), 10)].x;\n y = vertexPoints[parseInt(j.toString(), 10)].Y ? vertexPoints[parseInt(j.toString(), 10)].Y : vertexPoints[parseInt(j.toString(), 10)].y;\n var point_2 = { x: x, y: y };\n vPoints.push(point_2);\n }\n }\n return vPoints;\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.isSignaturePathData = function (data) {\n // eslint-disable-next-line\n var pathRegex = /^([Mm]\\s*\\d+(\\.\\d+)?\\s*,\\s*\\d+(\\.\\d+)?(\\s+[Ll]\\s*\\d+(\\.\\d+)?\\s*,\\s*\\d+(\\.\\d+)?)*\\s*)+$/;\n return pathRegex.test(data);\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.isSignatureImageData = function (data) {\n // eslint-disable-next-line\n var base64ImageRegex = /^data:image\\/([a-z]+);base64,/;\n return base64ImageRegex.test(data);\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.getSanitizedString = function (annotationData) {\n var sanitizedString = annotationData.replace(/[\\x00-\\x1F\\x7F]/g, function (c) { return \"\\\\u\" + c.charCodeAt(0).toString(16).padStart(4, '0'); });\n return sanitizedString;\n };\n /**\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.getLinkInformation = function (pageIndex, isTextSearch) {\n var zoomFactor = this.retrieveCurrentZoomFactor();\n if (this.pdfViewer.restrictZoomRequest && !this.pdfViewer.tileRenderingSettings.enableTileRendering) {\n zoomFactor = 1;\n }\n var id = this.documentId + '_' + pageIndex;\n var storedImage = this.pageImageDetails ? this.pageImageDetails[id + '_' + zoomFactor + '_imageUrl'] ? this.pageImageDetails[id + '_' + zoomFactor + '_imageUrl'] : this.getPinchZoomPage(pageIndex) : this.getPinchZoomPage(pageIndex);\n var storedHyperlink = this.hyperlinkAndLinkAnnotation ? this.hyperlinkAndLinkAnnotation[id + '_hyperlinkAndLinkAnnotation'] ? this.hyperlinkAndLinkAnnotation[id + '_hyperlinkAndLinkAnnotation'] : this.getPinchZoomPage(pageIndex) : this.getPinchZoomPage(pageIndex);\n var storedTextDetails = this.pageTextDetails ? this.pageTextDetails[id + '_textDetails'] ? this.pageTextDetails[id + '_textDetails'] : this.getPinchZoomPage(pageIndex) : this.getPinchZoomPage(pageIndex);\n if (!storedImage) {\n // eslint-disable-next-line\n var storedTileData = this.getStoredTileImageDetails(pageIndex, 0, 0, zoomFactor);\n if (storedTileData) {\n storedImage = storedTileData;\n }\n }\n // eslint-disable-next-line\n var imageUrl = null;\n var linkAnnotation = null;\n var textDetails = null;\n var mergedObj = null;\n if (storedImage && storedHyperlink) {\n // eslint-disable-next-line\n imageUrl = JSON.parse(storedImage);\n linkAnnotation = JSON.parse(storedHyperlink);\n textDetails = JSON.parse(storedTextDetails);\n mergedObj = Object.assign({}, imageUrl, linkAnnotation, textDetails);\n this.isPinchZoomStorage = false;\n }\n return mergedObj;\n };\n return PdfViewerBase;\n}());\nexport { PdfViewerBase };\n","// eslint-disable-next-line\nexport function PdfiumRunner() {\n var moduleString = \"Module\";\n var pageLoaded = false;\n var moduleLoaded = false;\n var FPDF = {};\n var pdfiumWindow = pdfiumWindow || {};\n var documentDetails;\n var PDFiumModule = typeof (pdfiumWindow[\"\" + moduleString]) !== 'undefined' ? (pdfiumWindow[\"\" + moduleString]) : {};\n var I8 = Int8Array;\n var I16 = Int16Array;\n var I32 = Int32Array;\n var U8 = Uint8Array;\n var CH = U8;\n var U16 = Uint16Array;\n var U32 = Uint32Array;\n var F32 = Float32Array;\n var F64 = Float64Array;\n var H = function (t, s, d) { return function (f) {\n var _a = pdfiumWindow.heap(t, s), m = _a[0], a = _a.slice(1);\n var v = f.apply(void 0, a.map(function (x) { return x.p; }));\n if (!v) {\n m.free();\n return d;\n }\n var r = a.map(function (x) { return x.v; });\n m.free();\n return r;\n }; };\n var F = FPDF.Bitmap_BGRA;\n var C = 4;\n Object.assign(FPDF, {\n LCD_TEXT: 0x02,\n NO_NATIVETEXT: 0x04,\n GRAYSCALE: 0x08,\n DEBUG_INFO: 0x80,\n NO_CATCH: 0x100,\n RENDER_LIMITEDIMAGECACHE: 0x200,\n RENDER_FORCEHALFTONE: 0x400,\n PRINTING: 0x800,\n REVERSE_BYTE_ORDER: 0x10,\n Bitmap_Gray: 1,\n Bitmap_BGR: 2,\n Bitmap_BGRx: 3,\n Bitmap_BGRA: 4,\n LAST_ERROR: {\n SUCCESS: 0,\n UNKNOWN: 1,\n FILE: 2,\n FORMAT: 3,\n PASSWORD: 4,\n SECURITY: 5,\n PAGE: 6\n }\n });\n function initializeFPDF() {\n FPDF.Init = PDFiumModule.cwrap('FPDF_InitLibrary');\n FPDF.RenderPageBitmap = PDFiumModule.cwrap('FPDF_RenderPageBitmap', '', ['number', 'number', 'number', 'number', 'number', 'number', 'number', 'number']);\n FPDF.Bitmap_FillRect = PDFiumModule.cwrap('FPDFBitmap_FillRect', '', ['number', 'number', 'number', 'number', 'number', 'number']);\n FPDF.Bitmap_CreateEx = PDFiumModule.cwrap('FPDFBitmap_CreateEx', 'number', ['number', 'number', 'number', 'number', 'number']);\n FPDF.Bitmap_Destroy = PDFiumModule.cwrap('FPDFBitmap_Destroy', '', ['number']);\n FPDF.LoadPage = PDFiumModule.cwrap('FPDF_LoadPage', 'number', ['number', 'number']);\n FPDF.ClosePage = PDFiumModule.cwrap('FPDF_ClosePage', '', ['number']);\n FPDF.LoadMemDocument = PDFiumModule.cwrap('FPDF_LoadMemDocument', 'number', ['number', 'number', 'string']);\n FPDF.GetPageSizeByIndex = PDFiumModule.cwrap('FPDF_GetPageSizeByIndex', 'number', ['number', 'number', 'number', 'number']);\n FPDF.GetLastError = PDFiumModule.cwrap('FPDF_GetLastError', 'number');\n FPDF.GetPageCount = PDFiumModule.cwrap('FPDF_GetPageCount', 'number', ['number']);\n FPDF.CloseDocument = PDFiumModule.cwrap('FPDF_CloseDocument', '', ['number']);\n FPDF.DestroyLibrary = PDFiumModule.cwrap('FPDF_DestroyLibrary');\n FPDF.LoadTextPage = PDFiumModule.cwrap('FPDFText_LoadPage', 'number', ['number']);\n FPDF.CloseTextPage = PDFiumModule.cwrap('FPDFText_ClosePage', '', ['number']);\n FPDF.TextCountChars = PDFiumModule.cwrap('FPDFText_CountChars', 'number', ['number']);\n FPDF.GetUnicodeChar = PDFiumModule.cwrap('FPDFText_GetUnicode', 'number', ['number']);\n FPDF.GetCharBox = PDFiumModule.cwrap('FPDFText_GetCharBox', 'number', ['number', 'number', 'number', 'number', 'number']);\n FPDF.GetPageRotation = PDFiumModule.cwrap('FPDFPage_GetRotation', 'number', ['number']);\n FPDF.GetCharAngle = PDFiumModule.cwrap('FPDFText_GetCharAngle', 'number', ['number']);\n pdfiumWindow.heap = function (J, s) {\n var E;\n switch (J) {\n case Int8Array:\n E = PDFiumModule.HEAP8;\n break;\n case Int16Array:\n E = PDFiumModule.HEAP16;\n break;\n case Int32Array:\n E = PDFiumModule.HEAP32;\n break;\n case Uint8Array:\n E = PDFiumModule.HEAPU8;\n break;\n case Uint16Array:\n E = PDFiumModule.HEAPU16;\n break;\n case Uint32Array:\n E = PDFiumModule.HEAPU32;\n break;\n case Float32Array:\n E = PDFiumModule.HEAPF32;\n break;\n case Float64Array:\n E = PDFiumModule.HEAPF64;\n break;\n }\n var Z = J.BYTES_PER_ELEMENT;\n var m = PDFiumModule.asm.malloc(s * Z);\n var a = Array(1 + s);\n a[0] = ({ s: s, J: J, Z: Z, E: E, m: m, free: function () { return PDFiumModule.asm.free(m); } });\n var _loop_1 = function (i) {\n a[i + 1] = ({ p: m + (i * Z), get v() { return E[m / Z + i]; } });\n };\n for (var i = 0; i < s; i++) {\n _loop_1(i);\n }\n return a;\n };\n }\n function checkIfEverythingWasLoaded() {\n pageLoaded = true;\n if (pageLoaded || moduleLoaded) {\n startApp();\n }\n }\n PDFiumModule.onRuntimeInitialized = function () {\n moduleLoaded = true;\n checkIfEverythingWasLoaded();\n };\n function startApp() {\n initializeFPDF();\n if (pdfiumWindow.loaded) {\n pdfiumWindow.loaded();\n }\n }\n pdfiumWindow.onload = function () {\n pageLoaded = true;\n checkIfEverythingWasLoaded();\n };\n pdfiumWindow.loaded = function () {\n ctx.postMessage({ message: 'loaded' });\n };\n var ctx = self;\n ctx.onmessage = function (event) {\n if (event.data.message === 'initialLoading') {\n importScripts(event.data.url + '/pdfium.js');\n PDFiumModule.url = event.data.url;\n PDFiumModule.onRuntimeInitialized = function () {\n moduleLoaded = true;\n checkIfEverythingWasLoaded();\n };\n this['PDFiumModule'](PDFiumModule);\n }\n else if (event.data.message === 'LoadPageCollection') {\n pdfiumWindow.fileByteArray = event.data.uploadedFile;\n var fileSize = pdfiumWindow.fileByteArray.length;\n FPDF.Init();\n var wasmBuffer = PDFiumModule.asm.malloc(fileSize);\n PDFiumModule.HEAPU8.set(pdfiumWindow.fileByteArray, wasmBuffer);\n documentDetails = new DocumentInfo({\n wasm: FPDF.LoadMemDocument(wasmBuffer, fileSize, event.data.password),\n wasmBuffer: wasmBuffer,\n });\n var pages = FPDF.GetPageCount(documentDetails.processor.wasmData.wasm);\n documentDetails.setPages(pages);\n documentDetails.createAllPages();\n ctx.postMessage({ message: 'PageLoaded', pageIndex: event.data.pageIndex, isZoomMode: event.data.isZoomMode });\n }\n if (documentDetails) {\n if (event.data.message === 'renderPage') {\n var firstPage = documentDetails.getPage(event.data.pageIndex);\n var ImageData_1 = event.data;\n var data = firstPage.render(null, ImageData_1.zoomFactor, ImageData_1.isTextNeed, null, null, ImageData_1.textDetailsId);\n ctx.postMessage(data);\n }\n else if (event.data.message === 'renderPageSearch') {\n var firstPage = documentDetails.getPage(event.data.pageIndex);\n var ImageData_2 = event.data;\n var data = firstPage.render(null, ImageData_2.zoomFactor, ImageData_2.isTextNeed, null, null, ImageData_2.textDetailsId);\n data.message = 'imageRenderedSearch';\n ctx.postMessage(data);\n }\n else if (event.data.message === 'extractText') {\n var firstPage = documentDetails.getPage(event.data.pageIndex);\n var ImageData_3 = event.data;\n var data = firstPage.render(null, ImageData_3.zoomFactor, ImageData_3.isTextNeed, null, null, ImageData_3.textDetailsId);\n data.message = 'textExtracted';\n ctx.postMessage(data);\n }\n else if (event.data.message === 'renderThumbnail') {\n var firstPage = documentDetails.getPage(event.data.pageIndex);\n var data = firstPage.render(\"thumbnail\", null, false, null, null);\n ctx.postMessage(data);\n }\n else if (event.data.message === 'printImage') {\n var firstPage = documentDetails.getPage(event.data.pageIndex);\n var data = firstPage.render(\"print\", null, false, event.data.printScaleFactor, event.data.printDevicePixelRatio);\n ctx.postMessage(data);\n }\n else if (event.data.message === 'extractImage') {\n var firstPage = documentDetails.getPage(event.data.pageIndex);\n var ImageData_4 = event.data;\n var data = firstPage.render(null, ImageData_4.zoomFactor, ImageData_4.isTextNeed, null, null, ImageData_4.textDetailsId);\n data.message = 'imageExtracted';\n ctx.postMessage(data);\n }\n else if (event.data.message === 'renderImageAsTile') {\n var values = event.data;\n var firstPage = documentDetails.getPage(event.data.pageIndex);\n var data = firstPage.renderTileImage(values.tileX, values.tileY, values.tileXCount, values.tileYCount, values.zoomFactor, event.data.isTextNeed, event.data.textDetailsId);\n ctx.postMessage(data);\n }\n else if (event.data.message === 'renderImageAsTileSearch') {\n var values = event.data;\n var firstPage = documentDetails.getPage(event.data.pageIndex);\n var data = firstPage.renderTileImage(values.tileX, values.tileY, values.tileXCount, values.tileYCount, values.zoomFactor, event.data.isTextNeed, event.data.textDetailsId);\n data.message = 'renderTileImageSearch';\n ctx.postMessage(data);\n }\n else if (event.data.message === 'unloadFPDF') {\n if (documentDetails) {\n PDFiumModule.asm.free(documentDetails.processor.wasmData.wasmBuffer);\n FPDF.CloseDocument(documentDetails.processor.wasmData.wasm);\n FPDF.DestroyLibrary();\n }\n }\n }\n };\n var Page = /** @class */ (function () {\n function Page(index, processor) {\n this.index = index;\n this.src = null;\n this.processor = processor;\n }\n Page.prototype.render = function (message, zoomFactor, isTextNeed, printScaleFactor, printDevicePixelRatio, textDetailsId) {\n return this.processor.render(this.index, message, zoomFactor, isTextNeed, printScaleFactor, printDevicePixelRatio, textDetailsId);\n };\n Page.prototype.renderTileImage = function (x, y, tileX, tileY, zoomFactor, isTextNeed, textDetailsId) {\n return this.processor.renderTileImage(this.index, x, y, tileX, tileY, zoomFactor, isTextNeed, textDetailsId);\n };\n return Page;\n }());\n var RectAngle = /** @class */ (function () {\n function RectAngle(X, Y, Width, Height, Text, Rotation) {\n this.X = X;\n this.Y = Y;\n this.Width = Width;\n this.Height = Height;\n this.Bottom = this.Y + this.Height;\n this.Right = this.X + this.Width;\n this.Top = this.Y;\n this.Left = this.X;\n this.Rotation = Rotation;\n this.Text = Text;\n }\n return RectAngle;\n }());\n ;\n var Processor = /** @class */ (function () {\n function Processor(wasmData) {\n this.TextBounds = [];\n this.TextContent = [];\n this.CharacterBounds = [];\n this.PageText = \"\";\n this.wasmData = wasmData;\n }\n Processor.prototype.getPageSize = function (i) {\n var _this = this;\n if (i === void 0) { i = 0; }\n return H(F64, 2, [-1, -1])(function (w, h) { return FPDF.GetPageSizeByIndex(_this.wasmData.wasm, i, w, h); }).map(function (v) { return parseInt((v * (96 / 72)).toString()); });\n };\n Processor.prototype.getCharBounds = function (pagePointer, i) {\n if (i === void 0) { i = 0; }\n return H(F64, 4, [-1, -1, -1, -1])(function (left, right, bottom, top) { return FPDF.GetCharBox(pagePointer, i, left, right, bottom, top); });\n };\n Processor.prototype.getRender = function (i, w, h, isTextNeed) {\n if (i === void 0) { i = 0; }\n var flag = FPDF.REVERSE_BYTE_ORDER;\n var heap = PDFiumModule.asm.malloc(w * h * 4);\n PDFiumModule.HEAPU8.fill(0, heap, heap + (w * h * 4));\n var bmap = FPDF.Bitmap_CreateEx(w, h, FPDF.Bitmap_BGRA, heap, w * 4);\n var page = FPDF.LoadPage(this.wasmData.wasm, i);\n FPDF.Bitmap_FillRect(bmap, 0, 0, w, h, 0xFFFFFFFF);\n FPDF.RenderPageBitmap(bmap, page, 0, 0, w, h, 0, flag);\n FPDF.Bitmap_Destroy(bmap);\n this.textExtraction(page, i, isTextNeed);\n FPDF.ClosePage(page);\n return heap;\n };\n Processor.prototype.textExtraction = function (pagePointer, pageIndex, isTextNeed) {\n var _a;\n if (isTextNeed) {\n var _b = this.getPageSize(pageIndex), pageWidth = _b[0], pageHeight = _b[1];\n var textPage = FPDF.LoadTextPage(pagePointer, pageIndex);\n var pageRotation = FPDF.GetPageRotation(pagePointer);\n var totalCharacterCount = FPDF.TextCountChars(textPage);\n this.TextBounds = [];\n this.TextContent = [];\n this.CharacterBounds = [];\n var pageText = \"\";\n var minTop = 0;\n var maxBottom = 0;\n var minLeft = 0;\n var maxRight = 0;\n var top_1 = [];\n var bottom = [];\n var left = [];\n var right = [];\n var wordBounds = [];\n var word = \"\";\n var wordMinLeft = 0;\n var wordMaxRight = 0;\n var wordMinTop = 0;\n var wordMaxBottom = 0;\n var wordRotation = 0;\n var wordStart = true;\n var isZeroWidthSpace = false;\n var isPreviousSpace = false;\n var startNewLine = false;\n var maximumSpaceForNewLine = 11;\n for (var charCount = 0; charCount <= totalCharacterCount; charCount++) {\n var result = FPDF.GetUnicodeChar(textPage, charCount);\n var rotationRadian = FPDF.GetCharAngle(textPage, charCount);\n var character = String.fromCharCode(result);\n var _c = this.getCharBounds(textPage, charCount), charLeft = _c[0], charRight = _c[1], charBottom = _c[2], charTop = _c[3];\n var X = this.pointerToPixelConverter(charLeft);\n var Y = (pageHeight) - this.pointerToPixelConverter(charTop);\n var Width = this.pointerToPixelConverter(charRight - charLeft);\n var Height = this.pointerToPixelConverter(charTop - charBottom);\n var rotationAngle = parseInt((rotationRadian * 180 / Math.PI).toString());\n if (charCount < totalCharacterCount) {\n pageText += character;\n var currentCharacterBounds = new RectAngle(X, Y, Width, Height, character, rotationAngle);\n this.CharacterBounds.push(currentCharacterBounds);\n }\n if (pageRotation == 1 || pageRotation == 3) {\n Y = (pageWidth) - this.pointerToPixelConverter(charTop);\n }\n switch (character) {\n case \"\\0\":\n minTop = Math.min.apply(Math, top_1);\n maxBottom = Math.max.apply(Math, bottom);\n minLeft = Math.min.apply(Math, left);\n maxRight = Math.max.apply(Math, right);\n var newWordBounds = new RectAngle(wordMinLeft, wordMinTop, wordMaxRight - wordMinLeft, wordMaxBottom - wordMinTop, word, wordRotation);\n wordBounds.push(newWordBounds);\n this.textBoundsCalculation(wordBounds, minTop, maxBottom, maxRight, minLeft, pageRotation, pageWidth, pageHeight);\n wordBounds = [];\n wordStart = true;\n isPreviousSpace = false;\n word = \"\";\n top_1 = [];\n left = [];\n bottom = [];\n right = [];\n minTop = 0;\n maxBottom = 0;\n minLeft = 0;\n maxRight = 0;\n break;\n case \"\\r\":\n if (charCount < totalCharacterCount) {\n var characterBounds = new RectAngle(X, Y, Width, Height, \"\\r\\n\", rotationAngle);\n top_1.push(characterBounds.Top);\n bottom.push(characterBounds.Bottom);\n left.push(characterBounds.Left);\n right.push(characterBounds.Right);\n minTop = Math.min.apply(Math, top_1);\n maxBottom = Math.max.apply(Math, bottom);\n minLeft = Math.min.apply(Math, left);\n maxRight = Math.max.apply(Math, right);\n var newWordBounds_1 = void 0;\n if (wordStart == false) {\n newWordBounds_1 = new RectAngle(wordMinLeft, wordMinTop, wordMaxRight - wordMinLeft, wordMaxBottom - wordMinTop, word, wordRotation);\n wordBounds.push(newWordBounds_1);\n }\n wordBounds.push(characterBounds);\n this.textBoundsCalculation(wordBounds, minTop, maxBottom, maxRight, minLeft, pageRotation, pageWidth, pageHeight);\n wordBounds = [];\n wordStart = true;\n isPreviousSpace = false;\n word = \"\";\n top_1 = [];\n left = [];\n bottom = [];\n right = [];\n minTop = 0;\n maxBottom = 0;\n minLeft = 0;\n maxRight = 0;\n pageText += '\\n';\n rotationRadian = FPDF.GetCharAngle(textPage, charCount);\n _a = this.getCharBounds(textPage, charCount), charLeft = _a[0], charRight = _a[1], charBottom = _a[2], charTop = _a[3];\n X = this.pointerToPixelConverter(charLeft);\n Y = (pageHeight) - this.pointerToPixelConverter(charTop);\n Width = this.pointerToPixelConverter(charRight - charLeft);\n Height = this.pointerToPixelConverter(charTop - charBottom);\n rotationAngle = parseInt((rotationRadian * 180 / Math.PI).toString());\n var currentCharacterBounds = new RectAngle(X, Y, Width, Height, character, rotationAngle);\n this.CharacterBounds.push(currentCharacterBounds);\n charCount++;\n }\n break;\n case \"\\u0002\":\n case \"\\ufffe\":\n {\n var characterBounds = new RectAngle(X, Y, Width, Height, character, rotationAngle);\n top_1.push(characterBounds.Top);\n bottom.push(characterBounds.Bottom);\n left.push(characterBounds.Left);\n right.push(characterBounds.Right);\n minTop = Math.min.apply(Math, top_1);\n maxBottom = Math.max.apply(Math, bottom);\n minLeft = Math.min.apply(Math, left);\n maxRight = Math.max.apply(Math, right);\n var newWordBounds_2 = void 0;\n if (wordStart == false) {\n newWordBounds_2 = new RectAngle(wordMinLeft, wordMinTop, wordMaxRight - wordMinLeft, wordMaxBottom - wordMinTop, word, wordRotation);\n wordBounds.push(newWordBounds_2);\n }\n if (character == \"\\u0002\") {\n wordBounds.push(characterBounds);\n }\n this.textBoundsCalculation(wordBounds, minTop, maxBottom, maxRight, minLeft, pageRotation, pageWidth, pageHeight);\n wordBounds = [];\n wordStart = true;\n isPreviousSpace = false;\n word = \"\";\n top_1 = [];\n left = [];\n bottom = [];\n right = [];\n minTop = 0;\n maxBottom = 0;\n minLeft = 0;\n maxRight = 0;\n }\n break;\n default:\n if (Width == 0 || Height == 0) {\n isZeroWidthSpace = true;\n minTop = Math.min.apply(Math, top_1);\n maxBottom = Math.max.apply(Math, bottom);\n minLeft = Math.min.apply(Math, left);\n maxRight = Math.max.apply(Math, right);\n var newWordBounds_3 = new RectAngle(wordMinLeft, wordMinTop, wordMaxRight - wordMinLeft, wordMaxBottom - wordMinTop, word, wordRotation);\n wordBounds.push(newWordBounds_3);\n var characterBounds = new RectAngle(X, Y, Width, Height, character, rotationAngle);\n wordMinTop = characterBounds.Top;\n wordMaxBottom = characterBounds.Bottom;\n wordMinLeft = characterBounds.Left;\n wordMaxRight = characterBounds.Right;\n word = character;\n wordRotation = wordBounds[wordBounds.length - 1].Rotation;\n newWordBounds_3 = new RectAngle(wordMinLeft, wordMinTop, wordMaxRight - wordMinLeft, wordMaxBottom - wordMinTop, word, wordRotation);\n wordBounds.push(newWordBounds_3);\n wordMinTop = 0;\n wordMaxBottom = 0;\n wordMinLeft = 0;\n wordMaxRight = 0;\n word = \"\";\n wordRotation = 0;\n wordStart = true;\n isPreviousSpace = true;\n }\n else {\n if (wordStart == true) {\n wordMinTop = Y;\n wordMaxBottom = Y + Height;\n wordMinLeft = X;\n wordMaxRight = X + Width;\n }\n var characterBounds = new RectAngle(X, Y, Width, Height, character, rotationAngle);\n if (character != \" \") {\n if (isPreviousSpace && wordBounds.length > 0 && (rotationAngle == wordBounds[0].Rotation)) {\n if ((rotationAngle == 180 || rotationAngle == 0) && (Math.abs(characterBounds.Y - wordBounds[0].Y) > maximumSpaceForNewLine)) {\n startNewLine = true;\n }\n if ((rotationAngle == 270 || rotationAngle == 90) && (Math.abs(characterBounds.X - wordBounds[0].X) > maximumSpaceForNewLine)) {\n startNewLine = true;\n }\n }\n if ((isZeroWidthSpace && wordBounds.length >= 1 && wordBounds[wordBounds.length - 1].Rotation != characterBounds.Rotation) || startNewLine) {\n isZeroWidthSpace = false;\n startNewLine = false;\n minTop = Math.min.apply(Math, top_1);\n maxBottom = Math.max.apply(Math, bottom);\n minLeft = Math.min.apply(Math, left);\n maxRight = Math.max.apply(Math, right);\n var newWordBounds_4 = void 0;\n if (wordStart == false) {\n newWordBounds_4 = new RectAngle(wordMinLeft, wordMinTop, wordMaxRight - wordMinLeft, wordMaxBottom - wordMinTop, word, wordRotation);\n wordBounds.push(newWordBounds_4);\n }\n this.textBoundsCalculation(wordBounds, minTop, maxBottom, maxRight, minLeft, pageRotation, pageWidth, pageHeight);\n wordBounds = [];\n wordStart = true;\n word = \"\";\n top_1 = [];\n left = [];\n bottom = [];\n right = [];\n minTop = 0;\n maxBottom = 0;\n minLeft = 0;\n maxRight = 0;\n }\n top_1.push(characterBounds.Top);\n bottom.push(characterBounds.Bottom);\n left.push(characterBounds.Left);\n right.push(characterBounds.Right);\n wordMinTop = Math.min(wordMinTop, characterBounds.Top);\n wordMaxBottom = Math.max(wordMaxBottom, characterBounds.Bottom);\n wordMinLeft = Math.min(wordMinLeft, characterBounds.Left);\n wordMaxRight = Math.max(wordMaxRight, characterBounds.Right);\n word += character;\n wordRotation = characterBounds.Rotation;\n wordStart = false;\n isPreviousSpace = false;\n }\n else {\n var newWordBounds_5 = new RectAngle(wordMinLeft, wordMinTop, wordMaxRight - wordMinLeft, wordMaxBottom - wordMinTop, word, wordRotation);\n wordBounds.push(newWordBounds_5);\n wordMinTop = characterBounds.Top;\n wordMaxBottom = characterBounds.Bottom;\n wordMinLeft = characterBounds.Left;\n wordMaxRight = characterBounds.Right;\n word = character;\n wordRotation = characterBounds.Rotation;\n newWordBounds_5 = new RectAngle(wordMinLeft, wordMinTop, wordMaxRight - wordMinLeft, wordMaxBottom - wordMinTop, word, wordRotation);\n wordBounds.push(newWordBounds_5);\n wordMinTop = 0;\n wordMaxBottom = 0;\n wordMinLeft = 0;\n wordMaxRight = 0;\n word = \"\";\n wordRotation = 0;\n wordStart = true;\n isPreviousSpace = true;\n }\n }\n break;\n }\n }\n FPDF.CloseTextPage(textPage);\n this.Rotation = pageRotation;\n this.PageText = pageText;\n }\n };\n Processor.prototype.pointerToPixelConverter = function (pointerValue) {\n return (pointerValue * (96 / 72));\n };\n Processor.prototype.textBoundsCalculation = function (wordBounds, minTop, maxBottom, maxRight, minLeft, pageRotation, pageWidth, pageHeight) {\n var newWordBounds;\n var hasInBetweenRotation = false;\n var inBetweenRotatedText = \"\";\n var maximumSpaceBetweenWords = 30;\n var sentence = wordBounds.reduce(function (word, rect) { return word + rect.Text; }, '');\n var isRTLText = this.checkIsRtlText(sentence);\n for (var count = 0; count < wordBounds.length; count++) {\n var textRotation = wordBounds[count].Rotation;\n if (textRotation == 0 || textRotation == 180) {\n if (hasInBetweenRotation) {\n this.TextBounds.push(newWordBounds);\n this.TextContent.push(inBetweenRotatedText);\n inBetweenRotatedText = \"\";\n }\n hasInBetweenRotation = false;\n if (pageRotation == 0) {\n newWordBounds = new RectAngle(wordBounds[count].Left, minTop, wordBounds[count].Width, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 1) {\n newWordBounds = new RectAngle(pageWidth - minTop, wordBounds[count].Left, wordBounds[count].Width, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 2) {\n newWordBounds = new RectAngle(pageWidth - wordBounds[count].Left, pageHeight - minTop, wordBounds[count].Width, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 3) {\n newWordBounds = new RectAngle(minTop, pageHeight - wordBounds[count].Left, wordBounds[count].Width, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n }\n else if (textRotation == 90 || textRotation == 270) {\n if (hasInBetweenRotation) {\n this.TextBounds.push(newWordBounds);\n this.TextContent.push(inBetweenRotatedText);\n inBetweenRotatedText = \"\";\n }\n hasInBetweenRotation = false;\n if (pageRotation == 0) {\n newWordBounds = new RectAngle(minLeft, wordBounds[count].Top, maxRight - minLeft, wordBounds[count].Height, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 1) {\n newWordBounds = new RectAngle(pageWidth - wordBounds[count].Top, minLeft, maxRight - minLeft, wordBounds[count].Height, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 2) {\n newWordBounds = new RectAngle(pageWidth - minLeft, pageHeight - wordBounds[count].Top, maxRight - minLeft, wordBounds[count].Height, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 3) {\n newWordBounds = new RectAngle(wordBounds[count].Top, pageHeight - minLeft, maxRight - minLeft, wordBounds[count].Height, wordBounds[count].Text, textRotation);\n }\n }\n else if (!hasInBetweenRotation) {\n hasInBetweenRotation = true;\n inBetweenRotatedText += wordBounds[count].Text;\n if (pageRotation == 0) {\n newWordBounds = new RectAngle(wordBounds[count].Left, minTop, maxRight - minLeft, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 1) {\n newWordBounds = new RectAngle(pageWidth - minTop, wordBounds[count].Left, maxRight - minLeft, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 2) {\n newWordBounds = new RectAngle(pageWidth - wordBounds[count].Left, pageHeight - minTop, maxRight - minLeft, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 3) {\n newWordBounds = new RectAngle(minTop, pageHeight - wordBounds[count].Left, maxRight - minLeft, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n }\n else {\n inBetweenRotatedText += wordBounds[count].Text;\n }\n if (!hasInBetweenRotation && wordBounds[count].Text === \" \" && count !== 0 && count + 1 <= wordBounds.length) {\n if (!isRTLText) {\n if (count + 1 != wordBounds.length) {\n var spaceWidth = 0;\n switch (textRotation) {\n case 0:\n spaceWidth = wordBounds[count + 1].Left - (wordBounds[count - 1].Left + wordBounds[count - 1].Width);\n if (maximumSpaceBetweenWords < spaceWidth || spaceWidth < 0) {\n spaceWidth = 0;\n }\n if (pageRotation == 0) {\n newWordBounds = new RectAngle(wordBounds[count - 1].Left + wordBounds[count - 1].Width, minTop, spaceWidth, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 1) {\n newWordBounds = new RectAngle(pageWidth - minTop, wordBounds[count - 1].Left + wordBounds[count - 1].Width, spaceWidth, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 2) {\n newWordBounds = new RectAngle(pageWidth - (wordBounds[count - 1].Left + wordBounds[count - 1].Width), pageHeight - minTop, spaceWidth, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 3) {\n newWordBounds = new RectAngle(minTop, pageHeight - (wordBounds[count - 1].Left + wordBounds[count - 1].Width), spaceWidth, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n break;\n case 90:\n spaceWidth = wordBounds[count + 1].Top - (wordBounds[count - 1].Top + wordBounds[count - 1].Height);\n if (maximumSpaceBetweenWords < spaceWidth || spaceWidth < 0) {\n spaceWidth = 0;\n }\n if (pageRotation == 0) {\n newWordBounds = new RectAngle(minLeft, wordBounds[count - 1].Top + wordBounds[count - 1].Height, maxRight - minLeft, spaceWidth, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 1) {\n newWordBounds = new RectAngle(pageWidth - (wordBounds[count - 1].Top + wordBounds[count - 1].Height), minLeft, maxRight - minLeft, spaceWidth, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 2) {\n newWordBounds = new RectAngle(pageWidth - minLeft, pageHeight - (wordBounds[count - 1].Top + wordBounds[count - 1].Height), maxRight - minLeft, spaceWidth, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 3) {\n newWordBounds = new RectAngle((wordBounds[count - 1].Top + wordBounds[count - 1].Height), pageHeight - minLeft, maxRight - minLeft, spaceWidth, wordBounds[count].Text, textRotation);\n }\n break;\n case 180:\n spaceWidth = wordBounds[count - 1].Left - (wordBounds[count + 1].Left + wordBounds[count + 1].Width);\n if (maximumSpaceBetweenWords < spaceWidth || spaceWidth < 0) {\n spaceWidth = 0;\n }\n if (pageRotation == 0) {\n newWordBounds = new RectAngle(wordBounds[count + 1].Left + wordBounds[count + 1].Width, minTop, spaceWidth, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 1) {\n newWordBounds = new RectAngle(pageWidth - minTop, wordBounds[count + 1].Left + wordBounds[count + 1].Width, spaceWidth, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 2) {\n newWordBounds = new RectAngle(pageWidth - (wordBounds[count + 1].Left + wordBounds[count + 1].Width), pageHeight - minTop, spaceWidth, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 3) {\n newWordBounds = new RectAngle(minTop, pageHeight - (wordBounds[count + 1].Left + wordBounds[count + 1].Width), spaceWidth, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n break;\n case 270:\n spaceWidth = wordBounds[count - 1].Top - (wordBounds[count + 1].Top + wordBounds[count + 1].Height);\n if (maximumSpaceBetweenWords < spaceWidth || spaceWidth < 0) {\n spaceWidth = 0;\n }\n if (pageRotation == 0) {\n newWordBounds = new RectAngle(minLeft, wordBounds[count + 1].Top + wordBounds[count + 1].Height, maxRight - minLeft, spaceWidth, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 1) {\n newWordBounds = new RectAngle(pageWidth - (wordBounds[count + 1].Top + wordBounds[count + 1].Height), minLeft, maxRight - minLeft, spaceWidth, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 2) {\n newWordBounds = new RectAngle(pageWidth - minLeft, pageHeight - (wordBounds[count + 1].Top + wordBounds[count + 1].Height), maxRight - minLeft, spaceWidth, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 3) {\n newWordBounds = new RectAngle((wordBounds[count + 1].Top + wordBounds[count + 1].Height), pageHeight - minLeft, maxRight - minLeft, spaceWidth, wordBounds[count].Text, textRotation);\n }\n break;\n }\n }\n else {\n switch (textRotation) {\n case 90:\n if (pageRotation == 0) {\n newWordBounds = new RectAngle(minLeft, wordBounds[count - 1].Top + wordBounds[count - 1].Height, maxRight - minLeft, wordBounds[count].Height, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 1) {\n newWordBounds = new RectAngle(pageWidth - (wordBounds[count - 1].Top + wordBounds[count - 1].Height), minLeft, maxRight - minLeft, wordBounds[count].Height, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 2) {\n newWordBounds = new RectAngle(pageWidth - minLeft, pageHeight - (wordBounds[count - 1].Top + wordBounds[count - 1].Height), maxRight - minLeft, wordBounds[count].Height, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 3) {\n newWordBounds = new RectAngle((wordBounds[count - 1].Top + wordBounds[count - 1].Height), pageHeight - minLeft, maxRight - minLeft, wordBounds[count].Height, wordBounds[count].Text, textRotation);\n }\n break;\n case 270:\n if (pageRotation == 0) {\n newWordBounds = new RectAngle(minLeft, wordBounds[count - 1].Top - wordBounds[count].Height, maxRight - minLeft, wordBounds[count].Height, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 1) {\n newWordBounds = new RectAngle(pageWidth - (wordBounds[count - 1].Top - wordBounds[count].Height), minLeft, maxRight - minLeft, wordBounds[count].Height, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 2) {\n newWordBounds = new RectAngle(pageWidth - minLeft, pageHeight - wordBounds[count - 1].Top - wordBounds[count].Height, maxRight - minLeft, wordBounds[count].Height, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 3) {\n newWordBounds = new RectAngle((wordBounds[count - 1].Top - wordBounds[count].Height), pageHeight - minLeft, maxRight - minLeft, wordBounds[count].Height, wordBounds[count].Text, textRotation);\n }\n break;\n case 180:\n if (pageRotation == 0) {\n newWordBounds = new RectAngle(wordBounds[count - 1].Left - wordBounds[count].Width, minTop, wordBounds[count].Width, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 1) {\n newWordBounds = new RectAngle((pageWidth - minTop), wordBounds[count - 1].Left - wordBounds[count].Width, wordBounds[count].Width, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 2) {\n newWordBounds = new RectAngle(pageWidth - (wordBounds[count - 1].Left - wordBounds[count].Width), pageHeight - minTop, wordBounds[count].Width, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 3) {\n newWordBounds = new RectAngle(minTop, pageHeight - (wordBounds[count - 1].Left - wordBounds[count].Width), wordBounds[count].Width, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n break;\n case 0:\n if (pageRotation == 0) {\n newWordBounds = new RectAngle(wordBounds[count - 1].Left + wordBounds[count - 1].Width, minTop, wordBounds[count].Width, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 1) {\n newWordBounds = new RectAngle(pageWidth - minTop, wordBounds[count - 1].Left + wordBounds[count - 1].Width, wordBounds[count].Width, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 2) {\n newWordBounds = new RectAngle(pageWidth - (wordBounds[count - 1].Left + wordBounds[count - 1].Width), pageHeight - minTop, wordBounds[count].Width, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n else if (pageRotation == 3) {\n newWordBounds = new RectAngle(minTop, pageHeight - (wordBounds[count - 1].Left + wordBounds[count - 1].Width), wordBounds[count].Width, maxBottom - minTop, wordBounds[count].Text, textRotation);\n }\n break;\n }\n }\n }\n else if (isRTLText && count + 1 != wordBounds.length) {\n var spaceWidth = (wordBounds[count - 1].Left - (wordBounds[count + 1].Left + wordBounds[count + 1].Width));\n if (maximumSpaceBetweenWords < spaceWidth || spaceWidth < 0) {\n spaceWidth = 0;\n }\n newWordBounds = new RectAngle((wordBounds[count + 1].Left + wordBounds[count + 1].Width), minTop, spaceWidth, maxBottom - minTop, wordBounds[count].Text, wordBounds[count].Rotation);\n }\n else if (isRTLText) {\n newWordBounds = new RectAngle((wordBounds[count - 1].Left - wordBounds[count].Width), minTop, wordBounds[count].Width, maxBottom - minTop, wordBounds[count].Text, wordBounds[count].Rotation);\n }\n }\n if (!hasInBetweenRotation) {\n this.TextBounds.push(newWordBounds);\n this.TextContent.push(wordBounds[count].Text);\n }\n }\n if (hasInBetweenRotation) {\n this.TextBounds.push(newWordBounds);\n this.TextContent.push(inBetweenRotatedText);\n }\n };\n Processor.prototype.checkIsRtlText = function (text) {\n // eslint-disable-next-line max-len\n var ltrChars = 'A-Za-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02B8\\\\u0300-\\\\u0590\\\\u0800-\\\\u1FFF' + '\\\\u2C00-\\\\uFB1C\\\\uFDFE-\\\\uFE6F\\\\uFEFD-\\\\uFFFF';\n var rtlChars = '\\\\u0591-\\\\u07FF\\\\uFB1D-\\\\uFDFD\\\\uFE70-\\\\uFEFC';\n // eslint-disable-next-line\n var rtlDirCheck = new RegExp('^[^' + ltrChars + ']*[' + rtlChars + ']');\n return rtlDirCheck.test(text);\n };\n Processor.prototype.getPageRender = function (n, w, h, isTextNeed) {\n if (n === void 0) { n = 0; }\n var pageRenderPtr = this.getRender(n, w, h, isTextNeed);\n var pageRenderData = [];\n pageRenderData = PDFiumModule.HEAPU8.slice(pageRenderPtr, pageRenderPtr + (w * h * 4));\n PDFiumModule.asm.free(pageRenderPtr);\n return pageRenderData;\n };\n Processor.prototype.render = function (n, message, zoomFactor, isTextNeed, printScaleFactor, printDevicePixelRatio, textDetailsId) {\n if (n === void 0) { n = 0; }\n var _a = this.getPageSize(n), w = _a[0], h = _a[1];\n var scaleFactor = 1.5;\n var thumbnailWidth = 99.7;\n var thumbnailHeight = 141;\n if (message === 'thumbnail') {\n var newWidth = Math.round(thumbnailWidth * scaleFactor);\n var newHeight = Math.round(thumbnailHeight * scaleFactor);\n var data = this.getPageRender(n, newWidth, newHeight, false);\n return { value: data, width: newWidth, height: newHeight, pageIndex: n, message: 'renderThumbnail' };\n }\n else if (message === 'print') {\n //An A0 piece of paper measures 33.1 × 46.8 inches, with 46.8 inches being the greater dimension. The pixel value of 46.8 inches is 4493px. If the document size is too large, we may not be able to display the image. Therefore, we should consider the maximum size of A0 paper if the page size is greater than 4493 pixels.\n var maxPageSize = 4493;\n var scaleFactor_1 = 1.5;\n var whichIsBigger = (w > h) ? 'Width' : 'Height';\n var maxWidth = w;\n var maxHeight = h;\n if (whichIsBigger === 'Width') {\n maxWidth = (w > maxPageSize) ? maxPageSize : w;\n if (maxWidth === maxPageSize) {\n maxHeight = h / (w / maxPageSize);\n }\n }\n else {\n maxHeight = (h > maxPageSize) ? maxPageSize : h;\n if (maxHeight === maxPageSize) {\n maxWidth = w / (h / maxPageSize);\n }\n }\n var newWidth = Math.round(maxWidth * printScaleFactor * scaleFactor_1);\n var newHeight = Math.round(maxHeight * printScaleFactor * scaleFactor_1);\n var data = this.getPageRender(n, newWidth, newHeight, false);\n return { value: data, width: newWidth, height: newHeight, pageIndex: n, pageWidth: w, pageHeight: h, message: 'printImage', printDevicePixelRatio: printDevicePixelRatio };\n }\n else {\n var newWidth = Math.round(w * scaleFactor * zoomFactor);\n var newHeight = Math.round(h * scaleFactor * zoomFactor);\n // Reduce the zoom factor if the new image size exceeds the memory limit\n while (((newWidth * newHeight * 4) * 2) >= 2147483648) {\n zoomFactor = zoomFactor - 0.1;\n newWidth = Math.round(this.pointerToPixelConverter(w) * zoomFactor);\n newHeight = Math.round(this.pointerToPixelConverter(h) * zoomFactor);\n }\n var data = this.getPageRender(n, newWidth, newHeight, isTextNeed);\n return { value: data, width: newWidth, height: newHeight, pageWidth: w, pageHeight: h, pageIndex: n, message: 'imageRendered', textBounds: this.TextBounds, textContent: this.TextContent, rotation: this.Rotation, pageText: this.PageText, characterBounds: this.CharacterBounds, zoomFactor: zoomFactor, isTextNeed: isTextNeed, textDetailsId: textDetailsId };\n }\n };\n Processor.prototype.renderTileImage = function (n, tileX, tileY, xCount, yCount, zoomFactor, isTextNeed, textDetailsId) {\n if (n === void 0) { n = 0; }\n var _a = this.getPageSize(n), w = _a[0], h = _a[1];\n var newWidth = Math.round(w * 1.5 * zoomFactor);\n var newHeight = Math.round(h * 1.5 * zoomFactor);\n var w1 = Math.round(newWidth / xCount);\n var h1 = Math.round(newHeight / yCount);\n var flag = FPDF.REVERSE_BYTE_ORDER;\n var heap = PDFiumModule.asm.malloc(w1 * h1 * 4);\n PDFiumModule.HEAPU8.fill(0, heap, heap + (w1 * h1 * 4));\n var bmap = FPDF.Bitmap_CreateEx(w1, h1, 4, heap, w1 * 4);\n var page = FPDF.LoadPage(this.wasmData.wasm, n);\n FPDF.Bitmap_FillRect(bmap, 0, 0, w1, h1, 0xFFFFFFFF);\n FPDF.RenderPageBitmap(bmap, page, -tileX * w1, -tileY * h1, newWidth, newHeight, 0, flag);\n FPDF.Bitmap_Destroy(bmap);\n this.textExtraction(page, n, isTextNeed);\n FPDF.ClosePage(page);\n var pageRenderPtr = heap;\n var data = [];\n data = PDFiumModule.HEAPU8.slice(pageRenderPtr, pageRenderPtr + (w1 * h1 * 4));\n PDFiumModule.asm.free(pageRenderPtr);\n if (tileX === 0 && tileY === 0) {\n return {\n value: data,\n w: w1,\n h: h1,\n noTileX: xCount,\n noTileY: yCount,\n x: tileX,\n y: tileY,\n pageIndex: n,\n message: 'renderTileImage',\n textBounds: this.TextBounds,\n textContent: this.TextContent,\n rotation: this.Rotation,\n pageText: this.PageText,\n characterBounds: this.CharacterBounds,\n textDetailsId: textDetailsId,\n isTextNeed: isTextNeed,\n zoomFactor: zoomFactor\n };\n }\n else {\n return {\n value: data,\n w: w1,\n h: h1,\n noTileX: xCount,\n noTileY: yCount,\n x: tileX,\n y: tileY,\n pageIndex: n,\n message: 'renderTileImage',\n textDetailsId: textDetailsId,\n isTextNeed: isTextNeed,\n zoomFactor: zoomFactor\n };\n }\n };\n ;\n Processor.prototype.getLastError = function () {\n var lastError = FPDF.GetLastError();\n switch (lastError) {\n case FPDF.LAST_ERROR.SUCCESS:\n return \"success\";\n case FPDF.LAST_ERROR.UNKNOWN:\n return \"unknown error\";\n case FPDF.LAST_ERROR.FILE:\n return \"file not found or could not be opened\";\n case FPDF.LAST_ERROR.FORMAT:\n return \"file not in PDF format or corrupted\";\n case FPDF.LAST_ERROR.PASSWORD:\n return \"password required or incorrect password\";\n case FPDF.LAST_ERROR.SECURITY:\n return \"unsupported security scheme\";\n case FPDF.LAST_ERROR.PAGE:\n return \"page not found or content error\";\n default:\n return \"unknown error\";\n }\n };\n return Processor;\n }());\n var DocumentInfo = /** @class */ (function () {\n function DocumentInfo(wasmData) {\n this.pages = [];\n this.processor = new Processor(wasmData);\n }\n DocumentInfo.prototype.setPages = function (pagesCount) {\n this.pages = Array(pagesCount).fill(null);\n };\n DocumentInfo.prototype.createAllPages = function () {\n for (var i = 0; i < this.pages.length; i++) {\n this.pages[parseInt(i.toString(), 10)] = new Page(parseInt(i.toString(), 10), this.processor);\n }\n };\n DocumentInfo.prototype.getPage = function (index) {\n // eslint-disable-next-line\n var page = this.pages[index];\n if (!page) {\n page = new Page(index);\n // eslint-disable-next-line\n this.pages[index] = page;\n }\n return page;\n };\n return DocumentInfo;\n }());\n}\n","import { _escapePdfName } from './../utils';\nvar _PdfStreamWriter = /** @class */ (function () {\n function _PdfStreamWriter(stream) {\n this._newLine = '\\r\\n';\n this._whiteSpace = ' ';\n this._stream = stream;\n }\n _PdfStreamWriter.prototype._writeOperator = function (value) {\n this._stream.write(value);\n this._stream.write(this._newLine);\n };\n _PdfStreamWriter.prototype._saveGraphicsState = function () {\n this._writeOperator('q');\n };\n _PdfStreamWriter.prototype._restoreGraphicsState = function () {\n this._writeOperator('Q');\n };\n _PdfStreamWriter.prototype._writeComment = function (comment) {\n if (comment && comment.length > 0) {\n this._writeOperator('% ' + comment);\n }\n };\n _PdfStreamWriter.prototype._setGraphicsState = function (value) {\n this._stream.write(\"/\" + _escapePdfName(value.name) + \" \");\n this._writeOperator('gs');\n };\n _PdfStreamWriter.prototype._modifyCtm = function (matrix) {\n this._stream.write(matrix._toString() + \" \");\n this._writeOperator('cm');\n };\n _PdfStreamWriter.prototype._modifyTM = function (matrix) {\n this._stream.write(matrix._toString() + \" \");\n this._writeOperator('Tm');\n };\n _PdfStreamWriter.prototype._setColorSpace = function (value, forStroking) {\n this._stream.write(\"/\" + value + \" \");\n this._writeOperator(forStroking ? 'CS' : 'cs');\n };\n _PdfStreamWriter.prototype._setColor = function (color, forStroking) {\n this._stream.write((color[0] / 255).toFixed(3) + \" \" + (color[1] / 255).toFixed(3) + \" \" + (color[2] / 255).toFixed(3) + \" \");\n this._writeOperator(forStroking ? 'RG' : 'rg');\n };\n _PdfStreamWriter.prototype._appendRectangle = function (x, y, width, height) {\n this._writePoint(x, y);\n this._writePoint(width, height);\n this._writeOperator('re');\n };\n _PdfStreamWriter.prototype._writePoint = function (x, y) {\n this._stream.write(x.toFixed(3) + \" \" + (-y).toFixed(3) + \" \");\n };\n _PdfStreamWriter.prototype._clipPath = function (isEvenOdd) {\n this._stream.write((isEvenOdd ? 'W*' : 'W') + \" n\" + this._newLine);\n };\n _PdfStreamWriter.prototype._fillPath = function (isEvenOdd) {\n this._writeOperator(isEvenOdd ? 'f*' : 'f');\n };\n _PdfStreamWriter.prototype._closeFillPath = function (isEvenOdd) {\n this._writeOperator('h');\n this._fillPath(isEvenOdd);\n };\n _PdfStreamWriter.prototype._strokePath = function () {\n this._writeOperator('S');\n };\n _PdfStreamWriter.prototype._closeStrokePath = function () {\n this._writeOperator('s');\n };\n _PdfStreamWriter.prototype._fillStrokePath = function (isEvenOdd) {\n this._writeOperator(isEvenOdd ? 'B*' : 'B');\n };\n _PdfStreamWriter.prototype._closeFillStrokePath = function (isEvenOdd) {\n this._writeOperator(isEvenOdd ? 'b*' : 'b');\n };\n _PdfStreamWriter.prototype._endPath = function () {\n this._writeOperator('n');\n };\n _PdfStreamWriter.prototype._setFont = function (name, size) {\n this._stream.write(\"/\" + name + \" \" + size.toFixed(3) + \" \");\n this._writeOperator('Tf');\n };\n _PdfStreamWriter.prototype._setTextScaling = function (textScaling) {\n this._stream.write(textScaling.toFixed(3) + \" \");\n this._writeOperator('Tz');\n };\n _PdfStreamWriter.prototype._closePath = function () {\n this._writeOperator('h');\n };\n _PdfStreamWriter.prototype._startNextLine = function (x, y) {\n if (typeof x === 'undefined') {\n this._writeOperator('T*');\n }\n else {\n this._writePoint(x, y);\n this._writeOperator('Td');\n }\n };\n _PdfStreamWriter.prototype._showText = function (text) {\n this._writeText(text);\n this._writeOperator('Tj');\n };\n _PdfStreamWriter.prototype._write = function (string) {\n var builder = '';\n builder += string;\n builder += '\\r\\n';\n this._writeOperator(builder);\n };\n _PdfStreamWriter.prototype._writeText = function (text) {\n var result = '';\n var data = this._escapeSymbols(text);\n for (var i = 0; i < data.length; i++) {\n result += String.fromCharCode(data[i]); // eslint-disable-line\n }\n result = '(' + result + ')';\n this._stream.write(result);\n };\n _PdfStreamWriter.prototype._beginText = function () {\n this._writeOperator('BT');\n };\n _PdfStreamWriter.prototype._endText = function () {\n this._writeOperator('ET');\n };\n _PdfStreamWriter.prototype._beginPath = function (x, y) {\n this._writePoint(x, y);\n this._writeOperator('m');\n };\n _PdfStreamWriter.prototype._appendLineSegment = function (x, y) {\n this._writePoint(x, y);\n this._writeOperator('l');\n };\n _PdfStreamWriter.prototype._appendBezierSegment = function (x1, y1, x2, y2, x3, y3) {\n this._writePoint(x1, y1);\n this._writePoint(x2, y2);\n this._writePoint(x3, y3);\n this._writeOperator('c');\n };\n _PdfStreamWriter.prototype._setTextRenderingMode = function (renderingMode) {\n this._stream.write(renderingMode.toString() + \" \");\n this._writeOperator('Tr');\n };\n _PdfStreamWriter.prototype._setCharacterSpacing = function (charSpacing) {\n this._stream.write(charSpacing.toFixed(3) + \" \");\n this._writeOperator('Tc');\n };\n _PdfStreamWriter.prototype._setWordSpacing = function (wordSpacing) {\n this._stream.write(wordSpacing.toFixed(3) + \" \");\n this._writeOperator('Tw');\n };\n _PdfStreamWriter.prototype._showNextLineText = function (text, unicode) {\n if (unicode !== null && typeof unicode !== 'undefined' && unicode) {\n this._writeText(text);\n this._writeOperator('\\'');\n }\n else {\n this._stream.write(text);\n this._writeOperator('\\'');\n }\n };\n _PdfStreamWriter.prototype._setLineDashPattern = function (pattern, patternOffset) {\n var tempPattern = '[';\n if (pattern.length > 1) {\n for (var index = 0; index < pattern.length; index++) {\n if (index === pattern.length - 1) {\n tempPattern += pattern[index].toString(); // eslint-disable-line\n }\n else {\n tempPattern += pattern[index].toString() + ' '; // eslint-disable-line\n }\n }\n }\n tempPattern += '] ';\n tempPattern += patternOffset.toString();\n tempPattern += ' d';\n this._writeOperator(tempPattern);\n };\n _PdfStreamWriter.prototype._setMiterLimit = function (miterLimit) {\n this._stream.write(miterLimit.toFixed(3) + \" \");\n this._writeOperator('M');\n };\n _PdfStreamWriter.prototype._setLineWidth = function (width) {\n this._stream.write(width.toFixed(3) + \" \");\n this._writeOperator('w');\n };\n _PdfStreamWriter.prototype._setLineCap = function (lineCapStyle) {\n this._stream.write(lineCapStyle + \" \");\n this._writeOperator('J');\n };\n _PdfStreamWriter.prototype._setLineJoin = function (lineJoinStyle) {\n this._stream.write(lineJoinStyle + \" \");\n this._writeOperator('j');\n };\n _PdfStreamWriter.prototype._executeObject = function (name) {\n this._stream.write(\"/\" + name.name + \" \");\n this._writeOperator('Do');\n };\n _PdfStreamWriter.prototype._beginMarkupSequence = function (name) {\n this._stream.write(\"/\" + name + \" \");\n this._writeOperator('BMC');\n };\n _PdfStreamWriter.prototype._endMarkupSequence = function () {\n this._writeOperator('EMC');\n };\n _PdfStreamWriter.prototype._clear = function () {\n this._stream._bytes = [];\n };\n _PdfStreamWriter.prototype._escapeSymbols = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n var currentData = value.charCodeAt(i);\n switch (currentData) {\n case 40:\n case 41:\n data.push(92);\n data.push(currentData);\n break;\n case 13:\n data.push(92);\n data.push(114);\n break;\n case 92:\n data.push(92);\n data.push(currentData);\n break;\n default:\n data.push(currentData);\n break;\n }\n }\n return data;\n };\n return _PdfStreamWriter;\n}());\nexport { _PdfStreamWriter };\n","import { PdfSubSuperScript, _PdfWordWrapType } from './../enumerator';\n/**\n * Represents the text layout information.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right, PdfVerticalAlignment.bottom);\n * // Draw the text\n * page.graphics.drawString('Helvetica', font, [0, 180, page.size[0], 40], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStringFormat = /** @class */ (function () {\n function PdfStringFormat(arg1, arg2) {\n this.horizontalScalingFactor = 100.0;\n this.rightToLeft = false;\n this._wordWrapType = _PdfWordWrapType.word;\n this.lineLimit = true;\n if (typeof arg1 !== 'undefined') {\n this.alignment = arg1;\n }\n if (typeof arg2 !== 'undefined') {\n this.lineAlignment = arg2;\n }\n else {\n this.lineAlignment = PdfVerticalAlignment.top;\n }\n this.characterSpacing = 0;\n this.wordSpacing = 0;\n this.lineSpacing = 0;\n this.clipPath = false;\n this.firstLineIndent = 0;\n this._internalParagraphIndent = 0;\n this.measureTrailingSpaces = false;\n this.noClip = false;\n }\n Object.defineProperty(PdfStringFormat.prototype, \"paragraphIndent\", {\n /**\n * Gets the paragraph indent from string format.\n *\n * @returns {number} Returns the paragraph indent.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right);\n * // Get the default paragraph indent\n * let paragraph: number = format.paragraphIndent;\n * // Draw the text\n * page.graphics.drawString('Helvetica', font, [0, 180, page.size[0], 40], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._internalParagraphIndent;\n },\n /**\n * Sets the paragraph indent to string format.\n *\n * @param {number} value paragraph indent.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right);\n * // Set a new paragraph indent\n * format.paragraphIndent = 20;\n * // Draw the text\n * page.graphics.drawString('Helvetica', font, [0, 180, page.size[0], 40], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._internalParagraphIndent = value;\n this.firstLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"subSuperScript\", {\n /**\n * Gets the subscript or superscript mode from string format.\n *\n * @returns {PdfSubSuperScript} Returns the subscript or superscript mode.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right);\n * // Set a new paragraph indent\n * format.paragraphIndent = 20;\n * // Get the subscript or superscript mode\n * let script: PdfSubSuperScript = format.subSuperScript;\n * // Draw the text\n * page.graphics.drawString('Helvetica', font, [0, 180, page.size[0], 40], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._pdfSubSuperScript === 'undefined' || this._pdfSubSuperScript === null) {\n return PdfSubSuperScript.none;\n }\n else {\n return this._pdfSubSuperScript;\n }\n },\n /**\n * Sets the subscript or superscript mode to string format.\n *\n * @param {PdfSubSuperScript} value subscript or superscript mode.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right);\n * // Set a new paragraph indent\n * format.paragraphIndent = 20;\n * // Set the subscript or superscript mode\n * format.subSuperScript = PdfSubSuperScript.subScript;\n * // Draw the text\n * page.graphics.drawString('Helvetica', font, [0, 180, page.size[0], 40], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pdfSubSuperScript = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"_wordWrap\", {\n get: function () {\n return this._wordWrapType;\n },\n set: function (value) {\n this._wordWrapType = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfStringFormat;\n}());\nexport { PdfStringFormat };\n/**\n * Public enum to define vertical alignment.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10, PdfFontStyle.regular);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right, PdfVerticalAlignment.top);\n * // Draw the text\n * page.graphics.drawString('Helvetica', font, [0, 180, page.size[0], 40], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfVerticalAlignment;\n(function (PdfVerticalAlignment) {\n /**\n * Specifies the type of `top`.\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"top\"] = 0] = \"top\";\n /**\n * Specifies the type of `middle`.\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"middle\"] = 1] = \"middle\";\n /**\n * Specifies the type of `bottom`.\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"bottom\"] = 2] = \"bottom\";\n})(PdfVerticalAlignment || (PdfVerticalAlignment = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfSubSuperScript } from './../enumerator';\nvar _PdfFontMetrics = /** @class */ (function () {\n function _PdfFontMetrics() {\n this._lineGap = 0;\n }\n _PdfFontMetrics.prototype._getAscent = function (format) {\n return this._ascent * 0.001 * this._getSize(format);\n };\n _PdfFontMetrics.prototype._getDescent = function (format) {\n return this._descent * 0.001 * this._getSize(format);\n };\n _PdfFontMetrics.prototype._getLineGap = function (format) {\n return this._lineGap * 0.001 * this._getSize(format);\n };\n _PdfFontMetrics.prototype._getHeight = function (format) {\n var height;\n var clearTypeFonts = ['cambria', 'candara', 'constantia', 'corbel', 'cariadings'];\n var clearTypeFontCollection = [];\n for (var index = 0; index < clearTypeFonts.length; index++) {\n clearTypeFontCollection.push(clearTypeFonts[Number.parseInt(index.toString(), 10)]);\n }\n if (this._getDescent(format) < 0) {\n height = (this._getAscent(format) - this._getDescent(format) + this._getLineGap(format));\n }\n else {\n height = (this._getAscent(format) + this._getDescent(format) + this._getLineGap(format));\n }\n return height;\n };\n _PdfFontMetrics.prototype._getSize = function (format) {\n var size = this._size;\n if (format !== null && typeof format !== 'undefined') {\n switch (format.subSuperScript) {\n case PdfSubSuperScript.subScript:\n size /= this._subScriptSizeFactor;\n break;\n case PdfSubSuperScript.superScript:\n size /= this._superscriptSizeFactor;\n break;\n }\n }\n return size;\n };\n return _PdfFontMetrics;\n}());\nexport { _PdfFontMetrics };\nvar _WidthTable = /** @class */ (function () {\n function _WidthTable() {\n }\n return _WidthTable;\n}());\nexport { _WidthTable };\nvar _StandardWidthTable = /** @class */ (function (_super) {\n __extends(_StandardWidthTable, _super);\n function _StandardWidthTable(widths) {\n var _this = _super.call(this) || this;\n _this.widths = widths;\n return _this;\n }\n _StandardWidthTable.prototype._itemAt = function (index) {\n if (index < 0 || index >= this.widths.length) {\n throw new Error('The character is not supported by the font.');\n }\n return this.widths[Number.parseInt(index.toString(), 10)];\n };\n _StandardWidthTable.prototype._toArray = function () {\n return this.widths;\n };\n return _StandardWidthTable;\n}(_WidthTable));\nexport { _StandardWidthTable };\nvar _CjkWidthTable = /** @class */ (function (_super) {\n __extends(_CjkWidthTable, _super);\n function _CjkWidthTable(defaultWidth) {\n var _this = _super.call(this) || this;\n _this._defaultWidth = defaultWidth;\n _this.widths = [];\n return _this;\n }\n _CjkWidthTable.prototype._itemAt = function (index) {\n var width = this._defaultWidth;\n this.widths.forEach(function (entry) {\n if (index >= entry._from && index <= entry._to) {\n width = entry._itemAt(index);\n }\n });\n return width;\n };\n _CjkWidthTable.prototype._toArray = function () {\n var array = [];\n this.widths.forEach(function (width) {\n width._appendToArray(array);\n });\n return array;\n };\n _CjkWidthTable.prototype._add = function (width) {\n this.widths.push(width);\n };\n return _CjkWidthTable;\n}(_WidthTable));\nexport { _CjkWidthTable };\nvar _CjkWidth = /** @class */ (function () {\n function _CjkWidth() {\n }\n return _CjkWidth;\n}());\nexport { _CjkWidth };\nvar _CjkSameWidth = /** @class */ (function (_super) {\n __extends(_CjkSameWidth, _super);\n function _CjkSameWidth(from, to, width) {\n var _this = _super.call(this) || this;\n _this._widthFrom = from;\n _this._widthTo = to;\n _this._width = width;\n return _this;\n }\n Object.defineProperty(_CjkSameWidth.prototype, \"_from\", {\n get: function () {\n return this._widthFrom;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_CjkSameWidth.prototype, \"_to\", {\n get: function () {\n return this._widthTo;\n },\n enumerable: true,\n configurable: true\n });\n _CjkSameWidth.prototype._itemAt = function (index) {\n if (index < this._from || index > this._to) {\n throw new Error('Index is out of range.');\n }\n return this._width;\n };\n _CjkSameWidth.prototype._appendToArray = function (array) {\n array.push(this._from, this._to, this._width);\n };\n return _CjkSameWidth;\n}(_CjkWidth));\nexport { _CjkSameWidth };\nvar _CjkDifferentWidth = /** @class */ (function (_super) {\n __extends(_CjkDifferentWidth, _super);\n function _CjkDifferentWidth(from, widths) {\n var _this = _super.call(this) || this;\n _this._widthFrom = from;\n _this._widths = widths;\n return _this;\n }\n Object.defineProperty(_CjkDifferentWidth.prototype, \"_from\", {\n get: function () {\n return this._widthFrom;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_CjkDifferentWidth.prototype, \"_to\", {\n get: function () {\n return this._widthFrom + this._widths.length - 1;\n },\n enumerable: true,\n configurable: true\n });\n _CjkDifferentWidth.prototype._itemAt = function (index) {\n if (index < this._widthFrom || index > this._to) {\n throw new Error('Index is out of range.');\n }\n return this._widths[Number.parseInt(index.toString(), 10)];\n };\n _CjkDifferentWidth.prototype._appendToArray = function (array) {\n array.push(this._from);\n array.forEach(function (entry) {\n array.push(entry);\n });\n };\n return _CjkDifferentWidth;\n}(_CjkWidth));\nexport { _CjkDifferentWidth };\n","import { _PdfWordWrapType } from './../enumerator';\nvar _PdfStringLayouter = /** @class */ (function () {\n function _PdfStringLayouter() {\n }\n _PdfStringLayouter.prototype._layout = function (text, font, format, size) {\n this._initialize(text, font, format, size);\n var result = this._doLayout();\n this._clear();\n return result;\n };\n _PdfStringLayouter.prototype._initialize = function (text, font, format, size) {\n this._font = font;\n this._format = format;\n this._size = size;\n this._rectangle = [0, 0, size[0], size[1]];\n this._reader = new _StringTokenizer(text);\n this._pageHeight = 0;\n };\n _PdfStringLayouter.prototype._clear = function () {\n this._font = null;\n this._format = null;\n this._reader._close();\n this._reader = null;\n };\n _PdfStringLayouter.prototype._doLayout = function () {\n var result = new _PdfStringLayoutResult();\n var lineResult = new _PdfStringLayoutResult();\n var lines = [];\n var line = this._reader._peekLine();\n var lineIndent = this._getLineIndent(true);\n while (line !== null) {\n lineResult = this._layoutLine(line, lineIndent);\n if (typeof lineResult !== 'undefined' && lineResult !== null) {\n var numSymbolsInserted = 0;\n var returnedValue = this._copyToResult(result, lineResult, lines, numSymbolsInserted);\n var success = returnedValue.success;\n numSymbolsInserted = returnedValue.flag;\n if (!success) {\n this._reader._read(numSymbolsInserted);\n break;\n }\n }\n this._reader._readLine();\n line = this._reader._peekLine();\n lineIndent = this._getLineIndent(false);\n }\n this._finalizeResult(result, lines);\n return result;\n };\n _PdfStringLayouter.prototype._getLineIndent = function (firstLine) {\n var lineIndent = 0;\n if (this._format) {\n lineIndent = (firstLine) ? this._format.firstLineIndent : this._format.paragraphIndent;\n lineIndent = (this._size[0] > 0) ? Math.min(this._size[0], lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n _PdfStringLayouter.prototype._getLineHeight = function () {\n var height = this._font._metrics._getHeight();\n if (this._format && this._format.lineSpacing !== 0) {\n height = this._format.lineSpacing + this._font._metrics._getHeight();\n }\n return height;\n };\n _PdfStringLayouter.prototype._getLineWidth = function (line) {\n return this._font.getLineWidth(line, this._format);\n };\n _PdfStringLayouter.prototype._layoutLine = function (line, lineIndent) {\n var lineResult = new _PdfStringLayoutResult();\n lineResult._lineHeight = this._getLineHeight();\n var lines = [];\n var maxWidth = this._size[0];\n var lineWidth = this._getLineWidth(line) + lineIndent;\n var lineType = _LineType.firstParagraphLine;\n var readWord = true;\n if (maxWidth <= 0 || Math.round(lineWidth) <= Math.round(maxWidth)) {\n this._addToLineResult(lineResult, lines, line, lineWidth, _LineType.newLineBreak | lineType);\n }\n else {\n var builder = '';\n var curLine = '';\n lineWidth = lineIndent;\n var curIndent = lineIndent;\n var reader = new _StringTokenizer(line);\n var word = reader._peekWord();\n if (word.length !== reader._length) {\n if (word === ' ') {\n curLine = curLine + word;\n builder = builder + word;\n reader._position += 1;\n word = reader._peekWord();\n }\n }\n while (word !== null) {\n curLine = curLine + word;\n var curLineWidth = this._getLineWidth(curLine.toString()) + curIndent;\n if (curLine.toString() === ' ') {\n curLine = '';\n curLineWidth = 0;\n }\n if (curLineWidth > maxWidth) {\n if (this._getWrapType() === _PdfWordWrapType.none) {\n break;\n }\n if (curLine.length === word.length) {\n if (this._getWrapType() === _PdfWordWrapType.wordOnly) {\n lineResult._remainder = line.substring(reader._position);\n break;\n }\n else if (curLine.length === 1) {\n builder = builder + word;\n break;\n }\n else {\n readWord = false;\n curLine = '';\n word = reader._peek().toString();\n continue;\n }\n }\n else {\n if (this._getLineWidth(word.toString()) > maxWidth) {\n if (typeof this._format !== 'undefined' && this._format !== null) {\n this._format._wordWrap = _PdfWordWrapType.character;\n }\n }\n else {\n if (typeof this._format !== 'undefined' && this._format !== null) {\n this._format._wordWrap = _PdfWordWrapType.word;\n }\n }\n if (this._getWrapType() !== _PdfWordWrapType.character || !readWord) {\n var stringValue = builder.toString();\n if (stringValue !== ' ') {\n this._addToLineResult(lineResult, lines, stringValue, lineWidth, _LineType.layoutBreak | lineType);\n }\n curLine = '';\n builder = '';\n lineWidth = 0;\n curIndent = 0;\n curLineWidth = 0;\n lineType = _LineType.none;\n word = (readWord) ? word : reader._peekWord();\n readWord = true;\n }\n else {\n readWord = false;\n curLine = '';\n curLine = curLine + builder.toString();\n word = reader._peek().toString();\n }\n continue;\n }\n }\n builder = builder + word;\n lineWidth = curLineWidth;\n if (readWord) {\n reader._readWord();\n word = reader._peekWord();\n }\n else {\n reader._read();\n word = reader._peek().toString();\n }\n }\n if (builder.length > 0) {\n this._addToLineResult(lineResult, lines, builder.toString(), lineWidth, _LineType.newLineBreak | _LineType.lastParagraphLine);\n }\n reader._close();\n }\n lineResult._layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n lineResult._layoutLines.push(lines[index]); // eslint-disable-line\n }\n lines = [];\n return lineResult;\n };\n _PdfStringLayouter.prototype._addToLineResult = function (lineResult, lines, line, lineWidth, breakType) {\n var info = new _LineInfo();\n info._text = line;\n info._width = lineWidth;\n info._lineType = breakType;\n lines.push(info);\n var size = lineResult._actualSize;\n size[1] = size[1] + this._getLineHeight();\n size[0] = Math.max(size[0], lineWidth);\n lineResult._size = size;\n };\n _PdfStringLayouter.prototype._copyToResult = function (result, lineResult, lines, flag) {\n var success = true;\n var allowPartialLines = (this._format && !this._format.lineLimit);\n var height = result._actualSize[1];\n var maxHeight = this._size[1];\n if ((this._pageHeight > 0) && (maxHeight + this._rectangle[1] > this._pageHeight)) {\n maxHeight = this._rectangle[1] - this._pageHeight;\n maxHeight = Math.max(maxHeight, -maxHeight);\n }\n flag = 0;\n if (lineResult._lines !== null) {\n for (var i = 0, len = lineResult._lines.length; i < len; i++) {\n var expHeight = height + lineResult._lineHeight;\n if (expHeight <= maxHeight || maxHeight <= 0 || allowPartialLines) {\n var info = lineResult._lines[i]; // eslint-disable-line\n flag += info._text.length;\n info = this._trimLine(info, (lines.length === 0));\n lines.push(info);\n var size = result._actualSize;\n size[0] = Math.max(size[0], info._width);\n result._size = size;\n height = expHeight;\n }\n else {\n success = false;\n break;\n }\n }\n }\n if (height !== result._size[1]) {\n result._size = [result._actualSize[0], height];\n }\n return { success: success, flag: flag };\n };\n _PdfStringLayouter.prototype._finalizeResult = function (result, lines) {\n result._layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n result._layoutLines.push(lines[index]); // eslint-disable-line\n }\n result._lineHeight = this._getLineHeight();\n if (!this._reader._end) {\n result._remainder = this._reader._readToEnd();\n }\n lines = [];\n };\n _PdfStringLayouter.prototype._trimLine = function (info, firstLine) {\n var line = info._text.trim();\n var lineWidth = info._width;\n if (line.length !== info._text.length) {\n lineWidth = this._getLineWidth(line);\n if ((info._lineType & _LineType.firstParagraphLine) > 0) {\n lineWidth += this._getLineIndent(firstLine);\n }\n }\n info._text = line;\n info._width = lineWidth;\n return info;\n };\n _PdfStringLayouter.prototype._getWrapType = function () {\n var wrapType = (this._format !== null && typeof this._format !== 'undefined') ?\n this._format._wordWrap : _PdfWordWrapType.word;\n return wrapType;\n };\n return _PdfStringLayouter;\n}());\nexport { _PdfStringLayouter };\nvar _PdfStringLayoutResult = /** @class */ (function () {\n function _PdfStringLayoutResult() {\n }\n Object.defineProperty(_PdfStringLayoutResult.prototype, \"_actualSize\", {\n get: function () {\n if (typeof this._size === 'undefined') {\n this._size = [0, 0];\n }\n return this._size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_PdfStringLayoutResult.prototype, \"_lines\", {\n get: function () {\n return this._layoutLines;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_PdfStringLayoutResult.prototype, \"_empty\", {\n get: function () {\n return (this._layoutLines == null || this._layoutLines.length === 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_PdfStringLayoutResult.prototype, \"_lineCount\", {\n get: function () {\n return (!this._empty) ? this._layoutLines.length : 0;\n },\n enumerable: true,\n configurable: true\n });\n return _PdfStringLayoutResult;\n}());\nexport { _PdfStringLayoutResult };\nvar _LineInfo = /** @class */ (function () {\n function _LineInfo() {\n }\n return _LineInfo;\n}());\nexport { _LineInfo };\nexport var _LineType;\n(function (_LineType) {\n _LineType[_LineType[\"none\"] = 0] = \"none\";\n _LineType[_LineType[\"newLineBreak\"] = 1] = \"newLineBreak\";\n _LineType[_LineType[\"layoutBreak\"] = 2] = \"layoutBreak\";\n _LineType[_LineType[\"firstParagraphLine\"] = 4] = \"firstParagraphLine\";\n _LineType[_LineType[\"lastParagraphLine\"] = 8] = \"lastParagraphLine\";\n})(_LineType || (_LineType = {}));\nvar _StringTokenizer = /** @class */ (function () {\n function _StringTokenizer(textValue) {\n this._position = 0;\n if (typeof textValue === 'undefined' || textValue === null) {\n throw new Error('ArgumentNullException:text');\n }\n this._text = textValue;\n }\n Object.defineProperty(_StringTokenizer.prototype, \"_length\", {\n get: function () {\n return this._text.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_StringTokenizer.prototype, \"_end\", {\n get: function () {\n return (this._position === this._text.length);\n },\n enumerable: true,\n configurable: true\n });\n _StringTokenizer.prototype._readLine = function () {\n var position = this._position;\n while (position < this._length) {\n var ch = this._text[position]; // eslint-disable-line\n var text = void 0;\n switch (ch) {\n case '\\r':\n case '\\n':\n text = this._text.substring(this._position, position);\n this._position = position + 1;\n if (((ch === '\\r') && (this._position < this._length)) && (this._text[this._position] === '\\n')) {\n this._position++;\n }\n return text;\n }\n position++;\n }\n if (position > this._position) {\n var text2 = this._text.substring(this._position, position);\n this._position = position;\n return text2;\n }\n return null;\n };\n _StringTokenizer.prototype._peekLine = function () {\n var position = this._position;\n var line = this._readLine();\n this._position = position;\n return line;\n };\n _StringTokenizer.prototype._readWord = function () {\n var position = this._position;\n while (position < this._length) {\n var ch = this._text[position]; // eslint-disable-line\n var text = void 0;\n switch (ch) {\n case '\\r':\n case '\\n':\n text = this._text.substring(this._position, position - this._position);\n this._position = position + 1;\n if (((ch === '\\r') && (this._position < this._length)) && (this._text[this._position] === '\\n')) {\n this._position++;\n }\n return text;\n case ' ':\n case '\\t':\n if (position === this._position) {\n position++;\n }\n text = this._text.substring(this._position, position);\n this._position = position;\n return text;\n }\n position++;\n }\n if (position > this._position) {\n var text2 = this._text.substring(this._position, position);\n this._position = position;\n return text2;\n }\n return null;\n };\n _StringTokenizer.prototype._peekWord = function () {\n var position = this._position;\n var word = this._readWord();\n this._position = position;\n return word;\n };\n _StringTokenizer.prototype._read = function (count) {\n if (typeof count === 'undefined') {\n var character = '0';\n if (!this._end) {\n character = this._text[this._position];\n this._position++;\n }\n return character;\n }\n else {\n var value = 0;\n var builder = '';\n while (!this._end && value < count) {\n builder += this._read();\n value++;\n }\n return builder;\n }\n };\n _StringTokenizer.prototype._peek = function () {\n return this._end ? '0' : this._text[this._position];\n };\n _StringTokenizer.prototype._close = function () {\n this._text = null;\n };\n _StringTokenizer.prototype._readToEnd = function () {\n var text;\n if (this._position === 0) {\n text = this._text;\n }\n else {\n text = this._text.substring(this._position);\n }\n this._position = this._length;\n return text;\n };\n _StringTokenizer._whiteSpace = ' ';\n _StringTokenizer._tab = '\\t';\n _StringTokenizer._spaces = [_StringTokenizer._whiteSpace, _StringTokenizer._tab];\n return _StringTokenizer;\n}());\nexport { _StringTokenizer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfStringFormat } from './pdf-string-format';\nimport { _PdfFontMetrics, _CjkWidthTable, _StandardWidthTable, _CjkSameWidth, _CjkDifferentWidth } from './pdf-font-metrics';\nimport { _PdfDictionary, _PdfName } from './../pdf-primitives';\nimport { _PdfStringLayouter } from './string-layouter';\nimport { _UnicodeTrueTypeFont } from './unicode-true-type-font';\nimport { _fromRectangle } from './../utils';\nimport { PdfTextDirection } from './../../core/enumerator';\nimport { _RtlRenderer } from './../graphics/rightToLeft/text-renderer';\n/**\n * Represents the base class for font objects.`\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right, PdfVerticalAlignment.bottom);\n * // Draw the text\n * page.graphics.drawString('Helvetica', font, [0, 180, page.size[0], 40], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfFont = /** @class */ (function () {\n function PdfFont(size, style) {\n if (typeof size === 'number' && typeof style === 'undefined') {\n this._size = size;\n }\n else {\n this._size = size;\n this._style = style;\n }\n }\n Object.defineProperty(PdfFont.prototype, \"size\", {\n /**\n * Gets the size of the PDF font.\n *\n * @returns {number} size.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10);\n * // Gets the font size\n * let size: number = font.size;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"style\", {\n /**\n * Gets the style of the PDF font.\n *\n * @returns {PdfFontStyle} size.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10, PdfFontStyle.italic);\n * // Gets the font style\n * let style: PdfFontStyle = font.style;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._style;\n },\n /**\n * Sets the style of the PDF font.\n *\n * @param {PdfFontStyle} value to font style.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10);\n * // Sets the font style\n * font.style = PdfFontStyle.italic;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._style = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"isUnderline\", {\n /**\n * Gets the boolean flag indicating whether the font has underline style or not.\n *\n * @returns {boolean} isUnderline.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10, PdfFontStyle.underline);\n * // Gets the boolean flag indicating whether the font has underline style or not.\n * let underline: boolean = font.isUnderline;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return (this.style & PdfFontStyle.underline) > 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"isStrikeout\", {\n /**\n * Gets the boolean flag indicating whether the font has strike out style or not.\n *\n * @returns {boolean} isStrikeout.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10, PdfFontStyle.strikeout);\n * // Gets the boolean flag indicating whether the font has strike out style or not.\n * let strikeout: boolean = font.isStrikeout;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return (this.style & PdfFontStyle.strikeout) > 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"_metrics\", {\n get: function () {\n return this._fontMetrics;\n },\n set: function (value) {\n this._fontMetrics = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"isBold\", {\n /**\n * Gets the boolean flag indicating whether the font has bold style or not.\n *\n * @returns {boolean} isBold.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10, PdfFontStyle.bold);\n * // Gets the boolean flag indicating whether the font has bold style or not.\n * let bold: boolean = font.isBold;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return ((this.style & PdfFontStyle.bold) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"isItalic\", {\n /**\n * Gets the boolean flag indicating whether the font has italic style or not.\n *\n * @returns {boolean} isItalic.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10, PdfFontStyle.italic);\n * // Gets the boolean flag indicating whether the font has italic style or not.\n * let italic: boolean = font.isItalic;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return ((this.style & PdfFontStyle.italic) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"height\", {\n /**\n * Gets the font height.\n *\n * @returns {number} height.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10, PdfFontStyle.italic);\n * // Gets the font height\n * let height: number = font.height;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._metrics._getHeight();\n },\n enumerable: true,\n configurable: true\n });\n PdfFont.prototype._setInternals = function (internals) {\n if (internals == null) {\n throw new Error('ArgumentNullException:internals');\n }\n this._pdfFontInternals = internals;\n };\n PdfFont.prototype._getCharacterCount = function (text, symbols) {\n if (typeof symbols === 'string') {\n var numSymbols = 0;\n var curIndex = 0;\n curIndex = text.indexOf(symbols, curIndex);\n while (curIndex !== -1) {\n numSymbols++;\n curIndex++;\n curIndex = text.indexOf(symbols, curIndex);\n }\n return numSymbols;\n }\n else {\n var count = 0;\n for (var i = 0; i < text.length; i++) {\n if (symbols.indexOf(text[Number.parseInt(i.toString(), 10)]) !== -1) {\n count++;\n }\n }\n return count;\n }\n };\n PdfFont.prototype.measureString = function (text, arg2, arg3, arg4, arg5) {\n if (typeof text === 'string' && typeof arg2 === 'undefined') {\n return this.measureString(text, null);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) &&\n typeof arg3 === 'undefined' && typeof arg4 === 'undefined') {\n var temparg2 = arg2;\n var charactersFitted = 0;\n var linesFilled = 0;\n return this.measureString(text, temparg2, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null)\n && typeof arg3 === 'number' && typeof arg4 === 'number') {\n var temparg2 = arg2;\n return this.measureString(text, 0, temparg2, arg3, arg4);\n }\n else if (typeof text === 'string' && typeof arg2 === 'number'\n && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'number' && typeof arg5 === 'number') {\n var layoutArea = [arg2, 0];\n var temparg3 = arg3;\n return this.measureString(text, layoutArea, temparg3, arg4, arg5);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var layouter = new _PdfStringLayouter();\n var result = layouter._layout(text, this, temparg3, temparg2);\n arg4 = text.length;\n arg5 = (result._empty) ? 0 : result._lines.length;\n return result._actualSize;\n }\n };\n PdfFont.prototype._applyFormatSettings = function (line, format, width) {\n var realWidth = width;\n if (typeof format !== 'undefined' && format !== null && width > 0) {\n if (format.characterSpacing !== 0) {\n realWidth += (line.length - 1) * format.characterSpacing;\n }\n if (format.wordSpacing !== 0) {\n realWidth += this._getCharacterCount(line, [' ', '\\t']) * format.wordSpacing;\n }\n }\n return realWidth;\n };\n return PdfFont;\n}());\nexport { PdfFont };\n/**\n * Represents one of the 14 standard fonts.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right, PdfVerticalAlignment.bottom);\n * // Draw the text\n * page.graphics.drawString('Helvetica', font, [0, 180, page.size[0], 40], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStandardFont = /** @class */ (function (_super) {\n __extends(PdfStandardFont, _super);\n function PdfStandardFont(fontFamily, size, style) {\n var _this = _super.call(this, size, (typeof style === 'undefined') ? PdfFontStyle.regular : style) || this;\n _this._fontFamily = fontFamily;\n _this._checkStyle();\n _this._initializeInternals();\n return _this;\n }\n Object.defineProperty(PdfStandardFont.prototype, \"fontFamily\", {\n /**\n * Gets the font family of the PDF standard font.\n *\n * @returns {PdfFontFamily} fontFamily.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10, PdfFontStyle.strikeout);\n * // Gets the font family\n * let fontFamily: PdfFontFamily = font.fontFamily;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._fontFamily;\n },\n enumerable: true,\n configurable: true\n });\n PdfStandardFont.prototype._checkStyle = function () {\n if (this._fontFamily === PdfFontFamily.symbol || this._fontFamily === PdfFontFamily.zapfDingbats) {\n this._style &= ~(PdfFontStyle.bold | PdfFontStyle.italic);\n }\n };\n /**\n * Gets the line width.\n *\n * @param {string} line Line.\n * @param {PdfStringFormat} format String format.\n * @returns {number} width.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10, PdfFontStyle.regular);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right, PdfVerticalAlignment.bottom);\n * // Get the text width\n * let width: number = font.getLineWidth('Syncfusion', format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfStandardFont.prototype.getLineWidth = function (line, format) {\n var width = 0;\n for (var i = 0, len = line.length; i < len; i++) {\n width += this._getCharacterWidthInternal(line[Number.parseInt(i.toString(), 10)]);\n }\n width *= (0.001 * this._metrics._size);\n width = this._applyFormatSettings(line, format, width);\n return width;\n };\n PdfStandardFont.prototype._initializeInternals = function () {\n this._metrics = _PdfStandardFontMetricsFactory._getMetrics(this._fontFamily, this._style, this._size);\n this._dictionary = this._createInternals();\n };\n PdfStandardFont.prototype._createInternals = function () {\n var dictionary = new _PdfDictionary();\n dictionary._updated = true;\n dictionary.set('Type', _PdfName.get('Font'));\n dictionary.set('Subtype', _PdfName.get('Type1'));\n dictionary.set('BaseFont', new _PdfName(this._metrics._postScriptName));\n if (this._fontFamily !== PdfFontFamily.symbol && this._fontFamily !== PdfFontFamily.zapfDingbats) {\n dictionary.set('Encoding', new _PdfName('WinAnsiEncoding'));\n }\n return dictionary;\n };\n PdfStandardFont.prototype._getCharacterWidthInternal = function (charCode) {\n var width = 0;\n var code = 0;\n code = charCode.charCodeAt(0);\n if (this._metrics._name === '0' ||\n this._metrics._name === '1' ||\n this._metrics._name === '2' ||\n this._metrics._name === '3' ||\n this._metrics._name === '4') {\n code = code - 32;\n }\n code = (code >= 0 && code !== 128) ? code : 0;\n var widthTable = this._metrics._widthTable;\n width = widthTable._itemAt(code);\n return width;\n };\n return PdfStandardFont;\n}(PdfFont));\nexport { PdfStandardFont };\n/**\n * Represents one of the 7 CJK standard fonts.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF CJK standard font\n * let font: PdfCjkStandardFont = new PdfCjkStandardFont(PdfCjkFontFamily.heiseiMinchoW3, 20);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right, PdfVerticalAlignment.bottom);\n * // Draw the text\n * page.graphics.drawString('こんにちは世界', font, [0, 180, page.size[0], 40], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfCjkStandardFont = /** @class */ (function (_super) {\n __extends(PdfCjkStandardFont, _super);\n function PdfCjkStandardFont(fontFamily, size, style) {\n var _this = _super.call(this, size, (typeof style === 'undefined') ? PdfFontStyle.regular : style) || this;\n _this._fontFamily = fontFamily;\n _this._size = size;\n _this._initializeInternals();\n return _this;\n }\n Object.defineProperty(PdfCjkStandardFont.prototype, \"fontFamily\", {\n /**\n * Gets the font family of the PDF CJK font.\n *\n * @returns {PdfCjkFontFamily} fontFamily.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF CJK standard font\n * let font: PdfCjkStandardFont = new PdfCjkStandardFont(PdfCjkFontFamily.heiseiMinchoW3, 20);\n * // Gets the font family\n * let fontFamily: PdfCjkFontFamily = font.fontFamily;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._fontFamily;\n },\n enumerable: true,\n configurable: true\n });\n PdfCjkStandardFont.prototype._initializeInternals = function () {\n this._metrics = _PdfCjkStandardFontMetricsFactory._getMetrics(this._fontFamily, this._style, this._size);\n this._dictionary = this._createInternals();\n };\n PdfCjkStandardFont.prototype._createInternals = function () {\n var dictionary = new _PdfDictionary();\n dictionary._updated = true;\n dictionary.set('Type', _PdfName.get('Font'));\n dictionary.set('Subtype', _PdfName.get('Type0'));\n dictionary.set('BaseFont', new _PdfName(this._metrics._postScriptName));\n dictionary.set('Encoding', this._getEncoding(this._fontFamily));\n dictionary.set('DescendantFonts', this._getDescendantFont());\n return dictionary;\n };\n PdfCjkStandardFont.prototype._getEncoding = function (fontFamily) {\n var encoding = 'Unknown';\n switch (fontFamily) {\n case PdfCjkFontFamily.hanyangSystemsGothicMedium:\n case PdfCjkFontFamily.hanyangSystemsShinMyeongJoMedium:\n encoding = 'UniKS-UCS2-H';\n break;\n case PdfCjkFontFamily.heiseiKakuGothicW5:\n case PdfCjkFontFamily.heiseiMinchoW3:\n encoding = 'UniJIS-UCS2-H';\n break;\n case PdfCjkFontFamily.monotypeHeiMedium:\n case PdfCjkFontFamily.monotypeSungLight:\n encoding = 'UniCNS-UCS2-H';\n break;\n case PdfCjkFontFamily.sinoTypeSongLight:\n encoding = 'UniGB-UCS2-H';\n break;\n }\n return new _PdfName(encoding);\n };\n PdfCjkStandardFont.prototype._getDescendantFont = function () {\n var dictionary = new _PdfDictionary();\n dictionary._updated = true;\n dictionary.set('Type', _PdfName.get('Font'));\n dictionary.set('Subtype', _PdfName.get('CIDFontType2'));\n dictionary.set('BaseFont', new _PdfName(this._metrics._postScriptName));\n dictionary.set('DW', this._metrics._widthTable._defaultWidth);\n dictionary.set('W', this._metrics._widthTable._toArray());\n dictionary.set('FontDescriptor', _PdfCjkFontDescriptorFactory._getFontDescriptor(this._fontFamily, this._style, this._metrics));\n dictionary.set('CIDSystemInfo', this._getSystemInformation());\n return [dictionary];\n };\n PdfCjkStandardFont.prototype._getSystemInformation = function () {\n var systemInformation = new _PdfDictionary();\n systemInformation._updated = true;\n systemInformation.set('Registry', 'Adobe');\n switch (this._fontFamily) {\n case PdfCjkFontFamily.hanyangSystemsGothicMedium:\n case PdfCjkFontFamily.hanyangSystemsShinMyeongJoMedium:\n systemInformation.set('Ordering', 'Korea1');\n systemInformation.set('Supplement', 1);\n break;\n case PdfCjkFontFamily.heiseiKakuGothicW5:\n case PdfCjkFontFamily.heiseiMinchoW3:\n systemInformation.set('Ordering', 'Japan1');\n systemInformation.set('Supplement', 2);\n break;\n case PdfCjkFontFamily.monotypeHeiMedium:\n case PdfCjkFontFamily.monotypeSungLight:\n systemInformation.set('Ordering', 'CNS1');\n systemInformation.set('Supplement', '0');\n break;\n case PdfCjkFontFamily.sinoTypeSongLight:\n systemInformation.set('Ordering', 'GB1');\n systemInformation.set('Supplement', 2);\n break;\n }\n return systemInformation;\n };\n /**\n * Gets the line width.\n *\n * @param {string} line Line.\n * @param {PdfStringFormat} format String format.\n * @returns {number} width.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF CJK standard font\n * let font: PdfCjkStandardFont = new PdfCjkStandardFont(PdfCjkFontFamily.heiseiMinchoW3, 20, PdfFontStyle.bold);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right, PdfVerticalAlignment.bottom);\n * // Get the text width\n * let width: number = font.getLineWidth('Syncfusion', format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfCjkStandardFont.prototype.getLineWidth = function (line, format) {\n var width = 0;\n for (var i = 0; i < line.length; i++) {\n width += this._getCharacterWidthInternal(line.charCodeAt(i));\n }\n width *= (0.001 * this._metrics._size);\n width = this._applyFormatSettings(line, format, width);\n return width;\n };\n PdfCjkStandardFont.prototype._getCharacterWidthInternal = function (charCode) {\n charCode = (charCode >= 0) ? charCode : 0;\n return this._metrics._widthTable._itemAt(charCode);\n };\n return PdfCjkStandardFont;\n}(PdfFont));\nexport { PdfCjkStandardFont };\n/**\n * Represents TrueType font.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF truetype font\n * let font: PdfTrueTypeFont = new PdfTrueTypeFont(base64String, 10);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right, PdfVerticalAlignment.bottom);\n * // Draw the text\n * page.graphics.drawString('Helvetica', font, [0, 180, page.size[0], 40], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfTrueTypeFont = /** @class */ (function (_super) {\n __extends(PdfTrueTypeFont, _super);\n function PdfTrueTypeFont(base64String, size, style) {\n var _this = _super.call(this, size, (typeof style === 'undefined') ? PdfFontStyle.regular : style) || this;\n _this._isEmbedFont = false;\n _this._isUnicode = true;\n if (style !== undefined) {\n _this._createFontInternal(base64String, style);\n }\n else {\n _this._createFontInternal(base64String, PdfFontStyle.regular);\n }\n return _this;\n }\n Object.defineProperty(PdfTrueTypeFont.prototype, \"isUnicode\", {\n /**\n * Gets the boolean flag indicating whether the font has unicode or not.\n *\n * @returns {boolean} unicode.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF truetype font\n * let font: PdfTrueTypeFont = new PdfTrueTypeFont(base64String, 10);\n * // Gets the boolean flag indicating whether the font has or not.\n * let isUnicode: boolean = font.isUnicode;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._isUnicode;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTrueTypeFont.prototype, \"isEmbed\", {\n /**\n * Gets the boolean flag indicating whether the font is embedded or not.\n *\n * @returns {boolean} isEmbed.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF truetype font\n * let font: PdfTrueTypeFont = new PdfTrueTypeFont(base64String, 10);\n * // Gets the boolean flag indicating whether the font is embedded or not.\n * let isEmbed: boolean = font.isEmbed;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._isEmbedFont;\n },\n enumerable: true,\n configurable: true\n });\n PdfTrueTypeFont.prototype._createFontInternal = function (base64String, style) {\n this._fontInternal = new _UnicodeTrueTypeFont(base64String, this._size);\n this._calculateStyle(style);\n this._initializeInternals();\n };\n PdfTrueTypeFont.prototype._calculateStyle = function (style) {\n var iStyle = this._fontInternal._ttfMetrics._macStyle;\n if ((style & PdfFontStyle.underline) !== 0) {\n iStyle |= PdfFontStyle.underline;\n }\n if ((style & PdfFontStyle.strikeout) !== 0) {\n iStyle |= PdfFontStyle.strikeout;\n }\n this.style = iStyle;\n };\n PdfTrueTypeFont.prototype._initializeInternals = function () {\n var internals = null;\n if (this._fontInternal instanceof _UnicodeTrueTypeFont) {\n this._fontInternal._isEmbed = this._isEmbedFont;\n }\n this._fontInternal._createInternals();\n internals = this._fontInternal._getInternals();\n this._metrics = this._fontInternal._metrics;\n this._metrics._isUnicodeFont = true;\n this._setInternals(internals);\n };\n /**\n * Gets the line width.\n *\n * @param {string} line Line.\n * @param {PdfStringFormat} format String format.\n * @returns {number} width.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF truetype font\n * let font: PdfTrueTypeFont = new PdfTrueTypeFont(base64String, 10, PdfFontStyle.regular);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right, PdfVerticalAlignment.bottom);\n * // Get the text width\n * let width: number = font.getLineWidth('Syncfusion', format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfTrueTypeFont.prototype.getLineWidth = function (line, format) {\n var width = 0;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.none) {\n width = this._getUnicodeLineWidth(line, width);\n }\n else {\n for (var i = 0, len = line.length; i < len; i++) {\n width += this._getCharacterWidthInternal(line[Number.parseInt(i.toString(), 10)]);\n }\n }\n width *= (0.001 * this._metrics._size);\n width = this._applyFormatSettings(line, format, width);\n return width;\n };\n PdfTrueTypeFont.prototype._getUnicodeLineWidth = function (line, width) {\n width = 0;\n var glyphIndex = [];\n var result = false;\n var rtlRender = new _RtlRenderer();\n var value = rtlRender._getGlyphIndex(line, this, glyphIndex);\n result = value._result;\n glyphIndex = value._glyphIndex;\n if (result && glyphIndex !== null) {\n var ttfReader = this._fontInternal._ttfReader;\n for (var i = 0, len = glyphIndex.length; i < len; i++) {\n var index = glyphIndex[Number.parseInt(i.toString(), 10)];\n var glyph = ttfReader._getGlyph(index);\n if (glyph !== null && typeof glyph !== 'undefined') {\n width += glyph._width;\n }\n }\n }\n return width;\n };\n PdfTrueTypeFont.prototype._getCharacterWidth = function (charCode, format) {\n var codeWidth = this._fontInternal._getCharacterWidth(charCode);\n var size = this._metrics._getSize(format);\n codeWidth *= (0.001 * size);\n return codeWidth;\n };\n PdfTrueTypeFont.prototype._setSymbols = function (text) {\n var internalFont = this._fontInternal;\n if (internalFont !== null && typeof internalFont !== 'undefined') {\n internalFont._setSymbols(text);\n }\n };\n PdfTrueTypeFont.prototype._getCharacterWidthInternal = function (charCode) {\n var width = 0;\n var code = 0;\n code = charCode.charCodeAt(0);\n if (this._metrics._name === '0' ||\n this._metrics._name === '1' ||\n this._metrics._name === '2' ||\n this._metrics._name === '3' ||\n this._metrics._name === '4') {\n code = code - 32;\n }\n code = (code >= 0 && code !== 128) ? code : 0;\n var widthTable = this._metrics._widthTable;\n width = widthTable._itemAt(code);\n return width;\n };\n return PdfTrueTypeFont;\n}(PdfFont));\nexport { PdfTrueTypeFont };\nvar _PdfStandardFontMetricsFactory = /** @class */ (function () {\n function _PdfStandardFontMetricsFactory() {\n }\n _PdfStandardFontMetricsFactory._getMetrics = function (fontFamily, fontStyle, size) {\n var metrics = null;\n switch (fontFamily) {\n case PdfFontFamily.helvetica:\n metrics = this._getHelveticaMetrics(fontStyle, size);\n break;\n case PdfFontFamily.courier:\n metrics = this._getCourierMetrics(fontStyle, size);\n break;\n case PdfFontFamily.timesRoman:\n metrics = this._getTimesMetrics(fontStyle, size);\n break;\n case PdfFontFamily.symbol:\n metrics = this._getSymbolMetrics(size);\n break;\n case PdfFontFamily.zapfDingbats:\n metrics = this._getZapfDingbatsMetrics(size);\n break;\n default:\n metrics = this._getHelveticaMetrics(fontStyle, size);\n break;\n }\n metrics._name = fontFamily.toString();\n metrics._subScriptSizeFactor = this._subSuperScriptFactor;\n metrics._superscriptSizeFactor = this._subSuperScriptFactor;\n return metrics;\n };\n _PdfStandardFontMetricsFactory._getHelveticaMetrics = function (fontStyle, size) {\n var metrics = new _PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.bold) > 0 && (fontStyle & PdfFontStyle.italic) > 0) {\n metrics._ascent = this._helveticaBoldItalicAscent;\n metrics._descent = this._helveticaBoldItalicDescent;\n metrics._postScriptName = this._helveticaBoldItalicName;\n metrics._size = size;\n metrics._widthTable = new _StandardWidthTable(this._arialBoldWidth);\n metrics._height = metrics._ascent - metrics._descent;\n }\n else if ((fontStyle & PdfFontStyle.bold) > 0) {\n metrics._ascent = this._helveticaBoldAscent;\n metrics._descent = this._helveticaBoldDescent;\n metrics._postScriptName = this._helveticaBoldName;\n metrics._size = size;\n metrics._widthTable = new _StandardWidthTable(this._arialBoldWidth);\n metrics._height = metrics._ascent - metrics._descent;\n }\n else if ((fontStyle & PdfFontStyle.italic) > 0) {\n metrics._ascent = this._helveticaItalicAscent;\n metrics._descent = this._helveticaItalicDescent;\n metrics._postScriptName = this._helveticaItalicName;\n metrics._size = size;\n metrics._widthTable = new _StandardWidthTable(this._arialWidth);\n metrics._height = metrics._ascent - metrics._descent;\n }\n else {\n metrics._ascent = this._helveticaAscent;\n metrics._descent = this._helveticaDescent;\n metrics._postScriptName = this._helveticaName;\n metrics._size = size;\n metrics._widthTable = new _StandardWidthTable(this._arialWidth);\n metrics._height = metrics._ascent - metrics._descent;\n }\n return metrics;\n };\n _PdfStandardFontMetricsFactory._getCourierMetrics = function (fontStyle, size) {\n var metrics = new _PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.bold) > 0 && (fontStyle & PdfFontStyle.italic) > 0) {\n metrics._ascent = this._courierBoldItalicAscent;\n metrics._descent = this._courierBoldItalicDescent;\n metrics._postScriptName = this._courierBoldItalicName;\n metrics._size = size;\n metrics._widthTable = new _StandardWidthTable(this._fixedWidth);\n metrics._height = metrics._ascent - metrics._descent;\n }\n else if ((fontStyle & PdfFontStyle.bold) > 0) {\n metrics._ascent = this._courierBoldAscent;\n metrics._descent = this._courierBoldDescent;\n metrics._postScriptName = this._courierBoldName;\n metrics._size = size;\n metrics._widthTable = new _StandardWidthTable(this._fixedWidth);\n metrics._height = metrics._ascent - metrics._descent;\n }\n else if ((fontStyle & PdfFontStyle.italic) > 0) {\n metrics._ascent = this._courierItalicAscent;\n metrics._descent = this._courierItalicDescent;\n metrics._postScriptName = this._courierItalicName;\n metrics._size = size;\n metrics._widthTable = new _StandardWidthTable(this._fixedWidth);\n metrics._height = metrics._ascent - metrics._descent;\n }\n else {\n metrics._ascent = this._courierAscent;\n metrics._descent = this._courierDescent;\n metrics._postScriptName = this._courierName;\n metrics._size = size;\n metrics._widthTable = new _StandardWidthTable(this._fixedWidth);\n metrics._height = metrics._ascent - metrics._descent;\n }\n return metrics;\n };\n _PdfStandardFontMetricsFactory._getTimesMetrics = function (fontStyle, size) {\n var metrics = new _PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.bold) > 0 && (fontStyle & PdfFontStyle.italic) > 0) {\n metrics._ascent = this._timesBoldItalicAscent;\n metrics._descent = this._timesBoldItalicDescent;\n metrics._postScriptName = this._timesBoldItalicName;\n metrics._size = size;\n metrics._widthTable = new _StandardWidthTable(this._timesRomanBoldItalicWidths);\n metrics._height = metrics._ascent - metrics._descent;\n }\n else if ((fontStyle & PdfFontStyle.bold) > 0) {\n metrics._ascent = this._timesBoldAscent;\n metrics._descent = this._timesBoldDescent;\n metrics._postScriptName = this._timesBoldName;\n metrics._size = size;\n metrics._widthTable = new _StandardWidthTable(this._timesRomanBoldWidth);\n metrics._height = metrics._ascent - metrics._descent;\n }\n else if ((fontStyle & PdfFontStyle.italic) > 0) {\n metrics._ascent = this._timesItalicAscent;\n metrics._descent = this._timesItalicDescent;\n metrics._postScriptName = this._timesItalicName;\n metrics._size = size;\n metrics._widthTable = new _StandardWidthTable(this._timesRomanItalicWidth);\n metrics._height = metrics._ascent - metrics._descent;\n }\n else {\n metrics._ascent = this._timesAscent;\n metrics._descent = this._timesDescent;\n metrics._postScriptName = this._timesName;\n metrics._size = size;\n metrics._widthTable = new _StandardWidthTable(this._timesRomanWidth);\n metrics._height = metrics._ascent - metrics._descent;\n }\n return metrics;\n };\n _PdfStandardFontMetricsFactory._getSymbolMetrics = function (size) {\n var metrics = new _PdfFontMetrics();\n metrics._ascent = this._symbolAscent;\n metrics._descent = this._symbolDescent;\n metrics._postScriptName = this._symbolName;\n metrics._size = size;\n metrics._widthTable = new _StandardWidthTable(this._symbolWidth);\n metrics._height = metrics._ascent - metrics._descent;\n return metrics;\n };\n _PdfStandardFontMetricsFactory._getZapfDingbatsMetrics = function (size) {\n var metrics = new _PdfFontMetrics();\n metrics._ascent = this._zapfDingbatsAscent;\n metrics._descent = this._zapfDingbatsDescent;\n metrics._postScriptName = this._zapfDingbatsName;\n metrics._size = size;\n metrics._widthTable = new _StandardWidthTable(this._zapfDingbatsWidth);\n metrics._height = metrics._ascent - metrics._descent;\n return metrics;\n };\n _PdfStandardFontMetricsFactory._subSuperScriptFactor = 1.52;\n _PdfStandardFontMetricsFactory._helveticaAscent = 931;\n _PdfStandardFontMetricsFactory._helveticaDescent = -225;\n _PdfStandardFontMetricsFactory._helveticaName = 'Helvetica';\n _PdfStandardFontMetricsFactory._helveticaBoldAscent = 962;\n _PdfStandardFontMetricsFactory._helveticaBoldDescent = -228;\n _PdfStandardFontMetricsFactory._helveticaBoldName = 'Helvetica-Bold';\n _PdfStandardFontMetricsFactory._helveticaItalicAscent = 931;\n _PdfStandardFontMetricsFactory._helveticaItalicDescent = -225;\n _PdfStandardFontMetricsFactory._helveticaItalicName = 'Helvetica-Oblique';\n _PdfStandardFontMetricsFactory._helveticaBoldItalicAscent = 962;\n _PdfStandardFontMetricsFactory._helveticaBoldItalicDescent = -228;\n _PdfStandardFontMetricsFactory._helveticaBoldItalicName = 'Helvetica-BoldOblique';\n _PdfStandardFontMetricsFactory._courierAscent = 805;\n _PdfStandardFontMetricsFactory._courierDescent = -250;\n _PdfStandardFontMetricsFactory._courierName = 'Courier';\n _PdfStandardFontMetricsFactory._courierBoldAscent = 801;\n _PdfStandardFontMetricsFactory._courierBoldDescent = -250;\n _PdfStandardFontMetricsFactory._courierBoldName = 'Courier-Bold';\n _PdfStandardFontMetricsFactory._courierItalicAscent = 805;\n _PdfStandardFontMetricsFactory._courierItalicDescent = -250;\n _PdfStandardFontMetricsFactory._courierItalicName = 'Courier-Oblique';\n _PdfStandardFontMetricsFactory._courierBoldItalicAscent = 801;\n _PdfStandardFontMetricsFactory._courierBoldItalicDescent = -250;\n _PdfStandardFontMetricsFactory._courierBoldItalicName = 'Courier-BoldOblique';\n _PdfStandardFontMetricsFactory._timesAscent = 898;\n _PdfStandardFontMetricsFactory._timesDescent = -218;\n _PdfStandardFontMetricsFactory._timesName = 'Times-Roman';\n _PdfStandardFontMetricsFactory._timesBoldAscent = 935;\n _PdfStandardFontMetricsFactory._timesBoldDescent = -218;\n _PdfStandardFontMetricsFactory._timesBoldName = 'Times-Bold';\n _PdfStandardFontMetricsFactory._timesItalicAscent = 883;\n _PdfStandardFontMetricsFactory._timesItalicDescent = -217;\n _PdfStandardFontMetricsFactory._timesItalicName = 'Times-Italic';\n _PdfStandardFontMetricsFactory._timesBoldItalicAscent = 921;\n _PdfStandardFontMetricsFactory._timesBoldItalicDescent = -218;\n _PdfStandardFontMetricsFactory._timesBoldItalicName = 'Times-BoldItalic';\n _PdfStandardFontMetricsFactory._symbolAscent = 1010;\n _PdfStandardFontMetricsFactory._symbolDescent = -293;\n _PdfStandardFontMetricsFactory._symbolName = 'Symbol';\n _PdfStandardFontMetricsFactory._zapfDingbatsAscent = 820;\n _PdfStandardFontMetricsFactory._zapfDingbatsDescent = -143;\n _PdfStandardFontMetricsFactory._zapfDingbatsName = 'ZapfDingbats';\n _PdfStandardFontMetricsFactory._arialWidth = [\n 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,\n 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278,\n 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833,\n 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334,\n 584, 0, 556, 0, 222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 222, 222, 333, 333, 350, 556, 1000, 333, 1000, 500, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 556, 537, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, 556, 556, 556, 500,\n 556, 500\n ];\n _PdfStandardFontMetricsFactory._arialBoldWidth = [\n 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,\n 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333,\n 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889,\n 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389,\n 584, 0, 556, 0, 278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 278, 278, 500, 500, 350, 556, 1000, 333, 1000, 556, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 611, 556, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278,\n 278, 278, 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, 611, 611, 611, 556,\n 611, 556\n ];\n _PdfStandardFontMetricsFactory._fixedWidth = [\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600\n ];\n _PdfStandardFontMetricsFactory._timesRomanWidth = [\n 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564,\n 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889,\n 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333,\n 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778,\n 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444, 480, 200, 480,\n 541, 0, 500, 0, 333, 500, 444, 1000, 500, 500, 333, 1000, 556, 333, 889, 0,\n 611, 0, 0, 333, 333, 444, 444, 350, 500, 1000, 333, 980, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 200, 500, 333, 760, 276, 500, 564, 0,\n 760, 333, 400, 564, 300, 300, 333, 500, 453, 250, 333, 300, 310, 500, 750, 750,\n 750, 444, 722, 722, 722, 722, 722, 722, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 722, 722, 722, 722, 722, 722, 564, 722, 722, 722, 722, 722, 722,\n 556, 500, 444, 444, 444, 444, 444, 444, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 564, 500, 500, 500, 500, 500, 500,\n 500, 500\n ];\n _PdfStandardFontMetricsFactory._timesRomanBoldWidth = [\n 250, 333, 555, 500, 500, 1000, 833, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944,\n 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333, 278, 333,\n 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833,\n 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444, 394, 220, 394,\n 520, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 1000, 0,\n 667, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 220, 500, 333, 747, 300, 500, 570, 0,\n 747, 333, 400, 570, 300, 300, 333, 556, 540, 250, 333, 300, 330, 500, 750, 750,\n 750, 500, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 778, 778, 778, 778, 778, 570, 778, 722, 722, 722, 722, 722,\n 611, 556, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 500,\n 556, 500\n ];\n _PdfStandardFontMetricsFactory._timesRomanItalicWidth = [\n 250, 333, 420, 500, 500, 833, 778, 214, 333, 333, 500, 675, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675,\n 675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833,\n 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389, 278, 389,\n 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722,\n 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389, 400, 275, 400,\n 541, 0, 500, 0, 333, 500, 556, 889, 500, 500, 333, 1000, 500, 333, 944, 0,\n 556, 0, 0, 333, 333, 556, 556, 350, 500, 889, 333, 980, 389, 333, 667, 0,\n 389, 556, 0, 389, 500, 500, 500, 500, 275, 500, 333, 760, 276, 500, 675, 0,\n 760, 333, 400, 675, 300, 300, 333, 500, 523, 250, 333, 300, 310, 500, 750, 750,\n 750, 500, 611, 611, 611, 611, 611, 611, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 667, 722, 722, 722, 722, 722, 675, 722, 722, 722, 722, 722, 556,\n 611, 500, 500, 500, 500, 500, 500, 500, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 675, 500, 500, 500, 500, 500, 444,\n 500, 444\n ];\n _PdfStandardFontMetricsFactory._timesRomanBoldItalicWidths = [\n 250, 389, 555, 500, 500, 833, 778, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889,\n 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333, 278, 333,\n 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778,\n 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389, 348, 220, 348,\n 570, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 944, 0,\n 611, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 389, 611, 0, 389, 500, 500, 500, 500, 220, 500, 333, 747, 266, 500, 606, 0,\n 747, 333, 400, 570, 300, 300, 333, 576, 500, 250, 333, 300, 300, 500, 750, 750,\n 750, 500, 667, 667, 667, 667, 667, 667, 944, 667, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 722, 722, 722, 722, 722, 570, 722, 722, 722, 722, 722, 611,\n 611, 500, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 444,\n 500, 444\n ];\n _PdfStandardFontMetricsFactory._symbolWidth = [\n 250, 333, 713, 500, 549, 833, 778, 439, 333, 333, 500, 549, 250, 549,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278,\n 549, 549, 549, 444, 549, 722, 667, 722, 612, 611, 763, 603, 722, 333,\n 631, 722, 686, 889, 722, 722, 768, 741, 556, 592, 611, 690, 439, 768,\n 645, 795, 611, 333, 863, 333, 658, 500, 500, 631, 549, 549, 494, 439,\n 521, 411, 603, 329, 603, 549, 549, 576, 521, 549, 549, 521, 549, 603,\n 439, 576, 713, 686, 493, 686, 494, 480, 200, 480, 549, 750, 620, 247,\n 549, 167, 713, 500, 753, 753, 753, 753, 1042, 987, 603, 987, 603, 400,\n 549, 411, 549, 549, 713, 494, 460, 549, 549, 549, 549, 1000, 603, 1000,\n 658, 823, 686, 795, 987, 768, 768, 823, 768, 768, 713, 713, 713, 713,\n 713, 713, 713, 768, 713, 790, 790, 890, 823, 549, 250, 713, 603, 603,\n 1042, 987, 603, 987, 603, 494, 329, 790, 790, 786, 713, 384, 384, 384,\n 384, 384, 384, 494, 494, 494, 494, 329, 274, 686, 686, 686, 384, 384,\n 384, 384, 384, 384, 494, 494, 494, -1\n ];\n _PdfStandardFontMetricsFactory._zapfDingbatsWidth = [\n 278, 974, 961, 974, 980, 719, 789, 790, 791, 690, 960, 939, 549, 855,\n 911, 933, 911, 945, 974, 755, 846, 762, 761, 571, 677, 763, 760, 759,\n 754, 494, 552, 537, 577, 692, 786, 788, 788, 790, 793, 794, 816, 823,\n 789, 841, 823, 833, 816, 831, 923, 744, 723, 749, 790, 792, 695, 776,\n 768, 792, 759, 707, 708, 682, 701, 826, 815, 789, 789, 707, 687, 696,\n 689, 786, 787, 713, 791, 785, 791, 873, 761, 762, 762, 759, 759, 892,\n 892, 788, 784, 438, 138, 277, 415, 392, 392, 668, 668, 390, 390, 317,\n 317, 276, 276, 509, 509, 410, 410, 234, 234, 334, 334, 732, 544, 544,\n 910, 667, 760, 760, 776, 595, 694, 626, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 894, 838, 1016, 458, 748, 924, 748, 918,\n 927, 928, 928, 834, 873, 828, 924, 924, 917, 930, 931, 463, 883, 836,\n 836, 867, 867, 696, 696, 874, 874, 760, 946, 771, 865, 771, 888, 967,\n 888, 831, 873, 927, 970, 918\n ];\n return _PdfStandardFontMetricsFactory;\n}());\nexport { _PdfStandardFontMetricsFactory };\nvar _PdfCjkStandardFontMetricsFactory = /** @class */ (function () {\n function _PdfCjkStandardFontMetricsFactory() {\n }\n _PdfCjkStandardFontMetricsFactory._getHanyangSystemsGothicMedium = function (fontStyle, size) {\n var metrics = new _PdfFontMetrics();\n var widthTable = new _CjkWidthTable(1000);\n widthTable._add(new _CjkSameWidth(1, 127, 500));\n widthTable._add(new _CjkSameWidth(8094, 8190, 500));\n metrics._widthTable = widthTable;\n metrics._ascent = 880;\n metrics._descent = -120;\n metrics._size = size;\n metrics._height = metrics._ascent - metrics._descent;\n if ((fontStyle & PdfFontStyle.bold) !== 0 && (fontStyle & PdfFontStyle.italic) !== 0) {\n metrics._postScriptName = 'HYGoThic-Medium,BoldItalic';\n }\n else if ((fontStyle & PdfFontStyle.bold) !== 0) {\n metrics._postScriptName = 'HYGoThic-Medium,Bold';\n }\n else if ((fontStyle & PdfFontStyle.italic) !== 0) {\n metrics._postScriptName = 'HYGoThic-Medium,Italic';\n }\n else {\n metrics._postScriptName = 'HYGoThic-Medium';\n }\n return metrics;\n };\n _PdfCjkStandardFontMetricsFactory._getHanyangSystemsShinMyeongJoMedium = function (fontStyle, size) {\n var metrics = new _PdfFontMetrics();\n var widthTable = new _CjkWidthTable(1000);\n widthTable._add(new _CjkSameWidth(1, 95, 500));\n widthTable._add(new _CjkSameWidth(8094, 8190, 500));\n metrics._widthTable = widthTable;\n metrics._ascent = 880;\n metrics._descent = -120;\n metrics._size = size;\n metrics._height = metrics._ascent - metrics._descent;\n if ((fontStyle & PdfFontStyle.bold) !== 0 && (fontStyle & PdfFontStyle.italic) !== 0) {\n metrics._postScriptName = 'HYSMyeongJo-Medium,BoldItalic';\n }\n else if ((fontStyle & PdfFontStyle.bold) !== 0) {\n metrics._postScriptName = 'HYSMyeongJo-Medium,Bold';\n }\n else if ((fontStyle & PdfFontStyle.italic) !== 0) {\n metrics._postScriptName = 'HYSMyeongJo-Medium,Italic';\n }\n else {\n metrics._postScriptName = 'HYSMyeongJo-Medium';\n }\n return metrics;\n };\n _PdfCjkStandardFontMetricsFactory._getHeiseiKakuGothicW5 = function (fontStyle, size) {\n var metrics = new _PdfFontMetrics();\n var widthTable = new _CjkWidthTable(1000);\n widthTable._add(new _CjkSameWidth(1, 95, 500));\n widthTable._add(new _CjkSameWidth(231, 632, 500));\n metrics._widthTable = widthTable;\n metrics._ascent = 857;\n metrics._descent = -125;\n metrics._size = size;\n metrics._height = metrics._ascent - metrics._descent;\n if ((fontStyle & PdfFontStyle.bold) !== 0 && (fontStyle & PdfFontStyle.italic) !== 0) {\n metrics._postScriptName = 'HeiseiKakuGo-W5,BoldItalic';\n }\n else if ((fontStyle & PdfFontStyle.bold) !== 0) {\n metrics._postScriptName = 'HeiseiKakuGo-W5,Bold';\n }\n else if ((fontStyle & PdfFontStyle.italic) !== 0) {\n metrics._postScriptName = 'HeiseiKakuGo-W5,Italic';\n }\n else {\n metrics._postScriptName = 'HeiseiKakuGo-W5';\n }\n return metrics;\n };\n _PdfCjkStandardFontMetricsFactory._getHeiseiMinchoW3 = function (fontStyle, size) {\n var metrics = new _PdfFontMetrics();\n var widthTable = new _CjkWidthTable(1000);\n widthTable._add(new _CjkSameWidth(1, 95, 500));\n widthTable._add(new _CjkSameWidth(231, 632, 500));\n metrics._widthTable = widthTable;\n metrics._ascent = 857;\n metrics._descent = -143;\n metrics._size = size;\n metrics._height = metrics._ascent - metrics._descent;\n if ((fontStyle & PdfFontStyle.bold) !== 0 && (fontStyle & PdfFontStyle.italic) !== 0) {\n metrics._postScriptName = 'HeiseiMin-W3,BoldItalic';\n }\n else if ((fontStyle & PdfFontStyle.bold) !== 0) {\n metrics._postScriptName = 'HeiseiMin-W3,Bold';\n }\n else if ((fontStyle & PdfFontStyle.italic) !== 0) {\n metrics._postScriptName = 'HeiseiMin-W3,Italic';\n }\n else {\n metrics._postScriptName = 'HeiseiMin-W3';\n }\n return metrics;\n };\n _PdfCjkStandardFontMetricsFactory._getMonotypeHeiMedium = function (fontStyle, size) {\n var metrics = new _PdfFontMetrics();\n var widthTable = new _CjkWidthTable(1000);\n widthTable._add(new _CjkSameWidth(1, 95, 500));\n widthTable._add(new _CjkSameWidth(13648, 13742, 500));\n metrics._widthTable = widthTable;\n metrics._ascent = 880;\n metrics._descent = -120;\n metrics._size = size;\n metrics._height = metrics._ascent - metrics._descent;\n if ((fontStyle & PdfFontStyle.bold) !== 0 && (fontStyle & PdfFontStyle.italic) !== 0) {\n metrics._postScriptName = 'MHei-Medium,BoldItalic';\n }\n else if ((fontStyle & PdfFontStyle.bold) !== 0) {\n metrics._postScriptName = 'MHei-Medium,Bold';\n }\n else if ((fontStyle & PdfFontStyle.italic) !== 0) {\n metrics._postScriptName = 'MHei-Medium,Italic';\n }\n else {\n metrics._postScriptName = 'MHei-Medium';\n }\n return metrics;\n };\n _PdfCjkStandardFontMetricsFactory._getMonotypeSungLight = function (fontStyle, size) {\n var metrics = new _PdfFontMetrics();\n var widthTable = new _CjkWidthTable(1000);\n widthTable._add(new _CjkSameWidth(1, 95, 500));\n widthTable._add(new _CjkSameWidth(13648, 13742, 500));\n metrics._widthTable = widthTable;\n metrics._ascent = 880;\n metrics._descent = -120;\n metrics._size = size;\n metrics._height = metrics._ascent - metrics._descent;\n if ((fontStyle & PdfFontStyle.bold) !== 0 && (fontStyle & PdfFontStyle.italic) !== 0) {\n metrics._postScriptName = 'MSung-Light,BoldItalic';\n }\n else if ((fontStyle & PdfFontStyle.bold) !== 0) {\n metrics._postScriptName = 'MSung-Light,Bold';\n }\n else if ((fontStyle & PdfFontStyle.italic) !== 0) {\n metrics._postScriptName = 'MSung-Light,Italic';\n }\n else {\n metrics._postScriptName = 'MSung-Light';\n }\n return metrics;\n };\n _PdfCjkStandardFontMetricsFactory._getSinoTypeSongLight = function (fontStyle, size) {\n var metrics = new _PdfFontMetrics();\n var widthTable = new _CjkWidthTable(1000);\n widthTable._add(new _CjkSameWidth(1, 95, 500));\n widthTable._add(new _CjkSameWidth(814, 939, 500));\n widthTable._add(new _CjkDifferentWidth(7712, [500]));\n widthTable._add(new _CjkDifferentWidth(7716, [500]));\n metrics._ascent = 880;\n metrics._descent = -120;\n metrics._size = size;\n metrics._height = metrics._ascent - metrics._descent;\n if ((fontStyle & PdfFontStyle.bold) !== 0 && (fontStyle & PdfFontStyle.italic) !== 0) {\n metrics._postScriptName = 'STSong-Light,BoldItalic';\n }\n else if ((fontStyle & PdfFontStyle.bold) !== 0) {\n metrics._postScriptName = 'STSong-Light,Bold';\n }\n else if ((fontStyle & PdfFontStyle.italic) !== 0) {\n metrics._postScriptName = 'STSong-Light,Italic';\n }\n else {\n metrics._postScriptName = 'STSong-Light';\n }\n metrics._widthTable = widthTable;\n return metrics;\n };\n _PdfCjkStandardFontMetricsFactory._getMetrics = function (fontFamily, fontStyle, size) {\n var metrics;\n switch (fontFamily) {\n case PdfCjkFontFamily.hanyangSystemsGothicMedium:\n metrics = this._getHanyangSystemsGothicMedium(fontStyle, size);\n metrics._name = 'HanyangSystemsGothicMedium';\n break;\n case PdfCjkFontFamily.hanyangSystemsShinMyeongJoMedium:\n metrics = this._getHanyangSystemsShinMyeongJoMedium(fontStyle, size);\n metrics._name = 'HanyangSystemsShinMyeongJoMedium';\n break;\n case PdfCjkFontFamily.heiseiKakuGothicW5:\n metrics = this._getHeiseiKakuGothicW5(fontStyle, size);\n metrics._name = 'HeiseiKakuGothicW5';\n break;\n case PdfCjkFontFamily.heiseiMinchoW3:\n metrics = this._getHeiseiMinchoW3(fontStyle, size);\n metrics._name = 'HeiseiMinchoW3';\n break;\n case PdfCjkFontFamily.monotypeHeiMedium:\n metrics = this._getMonotypeHeiMedium(fontStyle, size);\n metrics._name = 'MonotypeHeiMedium';\n break;\n case PdfCjkFontFamily.monotypeSungLight:\n metrics = this._getMonotypeSungLight(fontStyle, size);\n metrics._name = 'MonotypeSungLight';\n break;\n case PdfCjkFontFamily.sinoTypeSongLight:\n metrics = this._getSinoTypeSongLight(fontStyle, size);\n metrics._name = 'SinoTypeSongLight';\n break;\n }\n metrics._subScriptSizeFactor = this._subSuperScriptFactor;\n metrics._superscriptSizeFactor = this._subSuperScriptFactor;\n return metrics;\n };\n _PdfCjkStandardFontMetricsFactory._subSuperScriptFactor = 1.52;\n return _PdfCjkStandardFontMetricsFactory;\n}());\nexport { _PdfCjkStandardFontMetricsFactory };\nvar _PdfCjkFontDescriptorFactory = /** @class */ (function () {\n function _PdfCjkFontDescriptorFactory() {\n }\n _PdfCjkFontDescriptorFactory._fillMonotypeSungLight = function (fontDescriptor, fontFamily, fontMetrics) {\n var fontBox = { x: -160, y: -249, width: 1175, height: 1137 };\n this._fillFontBox(fontDescriptor, fontBox);\n this._fillKnownInformation(fontDescriptor, fontFamily, fontMetrics);\n fontDescriptor.set('StemV', 93);\n fontDescriptor.set('StemH', 93);\n fontDescriptor.set('AvgWidth', 1000);\n fontDescriptor.set('MaxWidth', 1000);\n fontDescriptor.set('CapHeight', 880);\n fontDescriptor.set('XHeight', 616);\n fontDescriptor.set('Leading', 250);\n };\n _PdfCjkFontDescriptorFactory._fillHeiseiKakuGothicW5 = function (fontDescriptor, fontStyle, fontFamily, fontMetrics) {\n var fontBox = { x: -92, y: -250, width: 1102, height: 1172 };\n var fontBoxItalic = { x: -92, y: -250, width: 1102, height: 1932 };\n if ((fontStyle & (PdfFontStyle.italic | PdfFontStyle.bold)) !== PdfFontStyle.italic) {\n this._fillFontBox(fontDescriptor, fontBox);\n }\n else {\n this._fillFontBox(fontDescriptor, fontBoxItalic);\n }\n this._fillKnownInformation(fontDescriptor, fontFamily, fontMetrics);\n fontDescriptor.set('StemV', 93);\n fontDescriptor.set('StemH', 93);\n fontDescriptor.set('AvgWidth', 689);\n fontDescriptor.set('MaxWidth', 1000);\n fontDescriptor.set('CapHeight', 718);\n fontDescriptor.set('XHeight', 500);\n fontDescriptor.set('Leading', 250);\n };\n _PdfCjkFontDescriptorFactory._fillHanyangSystemsShinMyeongJoMedium = function (fontDescriptor, fontFamily, fontMetrics) {\n var fontBox = { x: 0, y: -148, width: 1001, height: 1028 };\n this._fillFontBox(fontDescriptor, fontBox);\n this._fillKnownInformation(fontDescriptor, fontFamily, fontMetrics);\n fontDescriptor.set('StemV', 93);\n fontDescriptor.set('StemH', 93);\n fontDescriptor.set('AvgWidth', 1000);\n fontDescriptor.set('MaxWidth', 1000);\n fontDescriptor.set('CapHeight', 880);\n fontDescriptor.set('XHeight', 616);\n fontDescriptor.set('Leading', 250);\n };\n _PdfCjkFontDescriptorFactory._fillHeiseiMinchoW3 = function (fontDescriptor, fontFamily, fontMetrics) {\n var fontBox = { x: -123, y: -257, width: 1124, height: 1167 };\n this._fillFontBox(fontDescriptor, fontBox);\n this._fillKnownInformation(fontDescriptor, fontFamily, fontMetrics);\n fontDescriptor.set('StemV', 93);\n fontDescriptor.set('StemH', 93);\n fontDescriptor.set('AvgWidth', 702);\n fontDescriptor.set('MaxWidth', 1000);\n fontDescriptor.set('CapHeight', 718);\n fontDescriptor.set('XHeight', 500);\n fontDescriptor.set('Leading', 250);\n };\n _PdfCjkFontDescriptorFactory._fillSinoTypeSongLight = function (fontDescriptor, fontFamily, fontMetrics) {\n var fontBox = { x: -25, y: -254, width: 1025, height: 1134 };\n this._fillFontBox(fontDescriptor, fontBox);\n this._fillKnownInformation(fontDescriptor, fontFamily, fontMetrics);\n fontDescriptor.set('StemV', 93);\n fontDescriptor.set('StemH', 93);\n fontDescriptor.set('AvgWidth', 1000);\n fontDescriptor.set('MaxWidth', 1000);\n fontDescriptor.set('CapHeight', 880);\n fontDescriptor.set('XHeight', 616);\n fontDescriptor.set('Leading', 250);\n };\n _PdfCjkFontDescriptorFactory._fillMonotypeHeiMedium = function (fontDescriptor, fontFamily, fontMetrics) {\n var fontBox = { x: -45, y: -250, width: 1060, height: 1137 };\n this._fillFontBox(fontDescriptor, fontBox);\n this._fillKnownInformation(fontDescriptor, fontFamily, fontMetrics);\n fontDescriptor.set('StemV', 93);\n fontDescriptor.set('StemH', 93);\n fontDescriptor.set('AvgWidth', 1000);\n fontDescriptor.set('MaxWidth', 1000);\n fontDescriptor.set('CapHeight', 880);\n fontDescriptor.set('XHeight', 616);\n fontDescriptor.set('Leading', 250);\n };\n _PdfCjkFontDescriptorFactory._fillHanyangSystemsGothicMedium = function (fontDescriptor, fontFamily, fontMetrics) {\n var fontBox = { x: -6, y: -145, width: 1009, height: 1025 };\n this._fillFontBox(fontDescriptor, fontBox);\n this._fillKnownInformation(fontDescriptor, fontFamily, fontMetrics);\n fontDescriptor.set('Flags', 4);\n fontDescriptor.set('StemV', 93);\n fontDescriptor.set('StemH', 93);\n fontDescriptor.set('AvgWidth', 1000);\n fontDescriptor.set('MaxWidth', 1000);\n fontDescriptor.set('CapHeight', 880);\n fontDescriptor.set('XHeight', 616);\n fontDescriptor.set('Leading', 250);\n };\n _PdfCjkFontDescriptorFactory._fillFontBox = function (fontDescriptor, fontBox) {\n fontDescriptor.set('FontBBox', _fromRectangle(fontBox));\n };\n _PdfCjkFontDescriptorFactory._fillKnownInformation = function (fontDescriptor, fontFamily, fontMetrics) {\n fontDescriptor.set('FontName', _PdfName.get(fontMetrics._postScriptName));\n fontDescriptor.set('Type', _PdfName.get('FontDescriptor'));\n fontDescriptor.set('ItalicAngle', 0);\n fontDescriptor.set('MissingWidth', fontMetrics._widthTable._defaultWidth);\n fontDescriptor.set('Ascent', fontMetrics._ascent);\n fontDescriptor.set('Descent', fontMetrics._descent);\n switch (fontFamily) {\n case PdfCjkFontFamily.monotypeHeiMedium:\n case PdfCjkFontFamily.hanyangSystemsGothicMedium:\n case PdfCjkFontFamily.heiseiKakuGothicW5:\n fontDescriptor.set('Flags', 4);\n break;\n case PdfCjkFontFamily.sinoTypeSongLight:\n case PdfCjkFontFamily.monotypeSungLight:\n case PdfCjkFontFamily.hanyangSystemsShinMyeongJoMedium:\n case PdfCjkFontFamily.heiseiMinchoW3:\n fontDescriptor.set('Flags', 6);\n break;\n }\n };\n _PdfCjkFontDescriptorFactory._getFontDescriptor = function (fontFamily, fontStyle, fontMetrics) {\n var fontDescriptor = new _PdfDictionary();\n fontDescriptor._updated = true;\n switch (fontFamily) {\n case PdfCjkFontFamily.hanyangSystemsGothicMedium:\n this._fillHanyangSystemsGothicMedium(fontDescriptor, fontFamily, fontMetrics);\n break;\n case PdfCjkFontFamily.hanyangSystemsShinMyeongJoMedium:\n this._fillHanyangSystemsShinMyeongJoMedium(fontDescriptor, fontFamily, fontMetrics);\n break;\n case PdfCjkFontFamily.heiseiKakuGothicW5:\n this._fillHeiseiKakuGothicW5(fontDescriptor, fontStyle, fontFamily, fontMetrics);\n break;\n case PdfCjkFontFamily.heiseiMinchoW3:\n this._fillHeiseiMinchoW3(fontDescriptor, fontFamily, fontMetrics);\n break;\n case PdfCjkFontFamily.monotypeHeiMedium:\n this._fillMonotypeHeiMedium(fontDescriptor, fontFamily, fontMetrics);\n break;\n case PdfCjkFontFamily.monotypeSungLight:\n this._fillMonotypeSungLight(fontDescriptor, fontFamily, fontMetrics);\n break;\n case PdfCjkFontFamily.sinoTypeSongLight:\n this._fillSinoTypeSongLight(fontDescriptor, fontFamily, fontMetrics);\n break;\n default:\n break;\n }\n return fontDescriptor;\n };\n return _PdfCjkFontDescriptorFactory;\n}());\nexport { _PdfCjkFontDescriptorFactory };\n/**\n * Public enum to define font style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10, PdfFontStyle.regular);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right, PdfVerticalAlignment.bottom);\n * // Draw the text\n * page.graphics.drawString('Helvetica', font, [0, 180, page.size[0], 40], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfFontStyle;\n(function (PdfFontStyle) {\n /**\n * Specifies the font style `regular`.\n */\n PdfFontStyle[PdfFontStyle[\"regular\"] = 0] = \"regular\";\n /**\n * Specifies the font style `bold`.\n */\n PdfFontStyle[PdfFontStyle[\"bold\"] = 1] = \"bold\";\n /**\n * Specifies the font style `italic`.\n */\n PdfFontStyle[PdfFontStyle[\"italic\"] = 2] = \"italic\";\n /**\n * Specifies the font style `underline`.\n */\n PdfFontStyle[PdfFontStyle[\"underline\"] = 4] = \"underline\";\n /**\n * Specifies the font style `strikeout`.\n */\n PdfFontStyle[PdfFontStyle[\"strikeout\"] = 8] = \"strikeout\";\n})(PdfFontStyle || (PdfFontStyle = {}));\n/**\n * Public enum to define font family.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF standard font\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 10, PdfFontStyle.regular);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right, PdfVerticalAlignment.bottom);\n * // Draw the text\n * page.graphics.drawString('Helvetica', font, [0, 180, page.size[0], 40], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfFontFamily;\n(function (PdfFontFamily) {\n /**\n * Specifies the `helvetica` font family.\n */\n PdfFontFamily[PdfFontFamily[\"helvetica\"] = 0] = \"helvetica\";\n /**\n * Specifies the `courier` font family.\n */\n PdfFontFamily[PdfFontFamily[\"courier\"] = 1] = \"courier\";\n /**\n * Specifies the `timesRoman` font family.\n */\n PdfFontFamily[PdfFontFamily[\"timesRoman\"] = 2] = \"timesRoman\";\n /**\n * Specifies the `symbol` font family.\n */\n PdfFontFamily[PdfFontFamily[\"symbol\"] = 3] = \"symbol\";\n /**\n * Specifies the `zapfDingbats` font family.\n */\n PdfFontFamily[PdfFontFamily[\"zapfDingbats\"] = 4] = \"zapfDingbats\";\n})(PdfFontFamily || (PdfFontFamily = {}));\n/**\n * Public enum to define CJK font family.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF CJK standard font\n * let font: PdfCjkStandardFont = new PdfCjkStandardFont(PdfCjkFontFamily.heiseiMinchoW3, 20);\n * // Create a new PDF string format\n * let format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.right, PdfVerticalAlignment.bottom);\n * // Draw the text\n * page.graphics.drawString('こんにちは世界', font, [0, 180, page.size[0], 40], undefined, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfCjkFontFamily;\n(function (PdfCjkFontFamily) {\n /**\n * Specifies the `heiseiKakuGothicW5` CJK font family.\n */\n PdfCjkFontFamily[PdfCjkFontFamily[\"heiseiKakuGothicW5\"] = 0] = \"heiseiKakuGothicW5\";\n /**\n * Specifies the `heiseiMinchoW3` CJK font family.\n */\n PdfCjkFontFamily[PdfCjkFontFamily[\"heiseiMinchoW3\"] = 1] = \"heiseiMinchoW3\";\n /**\n * Specifies the `hanyangSystemsGothicMedium` CJK font family.\n */\n PdfCjkFontFamily[PdfCjkFontFamily[\"hanyangSystemsGothicMedium\"] = 2] = \"hanyangSystemsGothicMedium\";\n /**\n * Specifies the `hanyangSystemsShinMyeongJoMedium` CJK font family.\n */\n PdfCjkFontFamily[PdfCjkFontFamily[\"hanyangSystemsShinMyeongJoMedium\"] = 3] = \"hanyangSystemsShinMyeongJoMedium\";\n /**\n * Specifies the `monotypeHeiMedium` CJK font family.\n */\n PdfCjkFontFamily[PdfCjkFontFamily[\"monotypeHeiMedium\"] = 4] = \"monotypeHeiMedium\";\n /**\n * Specifies the `monotypeSungLight` CJK font family.\n */\n PdfCjkFontFamily[PdfCjkFontFamily[\"monotypeSungLight\"] = 5] = \"monotypeSungLight\";\n /**\n * Specifies the `sinoTypeSongLight` CJK font family.\n */\n PdfCjkFontFamily[PdfCjkFontFamily[\"sinoTypeSongLight\"] = 6] = \"sinoTypeSongLight\";\n})(PdfCjkFontFamily || (PdfCjkFontFamily = {}));\nvar _UnicodeLine = /** @class */ (function () {\n function _UnicodeLine() {\n this._result = false;\n this._glyphIndex = [];\n }\n return _UnicodeLine;\n}());\nexport { _UnicodeLine };\n","var _TrueTypeTableInfo = /** @class */ (function () {\n function _TrueTypeTableInfo() {\n }\n Object.defineProperty(_TrueTypeTableInfo.prototype, \"_empty\", {\n get: function () {\n var empty = (this._offset === this._length && this._length === this._checksum && this._checksum === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n return _TrueTypeTableInfo;\n}());\nexport { _TrueTypeTableInfo };\nvar _TrueTypeOS2Table = /** @class */ (function () {\n function _TrueTypeOS2Table() {\n }\n return _TrueTypeOS2Table;\n}());\nexport { _TrueTypeOS2Table };\nvar _TrueTypePostTable = /** @class */ (function () {\n function _TrueTypePostTable() {\n }\n return _TrueTypePostTable;\n}());\nexport { _TrueTypePostTable };\nvar _TrueTypeNameTable = /** @class */ (function () {\n function _TrueTypeNameTable() {\n }\n return _TrueTypeNameTable;\n}());\nexport { _TrueTypeNameTable };\nvar _TrueTypeMicrosoftCmapSubTable = /** @class */ (function () {\n function _TrueTypeMicrosoftCmapSubTable() {\n }\n return _TrueTypeMicrosoftCmapSubTable;\n}());\nexport { _TrueTypeMicrosoftCmapSubTable };\nvar _TrueTypeHorizontalHeaderTable = /** @class */ (function () {\n function _TrueTypeHorizontalHeaderTable() {\n }\n return _TrueTypeHorizontalHeaderTable;\n}());\nexport { _TrueTypeHorizontalHeaderTable };\nvar _TrueTypeHeadTable = /** @class */ (function () {\n function _TrueTypeHeadTable() {\n }\n return _TrueTypeHeadTable;\n}());\nexport { _TrueTypeHeadTable };\nvar _TrueTypeCmapTable = /** @class */ (function () {\n function _TrueTypeCmapTable() {\n }\n return _TrueTypeCmapTable;\n}());\nexport { _TrueTypeCmapTable };\nvar _TrueTypeCmapSubTable = /** @class */ (function () {\n function _TrueTypeCmapSubTable() {\n }\n return _TrueTypeCmapSubTable;\n}());\nexport { _TrueTypeCmapSubTable };\nvar _TrueTypeAppleCmapSubTable = /** @class */ (function () {\n function _TrueTypeAppleCmapSubTable() {\n }\n return _TrueTypeAppleCmapSubTable;\n}());\nexport { _TrueTypeAppleCmapSubTable };\nvar _TrueTypeTrimmedCmapSubTable = /** @class */ (function () {\n function _TrueTypeTrimmedCmapSubTable() {\n }\n return _TrueTypeTrimmedCmapSubTable;\n}());\nexport { _TrueTypeTrimmedCmapSubTable };\n","import { _TrueTypeTableInfo, _TrueTypeHorizontalHeaderTable, _TrueTypeNameTable, _TrueTypeHeadTable, _TrueTypeOS2Table, _TrueTypePostTable, _TrueTypeCmapSubTable, _TrueTypeCmapTable, _TrueTypeAppleCmapSubTable, _TrueTypeMicrosoftCmapSubTable, _TrueTypeTrimmedCmapSubTable } from './ttf-table';\nimport { Dictionary } from '../pdf-primitives';\nimport { _StringTokenizer } from './string-layouter';\nimport { _TrueTypeCmapFormat, _TrueTypeCmapEncoding, _TrueTypePlatformID, _TrueTypeMicrosoftEncodingID, _TrueTypeMacintoshEncodingID, _TrueTypeCompositeGlyphFlag } from '../../core/enumerator';\nvar _TrueTypeReader = /** @class */ (function () {\n function _TrueTypeReader(fontData) {\n this._int32Size = 4;\n this._isFont = false;\n this._isMacTtf = false;\n this._isMacFont = false;\n this._missedGlyphs = 0;\n this._tableNames = ['cvt ', 'fpgm', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'prep'];\n this._entrySelectors = [0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4];\n this._fontData = fontData;\n this._initialize();\n }\n Object.defineProperty(_TrueTypeReader.prototype, \"macintosh\", {\n get: function () {\n if (this._macintoshDictionary === null || typeof this._macintoshDictionary === 'undefined') {\n this._macintoshDictionary = new Dictionary();\n }\n return this._macintoshDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_TrueTypeReader.prototype, \"_microsoft\", {\n get: function () {\n if (this._microsoftDictionary === null || typeof this._microsoftDictionary === 'undefined') {\n this._microsoftDictionary = new Dictionary();\n }\n return this._microsoftDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_TrueTypeReader.prototype, \"_macintoshGlyphs\", {\n get: function () {\n if (this._internalMacintoshGlyphs === null || typeof this._internalMacintoshGlyphs === 'undefined') {\n this._internalMacintoshGlyphs = new Dictionary();\n }\n return this._internalMacintoshGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_TrueTypeReader.prototype, \"_microsoftGlyphs\", {\n get: function () {\n if (this._internalMicrosoftGlyphs === null || typeof this._internalMicrosoftGlyphs === 'undefined') {\n this._internalMicrosoftGlyphs = new Dictionary();\n }\n return this._internalMicrosoftGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n _TrueTypeReader.prototype._initialize = function () {\n if (typeof this._metrics === 'undefined' || this._metrics === null) {\n this._metrics = new _TrueTypeMetrics();\n }\n this._readFontDictionary();\n var nameTable = this._readNameTable();\n var headTable = this._readHeadTable();\n this._initializeFontName(nameTable);\n this._metrics._macStyle = headTable._macStyle;\n };\n _TrueTypeReader.prototype._readFontDictionary = function () {\n this._offset = 0;\n this._check();\n var table = this._readInt16(this._offset);\n this._readInt16(this._offset);\n this._readInt16(this._offset);\n this._readInt16(this._offset);\n if (typeof this._tableDirectory === 'undefined' || this._tableDirectory === null) {\n this._tableDirectory = new Dictionary();\n }\n for (var i = 0; i < table; ++i) {\n var table_1 = new _TrueTypeTableInfo();\n var tableKey = this._readString(this._int32Size);\n table_1._checksum = this._readInt32(this._offset);\n table_1._offset = this._readInt32(this._offset);\n table_1._length = this._readInt32(this._offset);\n this._tableDirectory.setValue(tableKey, table_1);\n }\n this._lowestPosition = this._offset;\n if (!this._isFont) {\n this._fixOffsets();\n }\n };\n _TrueTypeReader.prototype._fixOffsets = function () {\n var minOffset = Number.MAX_VALUE;\n var tableKeys = this._tableDirectory.keys();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this._tableDirectory.getValue(tableKeys[Number.parseInt(i.toString(), 10)]);\n var offset = value._offset;\n if (minOffset > offset) {\n minOffset = offset;\n if (minOffset <= this._lowestPosition) {\n break;\n }\n }\n }\n var shift = minOffset - this._lowestPosition;\n if (shift !== 0) {\n var table = new Dictionary();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this._tableDirectory.getValue(tableKeys[Number.parseInt(i.toString(), 10)]);\n value._offset -= shift;\n table.setValue(tableKeys[Number.parseInt(i.toString(), 10)], value);\n }\n this._tableDirectory = table;\n }\n };\n _TrueTypeReader.prototype._check = function () {\n var version = this._readInt32(this._offset);\n this._isMacTtf = (version === 0x74727565) ? true : false;\n if (version !== 0x10000 && version !== 0x74727565 && version !== 0x4f54544f) {\n this._isFont = true;\n this._offset = 0;\n var fontTag = this._readString(4);\n if (fontTag !== 'ttcf') {\n throw new Error('Can not read TTF font data');\n }\n this._offset += 4;\n var ttcIdentificationNumber = this._readInt32(this._offset);\n if (ttcIdentificationNumber < 0) {\n throw new Error('Can not read TTF font data');\n }\n this._offset = this._readInt32(this._offset);\n version = this._readInt32(this._offset);\n }\n return version;\n };\n _TrueTypeReader.prototype._readNameTable = function () {\n var tableInfo = this._getTable('name');\n if (typeof tableInfo._offset !== 'undefined' && tableInfo._offset !== null) {\n this._offset = tableInfo._offset;\n }\n var table = new _TrueTypeNameTable();\n table._formatSelector = this._readUInt16(this._offset);\n table._recordsCount = this._readUInt16(this._offset);\n table._offset = this._readUInt16(this._offset);\n table._nameRecords = [];\n var recordSize = 12;\n var position = this._offset;\n for (var i = 0; i < table._recordsCount; i++) {\n this._offset = position;\n var record = new _TrueTypeNameRecord();\n record._platformID = this._readUInt16(this._offset);\n record._encodingID = this._readUInt16(this._offset);\n record._languageID = this._readUInt16(this._offset);\n record._nameID = this._readUInt16(this._offset);\n record._length = this._readUInt16(this._offset);\n record._offset = this._readUInt16(this._offset);\n this._offset = tableInfo._offset + table._offset + record._offset;\n var unicode = (record._platformID === 0 || record._platformID === 3);\n record._name = this._readString(record._length, unicode);\n table._nameRecords[Number.parseInt(i.toString(), 10)] = record;\n position += recordSize;\n }\n return table;\n };\n _TrueTypeReader.prototype._readHeadTable = function () {\n var tableInfo = this._getTable('head');\n if (typeof tableInfo._offset !== 'undefined' && tableInfo._offset !== null) {\n this._offset = tableInfo._offset;\n }\n var table = new _TrueTypeHeadTable();\n table._version = this._readFixed(this._offset);\n table._fontRevision = this._readFixed(this._offset);\n table._checkSumAdjustment = this._readUInt32(this._offset);\n table._magicNumber = this._readUInt32(this._offset);\n table._flags = this._readUInt16(this._offset);\n table._unitsPerEm = this._readUInt16(this._offset);\n table._created = this._readInt64(this._offset);\n table._modified = this._readInt64(this._offset);\n table._xMin = this._readInt16(this._offset);\n table._yMin = this._readInt16(this._offset);\n table._xMax = this._readInt16(this._offset);\n table._yMax = this._readInt16(this._offset);\n table._macStyle = this._readUInt16(this._offset);\n table._lowestReadableSize = this._readUInt16(this._offset);\n table._fontDirectionHint = this._readInt16(this._offset);\n table._indexToLocalFormat = this._readInt16(this._offset);\n table._glyphDataFormat = this._readInt16(this._offset);\n return table;\n };\n _TrueTypeReader.prototype._readHorizontalHeaderTable = function () {\n var tableInfo = this._getTable('hhea');\n if (typeof tableInfo._offset !== 'undefined' && tableInfo._offset !== null) {\n this._offset = tableInfo._offset;\n }\n var table = new _TrueTypeHorizontalHeaderTable();\n table._version = this._readFixed(this._offset);\n table._ascender = this._readInt16(this._offset);\n table._descender = this._readInt16(this._offset);\n table._lineGap = this._readInt16(this._offset);\n table._advanceWidthMax = this._readUInt16(this._offset);\n table._minLeftSideBearing = this._readInt16(this._offset);\n table._minRightSideBearing = this._readInt16(this._offset);\n table._xMaxExtent = this._readInt16(this._offset);\n table._caretSlopeRise = this._readInt16(this._offset);\n table._caretSlopeRun = this._readInt16(this._offset);\n this._offset += 10;\n table._metricDataFormat = this._readInt16(this._offset);\n table._numberOfHMetrics = this._readUInt16(this._offset);\n return table;\n };\n _TrueTypeReader.prototype._readOS2Table = function () {\n var tableInfo = this._getTable('OS/2');\n if (typeof tableInfo._offset !== 'undefined' && tableInfo._offset !== null) {\n this._offset = tableInfo._offset;\n }\n var table = new _TrueTypeOS2Table();\n table._version = this._readUInt16(this._offset);\n table._xAvgCharWidth = this._readInt16(this._offset);\n table._usWeightClass = this._readUInt16(this._offset);\n table._usWidthClass = this._readUInt16(this._offset);\n table._fsType = this._readInt16(this._offset);\n table._ySubscriptXSize = this._readInt16(this._offset);\n table._ySubscriptYSize = this._readInt16(this._offset);\n table._ySubscriptXOffset = this._readInt16(this._offset);\n table._ySubscriptYOffset = this._readInt16(this._offset);\n table._ySuperscriptXSize = this._readInt16(this._offset);\n table._ySuperscriptYSize = this._readInt16(this._offset);\n table._ySuperscriptXOffset = this._readInt16(this._offset);\n table._ySuperscriptYOffset = this._readInt16(this._offset);\n table._yStrikeoutSize = this._readInt16(this._offset);\n table._yStrikeoutPosition = this._readInt16(this._offset);\n table._sFamilyClass = this._readInt16(this._offset);\n table._panose = this._readBytes(10);\n table._ulUnicodeRange1 = this._readUInt32(this._offset);\n table._ulUnicodeRange2 = this._readUInt32(this._offset);\n table._ulUnicodeRange3 = this._readUInt32(this._offset);\n table._ulUnicodeRange4 = this._readUInt32(this._offset);\n table._vendorIdentifier = this._readBytes(4);\n table._fsSelection = this._readUInt16(this._offset);\n table._usFirstCharIndex = this._readUInt16(this._offset);\n table._usLastCharIndex = this._readUInt16(this._offset);\n table._sTypoAscender = this._readInt16(this._offset);\n table._sTypoDescender = this._readInt16(this._offset);\n table._sTypoLineGap = this._readInt16(this._offset);\n table._usWinAscent = this._readUInt16(this._offset);\n table._usWinDescent = this._readUInt16(this._offset);\n table._ulCodePageRange1 = this._readUInt32(this._offset);\n table._ulCodePageRange2 = this._readUInt32(this._offset);\n if (table._version > 1) {\n table._sxHeight = this._readInt16(this._offset);\n table._sCapHeight = this._readInt16(this._offset);\n table._usDefaultChar = this._readUInt16(this._offset);\n table._usBreakChar = this._readUInt16(this._offset);\n table._usMaxContext = this._readUInt16(this._offset);\n }\n else {\n table._sxHeight = 0;\n table._sCapHeight = 0;\n table._usDefaultChar = 0;\n table._usBreakChar = 0;\n table._usMaxContext = 0;\n }\n return table;\n };\n _TrueTypeReader.prototype._readPostTable = function () {\n var tableInfo = this._getTable('post');\n if (typeof tableInfo._offset !== 'undefined' && tableInfo._offset !== null) {\n this._offset = tableInfo._offset;\n }\n var table = new _TrueTypePostTable();\n table._formatType = this._readFixed(this._offset);\n table._italicAngle = this._readFixed(this._offset);\n table._underlinePosition = this._readInt16(this._offset);\n table._underlineThickness = this._readInt16(this._offset);\n table._isFixedPitch = this._readUInt32(this._offset);\n table._minType42 = this._readUInt32(this._offset);\n table._maxType42 = this._readUInt32(this._offset);\n table._minType1 = this._readUInt32(this._offset);\n table._maxType1 = this._readUInt32(this._offset);\n return table;\n };\n _TrueTypeReader.prototype._readWidthTable = function (glyphCount, unitsPerEm) {\n var tableInfo = this._getTable('hmtx');\n if (typeof tableInfo._offset !== 'undefined' && tableInfo._offset !== null) {\n this._offset = tableInfo._offset;\n }\n var width = [];\n for (var i = 0; i < glyphCount; i++) {\n var glyph = new _TrueTypeLongHorMetric();\n glyph._advanceWidth = this._readUInt16(this._offset);\n glyph._lsb = this._readInt16(this._offset);\n var glyphWidth = glyph._advanceWidth * 1000 / unitsPerEm;\n width.push(Math.floor(glyphWidth));\n }\n return width;\n };\n _TrueTypeReader.prototype._readCmapTable = function () {\n var tableInfo = this._getTable('cmap');\n if (typeof tableInfo._offset !== 'undefined' && tableInfo._offset !== null) {\n this._offset = tableInfo._offset;\n }\n var table = new _TrueTypeCmapTable();\n table._version = this._readUInt16(this._offset);\n table._tablesCount = this._readUInt16(this._offset);\n var position = this._offset;\n var subTables = [];\n for (var i = 0; i < table._tablesCount; i++) {\n this._offset = position;\n var subTable = new _TrueTypeCmapSubTable();\n subTable._platformID = this._readUInt16(this._offset);\n subTable._encodingID = this._readUInt16(this._offset);\n subTable._offset = this._readUInt32(this._offset);\n position = this._offset;\n this._readCmapSubTable(subTable);\n subTables[Number.parseInt(i.toString(), 10)] = subTable;\n }\n return subTables;\n };\n _TrueTypeReader.prototype._readCmapSubTable = function (subTable) {\n var tableInfo = this._getTable('cmap');\n this._offset = tableInfo._offset + subTable._offset;\n var format = this._readUInt16(this._offset);\n var encoding = this._getCmapEncoding(subTable._platformID, subTable._encodingID);\n if (encoding !== _TrueTypeCmapEncoding.unknown) {\n switch (format) {\n case _TrueTypeCmapFormat.apple:\n this._readAppleCmapTable(subTable, encoding);\n break;\n case _TrueTypeCmapFormat.microsoft:\n this._readMicrosoftCmapTable(subTable, encoding);\n break;\n case _TrueTypeCmapFormat.trimmed:\n this._readTrimmedCmapTable(subTable, encoding);\n break;\n }\n }\n };\n _TrueTypeReader.prototype._readAppleCmapTable = function (subTable, encoding) {\n var tableInfo = this._getTable('cmap');\n this._offset = tableInfo._offset + subTable._offset;\n var table = new _TrueTypeAppleCmapSubTable();\n table._format = this._readUInt16(this._offset);\n table._length = this._readUInt16(this._offset);\n table._version = this._readUInt16(this._offset);\n if (this._maxMacIndex === null || typeof this._maxMacIndex === 'undefined') {\n this._maxMacIndex = 0;\n }\n for (var i = 0; i < 256; ++i) {\n var glyphInfo = new _TrueTypeGlyph();\n glyphInfo._index = this._readByte(this._offset);\n glyphInfo._width = this._getWidth(glyphInfo._index);\n glyphInfo._charCode = i;\n this.macintosh.setValue(i, glyphInfo);\n this._addGlyph(glyphInfo, encoding);\n this._maxMacIndex = Math.max(i, this._maxMacIndex);\n }\n };\n _TrueTypeReader.prototype._readMicrosoftCmapTable = function (subTable, encoding) {\n var tableInfo = this._getTable('cmap');\n this._offset = tableInfo._offset + subTable._offset;\n var collection = (encoding === _TrueTypeCmapEncoding.unicode) ? this._microsoft\n : this.macintosh;\n var table = new _TrueTypeMicrosoftCmapSubTable();\n table._format = this._readUInt16(this._offset);\n table._length = this._readUInt16(this._offset);\n table._version = this._readUInt16(this._offset);\n table._segCountX2 = this._readUInt16(this._offset);\n table._searchRange = this._readUInt16(this._offset);\n table._entrySelector = this._readUInt16(this._offset);\n table._rangeShift = this._readUInt16(this._offset);\n var segCount = table._segCountX2 / 2;\n table._endCount = this._readUShortArray(segCount);\n table._reservedPad = this._readUInt16(this._offset);\n table._startCount = this._readUShortArray(segCount);\n table._idDelta = this._readUShortArray(segCount);\n table._idRangeOffset = this._readUShortArray(segCount);\n var length = (table._length / 2 - 8) - (segCount * 4);\n table._glyphID = this._readUShortArray(length);\n var codeOffset = 0;\n var index = 0;\n for (var j = 0; j < segCount; j++) {\n for (var k = table._startCount[Number.parseInt(j.toString(), 10)]; k <=\n table._endCount[Number.parseInt(j.toString(), 10)] && k !== 65535; k++) {\n if (table._idRangeOffset[Number.parseInt(j.toString(), 10)] === 0) {\n codeOffset = (k + table._idDelta[Number.parseInt(j.toString(), 10)]) & 65535;\n }\n else {\n index = j + table._idRangeOffset[Number.parseInt(j.toString(), 10)] / 2 - segCount +\n k - table._startCount[Number.parseInt(j.toString(), 10)];\n if (index >= table._glyphID.length) {\n continue;\n }\n codeOffset = (table._glyphID[Number.parseInt(index.toString(), 10)] +\n table._idDelta[Number.parseInt(j.toString(), 10)]) & 65535;\n }\n var glyph = new _TrueTypeGlyph();\n glyph._index = codeOffset;\n glyph._width = this._getWidth(glyph._index);\n var id = (encoding === _TrueTypeCmapEncoding.symbol) ? ((k & 0xff00) === 0xf000 ? k & 0xff : k) : k;\n glyph._charCode = id;\n collection.setValue(id, glyph);\n this._addGlyph(glyph, encoding);\n }\n }\n };\n _TrueTypeReader.prototype._readTrimmedCmapTable = function (subTable, encoding) {\n var tableInfo = this._getTable('cmap');\n this._offset = tableInfo._offset + subTable._offset;\n var table = new _TrueTypeTrimmedCmapSubTable();\n table._format = this._readUInt16(this._offset);\n table._length = this._readUInt16(this._offset);\n table._version = this._readUInt16(this._offset);\n table._firstCode = this._readUInt16(this._offset);\n table._entryCount = this._readUInt16(this._offset);\n for (var i = 0; i < table._entryCount; ++i) {\n var glyphInfo = new _TrueTypeGlyph();\n glyphInfo._index = this._readUInt16(this._offset);\n glyphInfo._width = this._getWidth(glyphInfo._index);\n glyphInfo._charCode = i + table._firstCode;\n this.macintosh.setValue(i, glyphInfo);\n this._addGlyph(glyphInfo, encoding);\n this._maxMacIndex = Math.max(i, this._maxMacIndex);\n }\n };\n _TrueTypeReader.prototype._initializeFontName = function (nameTable) {\n for (var i = 0; i < nameTable._recordsCount; i++) {\n var record = nameTable._nameRecords[Number.parseInt(i.toString(), 10)];\n if (record._nameID === 1) {\n this._metrics._fontFamily = record._name;\n }\n else if (record._nameID === 6) {\n this._metrics._postScriptName = record._name;\n }\n if (this._metrics._fontFamily !== null && this._metrics._fontFamily !== 'undefined' &&\n this._metrics._postScriptName !== null && this._metrics._postScriptName !== 'undefined') {\n break;\n }\n }\n };\n _TrueTypeReader.prototype._getTable = function (name) {\n var table = new _TrueTypeTableInfo();\n var obj;\n if (this._tableDirectory.containsKey(name)) {\n obj = this._tableDirectory.getValue(name);\n }\n if (obj !== null && typeof obj !== 'undefined') {\n table = obj;\n }\n return table;\n };\n _TrueTypeReader.prototype._getWidth = function (glyphCode) {\n glyphCode = (glyphCode < this._width.length) ? glyphCode : this._width.length - 1;\n return this._width[Number.parseInt(glyphCode.toString(), 10)];\n };\n _TrueTypeReader.prototype._getCmapEncoding = function (platformID, encodingID) {\n var format = _TrueTypeCmapEncoding.unknown;\n if (platformID === _TrueTypePlatformID.microsoft &&\n encodingID === _TrueTypeMicrosoftEncodingID.undefined) {\n format = _TrueTypeCmapEncoding.symbol;\n }\n else if (platformID === _TrueTypePlatformID.microsoft\n && encodingID === _TrueTypeMicrosoftEncodingID.unicode) {\n format = _TrueTypeCmapEncoding.unicode;\n }\n else if (platformID === _TrueTypePlatformID.macintosh\n && encodingID === _TrueTypeMacintoshEncodingID.roman) {\n format = _TrueTypeCmapEncoding.macintosh;\n }\n return format;\n };\n _TrueTypeReader.prototype._addGlyph = function (glyph, encoding) {\n var collection = null;\n switch (encoding) {\n case _TrueTypeCmapEncoding.unicode:\n collection = this._microsoftGlyphs;\n break;\n case _TrueTypeCmapEncoding.macintosh:\n case _TrueTypeCmapEncoding.symbol:\n collection = this._macintoshGlyphs;\n break;\n }\n collection.setValue(glyph._index, glyph);\n };\n _TrueTypeReader.prototype._initializeMetrics = function (nameTable, headTable, horizontalHeadTable, os2Table, postTable, cmapTables) {\n this._initializeFontName(nameTable);\n var bSymbol = false;\n for (var i = 0; i < cmapTables.length; i++) {\n var subTable = cmapTables[Number.parseInt(i.toString(), 10)];\n var encoding = this._getCmapEncoding(subTable._platformID, subTable._encodingID);\n if (encoding === _TrueTypeCmapEncoding.symbol) {\n bSymbol = true;\n break;\n }\n }\n this._metrics._isSymbol = bSymbol;\n this._metrics._macStyle = headTable._macStyle;\n this._metrics._isFixedPitch = (postTable._isFixedPitch !== 0);\n this._metrics._italicAngle = postTable._italicAngle;\n var factor = 1000 / headTable._unitsPerEm;\n this._metrics._winAscent = os2Table._sTypoAscender * factor;\n this._metrics._macAscent = horizontalHeadTable._ascender * factor;\n this._metrics._capHeight = (os2Table._sCapHeight !== 0) ? os2Table._sCapHeight : 0.7 * headTable._unitsPerEm * factor;\n this._metrics._winDescent = os2Table._sTypoDescender * factor;\n this._metrics._macDescent = horizontalHeadTable._descender * factor;\n this._metrics._leading = (os2Table._sTypoAscender - os2Table._sTypoDescender + os2Table._sTypoLineGap) * factor;\n this._metrics._lineGap = Math.ceil(horizontalHeadTable._lineGap * factor);\n var left = headTable._xMin * factor;\n var top = Math.ceil(this._metrics._macAscent + this._metrics._lineGap);\n var right = headTable._xMax * factor;\n var bottom = this._metrics._macDescent;\n this._metrics._fontBox = [left, top, right, bottom];\n this._metrics._stemV = 80;\n this._metrics._widthTable = this._updateWidth();\n this._metrics._contains = this._tableDirectory.containsKey('CFF');\n this._metrics._subScriptSizeFactor = headTable._unitsPerEm / os2Table._ySubscriptYSize;\n this._metrics._superscriptSizeFactor = headTable._unitsPerEm / os2Table._ySuperscriptYSize;\n };\n _TrueTypeReader.prototype._updateWidth = function () {\n var count = 256;\n var bytes = [];\n if (this._metrics._isSymbol) {\n for (var i = 0; i < count; i++) {\n var glyphInfo = this._getGlyph(String.fromCharCode(Number.parseInt(i.toString(), 10)));\n bytes[Number.parseInt(i.toString(), 10)] = (glyphInfo._empty) ? 0 : glyphInfo._width;\n }\n }\n else {\n var byteToProcess = [];\n var unknown = '?';\n var space = String.fromCharCode(32);\n for (var i = 0; i < count; i++) {\n byteToProcess[0] = Number.parseInt(i.toString(), 10);\n var text = this._getString(byteToProcess, 0, byteToProcess.length);\n var ch = (text.length > 0) ? text[0] : unknown;\n var glyphInfo = this._getGlyph(ch);\n if (!glyphInfo._empty) {\n bytes[Number.parseInt(i.toString(), 10)] = glyphInfo._width;\n }\n else {\n glyphInfo = this._getGlyph(space);\n bytes[Number.parseInt(i.toString(), 10)] = (glyphInfo._empty) ? 0 : glyphInfo._width;\n }\n }\n }\n return bytes;\n };\n _TrueTypeReader.prototype._getDefaultGlyph = function () {\n var glyph = this._getGlyph(_StringTokenizer._whiteSpace);\n return glyph;\n };\n _TrueTypeReader.prototype._getString = function (byteToProcess, start, length) {\n var result = '';\n for (var index = 0; index < length; index++) {\n result += String.fromCharCode(byteToProcess[index + start]);\n }\n return result;\n };\n _TrueTypeReader.prototype._setOffset = function (offset) {\n this._offset = offset;\n };\n _TrueTypeReader.prototype._readFontProgram = function (chars) {\n var glyphChars = this._getGlyphChars(chars);\n var locaTable = this._readLocaTable(this._bIsLocaShort);\n if (glyphChars && glyphChars._size() < chars._size()) {\n this._missedGlyphs = chars._size() - glyphChars._size();\n }\n this._updateGlyphChars(glyphChars, locaTable);\n var result1 = this._generateGlyphTable(glyphChars, locaTable, null, null);\n var glyphTableSize = result1.glyphTableSize;\n var newLocaTable = result1.newLocaTable;\n var newGlyphTable = result1.newGlyphTable;\n var result2 = this._updateLocaTable(newLocaTable, this._bIsLocaShort);\n var newLocaSize = result2.newLocaSize;\n var newLocaUpdated = result2.newLocaUpdated;\n var fontProgram = this._getFontProgram(newLocaUpdated, newGlyphTable, glyphTableSize, newLocaSize);\n return fontProgram;\n };\n _TrueTypeReader.prototype._generateGlyphTable = function (glyphChars, locaTable, newLocaTable, newGlyphTable) {\n newLocaTable = [];\n var activeGlyphs = glyphChars.keys();\n activeGlyphs.sort(function (a, b) { return a - b; });\n var glyphSize = 0;\n for (var i = 0; i < activeGlyphs.length; i++) {\n var glyphIndex = activeGlyphs[Number.parseInt(i.toString(), 10)];\n if (locaTable._offsets.length > 0) {\n glyphSize += locaTable._offsets[glyphIndex + 1] - locaTable._offsets[Number.parseInt(glyphIndex.toString(), 10)];\n }\n }\n var glyphSizeAligned = this._align(glyphSize);\n newGlyphTable = [];\n for (var i = 0; i < glyphSizeAligned; i++) {\n newGlyphTable.push(0);\n }\n var nextGlyphOffset = 0;\n var nextGlyphIndex = 0;\n var table = this._getTable('glyf');\n for (var i = 0; i < locaTable._offsets.length; i++) {\n newLocaTable.push(nextGlyphOffset);\n if (nextGlyphIndex < activeGlyphs.length && activeGlyphs[Number.parseInt(nextGlyphIndex.toString(), 10)] === i) {\n ++nextGlyphIndex;\n newLocaTable[Number.parseInt(i.toString(), 10)] = nextGlyphOffset;\n var oldGlyphOffset = locaTable._offsets[Number.parseInt(i.toString(), 10)];\n var oldNextGlyphOffset = locaTable._offsets[i + 1] - oldGlyphOffset;\n if (oldNextGlyphOffset > 0) {\n this._offset = table._offset + oldGlyphOffset;\n var result = this._read(newGlyphTable, nextGlyphOffset, oldNextGlyphOffset);\n newGlyphTable = result.buffer;\n nextGlyphOffset += oldNextGlyphOffset;\n }\n }\n }\n return { glyphTableSize: glyphSize, newLocaTable: newLocaTable, newGlyphTable: newGlyphTable };\n };\n _TrueTypeReader.prototype._readLocaTable = function (bShort) {\n var tableInfo = this._getTable('loca');\n this._offset = tableInfo._offset;\n var table = new _TrueTypeLocaTable();\n var buffer = [];\n if (bShort) {\n var len = tableInfo._length / 2;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[Number.parseInt(i.toString(), 10)] = this._readUInt16(this._offset) * 2;\n }\n }\n else {\n var len = tableInfo._length / 4;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[Number.parseInt(i.toString(), 10)] = this._readUInt32(this._offset);\n }\n }\n table._offsets = buffer;\n return table;\n };\n _TrueTypeReader.prototype._updateGlyphChars = function (glyphChars, locaTable) {\n if (!glyphChars.containsKey(0)) {\n glyphChars.setValue(0, 0);\n }\n var clone = new Dictionary();\n var glyphCharKeys = glyphChars.keys();\n for (var i = 0; i < glyphCharKeys.length; i++) {\n clone.setValue(glyphCharKeys[Number.parseInt(i.toString(), 10)], glyphChars.getValue(glyphCharKeys[Number.parseInt(i.toString(), 10)]));\n }\n for (var i = 0; i < glyphCharKeys.length; i++) {\n var nextKey = glyphCharKeys[Number.parseInt(i.toString(), 10)];\n this._processCompositeGlyph(glyphChars, nextKey, locaTable);\n }\n };\n _TrueTypeReader.prototype._processCompositeGlyph = function (glyphChars, glyph, locaTable) {\n if (glyph < locaTable._offsets.length - 1) {\n var glyphOffset = locaTable._offsets[Number.parseInt(glyph.toString(), 10)];\n if (glyphOffset !== locaTable._offsets[glyph + 1]) {\n var tableInfo = this._getTable('glyf');\n this._offset = tableInfo._offset + glyphOffset;\n var glyphHeader = new _TrueTypeGlyphHeader();\n glyphHeader.numberOfContours = this._readInt16(this._offset);\n glyphHeader.xMin = this._readInt16(this._offset);\n glyphHeader.yMin = this._readInt16(this._offset);\n glyphHeader.xMax = this._readInt16(this._offset);\n glyphHeader.yMax = this._readInt16(this._offset);\n if (glyphHeader.numberOfContours < 0) {\n var skipBytes = 0;\n var entry = true;\n while (entry) {\n var flags = this._readUInt16(this._offset);\n var glyphIndex = this._readUInt16(this._offset);\n if (!glyphChars.containsKey(glyphIndex)) {\n glyphChars.setValue(glyphIndex, 0);\n }\n if ((flags & _TrueTypeCompositeGlyphFlag.MoreComponents) === 0) {\n break;\n }\n skipBytes = ((flags & _TrueTypeCompositeGlyphFlag.Arg1And2AreWords) !== 0) ? 4 : 2;\n if ((flags & _TrueTypeCompositeGlyphFlag.WeHaveScale) !== 0) {\n skipBytes += 2;\n }\n else if ((flags & _TrueTypeCompositeGlyphFlag.WeHaveAnXyScale) !== 0) {\n skipBytes += 4;\n }\n else if ((flags & _TrueTypeCompositeGlyphFlag.WeHaveTwoByTwo) !== 0) {\n skipBytes += 2 * 4;\n }\n this._offset += skipBytes;\n }\n }\n }\n }\n };\n _TrueTypeReader.prototype._updateLocaTable = function (newLocaTable, bLocaIsShort) {\n var size = (bLocaIsShort) ? newLocaTable.length * 2 : newLocaTable.length * 4;\n var count = this._align(size);\n var writer = new _BigEndianWriter(count);\n for (var i = 0; i < newLocaTable.length; i++) {\n var value = newLocaTable[Number.parseInt(i.toString(), 10)];\n if (bLocaIsShort) {\n value /= 2;\n writer._writeShort(value);\n }\n else {\n writer._writeInt(value);\n }\n }\n return { newLocaUpdated: writer._data, newLocaSize: size };\n };\n _TrueTypeReader.prototype._align = function (value) {\n return (value + 3) & (~3);\n };\n _TrueTypeReader.prototype._getFontProgram = function (newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n var result = this._getFontProgramLength(newLocaTableOut, newGlyphTable, 0);\n var fontProgramLength = result.fontProgramLength;\n var table = result.table;\n var writer = new _BigEndianWriter(fontProgramLength);\n writer._writeInt(0x10000);\n writer._writeShort(table);\n var entrySelector = this._entrySelectors[Number.parseInt(table.toString(), 10)];\n writer._writeShort((1 << (entrySelector & 31)) * 16);\n writer._writeShort(entrySelector);\n writer._writeShort((table - (1 << (entrySelector & 31))) * 16);\n this._writeCheckSums(writer, table, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize);\n this._writeGlyphs(writer, newLocaTableOut, newGlyphTable);\n return writer._data;\n };\n _TrueTypeReader.prototype._getFontProgramLength = function (newLocaTableOut, newGlyphTable, table) {\n var fontProgramLength = 0;\n if (newLocaTableOut !== null && typeof newLocaTableOut !== 'undefined' && newLocaTableOut.length > 0 &&\n newGlyphTable !== null && typeof newGlyphTable !== 'undefined' && newGlyphTable.length > 0) {\n table = 2;\n var tableNames = this._tableNames;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[Number.parseInt(i.toString(), 10)];\n if (tableName !== 'glyf' && tableName !== 'loca') {\n var tableInfo = this._getTable(tableName);\n if (!tableInfo._empty) {\n ++table;\n fontProgramLength += this._align(tableInfo._length);\n }\n }\n }\n fontProgramLength += newLocaTableOut.length;\n fontProgramLength += newGlyphTable.length;\n var usedTablesSize = table * 16 + (3 * 4);\n fontProgramLength += usedTablesSize;\n }\n return { fontProgramLength: fontProgramLength, table: table };\n };\n _TrueTypeReader.prototype._getGlyphChars = function (chars) {\n var dictionary = new Dictionary();\n if (chars !== null && typeof chars !== 'undefined') {\n var charKeys = chars.keys();\n for (var i = 0; i < charKeys.length; i++) {\n var ch = charKeys[Number.parseInt(i.toString(), 10)];\n var glyph = this._getGlyph(ch);\n if (!glyph._empty) {\n dictionary.setValue(glyph._index, ch.charCodeAt(0));\n }\n }\n }\n return dictionary;\n };\n _TrueTypeReader.prototype._writeCheckSums = function (writer, table, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n if (writer !== null && typeof writer !== 'undefined' && newLocaTableOut !== null && typeof newLocaTableOut !== 'undefined' &&\n newLocaTableOut.length > 0 && newGlyphTable !== null && typeof newGlyphTable !== 'undefined' && newGlyphTable.length > 0) {\n var tableNames = this._tableNames;\n var usedTablesSize = table * 16 + (3 * 4);\n var nextTableSize = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[Number.parseInt(i.toString(), 10)];\n var tableInfo = this._getTable(tableName);\n if (tableInfo._empty) {\n continue;\n }\n writer._writeString(tableName);\n if (tableName === 'glyf') {\n var checksum = this._calculateCheckSum(newGlyphTable);\n writer._writeInt(checksum);\n nextTableSize = glyphTableSize;\n }\n else if (tableName === 'loca') {\n var checksum = this._calculateCheckSum(newLocaTableOut);\n writer._writeInt(checksum);\n nextTableSize = locaTableSize;\n }\n else {\n writer._writeInt(tableInfo._checksum);\n nextTableSize = tableInfo._length;\n }\n writer._writeUInt(usedTablesSize);\n writer._writeUInt(nextTableSize);\n usedTablesSize += this._align(nextTableSize);\n }\n }\n };\n _TrueTypeReader.prototype._calculateCheckSum = function (bytes) {\n var pos = 0;\n var byte1 = 0;\n var byte2 = 0;\n var byte3 = 0;\n var byte4 = 0;\n var result = 0;\n if (bytes !== null && typeof bytes !== 'undefined' && bytes.length > 0) {\n for (var i = 0; i < (bytes.length + 1) / 4; i++) {\n byte4 += (bytes[pos++] & 255);\n byte3 += (bytes[pos++] & 255);\n byte2 += (bytes[pos++] & 255);\n byte1 += (bytes[pos++] & 255);\n }\n result = byte1;\n result += (byte2 << 8);\n result += (byte3 << 16);\n result += (byte4 << 24);\n }\n return result;\n };\n _TrueTypeReader.prototype._writeGlyphs = function (writer, newLocaTable, newGlyphTable) {\n if (writer !== null && typeof writer !== 'undefined' && newLocaTable !== null && typeof newLocaTable !== 'undefined' &&\n newLocaTable.length > 0 && newGlyphTable !== null && typeof newGlyphTable !== 'undefined' && newGlyphTable.length > 0) {\n var tableNames = this._tableNames;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[Number.parseInt(i.toString(), 10)];\n var tableInfo = this._getTable(tableName);\n if (tableInfo._empty) {\n continue;\n }\n if (tableName === 'glyf') {\n writer._writeBytes(newGlyphTable);\n }\n else if (tableName === 'loca') {\n writer._writeBytes(newLocaTable);\n }\n else {\n var count = this._align(tableInfo._length);\n var buff = [];\n for (var i_1 = 0; i_1 < count; i_1++) {\n buff.push(0);\n }\n this._offset = tableInfo._offset;\n var result = this._read(buff, 0, tableInfo._length);\n writer._writeBytes(result.buffer);\n }\n }\n }\n };\n _TrueTypeReader.prototype._read = function (buffer, index, count) {\n var written = 0;\n if (buffer !== null && typeof buffer !== 'undefined' && buffer.length > 0) {\n var read = 0;\n do {\n for (var i = 0; (i < count - written) && (this._offset + i < this._fontData.length); i++) {\n buffer[index + i] = this._fontData[this._offset + i];\n }\n read = count - written;\n this._offset += read;\n written += read;\n } while (written < count);\n }\n return { buffer: buffer, written: written };\n };\n _TrueTypeReader.prototype._createInternals = function () {\n this._metrics = new _TrueTypeMetrics();\n var nameTable = this._readNameTable();\n var headTable = this._readHeadTable();\n this._bIsLocaShort = (headTable._indexToLocalFormat === 0);\n var horizontalHeadTable = this._readHorizontalHeaderTable();\n var os2Table = this._readOS2Table();\n var postTable = this._readPostTable();\n this._width = this._readWidthTable(horizontalHeadTable._numberOfHMetrics, headTable._unitsPerEm);\n var subTables = this._readCmapTable();\n this._initializeMetrics(nameTable, headTable, horizontalHeadTable, os2Table, postTable, subTables);\n };\n _TrueTypeReader.prototype._getGlyph = function (charCode) {\n if (typeof charCode === 'number') {\n var obj1 = null;\n if (!this._metrics._isSymbol && this._microsoftGlyphs != null) {\n if (this._microsoftGlyphs.containsKey(charCode)) {\n obj1 = this._microsoftGlyphs.getValue(charCode);\n }\n }\n else if (this._metrics._isSymbol && this._macintoshGlyphs != null) {\n if (this._macintoshGlyphs.containsKey(charCode)) {\n obj1 = this._macintoshGlyphs.getValue(charCode);\n }\n }\n var glyph = (obj1 != null) ? obj1 : this._getDefaultGlyph();\n return glyph;\n }\n else {\n var obj = null;\n var code = charCode.charCodeAt(0);\n if (!this._metrics._isSymbol && this._microsoft !== null) {\n if (this._microsoft.containsKey(code)) {\n obj = this._microsoft.getValue(code);\n if (code !== _StringTokenizer._whiteSpace.charCodeAt(0)) {\n this._isFontPresent = true;\n }\n }\n else if (code !== _StringTokenizer._whiteSpace.charCodeAt(0)) {\n this._isFontPresent = false;\n }\n }\n else if (this._metrics._isSymbol && this.macintosh !== null || this._isMacFont) {\n if (this._maxMacIndex !== 0) {\n code %= this._maxMacIndex + 1;\n }\n else {\n code = ((code & 0xff00) === 0xf000 ? code & 0xff : code);\n }\n if (this.macintosh.containsKey(code)) {\n obj = this.macintosh.getValue(code);\n this._isFontPresent = true;\n }\n }\n if (charCode === _StringTokenizer._whiteSpace && obj === null) {\n obj = new _TrueTypeGlyph();\n }\n var glyph = (obj !== null) ? obj : this._getDefaultGlyph();\n return glyph;\n }\n };\n _TrueTypeReader.prototype._readString = function (length, isUnicode) {\n if (typeof isUnicode === 'undefined' || isUnicode === null) {\n return this._readString(length, false);\n }\n else {\n var result = '';\n if (isUnicode) {\n for (var i = 0; i < length; i++) {\n if (i % 2 !== 0) {\n result += String.fromCharCode(this._fontData[this._offset]);\n }\n this._offset += 1;\n }\n }\n else {\n for (var i = 0; i < length; i++) {\n result += String.fromCharCode(this._fontData[this._offset]);\n this._offset += 1;\n }\n }\n return result;\n }\n };\n _TrueTypeReader.prototype._readFixed = function (offset) {\n var integer = this._readInt16(offset);\n var sFraction = this._readInt16(offset + 2);\n var fraction = sFraction / 16384;\n return integer + fraction;\n };\n _TrueTypeReader.prototype._readInt32 = function (offset) {\n var i1 = this._fontData[Number.parseInt(offset.toString(), 10) + 3];\n var i2 = this._fontData[Number.parseInt(offset.toString(), 10) + 2];\n var i3 = this._fontData[Number.parseInt(offset.toString(), 10) + 1];\n var i4 = this._fontData[Number.parseInt(offset.toString(), 10)];\n this._offset += 4;\n return i1 + (i2 << 8) + (i3 << 16) + (i4 << 24);\n };\n _TrueTypeReader.prototype._readUInt32 = function (offset) {\n var i1 = this._fontData[Number.parseInt(offset.toString(), 10) + 3];\n var i2 = this._fontData[Number.parseInt(offset.toString(), 10) + 2];\n var i3 = this._fontData[Number.parseInt(offset.toString(), 10) + 1];\n var i4 = this._fontData[Number.parseInt(offset.toString(), 10)];\n this._offset += 4;\n return (i1 | i2 << 8 | i3 << 16 | i4 << 24);\n };\n _TrueTypeReader.prototype._readInt16 = function (offset) {\n var result = (this._fontData[Number.parseInt(offset.toString(), 10)] << 8) +\n this._fontData[Number.parseInt(offset.toString(), 10) + 1];\n result = result & (1 << 15) ? result - 0x10000 : result;\n this._offset += 2;\n return result;\n };\n _TrueTypeReader.prototype._readInt64 = function (offset) {\n var low = this._readInt32(offset + 4);\n var n = this._readInt32(offset) * 4294967296.0 + low;\n if (low < 0) {\n n += 4294967296;\n }\n return n;\n };\n _TrueTypeReader.prototype._readUInt16 = function (offset) {\n var result = (this._fontData[Number.parseInt(offset.toString(), 10)] << 8) |\n this._fontData[Number.parseInt(offset.toString(), 10) + 1];\n this._offset += 2;\n return result;\n };\n _TrueTypeReader.prototype._readUShortArray = function (length) {\n var buffer = [];\n for (var i = 0; i < length; i++) {\n buffer[Number.parseInt(i.toString(), 10)] = this._readUInt16(this._offset);\n }\n return buffer;\n };\n _TrueTypeReader.prototype._readBytes = function (length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(this._fontData[Number.parseInt(this._offset.toString(), 10)]);\n this._offset += 1;\n }\n return result;\n };\n _TrueTypeReader.prototype._readByte = function (offset) {\n var result = this._fontData[Number.parseInt(offset.toString(), 10)];\n this._offset += 1;\n return result;\n };\n _TrueTypeReader.prototype._getCharacterWidth = function (code) {\n var glyphInfo = this._getGlyph(code);\n glyphInfo = (!glyphInfo._empty) ? glyphInfo : this._getDefaultGlyph();\n var codeWidth = (!glyphInfo._empty) ? glyphInfo._width : 0;\n return codeWidth;\n };\n _TrueTypeReader.prototype._convertString = function (text) {\n var glyph = '';\n if (text !== null && text !== undefined && text.length > 0) {\n for (var k = 0; k < text.length; k++) {\n var ch = text[Number.parseInt(k.toString(), 10)];\n var glyphInfo = this._getGlyph(ch);\n if (!glyphInfo._empty) {\n glyph += String.fromCharCode(glyphInfo._index);\n }\n }\n }\n return glyph;\n };\n return _TrueTypeReader;\n}());\nexport { _TrueTypeReader };\nvar _TrueTypeNameRecord = /** @class */ (function () {\n function _TrueTypeNameRecord() {\n }\n return _TrueTypeNameRecord;\n}());\nexport { _TrueTypeNameRecord };\nvar _TrueTypeMetrics = /** @class */ (function () {\n function _TrueTypeMetrics() {\n }\n Object.defineProperty(_TrueTypeMetrics.prototype, \"_isItalic\", {\n get: function () {\n return ((this._macStyle & 2) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_TrueTypeMetrics.prototype, \"_isBold\", {\n get: function () {\n return ((this._macStyle & 1) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n return _TrueTypeMetrics;\n}());\nexport { _TrueTypeMetrics };\nvar _TrueTypeLongHorMetric = /** @class */ (function () {\n function _TrueTypeLongHorMetric() {\n }\n return _TrueTypeLongHorMetric;\n}());\nexport { _TrueTypeLongHorMetric };\nvar _TrueTypeGlyph = /** @class */ (function () {\n function _TrueTypeGlyph() {\n }\n Object.defineProperty(_TrueTypeGlyph.prototype, \"_empty\", {\n get: function () {\n return (this._index === this._width && this._width === this._charCode && this._charCode === 0);\n },\n enumerable: true,\n configurable: true\n });\n return _TrueTypeGlyph;\n}());\nexport { _TrueTypeGlyph };\nvar _TrueTypeLocaTable = /** @class */ (function () {\n function _TrueTypeLocaTable() {\n }\n return _TrueTypeLocaTable;\n}());\nexport { _TrueTypeLocaTable };\nvar _TrueTypeGlyphHeader = /** @class */ (function () {\n function _TrueTypeGlyphHeader() {\n }\n return _TrueTypeGlyphHeader;\n}());\nexport { _TrueTypeGlyphHeader };\nvar _BigEndianWriter = /** @class */ (function () {\n function _BigEndianWriter(capacity) {\n this.int32Size = 4;\n this.int16Size = 2;\n this.int64Size = 8;\n this._bufferLength = capacity;\n this._buffer = [];\n }\n Object.defineProperty(_BigEndianWriter.prototype, \"_data\", {\n get: function () {\n if (this._buffer.length < this._bufferLength) {\n var length_1 = this._bufferLength - this._buffer.length;\n for (var i = 0; i < length_1; i++) {\n this._buffer.push(0);\n }\n }\n return this._buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_BigEndianWriter.prototype, \"_position\", {\n get: function () {\n if (typeof this._internalPosition === 'undefined' || this._internalPosition === null) {\n this._internalPosition = 0;\n }\n return this._internalPosition;\n },\n enumerable: true,\n configurable: true\n });\n _BigEndianWriter.prototype._writeShort = function (value) {\n var bytes = [((value & 0x0000ff00) >> 8), value & 0x000000ff];\n this._flush(bytes);\n };\n _BigEndianWriter.prototype._writeInt = function (value) {\n var bytes = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this._flush(bytes);\n };\n _BigEndianWriter.prototype._writeUInt = function (value) {\n var buff = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this._flush(buff);\n };\n _BigEndianWriter.prototype._writeString = function (value) {\n if (value !== null && typeof value !== 'undefined') {\n var bytes = [];\n for (var i = 0; i < value.length; i++) {\n bytes.push(value.charCodeAt(i));\n }\n this._flush(bytes);\n }\n };\n _BigEndianWriter.prototype._writeBytes = function (value) {\n this._flush(value);\n };\n _BigEndianWriter.prototype._flush = function (buff) {\n if (buff !== null && typeof buff !== 'undefined') {\n var position = this._position;\n for (var i = 0; i < buff.length; i++) {\n this._buffer[Number.parseInt(position.toString(), 10)] = buff[Number.parseInt(i.toString(), 10)];\n position++;\n }\n this._internalPosition += buff.length;\n }\n };\n return _BigEndianWriter;\n}());\nexport { _BigEndianWriter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _PdfDictionary } from './pdf-primitives';\nimport { _byteArrayToHexString } from './utils';\nvar _PdfBaseStream = /** @class */ (function () {\n function _PdfBaseStream() {\n this._isCompress = true;\n }\n _PdfBaseStream.prototype.getByte = function () {\n return null;\n };\n _PdfBaseStream.prototype.getBytes = function (length) {\n return null;\n };\n Object.defineProperty(_PdfBaseStream.prototype, \"length\", {\n get: function () {\n throw new Error('Abstract getter `length` accessed');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_PdfBaseStream.prototype, \"isEmpty\", {\n get: function () {\n throw new Error('Abstract getter `isEmpty` accessed');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_PdfBaseStream.prototype, \"isDataLoaded\", {\n get: function () {\n return true;\n },\n enumerable: true,\n configurable: true\n });\n _PdfBaseStream.prototype.peekByte = function () {\n var peekedByte = this.getByte();\n if (peekedByte !== -1) {\n this.offset--;\n }\n return peekedByte;\n };\n _PdfBaseStream.prototype.peekBytes = function (length) {\n var bytes = this.getBytes(length);\n this.offset -= bytes.length;\n return bytes;\n };\n _PdfBaseStream.prototype.getUnsignedInteger16 = function () {\n var b0 = this.getByte();\n var b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n };\n _PdfBaseStream.prototype.getInt32 = function () {\n var b0 = this.getByte();\n var b1 = this.getByte();\n var b2 = this.getByte();\n var b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n };\n _PdfBaseStream.prototype.getByteRange = function (begin, end) {\n return null;\n };\n _PdfBaseStream.prototype.makeSubStream = function (start, length, dictionary) {\n return null;\n };\n _PdfBaseStream.prototype.readBlock = function () {\n return null;\n };\n _PdfBaseStream.prototype.reset = function () {\n return null;\n };\n _PdfBaseStream.prototype.moveStart = function () {\n return null;\n };\n _PdfBaseStream.prototype.getString = function (isHex) {\n if (isHex === void 0) { isHex = false; }\n var bytes = this.getBytes();\n if (typeof bytes === 'undefined' || bytes === null || typeof bytes.length === 'undefined') {\n throw new Error('Invalid argument for bytesToString');\n }\n if (isHex) {\n return _byteArrayToHexString(bytes);\n }\n else {\n var len = bytes.length;\n var max = 8192;\n if (len < max) {\n return String.fromCharCode.apply(null, bytes);\n }\n var stringBuffer = [];\n for (var i = 0; i < len; i += max) {\n stringBuffer.push(String.fromCharCode.apply(null, bytes.subarray(i, Math.min(i + max, len))));\n }\n return stringBuffer.join('');\n }\n };\n _PdfBaseStream.prototype.skip = function (n) {\n this.offset += n || 1;\n };\n _PdfBaseStream.prototype.getBaseStreams = function () {\n return null;\n };\n return _PdfBaseStream;\n}());\nexport { _PdfBaseStream };\nvar _PdfStream = /** @class */ (function (_super) {\n __extends(_PdfStream, _super);\n function _PdfStream(arrayBuffer, dictionary, start, length) {\n var _this = _super.call(this) || this;\n _this.isImageStream = false;\n _this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer);\n if (typeof start !== 'undefined') {\n _this.start = start;\n }\n else {\n _this.start = 0;\n }\n _this.position = _this.start;\n _this.end = start + length || _this.bytes.length;\n _this.dictionary = dictionary;\n return _this;\n }\n Object.defineProperty(_PdfStream.prototype, \"position\", {\n /**\n * Gets the position of the stream.\n *\n * @returns {number} offset position.\n */\n get: function () {\n return this.offset;\n },\n /**\n * Sets the position of the stream.\n *\n * @param {number} value offset position.\n */\n set: function (value) {\n this.offset = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_PdfStream.prototype, \"length\", {\n /**\n * Gets the length of the stream (Read only).\n *\n * @returns {number} length.\n */\n get: function () {\n return this.end - this.start;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_PdfStream.prototype, \"isEmpty\", {\n /**\n * Gets a value indicating whether the stream is empty (Read only).\n *\n * @returns {boolean} stream empty or not.\n */\n get: function () {\n return this.length === 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_PdfStream.prototype, \"data\", {\n /**\n * Gets the data of the stream.\n *\n * @returns {string[]} data of the stream.\n */\n get: function () {\n return this.dataStream2;\n },\n /**\n * Sets the data of the stream.\n *\n * @param {string[]} value data.\n */\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n },\n enumerable: true,\n configurable: true\n });\n _PdfStream.prototype.getByte = function () {\n if (this.position >= this.end) {\n return -1;\n }\n return this.bytes[this.position++];\n };\n _PdfStream.prototype.getBytes = function (length) {\n var bytes = this.bytes;\n var position = this.position;\n var strEnd = this.end;\n if (!length) {\n return bytes.subarray(position, strEnd);\n }\n var end = position + length;\n if (end > strEnd) {\n end = strEnd;\n }\n this.position = end;\n return bytes.subarray(position, end);\n };\n _PdfStream.prototype.getByteRange = function (begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n return this.bytes.subarray(begin, end);\n };\n _PdfStream.prototype.reset = function () {\n this.position = this.start;\n };\n _PdfStream.prototype.moveStart = function () {\n this.start = this.position;\n };\n _PdfStream.prototype.makeSubStream = function (start, length, dictionary) {\n if (dictionary === void 0) { dictionary = null; }\n return new _PdfStream(this.bytes.buffer, dictionary, start, length);\n };\n _PdfStream.prototype.readBlock = function () {\n throw new Error('Abstract method `readBlock` called');\n };\n _PdfStream.prototype._clearStream = function () {\n if (this.dictionary !== null && typeof this.dictionary !== 'undefined' && this.dictionary.has('Filter')) {\n delete this.dictionary._map.Filter;\n }\n this._isCompress = true;\n this.dictionary._updated = true;\n };\n _PdfStream.prototype._write = function (text) {\n this.bytes = new Uint8Array(text.length);\n for (var i = 0; i < text.length; i++) {\n this.bytes[Number.parseInt(i.toString(), 10)] = text.charCodeAt(i);\n }\n this.end = this.bytes.length;\n this.dictionary._updated = true;\n };\n _PdfStream.prototype._writeBytes = function (data) {\n var text = '';\n for (var i = 0; i < data.length; i++) {\n text = text + String.fromCharCode(data[Number.parseInt(i.toString(), 10)]);\n }\n this.bytes = new Uint8Array(data);\n this.end = this.bytes.length;\n this.dictionary._updated = true;\n };\n return _PdfStream;\n}(_PdfBaseStream));\nexport { _PdfStream };\nvar _PdfContentStream = /** @class */ (function (_super) {\n __extends(_PdfContentStream, _super);\n function _PdfContentStream(bytes) {\n var _this = _super.call(this) || this;\n _this._bytes = bytes;\n _this.dictionary = new _PdfDictionary();\n _this.dictionary._updated = true;\n return _this;\n }\n Object.defineProperty(_PdfContentStream.prototype, \"length\", {\n get: function () {\n return this._bytes.length;\n },\n enumerable: true,\n configurable: true\n });\n _PdfContentStream.prototype.write = function (data) {\n if (typeof data === 'string') {\n for (var i = 0; i < data.length; i++) {\n this._bytes.push(data.charCodeAt(i));\n }\n }\n else {\n for (var i = 0; i < data.length; i++) {\n this._bytes.push(data[Number.parseInt(i.toString(), 10)]);\n }\n }\n this.dictionary._updated = true;\n };\n _PdfContentStream.prototype.getString = function (isHex) {\n if (isHex === void 0) { isHex = false; }\n var bytes = new Uint8Array(this._bytes);\n if (typeof bytes === 'undefined' || bytes === null || typeof bytes.length === 'undefined') {\n throw new Error('Invalid argument for bytesToString');\n }\n if (isHex) {\n return _byteArrayToHexString(bytes);\n }\n else {\n var len = bytes.length;\n var max = 8192;\n if (len < max) {\n return String.fromCharCode.apply(null, bytes);\n }\n var stringBuffer = [];\n for (var i = 0; i < len; i += max) {\n stringBuffer.push(String.fromCharCode.apply(null, bytes.subarray(i, Math.min(i + max, len))));\n }\n return stringBuffer.join('');\n }\n };\n return _PdfContentStream;\n}(_PdfBaseStream));\nexport { _PdfContentStream };\nvar _PdfNullStream = /** @class */ (function (_super) {\n __extends(_PdfNullStream, _super);\n function _PdfNullStream() {\n return _super.call(this, new Uint8Array(0)) || this;\n }\n return _PdfNullStream;\n}(_PdfStream));\nexport { _PdfNullStream };\n","import { _TrueTypeReader } from './ttf-reader';\nimport { _PdfDictionary, _PdfName, Dictionary } from './../pdf-primitives';\nimport { _PdfFontMetrics } from './pdf-font-metrics';\nimport { _StandardWidthTable } from './pdf-font-metrics';\nimport { _FontDescriptorFlag } from '../enumerator';\nimport { _decode } from '../utils';\nimport { _PdfStream } from './../base-stream';\nvar _UnicodeTrueTypeFont = /** @class */ (function () {\n function _UnicodeTrueTypeFont(base64String, size) {\n this._nameString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n this._isEmbedFont = false;\n this._cmapPrefix = '/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap' + '\\r\\n' + '/CIDSystemInfo << /Registry (Adobe)/Ordering (UCS)/Supplement 0>> def\\n/CMapName ' + '/Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 beginCodeSpacerange' + '\\r\\n';\n this._cmapEndCodeSpaceRange = 'endCodeSpacerange' + '\\r\\n';\n this._cmapBeginRange = 'beginbfrange' + '\\r\\n';\n this._cmapEndRange = 'endbfrange' + '\\r\\n';\n this._cmapSuffix = 'endbfrange\\nendcmap\\nCMapName currentdict ' + '/CMap defineresource pop\\nend end' + '\\r\\n';\n if (base64String === null || typeof base64String === 'undefined') {\n throw new Error('ArgumentNullException:base64String');\n }\n this._fontSize = size;\n this._fontString = base64String;\n this._Initialize();\n }\n _UnicodeTrueTypeFont.prototype._beginSave = function () {\n this._descendantFontBeginSave();\n this._cmapBeginSave();\n this._fontDictionaryBeginSave();\n this._fontProgramBeginSave();\n if (this._fontDescriptor) {\n this._fontDescriptor.update('FontFile2', this._fontProgram);\n this._fontDescriptor._updated = true;\n this._fontDescriptor._isFont = true;\n }\n };\n _UnicodeTrueTypeFont.prototype._descendantFontBeginSave = function () {\n if (this._usedChars !== null && typeof this._usedChars !== 'undefined' && this._usedChars._size() > 0) {\n var width = this._getDescendantWidth(); // eslint-disable-line\n if (width !== null) {\n this._descendantFont.set('W', width);\n }\n }\n };\n _UnicodeTrueTypeFont.prototype._fontDictionaryBeginSave = function () {\n if (this._usedChars !== null && typeof this._usedChars !== 'undefined' && this._usedChars._size() > 0) {\n this._fontDictionary.update('ToUnicode', this._cmap);\n }\n };\n _UnicodeTrueTypeFont.prototype._Initialize = function () {\n var byteArray = _decode(this._fontString);\n this._fontData = byteArray;\n this._ttfReader = new _TrueTypeReader(this._fontData);\n this._ttfMetrics = this._ttfReader._metrics;\n };\n _UnicodeTrueTypeFont.prototype._createInternals = function () {\n this._fontDictionary = new _PdfDictionary();\n this._descendantFont = new _PdfDictionary();\n this._metrics = new _PdfFontMetrics();\n this._ttfReader._createInternals();\n this._usedChars = null;\n var data = []; // eslint-disable-line\n this._fontProgram = new _PdfStream(data, new _PdfDictionary());\n this._cmap = new _PdfStream(data, new _PdfDictionary());\n this._ttfMetrics = this._ttfReader._metrics;\n this._initializeMetrics();\n this._subsetName = this._getFontName();\n this._createDescendantFont();\n this._createFontDictionary();\n };\n _UnicodeTrueTypeFont.prototype._getInternals = function () {\n return this._fontDictionary;\n };\n _UnicodeTrueTypeFont.prototype._initializeMetrics = function () {\n var ttfMetrics = this._ttfReader._metrics;\n this._metrics._ascent = ttfMetrics._macAscent;\n this._metrics._descent = ttfMetrics._macDescent;\n this._metrics._height = ttfMetrics._macAscent - ttfMetrics._macDescent + ttfMetrics._lineGap;\n this._metrics._name = ttfMetrics._fontFamily;\n this._metrics._postScriptName = ttfMetrics._postScriptName;\n this._metrics._size = this._fontSize;\n this._metrics._widthTable = new _StandardWidthTable(ttfMetrics._widthTable);\n this._metrics._lineGap = ttfMetrics._lineGap;\n this._metrics._subScriptSizeFactor = ttfMetrics._subScriptSizeFactor;\n this._metrics._superscriptSizeFactor = ttfMetrics._superscriptSizeFactor;\n this._metrics._isBold = ttfMetrics._isBold;\n };\n _UnicodeTrueTypeFont.prototype._getFontName = function () {\n var builder = '';\n for (var i = 0; i < 6; i++) {\n var index = Math.floor(Math.random() * (25 - 0 + 1)) + 0;\n builder += this._nameString[Number.parseInt(index.toString(), 10)];\n }\n builder += '+';\n builder += this._ttfReader._metrics._postScriptName;\n return builder.toString();\n };\n _UnicodeTrueTypeFont.prototype._createDescendantFont = function () {\n this._descendantFont = new _PdfDictionary();\n this._descendantFont._updated = true;\n this._descendantFont.set('Type', new _PdfName('Font'));\n this._descendantFont.set('Subtype', new _PdfName('CIDFontType2'));\n this._descendantFont.set('BaseFont', new _PdfName(this._subsetName));\n this._descendantFont.set('CIDToGIDMap', new _PdfName('Identity'));\n this._descendantFont.set('DW', 1000);\n this._fontDescriptor = this._createFontDescriptor();\n this._descendantFont.set('FontDescriptor', this._fontDescriptor);\n var systemInfo = this._createSystemInfo();\n this._descendantFont.set('CIDSystemInfo', systemInfo);\n this._descendantFont._isFont = true;\n };\n _UnicodeTrueTypeFont.prototype._createFontDescriptor = function () {\n var descriptor = new _PdfDictionary();\n var metrics = this._ttfReader._metrics;\n descriptor.set('Type', new _PdfName('FontDescriptor'));\n descriptor.set('FontName', new _PdfName(this._subsetName));\n descriptor.set('Flags', this._getDescriptorFlags());\n descriptor.set('FontBBox', this._getBoundBox());\n descriptor.set('MissingWidth', metrics._widthTable[32]);\n descriptor.set('StemV', metrics._stemV);\n descriptor.set('ItalicAngle', metrics._italicAngle);\n descriptor.set('CapHeight', metrics._capHeight);\n descriptor.set('Ascent', metrics._winAscent);\n descriptor.set('Descent', metrics._winDescent);\n descriptor.set('Leading', metrics._leading);\n descriptor.set('AvgWidth', metrics._widthTable[32]);\n descriptor.set('MaxWidth', metrics._widthTable[32]);\n descriptor.set('XHeight', 0);\n descriptor.set('StemH', 0);\n descriptor._updated = true;\n return descriptor;\n };\n _UnicodeTrueTypeFont.prototype._generateFontProgram = function () {\n var fontProgram = [];\n this._usedChars = (this._usedChars === null || typeof this._usedChars === 'undefined') ? new Dictionary()\n : this._usedChars;\n this._ttfReader._setOffset(0);\n fontProgram = this._ttfReader._readFontProgram(this._usedChars);\n this._fontProgram._clearStream();\n this._fontProgram._writeBytes(fontProgram);\n };\n _UnicodeTrueTypeFont.prototype._getBoundBox = function () {\n var rect = this._ttfReader._metrics._fontBox;\n var width = Math.abs(rect[2] - rect[0]);\n var height = Math.abs(rect[1] - rect[3]);\n var rectangle = [rect[0], rect[3], width, height];\n return rectangle;\n };\n _UnicodeTrueTypeFont.prototype._cmapBeginSave = function () {\n this._generateCmap();\n };\n _UnicodeTrueTypeFont.prototype._fontProgramBeginSave = function () {\n this._generateFontProgram();\n };\n _UnicodeTrueTypeFont.prototype._toHexString = function (n, isCaseChange) {\n var s = n.toString(16);\n if (isCaseChange) {\n s = s.toUpperCase();\n }\n return '<0000'.substring(0, 5 - s.length) + s + '>';\n };\n _UnicodeTrueTypeFont.prototype._generateCmap = function () {\n if (this._usedChars !== null && typeof this._usedChars !== 'undefined' && this._usedChars._size() > 0) {\n var glyphChars = this._ttfReader._getGlyphChars(this._usedChars);\n if (glyphChars._size() > 0) {\n var keys = glyphChars.keys().sort();\n var first = keys[0];\n var last = keys[keys.length - 1];\n var middlePart = this._toHexString(first, false) + this._toHexString(last, false) + '\\r\\n';\n var builder = '';\n builder += this._cmapPrefix;\n builder += middlePart;\n builder += this._cmapEndCodeSpaceRange;\n var nextRange = 0;\n for (var i = 0; i < keys.length; i++) {\n if (nextRange === 0) {\n if (i !== 0) {\n builder += this._cmapEndRange;\n }\n nextRange = Math.min(100, keys.length - i);\n builder += nextRange;\n builder += ' ';\n builder += this._cmapBeginRange;\n }\n nextRange -= 1;\n var key = keys[Number.parseInt(i.toString(), 10)];\n builder += this._toHexString(key, true) + this._toHexString(key, true);\n builder += this._toHexString(glyphChars.getValue(key), true) + '\\n';\n }\n builder += this._cmapSuffix;\n this._cmap._clearStream();\n this._cmap._write(builder);\n }\n }\n };\n _UnicodeTrueTypeFont.prototype._createFontDictionary = function () {\n this._fontDictionary._updated = true;\n this._fontDictionary.set('Type', _PdfName.get('Font'));\n this._fontDictionary.set('Subtype', _PdfName.get('Type0'));\n this._fontDictionary.set('BaseFont', new _PdfName(this._subsetName));\n this._fontDictionary.set('Encoding', _PdfName.get('Identity-H'));\n this._fontDictionary.set('DescendantFonts', this._descendantFont);\n this._fontDictionary._isFont = true;\n this._fontDictionary._currentObj = this;\n };\n _UnicodeTrueTypeFont.prototype._createSystemInfo = function () {\n var systemInfo = new _PdfDictionary();\n systemInfo._updated = true;\n systemInfo.set('Registry', 'Adobe');\n systemInfo.set('Ordering', 'Identity');\n systemInfo.set('Supplement', 0);\n return systemInfo;\n };\n _UnicodeTrueTypeFont.prototype._getDescriptorFlags = function () {\n var flags = 0;\n var metrics = this._ttfReader._metrics;\n if (metrics._isFixedPitch) {\n flags |= _FontDescriptorFlag.fixedPitch;\n }\n if (metrics._isSymbol) {\n flags |= _FontDescriptorFlag.symbolic;\n }\n else {\n flags |= _FontDescriptorFlag.nonSymbolic;\n }\n if (metrics._isItalic) {\n flags |= _FontDescriptorFlag.italic;\n }\n if (metrics._isBold) {\n flags |= _FontDescriptorFlag.forceBold;\n }\n return flags;\n };\n _UnicodeTrueTypeFont.prototype._getCharacterWidth = function (charCode) {\n var codeWidth = this._ttfReader._getCharacterWidth(charCode);\n return codeWidth;\n };\n _UnicodeTrueTypeFont.prototype._setSymbols = function (text) {\n if (text !== null && typeof text !== 'undefined') {\n if (this._usedChars === null || typeof this._usedChars === 'undefined') {\n this._usedChars = new Dictionary();\n }\n for (var i = 0; i < text.length; i++) {\n var ch = text[Number.parseInt(i.toString(), 10)];\n this._usedChars.setValue(ch, String.fromCharCode(0));\n }\n }\n };\n _UnicodeTrueTypeFont.prototype._getDescendantWidth = function () {\n var array = new Array(); // eslint-disable-line\n if (this._usedChars !== null && typeof this._usedChars !== 'undefined' && this._usedChars._size() > 0) {\n var glyphInfo = [];\n var keys = this._usedChars.keys();\n for (var i = 0; i < keys.length; i++) {\n var chLen = keys[Number.parseInt(i.toString(), 10)];\n var glyph = this._ttfReader._getGlyph(chLen);\n glyphInfo.push(glyph);\n }\n glyphInfo.sort(function (a, b) { return a._index - b._index; });\n var firstGlyphIndex = 0;\n var lastGlyphIndex = 0;\n var firstGlyphIndexWasSet = false;\n var widthDetails = new Array(); // eslint-disable-line\n for (var i = 0; i < glyphInfo.length; i++) {\n var glyph = glyphInfo[Number.parseInt(i.toString(), 10)];\n if (!firstGlyphIndexWasSet) {\n firstGlyphIndexWasSet = true;\n firstGlyphIndex = glyph._index;\n lastGlyphIndex = glyph._index - 1;\n }\n if ((lastGlyphIndex + 1 !== glyph._index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n array.push(Number(firstGlyphIndex));\n if (i !== 0) {\n array.push(widthDetails);\n }\n firstGlyphIndex = glyph._index;\n widthDetails = new Array(); // eslint-disable-line\n }\n widthDetails.push(Number(glyph._width));\n if ((i + 1) === glyphInfo.length) {\n array.push(Number(firstGlyphIndex));\n array.push(widthDetails);\n }\n lastGlyphIndex = glyph._index;\n }\n }\n return array;\n };\n return _UnicodeTrueTypeFont;\n}());\nexport { _UnicodeTrueTypeFont };\n","var _ArabicShapeRenderer = /** @class */ (function () {\n /**\n * Creates an instance of the 'ArabicShapeRenderer' class.\n *\n * @private\n */\n function _ArabicShapeRenderer() {\n this._arabicCharTable = [['\\u0621', '\\uFE80'], ['\\u0622', '\\uFE81', '\\uFE82'], ['\\u0623', '\\uFE83', '\\uFE84'],\n ['\\u0624', '\\uFE85', '\\uFE86'], ['\\u0625', '\\uFE87', '\\uFE88'], ['\\u0626', '\\uFE89', '\\uFE8A', '\\uFE8B', '\\uFE8C'],\n ['\\u0627', '\\uFE8D', '\\uFE8E'], ['\\u0628', '\\uFE8F', '\\uFE90', '\\uFE91', '\\uFE92'], ['\\u0629', '\\uFE93', '\\uFE94'],\n ['\\u062A', '\\uFE95', '\\uFE96', '\\uFE97', '\\uFE98'], ['\\u062B', '\\uFE99', '\\uFE9A', '\\uFE9B', '\\uFE9C'],\n ['\\u062C', '\\uFE9D', '\\uFE9E', '\\uFE9F', '\\uFEA0'], ['\\u062D', '\\uFEA1', '\\uFEA2', '\\uFEA3', '\\uFEA4'],\n ['\\u062E', '\\uFEA5', '\\uFEA6', '\\uFEA7', '\\uFEA8'], ['\\u062F', '\\uFEA9', '\\uFEAA'], ['\\u0630', '\\uFEAB', '\\uFEAC'],\n ['\\u0631', '\\uFEAD', '\\uFEAE'], ['\\u0632', '\\uFEAF', '\\uFEB0'], ['\\u0633', '\\uFEB1', '\\uFEB2', '\\uFEB3', '\\uFEB4'],\n ['\\u0634', '\\uFEB5', '\\uFEB6', '\\uFEB7', '\\uFEB8'], ['\\u0635', '\\uFEB9', '\\uFEBA', '\\uFEBB', '\\uFEBC'],\n ['\\u0636', '\\uFEBD', '\\uFEBE', '\\uFEBF', '\\uFEC0'], ['\\u0637', '\\uFEC1', '\\uFEC2', '\\uFEC3', '\\uFEC4'],\n ['\\u0638', '\\uFEC5', '\\uFEC6', '\\uFEC7', '\\uFEC8'], ['\\u0639', '\\uFEC9', '\\uFECA', '\\uFECB', '\\uFECC'],\n ['\\u063A', '\\uFECD', '\\uFECE', '\\uFECF', '\\uFED0'], ['\\u0640', '\\u0640', '\\u0640', '\\u0640', '\\u0640'],\n ['\\u0641', '\\uFED1', '\\uFED2', '\\uFED3', '\\uFED4'], ['\\u0642', '\\uFED5', '\\uFED6', '\\uFED7', '\\uFED8'],\n ['\\u0643', '\\uFED9', '\\uFEDA', '\\uFEDB', '\\uFEDC'], ['\\u0644', '\\uFEDD', '\\uFEDE', '\\uFEDF', '\\uFEE0'],\n ['\\u0645', '\\uFEE1', '\\uFEE2', '\\uFEE3', '\\uFEE4'], ['\\u0646', '\\uFEE5', '\\uFEE6', '\\uFEE7', '\\uFEE8'],\n ['\\u0647', '\\uFEE9', '\\uFEEA', '\\uFEEB', '\\uFEEC'], ['\\u0648', '\\uFEED', '\\uFEEE'],\n ['\\u0649', '\\uFEEF', '\\uFEF0', '\\uFBE8', '\\uFBE9'], ['\\u064A', '\\uFEF1', '\\uFEF2', '\\uFEF3', '\\uFEF4'],\n ['\\u0671', '\\uFB50', '\\uFB51'], ['\\u0679', '\\uFB66', '\\uFB67', '\\uFB68', '\\uFB69'],\n ['\\u067A', '\\uFB5E', '\\uFB5F', '\\uFB60', '\\uFB61'], ['\\u067B', '\\uFB52', '\\uFB53', '\\uFB54', '\\uFB55'],\n ['\\u067E', '\\uFB56', '\\uFB57', '\\uFB58', '\\uFB59'], ['\\u067F', '\\uFB62', '\\uFB63', '\\uFB64', '\\uFB65'],\n ['\\u0680', '\\uFB5A', '\\uFB5B', '\\uFB5C', '\\uFB5D'], ['\\u0683', '\\uFB76', '\\uFB77', '\\uFB78', '\\uFB79'],\n ['\\u0684', '\\uFB72', '\\uFB73', '\\uFB74', '\\uFB75'], ['\\u0686', '\\uFB7A', '\\uFB7B', '\\uFB7C', '\\uFB7D'],\n ['\\u0687', '\\uFB7E', '\\uFB7F', '\\uFB80', '\\uFB81'], ['\\u0688', '\\uFB88', '\\uFB89'], ['\\u068C', '\\uFB84', '\\uFB85'],\n ['\\u068D', '\\uFB82', '\\uFB83'], ['\\u068E', '\\uFB86', '\\uFB87'], ['\\u0691', '\\uFB8C', '\\uFB8D'], ['\\u0698', '\\uFB8A', '\\uFB8B'],\n ['\\u06A4', '\\uFB6A', '\\uFB6B', '\\uFB6C', '\\uFB6D'], ['\\u06A6', '\\uFB6E', '\\uFB6F', '\\uFB70', '\\uFB71'],\n ['\\u06A9', '\\uFB8E', '\\uFB8F', '\\uFB90', '\\uFB91'], ['\\u06AD', '\\uFBD3', '\\uFBD4', '\\uFBD5', '\\uFBD6'],\n ['\\u06AF', '\\uFB92', '\\uFB93', '\\uFB94', '\\uFB95'], ['\\u06B1', '\\uFB9A', '\\uFB9B', '\\uFB9C', '\\uFB9D'],\n ['\\u06B3', '\\uFB96', '\\uFB97', '\\uFB98', '\\uFB99'], ['\\u06BA', '\\uFB9E', '\\uFB9F'],\n ['\\u06BB', '\\uFBA0', '\\uFBA1', '\\uFBA2', '\\uFBA3'], ['\\u06BE', '\\uFBAA', '\\uFBAB', '\\uFBAC', '\\uFBAD'],\n ['\\u06C0', '\\uFBA4', '\\uFBA5'], ['\\u06C1', '\\uFBA6', '\\uFBA7', '\\uFBA8', '\\uFBA9'], ['\\u06C5', '\\uFBE0', '\\uFBE1'],\n ['\\u06C6', '\\uFBD9', '\\uFBDA'], ['\\u06C7', '\\uFBD7', '\\uFBD8'], ['\\u06C8', '\\uFBDB', '\\uFBDC'], ['\\u06C9', '\\uFBE2', '\\uFBE3'],\n ['\\u06CB', '\\uFBDE', '\\uFBDF'], ['\\u06CC', '\\uFBFC', '\\uFBFD', '\\uFBFE', '\\uFBFF'],\n ['\\u06D0', '\\uFBE4', '\\uFBE5', '\\uFBE6', '\\uFBE7'], ['\\u06D2', '\\uFBAE', '\\uFBAF'], ['\\u06D3', '\\uFBB0', '\\uFBB1']\n ];\n this._alef = '\\u0627';\n this._alefHamza = '\\u0623';\n this._alefHamzaBelow = '\\u0625';\n this._alefMadda = '\\u0622';\n this._lam = '\\u0644';\n this._hamza = '\\u0621';\n this._zeroWidthJoiner = '\\u200D';\n this._hamzaAbove = '\\u0654';\n this._hamzaBelow = '\\u0655';\n this._wawHamza = '\\u0624';\n this._yehHamza = '\\u0626';\n this._waw = '\\u0648';\n this._alefsura = '\\u0649';\n this._yeh = '\\u064A';\n this._farsiYeh = '\\u06CC';\n this._shadda = '\\u0651';\n this._madda = '\\u0653';\n this._lwa = '\\uFEFB';\n this._lwawh = '\\uFEF7';\n this._lwawhb = '\\uFEF9';\n this._lwawm = '\\uFEF5';\n this._bwhb = '\\u06D3';\n this._fathatan = '\\u064B';\n this._superalef = '\\u0670';\n this._vowel = 0x1;\n this._arabicMapTable = new Map();\n for (var i = 0; i < this._arabicCharTable.length; i++) {\n this._arabicMapTable.set(this._arabicCharTable[Number.parseInt(i.toString(), 10)][0], this._arabicCharTable[Number.parseInt(i.toString(), 10)]);\n }\n }\n _ArabicShapeRenderer.prototype._getCharacterShape = function (input, index) {\n if ((input >= this._hamza) && (input <= this._bwhb)) {\n var value = [];\n if (this._arabicMapTable.get(input)) {\n value = this._arabicMapTable.get(input);\n return value[index + 1];\n }\n }\n else if (input >= this._lwawm && input <= this._lwa) {\n return (input);\n }\n return input;\n };\n _ArabicShapeRenderer.prototype._shape = function (text) {\n var builder = '';\n var value = '';\n for (var i = 0; i < text.length; i++) {\n var c = text[Number.parseInt(i.toString(), 10)];\n if (c >= '؀' && c <= 'ۿ') {\n value = value + c;\n }\n else {\n if (value.length > 0) {\n var shapeText = this._doShape(value.toString(), 0);\n builder = builder + shapeText;\n value = '';\n }\n builder = builder + c;\n }\n }\n if (value.length > 0) {\n var shapeText = this._doShape(value.toString(), 0);\n builder = builder + shapeText;\n }\n return builder.toString();\n };\n _ArabicShapeRenderer.prototype._doShape = function (input, level) {\n var str = '';\n var ligature = 0;\n var len = 0;\n var i = 0;\n var next = '';\n var previous = new _ArabicShape();\n var present = new _ArabicShape();\n while (i < input.length) {\n next = input[i++];\n ligature = this._ligature(next, present);\n if (ligature === 0) {\n var shapeCount = this._getShapeCount(next);\n len = (shapeCount === 1) ? 0 : 2;\n if (previous._shapes > 2) {\n len += 1;\n }\n len = len % (present._shapes);\n present._shapeValue = this._getCharacterShape(present._shapeValue, len);\n str = this._append(str, previous, level);\n previous = present;\n present = new _ArabicShape();\n present._shapeValue = next;\n present._shapes = shapeCount;\n present._shapeLigature++;\n }\n }\n len = (previous._shapes > 2) ? 1 : 0;\n len = len % (present._shapes);\n present._shapeValue = this._getCharacterShape(present._shapeValue, len);\n str = this._append(str, previous, level);\n str = this._append(str, present, level);\n return str.toString();\n };\n _ArabicShapeRenderer.prototype._append = function (builder, shape, level) {\n if (shape._shapeValue !== '') {\n builder = builder + shape._shapeValue;\n shape._shapeLigature -= 1;\n if (shape._shapeType !== '') {\n if ((level & this._vowel) === 0) {\n builder = builder + shape._shapeType;\n shape._shapeLigature -= 1;\n }\n else {\n shape._shapeLigature -= 1;\n }\n }\n if (shape._shapeVowel !== '') {\n if ((level & this._vowel) === 0) {\n builder = builder + shape._shapeVowel;\n shape._shapeLigature -= 1;\n }\n else {\n shape._shapeLigature -= 1;\n }\n }\n }\n return builder;\n };\n _ArabicShapeRenderer.prototype._ligature = function (value, shape) {\n if (shape._shapeValue !== '') {\n var result = 0;\n if ((value >= this._fathatan && value <= this._hamzaBelow) || value === this._superalef) {\n result = 1;\n if ((shape._shapeVowel !== '') && (value !== this._shadda)) {\n result = 2;\n }\n if (value === this._shadda) {\n if (shape._shapeType === '') {\n shape._shapeType = this._shadda;\n }\n else {\n return 0;\n }\n }\n else if (value === this._hamzaBelow) {\n if (shape._shapeValue === this._alef) {\n shape._shapeValue = this._alefHamzaBelow;\n result = 2;\n }\n else if (shape._shapeValue === this._lwa) {\n shape._shapeValue = this._lwawhb;\n result = 2;\n }\n else {\n shape._shapeType = this._hamzaBelow;\n }\n }\n else if (value === this._hamzaAbove) {\n if (shape._shapeValue === this._alef) {\n shape._shapeValue = this._alefHamza;\n result = 2;\n }\n else if (shape._shapeValue === this._lwa) {\n shape._shapeValue = this._lwawh;\n result = 2;\n }\n else if (shape._shapeValue === this._waw) {\n shape._shapeValue = this._wawHamza;\n result = 2;\n }\n else if (shape._shapeValue === this._yeh || shape._shapeValue === this._alefsura ||\n shape._shapeValue === this._farsiYeh) {\n shape._shapeValue = this._yehHamza;\n result = 2;\n }\n else {\n shape._shapeType = this._hamzaAbove;\n }\n }\n else if (value === this._madda) {\n if (shape._shapeValue === this._alef) {\n shape._shapeValue = this._alefMadda;\n result = 2;\n }\n }\n else {\n shape._shapeVowel = value;\n }\n if (result === 1) {\n shape._shapeLigature++;\n }\n return result;\n }\n if (shape._shapeVowel !== '') {\n return 0;\n }\n if (shape._shapeValue === this._lam) {\n if (value === this._alef) {\n shape._shapeValue = this._lwa;\n shape._shapes = 2;\n result = 3;\n }\n else if (value === this._alefHamza) {\n shape._shapeValue = this._lwawh;\n shape._shapes = 2;\n result = 3;\n }\n else if (value === this._alefHamzaBelow) {\n shape._shapeValue = this._lwawhb;\n shape._shapes = 2;\n result = 3;\n }\n else if (value === this._alefMadda) {\n shape._shapeValue = this._lwawm;\n shape._shapes = 2;\n result = 3;\n }\n }\n return result;\n }\n else {\n return 0;\n }\n };\n _ArabicShapeRenderer.prototype._getShapeCount = function (shape) {\n if ((shape >= this._hamza) && (shape <= this._bwhb) && !((shape >= this._fathatan && shape <= this._hamzaBelow)\n || shape === this._superalef)) {\n var c = [];\n if (this._arabicMapTable.get(shape)) {\n c = this._arabicMapTable.get(shape);\n return c.length - 1;\n }\n }\n else if (shape === this._zeroWidthJoiner) {\n return 4;\n }\n return 1;\n };\n return _ArabicShapeRenderer;\n}());\nexport { _ArabicShapeRenderer };\nvar _ArabicShape = /** @class */ (function () {\n function _ArabicShape() {\n this._shapeValue = '';\n this._shapeType = '';\n this._shapeVowel = '';\n this._shapeLigature = 0;\n this._shapes = 1;\n }\n return _ArabicShape;\n}());\nexport { _ArabicShape };\n","import { Dictionary } from './../../pdf-primitives';\nvar _Bidirectional = /** @class */ (function () {\n /**\n * Creates a new instance of the `_Bidirectional` class.\n *\n * @private\n */\n function _Bidirectional() {\n this._indexes = [];\n this._indexLevels = [];\n this._mirroringShape = new Dictionary();\n this._update();\n }\n _Bidirectional.prototype._doMirrorShaping = function (text) {\n var result = [];\n for (var i = 0; i < text.length; i++) {\n if (((this._indexLevels[Number.parseInt(i.toString(), 10)] & 1) === 1)\n && this._mirroringShape.containsKey(text[Number.parseInt(i.toString(), 10)].charCodeAt(0))) {\n var value = text[Number.parseInt(i.toString(), 10)].charCodeAt(0); // eslint-disable-line\n result[Number.parseInt(i.toString(), 10)] = String.fromCharCode(this._mirroringShape.getValue(value));\n }\n else {\n result[Number.parseInt(i.toString(), 10)] = text[Number.parseInt(i.toString(), 10)].toString();\n }\n }\n var res = '';\n for (var j = 0; j < result.length; j++) {\n res = res + result[Number.parseInt(j.toString(), 10)];\n }\n return res;\n };\n _Bidirectional.prototype._getLogicalToVisualString = function (inputText, isRtl) {\n var rtlCharacters = new _RtlCharacters();\n this._indexLevels = rtlCharacters._getVisualOrder(inputText, isRtl);\n this._setDefaultIndexLevel();\n this._doOrder(0, this._indexLevels.length - 1);\n var text = this._doMirrorShaping(inputText);\n var resultBuilder = '';\n for (var i = 0; i < this._indexes.length; i++) {\n var index = this._indexes[Number.parseInt(i.toString(), 10)];\n resultBuilder += text[Number.parseInt(index.toString(), 10)];\n }\n return resultBuilder.toString();\n };\n _Bidirectional.prototype._setDefaultIndexLevel = function () {\n for (var i = 0; i < this._indexLevels.length; i++) {\n this._indexes[Number.parseInt(i.toString(), 10)] = i;\n }\n };\n _Bidirectional.prototype._doOrder = function (sIndex, eIndex) {\n var max = this._indexLevels[Number.parseInt(sIndex.toString(), 10)];\n var min = max;\n var odd = max;\n var even = max;\n for (var i = sIndex + 1; i <= eIndex; ++i) {\n var data = this._indexLevels[Number.parseInt(i.toString(), 10)];\n if (data > max) {\n max = data;\n }\n else if (data < min) {\n min = data;\n }\n odd &= data;\n even |= data;\n }\n if ((even & 1) === 0) {\n return;\n }\n if ((odd & 1) === 1) {\n this._reArrange(sIndex, eIndex + 1);\n return;\n }\n min |= 1;\n while (max >= min) {\n var pstart = sIndex;\n while (true) { // eslint-disable-line\n while (pstart <= eIndex) {\n if (this._indexLevels[Number.parseInt(pstart.toString(), 10)] >= max) {\n break;\n }\n pstart += 1;\n }\n if (pstart > eIndex) {\n break;\n }\n var pend = pstart + 1;\n while (pend <= eIndex) {\n if (this._indexLevels[Number.parseInt(pend.toString(), 10)] < max) {\n break;\n }\n pend += 1;\n }\n this._reArrange(pstart, pend);\n pstart = pend + 1;\n }\n max -= 1;\n }\n };\n _Bidirectional.prototype._reArrange = function (i, j) {\n var length = (i + j) / 2;\n --j;\n for (; i < length; ++i, --j) {\n var temp = this._indexes[Number.parseInt(i.toString(), 10)];\n this._indexes[Number.parseInt(i.toString(), 10)] = this._indexes[Number.parseInt(j.toString(), 10)];\n this._indexes[Number.parseInt(j.toString(), 10)] = temp;\n }\n };\n _Bidirectional.prototype._update = function () {\n this._mirroringShape.setValue(40, 41);\n this._mirroringShape.setValue(41, 40);\n this._mirroringShape.setValue(60, 62);\n this._mirroringShape.setValue(62, 60);\n this._mirroringShape.setValue(91, 93);\n this._mirroringShape.setValue(93, 91);\n this._mirroringShape.setValue(123, 125);\n this._mirroringShape.setValue(125, 123);\n this._mirroringShape.setValue(171, 187);\n this._mirroringShape.setValue(187, 171);\n this._mirroringShape.setValue(8249, 8250);\n this._mirroringShape.setValue(8250, 8249);\n this._mirroringShape.setValue(8261, 8262);\n this._mirroringShape.setValue(8262, 8261);\n this._mirroringShape.setValue(8317, 8318);\n this._mirroringShape.setValue(8318, 8317);\n this._mirroringShape.setValue(8333, 8334);\n this._mirroringShape.setValue(8334, 8333);\n this._mirroringShape.setValue(8712, 8715);\n this._mirroringShape.setValue(8713, 8716);\n this._mirroringShape.setValue(8714, 8717);\n this._mirroringShape.setValue(8715, 8712);\n this._mirroringShape.setValue(8716, 8713);\n this._mirroringShape.setValue(8717, 8714);\n this._mirroringShape.setValue(8725, 10741);\n this._mirroringShape.setValue(8764, 8765);\n this._mirroringShape.setValue(8765, 8764);\n this._mirroringShape.setValue(8771, 8909);\n this._mirroringShape.setValue(8786, 8787);\n this._mirroringShape.setValue(8787, 8786);\n this._mirroringShape.setValue(8788, 8789);\n this._mirroringShape.setValue(8789, 8788);\n this._mirroringShape.setValue(8804, 8805);\n this._mirroringShape.setValue(8805, 8804);\n this._mirroringShape.setValue(8806, 8807);\n this._mirroringShape.setValue(8807, 8806);\n this._mirroringShape.setValue(8808, 8809);\n this._mirroringShape.setValue(8809, 8808);\n this._mirroringShape.setValue(8810, 8811);\n this._mirroringShape.setValue(8811, 8810);\n this._mirroringShape.setValue(8814, 8815);\n this._mirroringShape.setValue(8815, 8814);\n this._mirroringShape.setValue(8816, 8817);\n this._mirroringShape.setValue(8817, 8816);\n this._mirroringShape.setValue(8818, 8819);\n this._mirroringShape.setValue(8819, 8818);\n this._mirroringShape.setValue(8820, 8821);\n this._mirroringShape.setValue(8821, 8820);\n this._mirroringShape.setValue(8822, 8823);\n this._mirroringShape.setValue(8823, 8822);\n this._mirroringShape.setValue(8824, 8825);\n this._mirroringShape.setValue(8825, 8824);\n this._mirroringShape.setValue(8826, 8827);\n this._mirroringShape.setValue(8827, 8826);\n this._mirroringShape.setValue(8828, 8829);\n this._mirroringShape.setValue(8829, 8828);\n this._mirroringShape.setValue(8830, 8831);\n this._mirroringShape.setValue(8831, 8830);\n this._mirroringShape.setValue(8832, 8833);\n this._mirroringShape.setValue(8833, 8832);\n this._mirroringShape.setValue(8834, 8835);\n this._mirroringShape.setValue(8835, 8834);\n this._mirroringShape.setValue(8836, 8837);\n this._mirroringShape.setValue(8837, 8836);\n this._mirroringShape.setValue(8838, 8839);\n this._mirroringShape.setValue(8839, 8838);\n this._mirroringShape.setValue(8840, 8841);\n this._mirroringShape.setValue(8841, 8840);\n this._mirroringShape.setValue(8842, 8843);\n this._mirroringShape.setValue(8843, 8842);\n this._mirroringShape.setValue(8847, 8848);\n this._mirroringShape.setValue(8848, 8847);\n this._mirroringShape.setValue(8849, 8850);\n this._mirroringShape.setValue(8850, 8849);\n this._mirroringShape.setValue(8856, 10680);\n this._mirroringShape.setValue(8866, 8867);\n this._mirroringShape.setValue(8867, 8866);\n this._mirroringShape.setValue(8870, 10974);\n this._mirroringShape.setValue(8872, 10980);\n this._mirroringShape.setValue(8873, 10979);\n this._mirroringShape.setValue(8875, 10981);\n this._mirroringShape.setValue(8880, 8881);\n this._mirroringShape.setValue(8881, 8880);\n this._mirroringShape.setValue(8882, 8883);\n this._mirroringShape.setValue(8883, 8882);\n this._mirroringShape.setValue(8884, 8885);\n this._mirroringShape.setValue(8885, 8884);\n this._mirroringShape.setValue(8886, 8887);\n this._mirroringShape.setValue(8887, 8886);\n this._mirroringShape.setValue(8905, 8906);\n this._mirroringShape.setValue(8906, 8905);\n this._mirroringShape.setValue(8907, 8908);\n this._mirroringShape.setValue(8908, 8907);\n this._mirroringShape.setValue(8909, 8771);\n this._mirroringShape.setValue(8912, 8913);\n this._mirroringShape.setValue(8913, 8912);\n this._mirroringShape.setValue(8918, 8919);\n this._mirroringShape.setValue(8919, 8918);\n this._mirroringShape.setValue(8920, 8921);\n this._mirroringShape.setValue(8921, 8920);\n this._mirroringShape.setValue(8922, 8923);\n this._mirroringShape.setValue(8923, 8922);\n this._mirroringShape.setValue(8924, 8925);\n this._mirroringShape.setValue(8925, 8924);\n this._mirroringShape.setValue(8926, 8927);\n this._mirroringShape.setValue(8927, 8926);\n this._mirroringShape.setValue(8928, 8929);\n this._mirroringShape.setValue(8929, 8928);\n this._mirroringShape.setValue(8930, 8931);\n this._mirroringShape.setValue(8931, 8930);\n this._mirroringShape.setValue(8932, 8933);\n this._mirroringShape.setValue(8933, 8932);\n this._mirroringShape.setValue(8934, 8935);\n this._mirroringShape.setValue(8935, 8934);\n this._mirroringShape.setValue(8936, 8937);\n this._mirroringShape.setValue(8937, 8936);\n this._mirroringShape.setValue(8938, 8939);\n this._mirroringShape.setValue(8939, 8938);\n this._mirroringShape.setValue(8940, 8941);\n this._mirroringShape.setValue(8941, 8940);\n this._mirroringShape.setValue(8944, 8945);\n this._mirroringShape.setValue(8945, 8944);\n this._mirroringShape.setValue(8946, 8954);\n this._mirroringShape.setValue(8947, 8955);\n this._mirroringShape.setValue(8948, 8956);\n this._mirroringShape.setValue(8950, 8957);\n this._mirroringShape.setValue(8951, 8958);\n this._mirroringShape.setValue(8954, 8946);\n this._mirroringShape.setValue(8955, 8947);\n this._mirroringShape.setValue(8956, 8948);\n this._mirroringShape.setValue(8957, 8950);\n this._mirroringShape.setValue(8958, 8951);\n this._mirroringShape.setValue(8968, 8969);\n this._mirroringShape.setValue(8969, 8968);\n this._mirroringShape.setValue(8970, 8971);\n this._mirroringShape.setValue(8971, 8970);\n this._mirroringShape.setValue(9001, 9002);\n this._mirroringShape.setValue(9002, 9001);\n this._mirroringShape.setValue(10088, 10089);\n this._mirroringShape.setValue(10089, 10088);\n this._mirroringShape.setValue(10090, 10091);\n this._mirroringShape.setValue(10091, 10090);\n this._mirroringShape.setValue(10092, 10093);\n this._mirroringShape.setValue(10093, 10092);\n this._mirroringShape.setValue(10094, 10095);\n this._mirroringShape.setValue(10095, 10094);\n this._mirroringShape.setValue(10096, 10097);\n this._mirroringShape.setValue(10097, 10096);\n this._mirroringShape.setValue(10098, 10099);\n this._mirroringShape.setValue(10099, 10098);\n this._mirroringShape.setValue(10100, 10101);\n this._mirroringShape.setValue(10101, 10100);\n this._mirroringShape.setValue(10197, 10198);\n this._mirroringShape.setValue(10198, 10197);\n this._mirroringShape.setValue(10205, 10206);\n this._mirroringShape.setValue(10206, 10205);\n this._mirroringShape.setValue(10210, 10211);\n this._mirroringShape.setValue(10211, 10210);\n this._mirroringShape.setValue(10212, 10213);\n this._mirroringShape.setValue(10213, 10212);\n this._mirroringShape.setValue(10214, 10215);\n this._mirroringShape.setValue(10215, 10214);\n this._mirroringShape.setValue(10216, 10217);\n this._mirroringShape.setValue(10217, 10216);\n this._mirroringShape.setValue(10218, 10219);\n this._mirroringShape.setValue(10219, 10218);\n this._mirroringShape.setValue(10627, 10628);\n this._mirroringShape.setValue(10628, 10627);\n this._mirroringShape.setValue(10629, 10630);\n this._mirroringShape.setValue(10630, 10629);\n this._mirroringShape.setValue(10631, 10632);\n this._mirroringShape.setValue(10632, 10631);\n this._mirroringShape.setValue(10633, 10634);\n this._mirroringShape.setValue(10634, 10633);\n this._mirroringShape.setValue(10635, 10636);\n this._mirroringShape.setValue(10636, 10635);\n this._mirroringShape.setValue(10637, 10640);\n this._mirroringShape.setValue(10638, 10639);\n this._mirroringShape.setValue(10639, 10638);\n this._mirroringShape.setValue(10640, 10637);\n this._mirroringShape.setValue(10641, 10642);\n this._mirroringShape.setValue(10642, 10641);\n this._mirroringShape.setValue(10643, 10644);\n this._mirroringShape.setValue(10644, 10643);\n this._mirroringShape.setValue(10645, 10646);\n this._mirroringShape.setValue(10646, 10645);\n this._mirroringShape.setValue(10647, 10648);\n this._mirroringShape.setValue(10648, 10647);\n this._mirroringShape.setValue(10680, 8856);\n this._mirroringShape.setValue(10688, 10689);\n this._mirroringShape.setValue(10689, 10688);\n this._mirroringShape.setValue(10692, 10693);\n this._mirroringShape.setValue(10693, 10692);\n this._mirroringShape.setValue(10703, 10704);\n this._mirroringShape.setValue(10704, 10703);\n this._mirroringShape.setValue(10705, 10706);\n this._mirroringShape.setValue(10706, 10705);\n this._mirroringShape.setValue(10708, 10709);\n this._mirroringShape.setValue(10709, 10708);\n this._mirroringShape.setValue(10712, 10713);\n this._mirroringShape.setValue(10713, 10712);\n this._mirroringShape.setValue(10714, 10715);\n this._mirroringShape.setValue(10715, 10714);\n this._mirroringShape.setValue(10741, 8725);\n this._mirroringShape.setValue(10744, 10745);\n this._mirroringShape.setValue(10745, 10744);\n this._mirroringShape.setValue(10748, 10749);\n this._mirroringShape.setValue(10749, 10748);\n this._mirroringShape.setValue(10795, 10796);\n this._mirroringShape.setValue(10796, 10795);\n this._mirroringShape.setValue(10797, 10796);\n this._mirroringShape.setValue(10798, 10797);\n this._mirroringShape.setValue(10804, 10805);\n this._mirroringShape.setValue(10805, 10804);\n this._mirroringShape.setValue(10812, 10813);\n this._mirroringShape.setValue(10813, 10812);\n this._mirroringShape.setValue(10852, 10853);\n this._mirroringShape.setValue(10853, 10852);\n this._mirroringShape.setValue(10873, 10874);\n this._mirroringShape.setValue(10874, 10873);\n this._mirroringShape.setValue(10877, 10878);\n this._mirroringShape.setValue(10878, 10877);\n this._mirroringShape.setValue(10879, 10880);\n this._mirroringShape.setValue(10880, 10879);\n this._mirroringShape.setValue(10881, 10882);\n this._mirroringShape.setValue(10882, 10881);\n this._mirroringShape.setValue(10883, 10884);\n this._mirroringShape.setValue(10884, 10883);\n this._mirroringShape.setValue(10891, 10892);\n this._mirroringShape.setValue(10892, 10891);\n this._mirroringShape.setValue(10897, 10898);\n this._mirroringShape.setValue(10898, 10897);\n this._mirroringShape.setValue(10899, 10900);\n this._mirroringShape.setValue(10900, 10899);\n this._mirroringShape.setValue(10901, 10902);\n this._mirroringShape.setValue(10902, 10901);\n this._mirroringShape.setValue(10903, 10904);\n this._mirroringShape.setValue(10904, 10903);\n this._mirroringShape.setValue(10905, 10906);\n this._mirroringShape.setValue(10906, 10905);\n this._mirroringShape.setValue(10907, 10908);\n this._mirroringShape.setValue(10908, 10907);\n this._mirroringShape.setValue(10913, 10914);\n this._mirroringShape.setValue(10914, 10913);\n this._mirroringShape.setValue(10918, 10919);\n this._mirroringShape.setValue(10919, 10918);\n this._mirroringShape.setValue(10920, 10921);\n this._mirroringShape.setValue(10921, 10920);\n this._mirroringShape.setValue(10922, 10923);\n this._mirroringShape.setValue(10923, 10922);\n this._mirroringShape.setValue(10924, 10925);\n this._mirroringShape.setValue(10925, 10924);\n this._mirroringShape.setValue(10927, 10928);\n this._mirroringShape.setValue(10928, 10927);\n this._mirroringShape.setValue(10931, 10932);\n this._mirroringShape.setValue(10932, 10931);\n this._mirroringShape.setValue(10939, 10940);\n this._mirroringShape.setValue(10940, 10939);\n this._mirroringShape.setValue(10941, 10942);\n this._mirroringShape.setValue(10942, 10941);\n this._mirroringShape.setValue(10943, 10944);\n this._mirroringShape.setValue(10944, 10943);\n this._mirroringShape.setValue(10945, 10946);\n this._mirroringShape.setValue(10946, 10945);\n this._mirroringShape.setValue(10947, 10948);\n this._mirroringShape.setValue(10948, 10947);\n this._mirroringShape.setValue(10949, 10950);\n this._mirroringShape.setValue(10950, 10949);\n this._mirroringShape.setValue(10957, 10958);\n this._mirroringShape.setValue(10958, 10957);\n this._mirroringShape.setValue(10959, 10960);\n this._mirroringShape.setValue(10960, 10959);\n this._mirroringShape.setValue(10961, 10962);\n this._mirroringShape.setValue(10962, 10961);\n this._mirroringShape.setValue(10963, 10964);\n this._mirroringShape.setValue(10964, 10963);\n this._mirroringShape.setValue(10965, 10966);\n this._mirroringShape.setValue(10966, 10965);\n this._mirroringShape.setValue(10974, 8870);\n this._mirroringShape.setValue(10979, 8873);\n this._mirroringShape.setValue(10980, 8872);\n this._mirroringShape.setValue(10981, 8875);\n this._mirroringShape.setValue(10988, 10989);\n this._mirroringShape.setValue(10989, 10988);\n this._mirroringShape.setValue(10999, 11000);\n this._mirroringShape.setValue(11000, 10999);\n this._mirroringShape.setValue(11001, 11002);\n this._mirroringShape.setValue(11002, 11001);\n this._mirroringShape.setValue(12296, 12297);\n this._mirroringShape.setValue(12297, 12296);\n this._mirroringShape.setValue(12298, 12299);\n this._mirroringShape.setValue(12299, 12298);\n this._mirroringShape.setValue(12300, 12301);\n this._mirroringShape.setValue(12301, 12300);\n this._mirroringShape.setValue(12302, 12303);\n this._mirroringShape.setValue(12303, 12302);\n this._mirroringShape.setValue(12304, 12305);\n this._mirroringShape.setValue(12305, 12304);\n this._mirroringShape.setValue(12308, 12309);\n this._mirroringShape.setValue(12309, 12308);\n this._mirroringShape.setValue(12310, 12311);\n this._mirroringShape.setValue(12311, 12310);\n this._mirroringShape.setValue(12312, 12313);\n this._mirroringShape.setValue(12313, 12312);\n this._mirroringShape.setValue(12314, 12315);\n this._mirroringShape.setValue(12315, 12314);\n this._mirroringShape.setValue(65288, 65289);\n this._mirroringShape.setValue(65289, 65288);\n this._mirroringShape.setValue(65308, 65310);\n this._mirroringShape.setValue(65310, 65308);\n this._mirroringShape.setValue(65339, 65341);\n this._mirroringShape.setValue(65341, 65339);\n this._mirroringShape.setValue(65371, 65373);\n this._mirroringShape.setValue(65373, 65371);\n this._mirroringShape.setValue(65375, 65376);\n this._mirroringShape.setValue(65376, 65375);\n this._mirroringShape.setValue(65378, 65379);\n this._mirroringShape.setValue(65379, 65378);\n };\n return _Bidirectional;\n}());\nexport { _Bidirectional };\nvar _RtlCharacters = /** @class */ (function () {\n /**\n * Creates an instance of the 'RtlCharacters' class.\n *\n * @private\n */\n function _RtlCharacters() {\n this._type = [];\n this._textOrder = -1;\n this._rtlCharacterTypes = new Array(65536);\n this.L = 0;\n this.lre = 1;\n this.lro = 2;\n this.R = 3;\n this.AL = 4;\n this.rle = 5;\n this.rlo = 6;\n this.pdf = 7;\n this.EN = 8;\n this.ES = 9;\n this.ET = 10;\n this.AN = 11;\n this.CS = 12;\n this.nsm = 13;\n this.BN = 14;\n this.B = 15;\n this.S = 16;\n this.WS = 17;\n this.ON = 18;\n this._charTypes = [\n this.L, this.EN, this.BN, this.ES, this.ES, this.S, this.ET, this.ET, this.B, this.AN, this.AN, this.S, this.CS, this.CS,\n this.WS, this.nsm, this.nsm, this.B, this.BN, 27, this.BN, 28, 30, this.B, 31, 31, this.S, 32, 32, this.WS, 33, 34, this.ON, 35,\n 37, this.ET, 38, 42, this.ON, 43, 43, this.ET, 44, 44, this.CS, 45, 45, this.ET, 46, 46, this.CS, 47, 47, this.CS, 48, 57, this.EN,\n 58, 58, this.CS, 59, 64, this.ON, 65, 90, this.L, 91, 96, this.ON, 97, 122, this.L, 123, 126, this.ON, 127, 132, this.BN, 133, 133,\n this.B, 134, 159, this.BN, 160, 160, this.CS, 161, 161, this.ON, 162, 165, this.ET, 166, 169, this.ON, 170, 170, this.L, 171, 175,\n this.ON, 176, 177, this.ET, 178, 179, this.EN, 180, 180, this.ON, 181, 181, this.L, 182, 184, this.ON, 185, 185, this.EN, 186, 186,\n this.L, 187, 191, this.ON, 192, 214, this.L, 215, 215, this.ON, 216, 246, this.L, 247, 247, this.ON, 248, 696, this.L, 697, 698,\n this.ON, 699, 705, this.L, 706, 719, this.ON, 720, 721, this.L, 722, 735, this.ON, 736, 740, this.L, 741, 749, this.ON, 750, 750,\n this.L, 751, 767, this.ON, 768, 855, this.nsm, 856, 860, this.L, 861, 879, this.nsm, 880, 883, this.L, 884, 885, this.ON, 886, 893,\n this.L, 894, 894, this.ON, 895, 899, this.L, 900, 901, this.ON, 902, 902, this.L, 903, 903, this.ON, 904, 1013, this.L, 1014, 1014,\n this.ON, 1015, 1154, this.L, 1155, 1158, this.nsm, 1159, 1159, this.L, 1160, 1161, this.nsm, 1162, 1417, this.L, 1418, 1418,\n this.ON, 1419, 1424, this.L, 1425, 1441, this.nsm, 1442, 1442, this.L, 1443, 1465, this.nsm, 1466, 1466, this.L, 1467, 1469,\n this.nsm, 1470, 1470, this.R, 1471, 1471, this.nsm, 1472, 1472, this.R, 1473, 1474, this.nsm, 1475, 1475, this.R, 1476, 1476,\n this.nsm, 1477, 1487, this.L, 1488, 1514, this.R, 1515, 1519, this.L, 1520, 1524, this.R, 1525, 1535, this.L, 1536, 1539, this.AL,\n 1540, 1547, this.L, 1548, 1548, this.CS, 1549, 1549, this.AL, 1550, 1551, this.ON, 1552, 1557, this.nsm, 1558, 1562, this.L, 1563,\n 1563, this.AL, 1564, 1566, this.L, 1567, 1567, this.AL, 1568, 1568, this.L, 1569, 1594, this.AL, 1595, 1599, this.L, 1600, 1610,\n this.AL, 1611, 1624, this.nsm, 1625, 1631, this.L, 1632, 1641, this.AN, 1642, 1642, this.ET, 1643, 1644, this.AN, 1645, 1647,\n this.AL, 1648, 1648, this.nsm, 1649, 1749, this.AL, 1750, 1756, this.nsm, 1757, 1757, this.AL, 1758, 1764, this.nsm, 1765, 1766,\n this.AL, 1767, 1768, this.nsm, 1769, 1769, this.ON, 1770, 1773, this.nsm, 1774, 1775, this.AL, 1776, 1785, this.EN, 1786, 1805,\n this.AL, 1806, 1806, this.L, 1807, 1807, this.BN, 1808, 1808, this.AL, 1809, 1809, this.nsm, 1810, 1839, this.AL, 1840, 1866,\n this.nsm, 1867, 1868, this.L, 1869, 1871, this.AL, 1872, 1919, this.L, 1920, 1957, this.AL, 1958, 1968, this.nsm, 1969, 1969,\n this.AL, 1970, 2304, this.L, 2305, 2306, this.nsm, 2307, 2363, this.L, 2364, 2364, this.nsm, 2365, 2368, this.L, 2369, 2376,\n this.nsm, 2377, 2380, this.L, 2381, 2381, this.nsm, 2382, 2384, this.L, 2385, 2388, this.nsm, 2389, 2401, this.L, 2402, 2403,\n this.nsm, 2404, 2432, this.L, 2433, 2433, this.nsm, 2434, 2491, this.L, 2492, 2492, this.nsm, 2493, 2496, this.L, 2497, 2500,\n this.nsm, 2501, 2508, this.L, 2509, 2509, this.nsm, 2510, 2529, this.L, 2530, 2531, this.nsm, 2532, 2545, this.L, 2546, 2547,\n this.ET, 2548, 2560, this.L, 2561, 2562, this.nsm, 2563, 2619, this.L, 2620, 2620, this.nsm, 2621, 2624, this.L, 2625, 2626,\n this.nsm, 2627, 2630, this.L, 2631, 2632, this.nsm, 2633, 2634, this.L, 2635, 2637, this.nsm, 2638, 2671, this.L, 2672, 2673,\n this.nsm, 2674, 2688, this.L, 2689, 2690, this.nsm, 2691, 2747, this.L, 2748, 2748, this.nsm, 2749, 2752, this.L, 2753, 2757,\n this.nsm, 2758, 2758, this.L, 2759, 2760, this.nsm, 2761, 2764, this.L, 2765, 2765, this.nsm, 2766, 2785, this.L, 2786, 2787,\n this.nsm, 2788, 2800, this.L, 2801, 2801, this.ET, 2802, 2816, this.L, 2817, 2817, this.nsm, 2818, 2875, this.L, 2876, 2876,\n this.nsm, 2877, 2878, this.L, 2879, 2879, this.nsm, 2880, 2880, this.L, 2881, 2883, this.nsm, 2884, 2892, this.L, 2893, 2893,\n this.nsm, 2894, 2901, this.L, 2902, 2902, this.nsm, 2903, 2945, this.L, 2946, 2946, this.nsm, 2947, 3007, this.L, 3008, 3008,\n this.nsm, 3009, 3020, this.L, 3021, 3021, this.nsm, 3022, 3058, this.L, 3059, 3064, this.ON, 3065, 3065, this.ET, 3066, 3066,\n this.ON, 3067, 3133, this.L, 3134, 3136, this.nsm, 3137, 3141, this.L, 3142, 3144, this.nsm, 3145, 3145, this.L, 3146, 3149,\n this.nsm, 3150, 3156, this.L, 3157, 3158, this.nsm, 3159, 3259, this.L, 3260, 3260, this.nsm, 3261, 3275, this.L, 3276, 3277,\n this.nsm, 3278, 3392, this.L, 3393, 3395, this.nsm, 3396, 3404, this.L, 3405, 3405, this.nsm, 3406, 3529, this.L, 3530, 3530,\n this.nsm, 3531, 3537, this.L, 3538, 3540, this.nsm, 3541, 3541, this.L, 3542, 3542, this.nsm, 3543, 3632, this.L, 3633, 3633,\n this.nsm, 3634, 3635, this.L, 3636, 3642, this.nsm, 3643, 3646, this.L, 3647, 3647, this.ET, 3648, 3654, this.L, 3655, 3662,\n this.nsm, 3663, 3760, this.L, 3761, 3761, this.nsm, 3762, 3763, this.L, 3764, 3769, this.nsm, 3770, 3770, this.L, 3771, 3772,\n this.nsm, 3773, 3783, this.L, 3784, 3789, this.nsm, 3790, 3863, this.L, 3864, 3865, this.nsm, 3866, 3892, this.L, 3893, 3893,\n this.nsm, 3894, 3894, this.L, 3895, 3895, this.nsm, 3896, 3896, this.L, 3897, 3897, this.nsm, 3898, 3901, this.ON, 3902, 3952,\n this.L, 3953, 3966, this.nsm, 3967, 3967, this.L, 3968, 3972, this.nsm, 3973, 3973, this.L, 3974, 3975, this.nsm, 3976, 3983,\n this.L, 3984, 3991, this.nsm, 3992, 3992, this.L, 3993, 4028, this.nsm, 4029, 4037, this.L, 4038, 4038, this.nsm, 4039, 4140,\n this.L, 4141, 4144, this.nsm, 4145, 4145, this.L, 4146, 4146, this.nsm, 4147, 4149, this.L, 4150, 4151, this.nsm, 4152, 4152,\n this.L, 4153, 4153, this.nsm, 4154, 4183, this.L, 4184, 4185, this.nsm, 4186, 5759, this.L, 5760, 5760, this.WS, 5761, 5786,\n this.L, 5787, 5788, this.ON, 5789, 5905, this.L, 5906, 5908, this.nsm, 5909, 5937, this.L, 5938, 5940, this.nsm, 5941, 5969,\n this.L, 5970, 5971, this.nsm, 5972, 6001, this.L, 6002, 6003, this.nsm, 6004, 6070, this.L, 6071, 6077, this.nsm, 6078, 6085,\n this.L, 6086, 6086, this.nsm, 6087, 6088, this.L, 6089, 6099, this.nsm, 6100, 6106, this.L, 6107, 6107, this.ET, 6108, 6108,\n this.L, 6109, 6109, this.nsm, 6110, 6127, this.L, 6128, 6137, this.ON, 6138, 6143, this.L, 6144, 6154, this.ON, 6155, 6157,\n this.nsm, 6158, 6158, this.WS, 6159, 6312, this.L, 6313, 6313, this.nsm, 6314, 6431, this.L, 6432, 6434, this.nsm, 6435, 6438,\n this.L, 6439, 6443, this.nsm, 6444, 6449, this.L, 6450, 6450, this.nsm, 6451, 6456, this.L, 6457, 6459, this.nsm, 6460, 6463,\n this.L, 6464, 6464, this.ON, 6465, 6467, this.L, 6468, 6469, this.ON, 6470, 6623, this.L, 6624, 6655, this.ON, 6656, 8124, this.L,\n 8125, 8125, this.ON, 8126, 8126, this.L, 8127, 8129, this.ON, 8130, 8140, this.L, 8141, 8143, this.ON, 8144, 8156, this.L, 8157,\n 8159, this.ON, 8160, 8172, this.L, 8173, 8175, this.ON, 8176, 8188, this.L, 8189, 8190, this.ON, 8191, 8191, this.L, 8192, 8202,\n this.WS, 8203, 8205, this.BN, 8206, 8206, this.L, 8207, 8207, this.R, 8208, 8231, this.ON, 8232, 8232, this.WS, 8233, 8233, this.B,\n 8234, 8234, this.lre, 8235, 8235, this.rle, 8236, 8236, this.pdf, 8237, 8237, this.lro, 8238, 8238, this.rlo, 8239, 8239, this.WS,\n 8240, 8244, this.ET, 8245, 8276, this.ON, 8277, 8278, this.L, 8279, 8279, this.ON, 8280, 8286, this.L, 8287, 8287, this.WS, 8288,\n 8291, this.BN, 8292, 8297, this.L, 8298, 8303, this.BN, 8304, 8304, this.EN, 8305, 8307, this.L, 8308, 8313, this.EN, 8314, 8315,\n this.ET, 8316, 8318, this.ON, 8319, 8319, this.L, 8320, 8329, this.EN, 8330, 8331, this.ET, 8332, 8334, this.ON, 8335, 8351,\n this.L, 8352, 8369, this.ET, 8370, 8399, this.L, 8400, 8426, this.nsm, 8427, 8447, this.L, 8448, 8449, this.ON, 8450, 8450, this.L,\n 8451, 8454, this.ON, 8455, 8455, this.L, 8456, 8457, this.ON, 8458, 8467, this.L, 8468, 8468, this.ON, 8469, 8469, this.L, 8470,\n 8472, this.ON, 8473, 8477, this.L, 8478, 8483, this.ON, 8484, 8484, this.L, 8485, 8485, this.ON, 8486, 8486, this.L, 8487, 8487,\n this.ON, 8488, 8488, this.L, 8489, 8489, this.ON, 8490, 8493, this.L, 8494, 8494, this.ET, 8495, 8497, this.L, 8498, 8498, this.ON,\n 8499, 8505, this.L, 8506, 8507, this.ON, 8508, 8511, this.L, 8512, 8516, this.ON, 8517, 8521, this.L, 8522, 8523, this.ON, 8524,\n 8530, this.L, 8531, 8543, this.ON, 8544, 8591, this.L, 8592, 8721, this.ON, 8722, 8723, this.ET, 8724, 9013, this.ON, 9014, 9082,\n this.L, 9083, 9108, this.ON, 9109, 9109, this.L, 9110, 9168, this.ON, 9169, 9215, this.L, 9216, 9254, this.ON, 9255, 9279, this.L,\n 9280, 9290, this.ON, 9291, 9311, this.L, 9312, 9371, this.EN, 9372, 9449, this.L, 9450, 9450, this.EN, 9451, 9751, this.ON, 9752,\n 9752, this.L, 9753, 9853, this.ON, 9854, 9855, this.L, 9856, 9873, this.ON, 9874, 9887, this.L, 9888, 9889, this.ON, 9890, 9984,\n this.L, 9985, 9988, this.ON, 9989, 9989, this.L, 9990, 9993, this.ON, 9994, 9995, this.L, 9996, 10023, this.ON, 10024, 10024,\n this.L, 10025, 10059, this.ON, 10060, 10060, this.L, 10061, 10061, this.ON, 10062, 10062, this.L, 10063, 10066, this.ON, 10067,\n 10069, this.L, 10070, 10070, this.ON, 10071, 10071, this.L, 10072, 10078, this.ON, 10079, 10080, this.L, 10081, 10132, this.ON,\n 10133, 10135, this.L, 10136, 10159, this.ON, 10160, 10160, this.L, 10161, 10174, this.ON, 10175, 10191, this.L, 10192, 10219,\n this.ON, 10220, 10223, this.L, 10224, 11021, this.ON, 11022, 11903, this.L, 11904, 11929, this.ON, 11930, 11930, this.L, 11931,\n 12019, this.ON, 12020, 12031, this.L, 12032, 12245, this.ON, 12246, 12271, this.L, 12272, 12283, this.ON, 12284, 12287, this.L,\n 12288, 12288, this.WS, 12289, 12292, this.ON, 12293, 12295, this.L, 12296, 12320, this.ON, 12321, 12329, this.L, 12330, 12335,\n this.nsm, 12336, 12336, this.ON, 12337, 12341, this.L, 12342, 12343, this.ON, 12344, 12348, this.L, 12349, 12351, this.ON, 12352,\n 12440, this.L, 12441, 12442, this.nsm, 12443, 12444, this.ON, 12445, 12447, this.L, 12448, 12448, this.ON, 12449, 12538, this.L,\n 12539, 12539, this.ON, 12540, 12828, this.L, 12829, 12830, this.ON, 12831, 12879, this.L, 12880, 12895, this.ON, 12896, 12923,\n this.L, 12924, 12925, this.ON, 12926, 12976, this.L, 12977, 12991, this.ON, 12992, 13003, this.L, 13004, 13007, this.ON, 13008,\n 13174, this.L, 13175, 13178, this.ON, 13179, 13277, this.L, 13278, 13279, this.ON, 13280, 13310, this.L, 13311, 13311, this.ON,\n 13312, 19903, this.L, 19904, 19967, this.ON, 19968, 42127, this.L, 42128, 42182, this.ON, 42183, 64284, this.L, 64285, 64285,\n this.R, 64286, 64286, this.nsm, 64287, 64296, this.R, 64297, 64297, this.ET, 64298, 64310, this.R, 64311, 64311, this.L, 64312,\n 64316, this.R, 64317, 64317, this.L, 64318, 64318, this.R, 64319, 64319, this.L, 64320, 64321, this.R, 64322, 64322, this.L, 64323,\n 64324, this.R, 64325, 64325, this.L, 64326, 64335, this.R, 64336, 64433, this.AL, 64434, 64466, this.L, 64467, 64829, this.AL,\n 64830, 64831, this.ON, 64832, 64847, this.L, 64848, 64911, this.AL, 64912, 64913, this.L, 64914, 64967, this.AL, 64968, 65007,\n this.L, 65008, 65020, this.AL, 65021, 65021, this.ON, 65022, 65023, this.L, 65024, 65039, this.nsm, 65040, 65055, this.L, 65056,\n 65059, this.nsm, 65060, 65071, this.L, 65072, 65103, this.ON, 65104, 65104, this.CS, 65105, 65105, this.ON, 65106, 65106, this.CS,\n 65107, 65107, this.L, 65108, 65108, this.ON, 65109, 65109, this.CS, 65110, 65118, this.ON, 65119, 65119, this.ET, 65120, 65121,\n this.ON, 65122, 65123, this.ET, 65124, 65126, this.ON, 65127, 65127, this.L, 65128, 65128, this.ON, 65129, 65130, this.ET, 65131,\n 65131, this.ON, 65132, 65135, this.L, 65136, 65140, this.AL, 65141, 65141, this.L, 65142, 65276, this.AL, 65277, 65278, this.L,\n 65279, 65279, this.BN, 65280, 65280, this.L, 65281, 65282, this.ON, 65283, 65285, this.ET, 65286, 65290, this.ON, 65291, 65291,\n this.ET, 65292, 65292, this.CS, 65293, 65293, this.ET, 65294, 65294, this.CS, 65295, 65295, this.ES, 65296, 65305, this.EN, 65306,\n 65306, this.CS, 65307, 65312, this.ON, 65313, 65338, this.L, 65339, 65344, this.ON, 65345, 65370, this.L, 65371, 65381, this.ON,\n 65382, 65503, this.L, 65504, 65505, this.ET, 65506, 65508, this.ON, 65509, 65510, this.ET, 65511, 65511, this.L, 65512, 65518,\n this.ON, 65519, 65528, this.L, 65529, 65531, this.BN, 65532, 65533, this.ON, 65534, 65535, this.L\n ];\n for (var i = 0; i < this._charTypes.length; ++i) {\n var start = this._charTypes[Number.parseInt(i.toString(), 10)];\n var end = this._charTypes[++i];\n var b = this._charTypes[++i];\n while (start <= end) {\n this._rtlCharacterTypes[start++] = b;\n }\n }\n }\n _RtlCharacters.prototype._getVisualOrder = function (inputText, isRtl) {\n this._type = this._getCharacterCode(inputText);\n this._textOrder = isRtl ? this.lre : this.L;\n this._doVisualOrder();\n var result = [];\n for (var i = 0; i < this._levels.length; i++) {\n result[Number.parseInt(i.toString(), 10)] = this._levels[Number.parseInt(i.toString(), 10)];\n }\n return result;\n };\n _RtlCharacters.prototype._getCharacterCode = function (text) {\n var characterCodes = [];\n for (var i = 0; i < text.length; i++) {\n var value = text[Number.parseInt(i.toString(), 10)].charCodeAt(0); // eslint-disable-line\n characterCodes[Number.parseInt(i.toString(), 10)] = this._rtlCharacterTypes[Number.parseInt(value.toString(), 10)];\n }\n return characterCodes;\n };\n _RtlCharacters.prototype._setDefaultLevels = function () {\n for (var i = 0; i < this._length; i++) {\n this._levels[Number.parseInt(i.toString(), 10)] = this._textOrder;\n }\n };\n _RtlCharacters.prototype._setLevels = function () {\n this._setDefaultLevels();\n for (var n = 0; n < this._length; ++n) {\n var level = this._levels[Number.parseInt(n.toString(), 10)];\n this._levels[Number.parseInt(n.toString(), 10)] = level;\n }\n };\n _RtlCharacters.prototype._updateLevels = function (index, level, length) {\n if ((level & 1) === 0) {\n for (var i = index; i < length; ++i) {\n if (this._result[Number.parseInt(i.toString(), 10)] === this.R) {\n this._levels[Number.parseInt(i.toString(), 10)] += 1;\n }\n else if (this._result[Number.parseInt(i.toString(), 10)] !== this.L) {\n this._levels[Number.parseInt(i.toString(), 10)] += 2;\n }\n }\n }\n else {\n for (var i = index; i < length; ++i) {\n if (this._result[Number.parseInt(i.toString(), 10)] !== this.R) {\n this._levels[Number.parseInt(i.toString(), 10)] += 1;\n }\n }\n }\n };\n _RtlCharacters.prototype._doVisualOrder = function () {\n this._length = this._type.length;\n this._result = this._type;\n this._levels = [];\n this._setLevels();\n this._length = this._getEmbeddedCharactersLength();\n var preview = this._textOrder;\n var i = 0;\n while (i < this._length) {\n var level = this._levels[Number.parseInt(i.toString(), 10)];\n var preType = ((Math.max(preview, level) & 0x1) === 0) ? this.L : this.R;\n var length_1 = i + 1;\n while (length_1 < this._length && this._levels[Number.parseInt(length_1.toString(), 10)] === level) {\n ++length_1;\n }\n var success = length_1 < this._length ? this._levels[Number.parseInt(length_1.toString(), 10)] : this._textOrder;\n var type = ((Math.max(success, level) & 0x1) === 0) ? this.L : this.R;\n this._check(i, length_1, level, preType, type);\n this._updateLevels(i, level, length_1);\n preview = level;\n i = length_1;\n }\n this._checkEmbeddedCharacters(this._length);\n };\n _RtlCharacters.prototype._getEmbeddedCharactersLength = function () {\n var index = 0;\n for (var i = 0; i < this._length; ++i) {\n if (!(this._type[Number.parseInt(i.toString(), 10)] === this.lre || this._type[Number.parseInt(i.toString(), 10)] === this.rle\n || this._type[Number.parseInt(i.toString(), 10)] === this.lro ||\n this._type[Number.parseInt(i.toString(), 10)] === this.rlo || this._type[Number.parseInt(i.toString(), 10)] === this.pdf\n || this._type[Number.parseInt(i.toString(), 10)] === this.BN)) {\n this._result[Number.parseInt(index.toString(), 10)] = this._result[Number.parseInt(i.toString(), 10)];\n this._levels[Number.parseInt(index.toString(), 10)] = this._levels[Number.parseInt(i.toString(), 10)];\n index++;\n }\n }\n return index;\n };\n _RtlCharacters.prototype._checkEmbeddedCharacters = function (length) {\n for (var i = this._type.length - 1; i >= 0; --i) {\n if (this._type[Number.parseInt(i.toString(), 10)] === this.lre || this._type[Number.parseInt(i.toString(), 10)] === this.rle\n || this._type[Number.parseInt(i.toString(), 10)] === this.lro ||\n this._type[Number.parseInt(i.toString(), 10)] === this.rlo || this._type[Number.parseInt(i.toString(), 10)] === this.pdf\n || this._type[Number.parseInt(i.toString(), 10)] === this.BN) {\n this._result[Number.parseInt(i.toString(), 10)] = this._type[Number.parseInt(i.toString(), 10)];\n this._levels[Number.parseInt(i.toString(), 10)] = -1;\n }\n else {\n length -= 1;\n this._result[Number.parseInt(i.toString(), 10)] = this._result[Number.parseInt(length.toString(), 10)];\n this._levels[Number.parseInt(i.toString(), 10)] = this._levels[Number.parseInt(length.toString(), 10)];\n }\n }\n for (var i = 0; i < this._type.length; i++) {\n if (this._levels[Number.parseInt(i.toString(), 10)] === -1) {\n this._levels[Number.parseInt(i.toString(), 10)] = this._levels[i - 1];\n }\n }\n };\n _RtlCharacters.prototype._check = function (index, length, level, startType, endType) {\n var charType = startType;\n for (var i = index; i < length; ++i) {\n if (this._result[Number.parseInt(i.toString(), 10)] === this.nsm) {\n this._result[Number.parseInt(i.toString(), 10)] = charType;\n }\n else {\n charType = this._result[Number.parseInt(i.toString(), 10)];\n }\n }\n this._checkEuropeanDigits(index, length, level, startType, endType);\n };\n _RtlCharacters.prototype._checkEuropeanDigits = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this._result[Number.parseInt(i.toString(), 10)] === this.EN) {\n for (var j = i - 1; j >= index; --j) {\n if (this._result[Number.parseInt(j.toString(), 10)] === this.L ||\n this._result[Number.parseInt(j.toString(), 10)] === this.R ||\n this._result[Number.parseInt(j.toString(), 10)] === this.AL) {\n if (this._result[Number.parseInt(j.toString(), 10)] === this.AL) {\n this._result[Number.parseInt(i.toString(), 10)] = this.AN;\n }\n break;\n }\n }\n }\n }\n this._checkArabicCharacters(index, length, level, startType, endType);\n };\n _RtlCharacters.prototype._checkArabicCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this._result[Number.parseInt(i.toString(), 10)] === this.AL) {\n this._result[Number.parseInt(i.toString(), 10)] = this.R;\n }\n }\n this._checkEuropeanNumberSeparator(index, length, level, startType, endType);\n };\n _RtlCharacters.prototype._checkEuropeanNumberSeparator = function (index, length, level, startType, endType) {\n for (var i = index + 1; i < length - 1; ++i) {\n if (this._result[Number.parseInt(i.toString(), 10)] === this.ES ||\n this._result[Number.parseInt(i.toString(), 10)] === this.CS) {\n var preview = this._result[i - 1];\n var success = this._result[i + 1];\n if (preview === this.EN && success === this.EN) {\n this._result[Number.parseInt(i.toString(), 10)] = this.EN;\n }\n else if (this._result[Number.parseInt(i.toString(), 10)] === this.CS && preview === this.AN && success === this.AN) {\n this._result[Number.parseInt(i.toString(), 10)] = this.AN;\n }\n }\n }\n this._checkEuropeanNumberTerminator(index, length, level, startType, endType);\n };\n _RtlCharacters.prototype._checkEuropeanNumberTerminator = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this._result[Number.parseInt(i.toString(), 10)] === this.ET) {\n var s = i;\n var b = [];\n b.push(this.ET);\n var l = this._getLength(s, length, b);\n var data = s === index ? startType : this._result[s - 1];\n if (data !== this.EN) {\n data = (l === length) ? endType : this._result[Number.parseInt(l.toString(), 10)];\n }\n i = l;\n }\n }\n this._checkOtherNeutrals(index, length, level, startType, endType);\n };\n _RtlCharacters.prototype._checkOtherNeutrals = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this._result[Number.parseInt(i.toString(), 10)] === this.ES || this._result[Number.parseInt(i.toString(), 10)] === this.ET\n || this._result[Number.parseInt(i.toString(), 10)] === this.CS) {\n this._result[Number.parseInt(i.toString(), 10)] = this.ON;\n }\n }\n this._checkOtherCharacters(index, length, level, startType, endType);\n };\n _RtlCharacters.prototype._checkOtherCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this._result[Number.parseInt(i.toString(), 10)] === this.EN) {\n var pst = startType;\n for (var j = i - 1; j >= index; --j) {\n if (this._result[Number.parseInt(j.toString(), 10)] === this.L ||\n this._result[Number.parseInt(j.toString(), 10)] === this.R) {\n pst = this._result[Number.parseInt(j.toString(), 10)];\n break;\n }\n }\n if (pst === this.L) {\n this._result[Number.parseInt(i.toString(), 10)] = this.L;\n }\n }\n }\n this._checkCharacters(index, length, level, startType, endType);\n };\n _RtlCharacters.prototype._getLength = function (index, length, validSet) {\n --index;\n while (++index < length) {\n var t = this._result[Number.parseInt(index.toString(), 10)];\n for (var i = 0; i < validSet.length; ++i) {\n if (t === validSet[Number.parseInt(i.toString(), 10)]) {\n index = this._getLength(++index, length, validSet);\n }\n }\n return index;\n }\n return length;\n };\n _RtlCharacters.prototype._checkCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this._result[Number.parseInt(i.toString(), 10)] === this.WS ||\n this._result[Number.parseInt(i.toString(), 10)] === this.ON ||\n this._result[Number.parseInt(i.toString(), 10)] === this.B ||\n this._result[Number.parseInt(i.toString(), 10)] === this.S) {\n var s = i;\n var byte = [this.B, this.S, this.WS, this.ON];\n var l = this._getLength(s, length, byte);\n var lt = 0;\n var tt = 0;\n var rt = 0;\n if (s === index) {\n lt = startType;\n }\n else {\n lt = this._result[s - 1];\n if (lt === this.AN) {\n lt = this.R;\n }\n else if (lt === this.EN) {\n lt = this.R;\n }\n }\n if (l === length) {\n tt = endType;\n }\n else {\n tt = this._result[Number.parseInt(l.toString(), 10)];\n if (tt === this.AN) {\n tt = this.R;\n }\n }\n if (lt === tt) {\n rt = lt;\n }\n else {\n rt = ((level & 0x1) === 0) ? this.L : this.R;\n }\n for (var j = s; j < l; ++j) {\n this._result[Number.parseInt(j.toString(), 10)] = rt;\n }\n i = l;\n }\n }\n };\n return _RtlCharacters;\n}());\nexport { _RtlCharacters };\n","import { _UnicodeLine } from './../../fonts/pdf-standard-font';\nimport { _ArabicShapeRenderer } from './../../graphics/rightToLeft/text-shape';\nimport { _Bidirectional } from './../../graphics/rightToLeft/bidirectional';\nimport { PdfTextDirection } from './../../enumerator';\nimport { _stringToUnicodeArray, _bytesToString } from './../../utils';\nvar _RtlRenderer = /** @class */ (function () {\n function _RtlRenderer() {\n this._openBracket = '(';\n this._closeBracket = ')';\n }\n _RtlRenderer.prototype._layout = function (line, font, rtl, wordSpace, format) {\n var result = [];\n if (font !== null && typeof font !== 'undefined' && line !== null && typeof line !== 'undefined') {\n if (font._isUnicode) {\n result = this._customLayout(line, rtl, format, font, wordSpace);\n }\n else {\n result = [];\n result[0] = line;\n }\n }\n return result;\n };\n _RtlRenderer.prototype._splitLayout = function (line, font, rtl, wordSpace, format) {\n var words = [];\n if (font !== null && typeof font !== 'undefined' && line !== null && typeof line !== 'undefined') {\n var system = false;\n if (!system) {\n words = this._customSplitLayout(line, font, rtl, wordSpace, format);\n }\n }\n return words;\n };\n _RtlRenderer.prototype._getGlyphIndex = function (line, font, glyphs) {\n glyphs = [];\n if (font !== null && typeof font !== 'undefined' && line !== null && typeof line !== 'undefined') {\n if (line.length === 0) {\n return { _result: false, _glyphIndex: glyphs };\n }\n var renderer = new _ArabicShapeRenderer();\n var text = renderer._shape(line);\n var internalFont = font._fontInternal;\n var ttfReader = internalFont._ttfReader;\n glyphs = [text.length];\n var i = 0;\n for (var k = 0, len = text.length; k < len; k++) {\n var ch = text[Number.parseInt(k.toString(), 10)];\n var glyphInfo = ttfReader._getGlyph(ch);\n if (glyphInfo !== null && typeof glyphInfo !== 'undefined') {\n glyphs[i++] = (glyphInfo)._index;\n }\n }\n }\n var unicodeLine = new _UnicodeLine();\n unicodeLine._result = true;\n unicodeLine._glyphIndex = glyphs;\n return unicodeLine;\n };\n _RtlRenderer.prototype._customLayout = function (line, rtl, format, font, wordSpace) {\n if (wordSpace === null || typeof wordSpace === 'undefined') {\n var result = null;\n if (line !== null && typeof line !== 'undefined') {\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.none) {\n var bidi = new _Bidirectional();\n result = bidi._getLogicalToVisualString(line, rtl);\n }\n }\n return result;\n }\n else {\n var layouted = '';\n var result = [];\n if (line !== null && typeof line !== 'undefined' && font !== null && typeof font !== 'undefined') {\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.none) {\n var renderer = new _ArabicShapeRenderer();\n var txt = renderer._shape(line);\n layouted = this._customLayout(txt, rtl, format);\n }\n if (wordSpace) {\n var words = layouted.split('');\n var count = words.length;\n for (var i = 0; i < count; i++) {\n words[Number.parseInt(i.toString(), 10)] = this._addCharacter(font, words[Number.parseInt(i.toString(), 10)]);\n }\n result = words;\n }\n else {\n result = [];\n result[0] = this._addCharacter(font, layouted);\n }\n }\n return result;\n }\n };\n _RtlRenderer.prototype._addCharacter = function (font, glyphs) {\n if (font !== null && typeof font !== 'undefined' && glyphs !== null && typeof glyphs !== 'undefined') {\n var internalFont = font._fontInternal;\n var ttfReader = internalFont._ttfReader;\n font._setSymbols(glyphs);\n glyphs = ttfReader._convertString(glyphs);\n var bytes = _stringToUnicodeArray(glyphs);\n glyphs = _bytesToString(bytes);\n }\n return glyphs;\n };\n _RtlRenderer.prototype._customSplitLayout = function (line, font, rtl, wordSpace, format) {\n var words = [];\n if (line !== null && typeof line !== 'undefined') {\n var reversedLine = this._customLayout(line, rtl, format);\n words = reversedLine.split('');\n }\n return words;\n };\n return _RtlRenderer;\n}());\nexport { _RtlRenderer };\n","import { _getBezierArc } from './../utils';\nimport { PdfFillMode } from './../enumerator';\nvar _PdfPath = /** @class */ (function () {\n function _PdfPath() {\n this._isRoundedRectangle = false;\n this._fillMode = PdfFillMode.winding;\n this._points = [];\n this._pathTypes = [];\n this._isStart = true;\n }\n Object.defineProperty(_PdfPath.prototype, \"_lastPoint\", {\n get: function () {\n var value = [0, 0];\n var count = this._points.length;\n if (this._points.length > 0) {\n value[0] = this._points[(count - 1)][0];\n value[1] = this._points[(count - 1)][0];\n }\n return value;\n },\n enumerable: true,\n configurable: true\n });\n _PdfPath.prototype._addLine = function (x1, y1, x2, y2) {\n this._addPoints([x1, y1, x2, y2], _PathPointType.line);\n };\n _PdfPath.prototype._addLines = function (linePoints) {\n var start = linePoints[0];\n if (linePoints.length === 1) {\n this._addPoint(linePoints[0], _PathPointType.line);\n }\n else {\n for (var i = 1; i < linePoints.length; i++) {\n var last = linePoints[Number.parseInt(i.toString(), 10)];\n this._addLine(start[0], start[1], last[0], last[1]);\n start = last;\n }\n }\n };\n _PdfPath.prototype._addPoints = function (points, type, start, end) {\n var startIndex = (typeof start !== 'undefined') ? start : 0;\n var endIndex = (typeof end !== 'undefined') ? end : points.length;\n for (var i = startIndex; i < endIndex; i++) {\n var point = [points[Number.parseInt(i.toString(), 10)], points[i + 1]];\n if (i === startIndex) {\n if (this._points.length === 0 || this._isStart) {\n this._addPoint(point, _PathPointType.start);\n this._isStart = false;\n }\n else if (this._isRoundedRectangle && (point[0] !== this._lastPoint[0] || point[1] !== this._lastPoint[1])) {\n this._addPoint(point, _PathPointType.line);\n }\n else if (point[0] !== this._lastPoint[0] && point[1] !== this._lastPoint[1]) {\n this._addPoint(point, _PathPointType.line);\n }\n }\n else {\n this._addPoint(point, type);\n }\n i++;\n }\n };\n _PdfPath.prototype._addPoint = function (points, type) {\n this._points.push(points);\n this._pathTypes.push(type);\n };\n _PdfPath.prototype._addArc = function (x, y, width, height, startAngle, sweepAngle) {\n var points = _getBezierArc(x, y, x + width, y + height, startAngle, sweepAngle);\n for (var i = 0; i < points.length; ++i) {\n var list = [points[Number.parseInt(i.toString(), 10)],\n points[++i],\n points[++i],\n points[++i],\n points[++i],\n points[++i],\n points[++i],\n points[++i]];\n this._addPoints(list, _PathPointType.bezier);\n }\n };\n _PdfPath.prototype._addRectangle = function (x, y, width, height) {\n this._startFigure();\n this._addPoints([x, y, x + width, y, x + width, y + height, x, y + height], _PathPointType.line);\n this._closeFigure();\n };\n _PdfPath.prototype._addPolygon = function (points) {\n var newPoints = [];\n points.forEach(function (element) {\n newPoints.push(element[0], element[1]);\n });\n this._startFigure();\n this._addPoints(newPoints, _PathPointType.line);\n this._closeFigure();\n };\n _PdfPath.prototype._addEllipse = function (x, y, width, height) {\n this._startFigure();\n this._addArc(x, y, width, height, 0, 360);\n this._closeFigure();\n };\n _PdfPath.prototype._addBezierPoints = function (pointsCollection) {\n if (pointsCollection.length < 4) {\n throw Error('Incorrect size of array points');\n }\n var bound = 3;\n var index = 0;\n var start = pointsCollection[Number.parseInt(index.toString(), 10)];\n index++;\n while ((index + bound) <= pointsCollection.length) {\n var inner1 = pointsCollection[Number.parseInt(index.toString(), 10)];\n index++;\n var inner2 = pointsCollection[Number.parseInt(index.toString(), 10)];\n index++;\n var end = pointsCollection[Number.parseInt(index.toString(), 10)];\n index++;\n this._addBezier(start[0], start[1], inner1[0], inner1[1], inner2[0], inner2[1], end[0], end[1]);\n start = end;\n }\n };\n _PdfPath.prototype._addBezier = function (x, y, firstX, firstY, secondX, secondY, endX, endY) {\n var points = [];\n points.push(x);\n points.push(y);\n points.push(firstX);\n points.push(firstY);\n points.push(secondX);\n points.push(secondY);\n points.push(endX);\n points.push(endY);\n this._addPoints(points, _PathPointType.bezier);\n };\n _PdfPath.prototype._closeFigure = function (index) {\n if (typeof index !== 'undefined') {\n var type = this._pathTypes[Number.parseInt(index.toString(), 10)];\n type |= _PathPointType.closePath;\n this._pathTypes[Number.parseInt(index.toString(), 10)] = type;\n }\n else {\n if (this._points.length > 0) {\n this._closeFigure(this._points.length - 1);\n }\n this._startFigure();\n }\n };\n _PdfPath.prototype._startFigure = function () {\n this._isStart = true;\n };\n _PdfPath.prototype._getBounds = function () {\n var bounds = [0, 0, 0, 0];\n if (this._points.length > 0) {\n var xmin = this._points[0][0];\n var xmax = this._points[0][0];\n var ymin = this._points[0][1];\n var ymax = this._points[0][1];\n for (var i = 1; i < this._points.length; ++i) {\n var point = this._points[Number.parseInt(i.toString(), 10)];\n xmin = Math.min(point[0], xmin);\n xmax = Math.max(point[0], xmax);\n ymin = Math.min(point[1], ymin);\n ymax = Math.max(point[1], ymax);\n }\n bounds = [xmin, ymin, xmax - xmin, ymax - ymin];\n }\n return bounds;\n };\n return _PdfPath;\n}());\nexport { _PdfPath };\nexport var _PathPointType;\n(function (_PathPointType) {\n _PathPointType[_PathPointType[\"start\"] = 0] = \"start\";\n _PathPointType[_PathPointType[\"line\"] = 1] = \"line\";\n _PathPointType[_PathPointType[\"bezier\"] = 3] = \"bezier\";\n _PathPointType[_PathPointType[\"pathTypeMask\"] = 7] = \"pathTypeMask\";\n _PathPointType[_PathPointType[\"dashMode\"] = 16] = \"dashMode\";\n _PathPointType[_PathPointType[\"pathMarker\"] = 32] = \"pathMarker\";\n _PathPointType[_PathPointType[\"closePath\"] = 128] = \"closePath\";\n})(_PathPointType || (_PathPointType = {}));\n","import { _PdfName } from './../pdf-primitives';\nimport { _PdfBaseStream, _PdfContentStream } from './../base-stream';\nimport { PdfGraphics } from './pdf-graphics';\nimport { _toRectangle } from './../utils';\n/**\n * `PdfTemplate` class represents the template of the PDF.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new rubber stamp annotation\n * const annotation: PdfRubberStampAnnotation = new PdfRubberStampAnnotation(50, 100, 100, 50);\n * // Get the normal appearance of the annotation\n * let normalAppearance: PdfTemplate = annotation.appearance.normal;\n * // Create new image object by using JPEG image data as Base64 string format\n * let image: PdfImage = new PdfBitmap('/9j/4AAQSkZJRgABAQEAkACQAAD/4....QB//Z');\n * // Draw the image as the custom appearance for the annotation\n * normalAppearance.graphics.drawImage(image, 0, 0, 100, 50);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfTemplate = /** @class */ (function () {\n function PdfTemplate(value, crossReference) {\n this._crossReference = crossReference;\n if (value instanceof _PdfBaseStream) {\n this._content = value;\n if (!this._content.dictionary.has('Type') || !this._content.dictionary.has('Subtype')) {\n this._initialize();\n }\n var bounds = this._content.dictionary.getArray('BBox');\n if (bounds && bounds.length > 3) {\n var rect = _toRectangle(bounds);\n this._size = [rect.width, rect.height];\n }\n this._isReadOnly = true;\n }\n else {\n this._size = [value[2], value[3]];\n this._content = new _PdfContentStream([]);\n this._content.dictionary._crossReference = this._crossReference;\n this._initialize();\n this._content.dictionary.set('BBox', [value[0], value[1], value[0] + value[2], value[1] + value[3]]);\n }\n this._writeTransformation = true;\n }\n Object.defineProperty(PdfTemplate.prototype, \"graphics\", {\n /**\n * Get the graphics of the PDF template.\n *\n * @returns {PdfGraphics} The graphics object of the PDF template.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new rubber stamp annotation\n * const annotation: PdfRubberStampAnnotation = new PdfRubberStampAnnotation(50, 100, 100, 50);\n * // Access the graphics of the normal appearance\n * let graphics: PdfGraphics = annotation.appearance.normal.graphics;\n * // Create new image object by using JPEG image data as Base64 string format\n * let image: PdfImage = new PdfBitmap('/9j/4AAQSkZJRgABAQEAkACQAAD/4....QB//Z');\n * // Draw the image as the custom appearance for the annotation\n * graphics.drawImage(image, 0, 0, 100, 50);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._isReadOnly) {\n return null;\n }\n if (typeof this._g === 'undefined') {\n this._g = new PdfGraphics(this._size, this._content, this._crossReference, this);\n if (this._writeTransformation) {\n this._g._initializeCoordinates();\n }\n this._g._isTemplateGraphics = true;\n }\n return this._g;\n },\n enumerable: true,\n configurable: true\n });\n PdfTemplate.prototype._initialize = function () {\n this._content.dictionary.set('Type', _PdfName.get('XObject'));\n this._content.dictionary.set('Subtype', _PdfName.get('Form'));\n };\n return PdfTemplate;\n}());\nexport { PdfTemplate };\n","import { _PdfGraphicsUnit } from './../../enumerator';\nimport { _PdfUnitConvertor } from './../../graphics/pdf-graphics';\n/**\n * The 'PdfImage' contains methods and properties to handle the images.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create new image object by using JPEG image data as Base64 string format\n * let image: PdfImage = new PdfBitmap('/9j/4AAQSkZJRgABAQEAkACQAAD/4....QB//Z');\n * //Draw the image.\n * graphics.drawImage(image, 10, 20, 400, 400);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfImage = /** @class */ (function () {\n function PdfImage() {\n }\n Object.defineProperty(PdfImage.prototype, \"width\", {\n /**\n * Gets the width of the PDF image.\n *\n * @returns {number} image width.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create new image object by using JPEG image data as Base64 string format\n * let image: PdfImage = new PdfBitmap('/9j/4AAQSkZJRgABAQEAkACQAAD/4....QB//Z');\n * // Gets the width of the image.\n * let width: number = image.width;\n * //Draw the image.\n * image.draw(graphics);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._imageWidth;\n },\n /**\n * Sets the width of the PDF image.\n *\n * @param {number} value value.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create new image object by using JPEG image data as Base64 string format\n * let image: PdfImage = new PdfBitmap('/9j/4AAQSkZJRgABAQEAkACQAAD/4....QB//Z');\n * // Sets the width of the image.\n * image.width = 100;\n * //Draw the image.\n * image.draw(graphics);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._imageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"height\", {\n /**\n * Gets the height of the PDF image.\n *\n * @returns {number} image height.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create new image object by using JPEG image data as Base64 string format\n * let image: PdfImage = new PdfBitmap('/9j/4AAQSkZJRgABAQEAkACQAAD/4....QB//Z');\n * // Gets the height of the image.\n * let height: number = image.height;\n * //Draw the image.\n * image.draw(graphics);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._imageHeight;\n },\n /**\n * Sets the height of the PDF image.\n *\n * @param {number} value value.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create new image object by using JPEG image data as Base64 string format\n * let image: PdfImage = new PdfBitmap('/9j/4AAQSkZJRgABAQEAkACQAAD/4....QB//Z');\n * // Sets the height of the image.\n * image.height = 100;\n * //Draw the image.\n * image.draw(graphics);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._imageHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"physicalDimension\", {\n /**\n * Gets the physical dimension of the PDF image (Read only).\n *\n * @returns {number[]} image physical dimension.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create new image object by using JPEG image data as Base64 string format\n * let image: PdfImage = new PdfBitmap('/9j/4AAQSkZJRgABAQEAkACQAAD/4....QB//Z');\n * // Gets the physical dimension of the image.\n * let dimension: number[] = image.physicalDimension;\n * //Draw the image.\n * image.draw(graphics);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n this._imagePhysicalDimension = this._getPointSize(this.width, this.height, this._horizontalResolution);\n return [this.width, this.height];\n },\n enumerable: true,\n configurable: true\n });\n PdfImage.prototype.draw = function (graphics, x, y) {\n if ((x === null || typeof x === 'undefined') && (y === null || typeof y === 'undefined')) {\n x = 0;\n y = 0;\n }\n var needSave = (x !== 0 || y !== 0);\n var state = null;\n if (needSave) {\n state = graphics.save();\n graphics.translateTransform(x, y);\n }\n graphics.drawImage(this, 0, 0);\n if (needSave) {\n graphics.restore(state);\n }\n };\n PdfImage.prototype._getPointSize = function (width, height, horizontalResolution) {\n if ((horizontalResolution === null || typeof horizontalResolution === 'undefined')) {\n var dpiX = 96;\n var size = this._getPointSize(width, height, dpiX);\n return size;\n }\n else {\n var ucX = new _PdfUnitConvertor();\n var ucY = new _PdfUnitConvertor();\n var ptWidth = ucX._convertUnits(width, _PdfGraphicsUnit.pixel, _PdfGraphicsUnit.point);\n var ptHeight = ucY._convertUnits(height, _PdfGraphicsUnit.pixel, _PdfGraphicsUnit.point);\n var size = [ptWidth, ptHeight];\n return size;\n }\n };\n return PdfImage;\n}());\nexport { PdfImage };\n","import { PdfPage } from './../pdf-page';\nimport { _PdfStreamWriter } from './pdf-stream-writer';\nimport { _floatToString, _addProcSet, _reverseMapBlendMode, _mapBlendMode, _getNewGuidString, _getBezierArc, _numberToString, _bytesToString, _stringToUnicodeArray } from './../utils';\nimport { _PdfDictionary, _PdfReference, _PdfName } from './../pdf-primitives';\nimport { PdfTrueTypeFont } from './../fonts/pdf-standard-font';\nimport { _PdfStringLayouter, _LineType, _StringTokenizer } from './../fonts/string-layouter';\nimport { PdfTextAlignment, PdfTextDirection, PdfSubSuperScript, PdfBlendMode, PdfLineJoin, PdfLineCap, PdfDashStyle, PdfFillMode } from './../enumerator';\nimport { PdfVerticalAlignment } from './../fonts/pdf-string-format';\nimport { PdfTemplate } from './pdf-template';\nimport { _PdfPath, _PathPointType } from './pdf-path';\nimport { _UnicodeTrueTypeFont } from '../fonts/unicode-true-type-font';\nimport { _RtlRenderer } from './../graphics/rightToLeft/text-renderer';\nimport { PdfImage } from './images/pdf-image';\n/**\n * Represents a graphics from a PDF page.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * //Create a new pen.\n * let pen: PdfPen = new PdfPen([0, 0, 0], 1);\n * //Draw line on the page graphics.\n * graphics.drawLine(pen, 10, 10, 100, 100);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfGraphics = /** @class */ (function () {\n function PdfGraphics(size, content, xref, source) {\n this._pendingResource = []; // eslint-disable-line\n this._hasResourceReference = false;\n if (source instanceof PdfPage) {\n this._source = source._pageDictionary;\n this._page = source;\n }\n else if (source instanceof PdfTemplate) {\n this._source = source._content.dictionary;\n this._template = source;\n }\n if (this._source && this._source.has('Resources')) {\n var obj = this._source.getRaw('Resources'); // eslint-disable-line\n if (obj instanceof _PdfReference) {\n this._hasResourceReference = true;\n this._resourceObject = xref._fetch(obj);\n }\n else if (obj instanceof _PdfDictionary) {\n this._resourceObject = obj;\n }\n }\n else {\n this._resourceObject = new _PdfDictionary();\n this._source.update('Resources', this._resourceObject);\n }\n this._crossReference = xref;\n this._sw = new _PdfStreamWriter(content);\n this._size = size;\n _addProcSet('PDF', this._resourceObject);\n this._initialize();\n }\n Object.defineProperty(PdfGraphics.prototype, \"_matrix\", {\n get: function () {\n if (typeof this._m === 'undefined') {\n this._m = new _PdfTransformationMatrix();\n }\n return this._m;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"_resources\", {\n get: function () {\n var _this = this;\n if (typeof this._resourceMap === 'undefined') {\n this._resourceMap = new Map();\n if (this._resourceObject.has('Font')) {\n var fonts = this._resourceObject.get('Font');\n if (fonts && fonts.size > 0) {\n fonts.forEach(function (key, value) {\n if (value !== null && typeof value !== 'undefined' && value instanceof _PdfReference) {\n _this._resourceMap.set(value, _PdfName.get(key));\n }\n });\n }\n }\n if (this._resourceObject.has('XObject')) {\n var other = this._resourceObject.get('XObject');\n if (other && other.size > 0) {\n other.forEach(function (key, value) {\n if (value !== null && typeof value !== 'undefined' && value instanceof _PdfReference) {\n _this._resourceMap.set(value, _PdfName.get(key));\n }\n });\n }\n }\n if (this._resourceObject.has('ExtGState')) {\n var state = this._resourceObject.get('ExtGState');\n if (state && state.size > 0) {\n if (!this._transparencies) {\n this._transparencies = new Map();\n }\n state.forEach(function (key, value) {\n if (value !== null && typeof value !== 'undefined' && value instanceof _PdfReference) {\n _this._setTransparencyData(value, _PdfName.get(key));\n }\n });\n }\n }\n }\n return this._resourceMap;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Save the current graphics state.\n *\n * @returns {PdfGraphicsState} graphics state.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new font\n * let font: PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // Save the graphics\n * let state: PdfGraphicsState = graphics.save();\n * //Set graphics translate transform.\n * graphics.translateTransform(100, 100);\n * //Draws the String.\n * graphics.drawString(\"Hello world!\", font, [10, 20, 100, 200], undefined, new PdfBrush([0, 0, 255]));\n * //Restore the graphics.\n * graphics.restore(state);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.save = function () {\n var state = new PdfGraphicsState(this, this._matrix);\n state._textRenderingMode = this._textRenderingMode;\n state._charSpacing = this._characterSpacing;\n state._textScaling = this._textScaling;\n state._wordSpacing = this._wordSpacing;\n state._currentBrush = this._currentBrush;\n state._currentPen = this._currentPen;\n state._currentFont = this._currentFont;\n this._graphicsState.push(state);\n this._sw._saveGraphicsState();\n return state;\n };\n /**\n * Restore the graphics state.\n *\n * @param {PdfGraphicsState} state graphics state.\n * @returns {void} restore of the graphics state.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new font\n * let font: PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // Save the graphics\n * let state: PdfGraphicsState = graphics.save();\n * //Set graphics translate transform.\n * graphics.translateTransform(100, 100);\n * //Draws the String.\n * graphics.drawString(\"Hello world!\", font, [10, 20, 100, 200], undefined, new PdfBrush([0, 0, 255]));\n * //Restore the graphics.\n * graphics.restore(state);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.restore = function (state) {\n if (this._graphicsState.length > 0) {\n if (typeof state === 'undefined') {\n this._doRestore();\n }\n else {\n if (this._graphicsState.length > 0 && this._graphicsState.indexOf(state) !== -1) {\n while (this._graphicsState.length > 0) {\n if (this._doRestore() === state) {\n break;\n }\n }\n }\n }\n }\n };\n PdfGraphics.prototype._doRestore = function () {\n var state = this._graphicsState.pop();\n this._m = state._transformationMatrix;\n this._currentBrush = state._currentBrush;\n this._currentPen = state._currentPen;\n this._currentFont = state._currentFont;\n this._characterSpacing = state._charSpacing;\n this._wordSpacing = state._wordSpacing;\n this._textScaling = state._textScaling;\n this._textRenderingMode = state._textRenderingMode;\n this._sw._restoreGraphicsState();\n return state;\n };\n PdfGraphics.prototype.drawRectangle = function (x, y, width, height, first, second) {\n var pen;\n var brush;\n if (first instanceof PdfPen) {\n pen = first;\n if (second) {\n brush = second;\n }\n }\n else {\n brush = first;\n }\n this._stateControl(pen, brush);\n this._sw._appendRectangle(x, y, width, height);\n this._drawGraphicsPath(pen, brush);\n };\n PdfGraphics.prototype.drawPolygon = function (points, first, second) {\n if (points.length > 0) {\n var pen = void 0;\n var brush = void 0;\n if (first instanceof PdfPen) {\n pen = first;\n if (second) {\n brush = second;\n }\n }\n else {\n brush = first;\n }\n this._stateControl(pen, brush);\n this._sw._beginPath(points[0][0], points[0][1]);\n for (var i = 1; i < points.length; i++) {\n this._sw._appendLineSegment(points[Number.parseInt(i.toString(), 10)][0], points[Number.parseInt(i.toString(), 10)][1]);\n }\n this._drawGraphicsPath(pen, brush, PdfFillMode.winding, true);\n }\n };\n PdfGraphics.prototype.drawEllipse = function (x, y, width, height, first, second) {\n var pen;\n var brush;\n if (first instanceof PdfPen) {\n pen = first;\n if (second) {\n brush = second;\n }\n }\n else {\n brush = first;\n }\n this._stateControl(pen, brush);\n this._constructArcPath(x, y, x + width, y + height, 0, 360);\n this._drawGraphicsPath(pen, brush, PdfFillMode.winding, true);\n };\n /**\n * Draw arc on the page graphics.\n *\n * @param {number} x value.\n * @param {number} y value.\n * @param {number} width value.\n * @param {number} height value.\n * @param {number} startAngle value.\n * @param {number} sweepAngle value.\n * @param {PdfPen} pen value.\n * @returns {void} draw a arc.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * //Create a new pen.\n * let pen: PdfPen = new PdfPen([0, 0, 0], 1);\n * //Draw arc on the page graphics.\n * graphics.drawArc(10, 20, 100, 200, 20, 30, pen);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.drawArc = function (x, y, width, height, startAngle, sweepAngle, pen) {\n if (sweepAngle !== 0) {\n this._stateControl(pen);\n this._constructArcPath(x, y, x + width, y + height, startAngle, sweepAngle);\n this._drawGraphicsPath(pen, null, PdfFillMode.winding, false);\n }\n };\n PdfGraphics.prototype.drawImage = function (arg1, arg2, arg3, arg4, arg5) {\n if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n var size = arg1.physicalDimension;\n this.drawImage(arg1, arg2, arg3, size[0], size[1]);\n }\n else {\n arg1._save();\n var matrix = new _PdfTransformationMatrix();\n this._getTranslateTransform(arg2, (arg3 + arg5), matrix);\n this._getScaleTransform(arg4, arg5, matrix);\n this._sw._write('q');\n this._sw._modifyCtm(matrix);\n var sourceDictionary = void 0;\n var keyName = void 0;\n var isNew = true;\n if (this._resourceObject.has('XObject')) {\n var obj = this._resourceObject.getRaw('XObject'); // eslint-disable-line\n if (obj instanceof _PdfDictionary) {\n sourceDictionary = obj;\n }\n if (sourceDictionary) {\n isNew = false;\n }\n }\n if (isNew) {\n sourceDictionary = new _PdfDictionary(this._crossReference);\n this._resourceObject.update('XObject', sourceDictionary);\n }\n if (typeof keyName === 'undefined') {\n keyName = _PdfName.get(_getNewGuidString());\n }\n if (this._crossReference) {\n this._updateImageResource(arg1, keyName, sourceDictionary, this._crossReference);\n this._source.update('Resources', this._resourceObject);\n this._source._updated = true;\n }\n else {\n this._pendingResource.push({ 'resource': arg1, 'key': keyName, 'source': sourceDictionary });\n }\n this._sw._executeObject(keyName);\n this._sw._write('Q');\n this._sw._write('\\r\\n');\n _addProcSet('ImageB', this._resourceObject);\n _addProcSet('ImageC', this._resourceObject);\n _addProcSet('ImageI', this._resourceObject);\n _addProcSet('Text', this._resourceObject);\n }\n };\n PdfGraphics.prototype._processResources = function (crossReference) {\n if (this._pendingResource.length > 0) {\n for (var i = 0; i < this._pendingResource.length; i++) {\n var entry = this._pendingResource[Number.parseInt(i.toString(), 10)]; // eslint-disable-line\n if (entry.resource instanceof PdfImage) {\n this._updateImageResource(entry.resource, entry.key, entry.source, crossReference);\n }\n this._source.update('Resources', this._resourceObject);\n this._source._updated = true;\n }\n this._pendingResource = [];\n }\n };\n PdfGraphics.prototype._updateImageResource = function (image, keyName, source, crossReference) {\n var ref;\n if (image._reference) {\n ref = image._reference;\n }\n else {\n ref = crossReference._getNextReference();\n image._reference = ref;\n }\n if (!crossReference._cacheMap.has(ref)) {\n if (image && image._imageStream && image._imageStream.dictionary) {\n crossReference._cacheMap.set(ref, image._imageStream);\n image._imageStream.dictionary._updated = true;\n }\n }\n source.update(keyName.name, ref);\n this._resources.set(ref, keyName);\n this._resourceObject._updated = true;\n };\n PdfGraphics.prototype._drawTemplate = function (template, bounds) {\n var _this = this;\n var scaleX = (template && template._size[0] > 0) ? bounds.width / template._size[0] : 1;\n var scaleY = (template && template._size[1] > 0) ? bounds.height / template._size[1] : 1;\n var needScale = !(scaleX === 1 && scaleY === 1);\n var cropBox;\n var mediaBox;\n if (this._page) {\n cropBox = this._page.cropBox;\n mediaBox = this._page.mediaBox;\n if (this._page._pageDictionary.has('CropBox') && this._page._pageDictionary.has('MediaBox')) {\n if (cropBox[0] > 0 && cropBox[1] > 0 && mediaBox[0] < 0 && mediaBox[1] < 0) {\n this.translateTransform(cropBox[0], -cropBox[1]);\n bounds.x = -cropBox[0];\n bounds.y = cropBox[1];\n }\n }\n }\n var state = this.save();\n var matrix = new _PdfTransformationMatrix();\n if (this._page) {\n var needTransform = (this._page._pageDictionary.has('CropBox') &&\n this._page._pageDictionary.has('MediaBox') && cropBox && mediaBox &&\n cropBox[0] === mediaBox[0] && cropBox[1] === mediaBox[1] && cropBox[2] === mediaBox[2] && cropBox[3] === mediaBox[3]) ||\n (this._page._pageDictionary.has('MediaBox') && mediaBox && mediaBox[3] === 0);\n matrix._translate(bounds.x, -(bounds.y + ((this._page._origin[0] >= 0 || needTransform) ? bounds.height : 0)));\n }\n else {\n matrix._translate(bounds.x, -(bounds.y + bounds.height));\n }\n if (needScale) {\n if (template._isAnnotationTemplate && template._needScale) {\n var scaleApplied = false;\n if (template._content && template._content.dictionary) {\n var dictionary = template._content.dictionary;\n if (dictionary.has('Matrix') && dictionary.has('BBox')) {\n var templateMatrix = dictionary.getArray('Matrix');\n var templateBox = dictionary.getArray('BBox');\n if (templateMatrix && templateBox && templateMatrix.length > 5 && templateBox.length > 3) {\n var templateScaleX = Number.parseFloat(_numberToString(-templateMatrix[1]));\n var templateScaleY = Number.parseFloat(_numberToString(templateMatrix[2]));\n var roundScaleX = Number.parseFloat(_numberToString(scaleX));\n var roundScaleY = Number.parseFloat(_numberToString(scaleY));\n if (roundScaleX === templateScaleX &&\n roundScaleY === templateScaleY &&\n templateBox[2] === template._size[0] &&\n templateBox[3] === template._size[1]) {\n matrix = new _PdfTransformationMatrix();\n matrix._translate(bounds.x - templateMatrix[4], bounds.y + templateMatrix[5]);\n matrix._scale(1, 1);\n scaleApplied = true;\n }\n }\n }\n }\n if (!scaleApplied) {\n matrix._scale(scaleX, scaleY);\n }\n }\n else {\n matrix._scale(scaleX, scaleY);\n }\n }\n this._sw._modifyCtm(matrix);\n var sourceDictionary;\n var isReference = false;\n var keyName;\n var isNew = true;\n var ref;\n if (this._resourceObject.has('XObject')) {\n var obj = this._resourceObject.getRaw('XObject'); // eslint-disable-line\n if (obj instanceof _PdfReference) {\n isReference = true;\n sourceDictionary = this._crossReference._fetch(obj);\n }\n else if (obj instanceof _PdfDictionary) {\n sourceDictionary = obj;\n }\n if (sourceDictionary) {\n isNew = false;\n this._resources.forEach(function (value, key) {\n if (key && key instanceof _PdfReference) {\n var base = _this._crossReference._fetch(key);\n if (base && template && base === template._content) {\n keyName = value;\n ref = key;\n }\n }\n });\n }\n }\n if (isNew) {\n sourceDictionary = new _PdfDictionary(this._crossReference);\n this._resourceObject.update('XObject', sourceDictionary);\n }\n if (typeof keyName === 'undefined') {\n keyName = _PdfName.get(_getNewGuidString());\n if (template && template._content.reference) {\n ref = template._content.reference;\n }\n else {\n ref = this._crossReference._getNextReference();\n }\n if (!this._crossReference._cacheMap.has(ref)) {\n if (template && template._content) {\n this._crossReference._cacheMap.set(ref, template._content);\n }\n }\n sourceDictionary.update(keyName.name, ref);\n this._resources.set(ref, keyName);\n this._resourceObject._updated = true;\n }\n if (isReference) {\n this._resourceObject._updated = true;\n }\n if (this._hasResourceReference) {\n this._source._updated = true;\n }\n this._sw._executeObject(keyName);\n this.restore(state);\n _addProcSet('ImageB', this._resourceObject);\n _addProcSet('ImageC', this._resourceObject);\n _addProcSet('ImageI', this._resourceObject);\n _addProcSet('Text', this._resourceObject);\n };\n PdfGraphics.prototype._drawPath = function (path, pen, brush) {\n if (pen || brush) {\n this._stateControl(pen, brush, null);\n this._buildUpPath(path._points, path._pathTypes);\n this._drawGraphicsPath(pen, brush, path._fillMode, false);\n }\n };\n /**\n * Draw rounded rectangle on the page graphics.\n *\n * @param {number} x value.\n * @param {number} y value.\n * @param {number} width value.\n * @param {number} height value.\n * @param {number} radius value.\n * @param {PdfPen} pen value.\n * @param {PdfBrush} brush value.\n * @returns {void} draw a rounded rectangle.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * //Create a new pen.\n * let pen: PdfPen = new PdfPen([0, 0, 0], 1);\n * //Create a new brush.\n * let brush: PdfBrush = new PdfBrush([0, 0, 255]);\n * //Draw rounded rectangle on the page graphics.\n * graphics.drawRoundedRectangle(10, 20, 100, 200, 5, pen, brush);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.drawRoundedRectangle = function (x, y, width, height, radius, pen, brush) {\n if (pen === null) {\n throw new Error('pen');\n }\n if (brush === null) {\n throw new Error('brush');\n }\n var bounds = [x, y, width, height];\n var diameter = radius * 2;\n var size = [diameter, diameter];\n var arc = [bounds[0], bounds[1], size[0], size[1]];\n var path = new _PdfPath();\n if (radius === 0) {\n path._addRectangle(bounds[0], bounds[1], bounds[2], bounds[3]);\n this._drawPath(path, pen, brush);\n }\n else {\n path._isRoundedRectangle = true;\n path._addArc(arc[0], arc[1], arc[2], arc[3], 180, 90);\n arc[0] = (bounds[0] + bounds[2]) - diameter;\n path._addArc(arc[0], arc[1], arc[2], arc[3], 270, 90);\n arc[1] = (bounds[1] + bounds[3]) - diameter;\n path._addArc(arc[0], arc[1], arc[2], arc[3], 0, 90);\n arc[0] = bounds[0];\n path._addArc(arc[0], arc[1], arc[2], arc[3], 90, 90);\n path._closeFigure();\n this._drawPath(path, pen, brush);\n }\n };\n PdfGraphics.prototype._constructArcPath = function (x1, y1, x2, y2, start, sweep) {\n var points = _getBezierArc(x1, y1, x2, y2, start, sweep);\n if (points.length === 8) {\n return;\n }\n var point = [points[0], points[1], points[2], points[3], points[4], points[5], points[6], points[7]];\n this._sw._beginPath(point[0], point[1]);\n for (var i = 0; i < points.length; i = i + 8) {\n point = [points[Number.parseInt(i.toString(), 10)],\n points[i + 1],\n points[i + 2],\n points[i + 3],\n points[i + 4],\n points[i + 5],\n points[i + 6],\n points[i + 7]];\n this._sw._appendBezierSegment(point[2], point[3], point[4], point[5], point[6], point[7]);\n }\n };\n PdfGraphics.prototype._writePen = function (pen) {\n var lineWidth = pen._width;\n var pattern = pen._dashPattern;\n for (var i = 0; i < pattern.length; ++i) {\n pattern[i] *= pen._width; // eslint-disable-line\n }\n this._sw._setLineDashPattern(pattern, pen._dashOffset * lineWidth);\n this._sw._setLineWidth(pen._width);\n this._sw._setLineJoin(pen._lineJoin);\n this._sw._setLineCap(pen._lineCap);\n if (pen._miterLimit > 0) {\n this._sw._setMiterLimit(pen._miterLimit);\n }\n this._sw._setColor(pen._color, true);\n };\n /**\n * Draw text on the page graphics.\n *\n * @param {string} value draw string.\n * @param {PdfFont} font value.\n * @param {number[]} bounds value.\n * @param {PdfPen} pen value.\n * @param {PdfBrush} brush value.\n * @param {PdfStringFormat} format value.\n * @returns {void} draw a string.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new pen.\n * let pen: PdfPen = new PdfPen([0, 0, 0], 1);\n * // Create a new font.\n * let font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.symbol, 10);\n * // Create a new string format\n * let format: PdfStringFormat = new PdfStringFormat();\n * format.alignment = PdfTextAlignment.center;\n * // Draw text on the page graphics.\n * graphics.drawString('Hello World', font, [10, 20, 100, 200], pen, new PdfBrush([0, 0, 255]), format);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.drawString = function (value, font, bounds, pen, brush, format) {\n var layouter = new _PdfStringLayouter();\n var result = layouter._layout(value, font, format, [bounds[2], bounds[3]]);\n if (!result._empty) {\n var rect = this._checkCorrectLayoutRectangle(result._actualSize, bounds[0], bounds[1], format);\n if (bounds[2] <= 0) {\n bounds[0] = rect[0];\n bounds[2] = rect[2];\n }\n if (bounds[3] <= 0) {\n bounds[1] = rect[1];\n bounds[3] = rect[3];\n }\n this._drawStringLayoutResult(result, font, pen, brush, bounds, format);\n }\n _addProcSet('Text', this._resourceObject);\n };\n PdfGraphics.prototype._buildUpPath = function (points, types) {\n for (var i = 0; i < points.length; i++) {\n var point = points[Number.parseInt(i.toString(), 10)];\n var type = types[Number.parseInt(i.toString(), 10)];\n switch (type & 0xf) {\n case _PathPointType.start:\n this._sw._beginPath(point[0], point[1]);\n break;\n case _PathPointType.bezier:\n var result = this._getBezierPoint(points, types, i); // eslint-disable-line\n i = result.index;\n var first = result.point; // eslint-disable-line\n result = this._getBezierPoint(points, types, i);\n i = result.index;\n var second = result.point; // eslint-disable-line\n this._sw._appendBezierSegment(point[0], point[1], first[0], first[1], second[0], second[1]);\n break;\n case _PathPointType.line:\n this._sw._appendLineSegment(point[0], point[1]);\n break;\n default:\n throw new Error('Incorrect path formation.');\n }\n type = types[Number.parseInt(i.toString(), 10)];\n if ((type & _PathPointType.closePath) === _PathPointType.closePath) {\n this._sw._closePath();\n }\n }\n };\n PdfGraphics.prototype._getBezierPoint = function (points, types, index) {\n if (types[Number.parseInt(index.toString(), 10)] !== _PathPointType.bezier) {\n throw new Error('Malforming path.');\n }\n index++;\n return { 'index': index, 'point': points[Number.parseInt(index.toString(), 10)] };\n };\n PdfGraphics.prototype._initialize = function () {\n this._mediaBoxUpperRightBound = 0;\n this._characterSpacing = -1;\n this._wordSpacing = -1;\n this._textScaling = -100;\n this._textRenderingMode = -1;\n this._graphicsState = [];\n this._clipBounds = [0, 0, this._size[0], this._size[1]];\n this._colorSpaceInitialized = false;\n this._startCutIndex = -1;\n };\n PdfGraphics.prototype._initializeCurrentColorSpace = function () {\n if (!this._colorSpaceInitialized) {\n this._sw._setColorSpace('DeviceRGB', true);\n this._sw._setColorSpace('DeviceRGB', false);\n this._colorSpaceInitialized = true;\n }\n };\n PdfGraphics.prototype._brushControl = function (brush) {\n this._sw._setColor(brush._color, false);\n this._currentBrush = brush;\n };\n PdfGraphics.prototype._penControl = function (pen) {\n this._currentPen = pen;\n this._writePen(pen);\n this._currentPen = pen;\n };\n PdfGraphics.prototype._fontControl = function (font, format) {\n var _this = this;\n var size = font._metrics._getSize(format);\n this._currentFont = font;\n var fontDict;\n var isReference = false;\n var keyName;\n var isNew = true;\n var ref;\n if (this._resourceObject.has('Font')) {\n var obj = this._resourceObject.getRaw('Font'); // eslint-disable-line\n if (obj !== null && typeof obj !== 'undefined') {\n if (obj instanceof _PdfReference) {\n isReference = true;\n fontDict = this._crossReference._fetch(obj);\n }\n else if (obj instanceof _PdfDictionary) {\n fontDict = obj;\n }\n }\n if (typeof fontDict !== 'undefined' && fontDict !== null) {\n isNew = false;\n this._resources.forEach(function (value, key) {\n if (key !== null && typeof key !== 'undefined') {\n var dictionary = _this._crossReference._fetch(key);\n if (dictionary && dictionary === font._dictionary) {\n keyName = value;\n ref = key;\n }\n }\n });\n }\n }\n if (isNew) {\n fontDict = new _PdfDictionary(this._crossReference);\n this._resourceObject.update('Font', fontDict);\n }\n if (typeof keyName === 'undefined') {\n keyName = _PdfName.get(_getNewGuidString());\n if (!ref) {\n ref = this._crossReference._getNextReference();\n }\n if (font._dictionary) {\n this._crossReference._cacheMap.set(ref, font._dictionary);\n fontDict.update(keyName.name, ref);\n this._resources.set(ref, keyName);\n }\n else if (font instanceof PdfTrueTypeFont) {\n var internal = font._fontInternal;\n if (internal && internal._fontDictionary) {\n this._crossReference._cacheMap.set(ref, internal._fontDictionary);\n }\n fontDict.update(keyName.name, ref);\n this._resources.set(ref, keyName);\n }\n }\n if (isReference) {\n this._resourceObject._updated = true;\n }\n if (this._hasResourceReference) {\n this._source._updated = true;\n }\n this._sw._setFont(keyName.name, size);\n };\n PdfGraphics.prototype._stateControl = function (pen, brush, font, format) {\n if (pen || brush) {\n this._initializeCurrentColorSpace();\n }\n if (pen) {\n this._penControl(pen);\n }\n if (brush) {\n this._brushControl(brush);\n }\n if (font) {\n this._fontControl(font, format);\n }\n };\n PdfGraphics.prototype._drawStringLayoutResult = function (result, font, pen, brush, layoutRectangle, format) {\n if (!result._empty) {\n var allowPartialLines = (format && typeof format.lineLimit !== 'undefined' && !format.lineLimit);\n var shouldClip = (typeof format === 'undefined' || (format && typeof format.noClip !== 'undefined'\n && !format.noClip));\n var clipRegion = allowPartialLines && shouldClip;\n var state = void 0;\n if (clipRegion) {\n state = this.save();\n var clipBounds = [layoutRectangle[0], layoutRectangle[1], result._actualSize[0], result._actualSize[1]];\n if (layoutRectangle[2] > 0) {\n clipBounds[2] = layoutRectangle[2];\n }\n if (format.lineAlignment === PdfVerticalAlignment.middle) {\n clipBounds[1] += (layoutRectangle[3] - clipBounds[3]) / 2;\n }\n else if (format.lineAlignment === PdfVerticalAlignment.bottom) {\n clipBounds[1] += (layoutRectangle[3] - clipBounds[3]);\n }\n this.setClip(clipBounds);\n }\n this._applyStringSettings(font, pen, brush, format);\n var textScaling = (typeof format !== 'undefined' && format !== null) ? format.horizontalScalingFactor : 100.0;\n if (textScaling !== this._textScaling) {\n this._sw._setTextScaling(textScaling);\n this._textScaling = textScaling;\n }\n var verticalAlignShift = this._getTextVerticalAlignShift(result._actualSize[1], layoutRectangle[3], format);\n var height = (typeof format === 'undefined' || format === null || format.lineSpacing === 0) ?\n font._metrics._getHeight(format) :\n format.lineSpacing + font._metrics._getHeight(format);\n var script = (format !== null && typeof format !== 'undefined' &&\n format.subSuperScript === PdfSubSuperScript.subScript);\n var shift = 0;\n shift = (script) ? height - (font.height + font._metrics._getDescent(format)) : (height - font._metrics._getAscent(format));\n if (format && format.lineAlignment === PdfVerticalAlignment.bottom) {\n if (layoutRectangle[3] - result._actualSize[1] !== 0 &&\n (layoutRectangle[3] - result._actualSize[1]) < (font._metrics._size / 2) - 1) {\n if (Number.parseFloat(_numberToString(layoutRectangle[3])) <=\n Number.parseFloat(_numberToString(font._metrics._getHeight(format)))) {\n shift = -(height / font._metrics._size);\n }\n }\n }\n var matrix = new _PdfTransformationMatrix();\n matrix._translate(layoutRectangle[0], (-(layoutRectangle[1] + font._metrics._getHeight(format)) -\n (font._metrics._getDescent(format) > 0 ? -font._metrics._getDescent(format) : font._metrics._getDescent(format))) -\n verticalAlignShift);\n this._sw._modifyTM(matrix);\n if (layoutRectangle[3] < font._metrics._size) {\n if ((result._actualSize[1] - layoutRectangle[3]) < (font._metrics._size / 2) - 1) {\n verticalAlignShift = 0;\n }\n }\n if (verticalAlignShift !== 0) {\n if (format !== null && format.lineAlignment === PdfVerticalAlignment.bottom) {\n if (layoutRectangle[3] - result._actualSize[1] !== 0 &&\n (layoutRectangle[3] - result._actualSize[1]) > (font._metrics._size / 2) - 1) {\n verticalAlignShift -= (shift - (height - font._metrics._size)) / 2;\n }\n }\n }\n this._drawLayoutResult(result, font, format, layoutRectangle);\n if (verticalAlignShift !== 0) {\n this._sw._startNextLine(0, -(verticalAlignShift - result._lineHeight));\n }\n _addProcSet('Text', this._resourceObject);\n this._sw._endText();\n this._underlineStrikeoutText(brush, result, font, layoutRectangle, format);\n if (clipRegion) {\n this.restore(state);\n }\n }\n };\n PdfGraphics.prototype._getNextPage = function () {\n var page;\n var pageCount = this._crossReference._document.pageCount;\n if (this._page._pageIndex < pageCount - 2) {\n page = this._crossReference._document.getPage(this._page._pageIndex + 1);\n }\n return page;\n };\n PdfGraphics.prototype._applyStringSettings = function (font, pen, brush, format) {\n var tm = _TextRenderingMode.fill;\n if (pen != null && brush != null) {\n tm = _TextRenderingMode.fillStroke;\n }\n else if (pen) {\n tm = _TextRenderingMode.stroke;\n }\n else if (brush) {\n tm = _TextRenderingMode.fill;\n }\n if (format && format.clipPath) {\n tm |= _TextRenderingMode.clipFlag;\n }\n this._sw._beginText();\n this._stateControl(pen, brush, font, format);\n if (tm !== this._textRenderingMode) {\n this._sw._setTextRenderingMode(tm);\n this._textRenderingMode = tm;\n }\n var cs = (typeof format !== 'undefined' && format !== null) ? format.characterSpacing : 0;\n if (cs !== this._characterSpacing) {\n this._sw._setCharacterSpacing(cs);\n this._characterSpacing = cs;\n }\n var ws = (typeof format !== 'undefined' && format !== null) ? format.wordSpacing : 0;\n if (ws !== this._wordSpacing) {\n this._sw._setWordSpacing(ws);\n this._wordSpacing = ws;\n }\n };\n PdfGraphics.prototype._drawLayoutResult = function (result, font, format, layoutRectangle) {\n var height = (typeof format === 'undefined' || format === null || format.lineSpacing === 0) ?\n font._metrics._getHeight(format) :\n format.lineSpacing + font._metrics._getHeight(format);\n var lines = result._lines;\n var ttfFont = font;\n var unicode = (ttfFont !== null && ttfFont.isUnicode);\n for (var i = 0, len = lines.length; (i < len && i !== this._startCutIndex); i++) {\n var lineInfo = lines[Number.parseInt(i.toString(), 10)];\n var lineWidth = lineInfo._width;\n var hAlignShift = this._getHorizontalAlignShift(lineWidth, layoutRectangle[2], format) +\n this._getLineIndent(lineInfo, format, layoutRectangle[2], (i === 0));\n if (hAlignShift !== 0) {\n this._sw._startNextLine(hAlignShift, 0);\n }\n if (unicode) {\n this._drawUnicodeLine(lineInfo, layoutRectangle[2], font, format);\n }\n else {\n this._drawAsciiLine(lineInfo, layoutRectangle[2], format, font);\n }\n if ((i + 1 !== len)) {\n var vAlignShift = this._getTextVerticalAlignShift(result._actualSize[1], layoutRectangle[3], format);\n var matrix = new _PdfTransformationMatrix();\n var baseline = ((-(layoutRectangle[1] + font._metrics._getHeight(format)) -\n font._metrics._getDescent(format)) -\n vAlignShift) -\n (height * (i + 1));\n matrix._translate(layoutRectangle[0], baseline);\n this._sw._modifyTM(matrix);\n }\n }\n };\n PdfGraphics.prototype._drawUnicodeLine = function (lineInfo, width, font, format) {\n var line = lineInfo._text;\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n var useWordSpace = (format !== null && typeof format !== 'undefined' && (format.wordSpacing !== 0 ||\n format.alignment === PdfTextAlignment.justify));\n var ttfFont = font;\n var wordSpacing = this._justifyLine(lineInfo, width, format, ttfFont);\n var rtlRender = new _RtlRenderer();\n if (rtl || (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.none)) {\n var blocks = [];\n var rightAlign = (format !== null && typeof format !== 'undefined' && format.alignment === PdfTextAlignment.right);\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.none) {\n blocks = rtlRender._layout(line, ttfFont, (format.textDirection === PdfTextDirection.rightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n blocks = rtlRender._layout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n var words = [];\n if (blocks.length > 1) {\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.none) {\n words = rtlRender._splitLayout(line, ttfFont, (format.textDirection === PdfTextDirection.rightToLeft) ? true : false, useWordSpace, format);\n }\n }\n else {\n words = [line];\n }\n this._drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n if (useWordSpace) {\n var result = this._breakUnicodeLine(line, ttfFont, null);\n var blocks = result.tokens;\n var words = result.words;\n this._drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n var token = this._convertToUnicode(line, ttfFont);\n this._sw._showNextLineText(token, true);\n }\n }\n };\n PdfGraphics.prototype._drawUnicodeBlocks = function (blocks, words, font, format, wordSpacing) {\n if (blocks !== null && typeof blocks !== 'undefined' && blocks.length > 0 && words !== null && typeof words !== 'undefined' &&\n words.length > 0 && font !== null && typeof font !== 'undefined') {\n this._sw._startNextLine();\n var x = 0;\n var xShift = 0;\n var firstLineIndent = 0;\n var paragraphIndent = 0;\n try {\n if (format !== null && typeof format !== 'undefined') {\n firstLineIndent = format.firstLineIndent;\n paragraphIndent = format.paragraphIndent;\n format.firstLineIndent = 0;\n format.paragraphIndent = 0;\n }\n var spaceWidth = font._getCharacterWidth(_StringTokenizer._whiteSpace, format) + wordSpacing;\n var characterSpacing = (format != null) ? format.characterSpacing : 0;\n var wordSpace = (format !== null && typeof format !== 'undefined' && wordSpacing === 0) ? format.wordSpacing : 0;\n spaceWidth += characterSpacing + wordSpace;\n for (var i = 0; i < blocks.length; i++) {\n var token = blocks[i]; //eslint-disable-line\n var word = words[i]; //eslint-disable-line\n var tokenWidth = 0;\n if (x !== 0) {\n this._sw._startNextLine(x, 0);\n }\n if (word.length > 0) {\n tokenWidth += font.measureString(word, format)[0];\n tokenWidth += characterSpacing;\n this._sw._showText(token);\n }\n if (i !== blocks.length - 1) {\n x = tokenWidth + spaceWidth;\n xShift += x;\n }\n }\n if (xShift > 0) {\n this._sw._startNextLine(-xShift, 0);\n }\n }\n finally {\n if (format !== null && typeof format !== 'undefined') {\n format.firstLineIndent = firstLineIndent;\n format.paragraphIndent = paragraphIndent;\n }\n }\n }\n };\n PdfGraphics.prototype._breakUnicodeLine = function (line, ttfFont, words) {\n var tokens = [];\n if (line !== null && typeof line !== 'undefined' && line.length > 0) {\n words = line.split(null);\n for (var i = 0; i < words.length; i++) {\n var word = words[i]; //eslint-disable-line\n var token = this._convertToUnicode(word, ttfFont);\n tokens[Number.parseInt(i.toString(), 10)] = token;\n }\n }\n return { tokens: tokens, words: words };\n };\n PdfGraphics.prototype._convertToUnicode = function (text, ttfFont) {\n var token = null;\n if (text !== null && typeof text !== 'undefined' && ttfFont !== null && typeof ttfFont !== 'undefined' &&\n ttfFont._fontInternal instanceof _UnicodeTrueTypeFont) {\n var ttfReader = ttfFont._fontInternal._ttfReader;\n ttfFont._setSymbols(text);\n token = ttfReader._convertString(text);\n var bytes = _stringToUnicodeArray(token);\n token = _bytesToString(bytes);\n }\n return token;\n };\n PdfGraphics.prototype._getTextVerticalAlignShift = function (textHeight, boundsHeight, format) {\n var shift = 0;\n if (boundsHeight >= 0 && (typeof format !== 'undefined' && format !== null) && format.lineAlignment !== PdfVerticalAlignment.top) {\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.middle:\n shift = (boundsHeight - textHeight) / 2;\n break;\n case PdfVerticalAlignment.bottom:\n shift = boundsHeight - textHeight;\n break;\n }\n }\n return shift;\n };\n PdfGraphics.prototype._getHorizontalAlignShift = function (lineWidth, boundsWidth, format) {\n var shift = 0;\n if (boundsWidth >= 0 && (typeof format !== 'undefined' && format !== null) && format.alignment !== PdfTextAlignment.left) {\n switch (format.alignment) {\n case PdfTextAlignment.center:\n shift = (boundsWidth - lineWidth) / 2;\n break;\n case PdfTextAlignment.right:\n shift = boundsWidth - lineWidth;\n break;\n }\n }\n return shift;\n };\n PdfGraphics.prototype._getLineIndent = function (lineInfo, format, width, firstLine) {\n var lineIndent = 0;\n var firstParagraphLine = ((lineInfo._lineType & _LineType.firstParagraphLine) > 0);\n if (format && firstParagraphLine) {\n lineIndent = (firstLine) ? format.firstLineIndent : format.paragraphIndent;\n lineIndent = (width > 0) ? Math.min(width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n PdfGraphics.prototype._drawAsciiLine = function (lineInfo, width, format, font) {\n this._justifyLine(lineInfo, width, format, font);\n var value = '';\n if (lineInfo._text.indexOf('(') !== -1 || lineInfo._text.indexOf(')') !== -1) {\n for (var i = 0; i < lineInfo._text.length; i++) {\n if (lineInfo._text[Number.parseInt(i.toString(), 10)] === '(') {\n value += '\\\\\\('; // eslint-disable-line\n }\n else if (lineInfo._text[Number.parseInt(i.toString(), 10)] === ')') {\n value += '\\\\\\)'; // eslint-disable-line\n }\n else {\n value += lineInfo._text[Number.parseInt(i.toString(), 10)];\n }\n }\n }\n if (value === '') {\n value = lineInfo._text;\n }\n this._sw._showNextLineText('(' + value + ')');\n };\n PdfGraphics.prototype._justifyLine = function (lineInfo, boundsWidth, format, font) {\n var line = lineInfo._text;\n var lineWidth = lineInfo._width;\n var shouldJustify = this._shouldJustify(lineInfo, boundsWidth, format, font);\n var hasWordSpacing = (format && format.wordSpacing !== 0);\n var whitespacesCount = font._getCharacterCount(line, [' ', '\\t']);\n var wordSpace = 0;\n if (shouldJustify) {\n if (hasWordSpacing) {\n lineWidth -= (whitespacesCount * format.wordSpacing);\n }\n wordSpace = (boundsWidth - lineWidth) / whitespacesCount;\n this._sw._setWordSpacing(wordSpace);\n }\n else if (format && format.alignment === PdfTextAlignment.justify) {\n this._sw._setWordSpacing(0);\n }\n return wordSpace;\n };\n PdfGraphics.prototype._shouldJustify = function (lineInfo, boundsWidth, format, font) {\n var line = lineInfo._text;\n var lineWidth = lineInfo._width;\n var justifyStyle = (format && format.alignment === PdfTextAlignment.justify);\n var goodWidth = (boundsWidth >= 0 && lineWidth < boundsWidth);\n var whitespacesCount = font._getCharacterCount(line, [' ', '\\t']);\n var hasSpaces = (whitespacesCount > 0 && line[0] !== ' ');\n var goodLineBreakStyle = ((lineInfo._lineType & _LineType.layoutBreak) > 0);\n return (justifyStyle && goodWidth && hasSpaces && (goodLineBreakStyle || format.alignment === PdfTextAlignment.justify));\n };\n PdfGraphics.prototype._underlineStrikeoutText = function (brush, result, font, layoutRectangle, format) {\n if (font.isUnderline || font.isStrikeout) {\n var linePen = this._createUnderlineStrikeoutPen(brush, font);\n if (typeof linePen !== 'undefined' && linePen !== null) {\n var shift = this._getTextVerticalAlignShift(result._actualSize[1], layoutRectangle[3], format);\n var underlineYOffset = layoutRectangle[1] + shift + font._metrics._getAscent(format) + 1.5 * linePen._width;\n var strikeoutYOffset = layoutRectangle[1] + shift + font._metrics._getHeight(format) / 2 + 1.5 * linePen._width;\n var lines = result._lines;\n for (var i = 0; i < result._lineCount; i++) {\n var lineInfo = lines[Number.parseInt(i.toString(), 10)];\n var lineWidth = lineInfo._width;\n var hShift = this._getHorizontalAlignShift(lineWidth, layoutRectangle[2], format);\n var lineIndent = this._getLineIndent(lineInfo, format, layoutRectangle[2], (i === 0));\n var x1 = layoutRectangle[0] + hShift;\n var x2 = (!this._shouldJustify(lineInfo, layoutRectangle[2], format, font)) ?\n x1 + lineWidth - lineIndent :\n x1 + layoutRectangle[2] - lineIndent;\n if (font.isUnderline) {\n this.drawLine(linePen, x1, underlineYOffset, x2, underlineYOffset);\n underlineYOffset += result._lineHeight;\n }\n if (font.isStrikeout) {\n this.drawLine(linePen, x1, strikeoutYOffset, x2, strikeoutYOffset);\n strikeoutYOffset += result._lineHeight;\n }\n }\n }\n }\n };\n /**\n * Draw line on the page graphics.\n *\n * @param {PdfPen} pen pen value.\n * @param {number} x1 value.\n * @param {number} y1 value.\n * @param {number} x2 value.\n * @param {number} y2 value.\n * @returns {void} draw a line.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * //Create a new pen.\n * let pen: PdfPen = new PdfPen([0, 0, 0], 1);\n * //Draw line on the page graphics.\n * graphics.drawLine(pen, 10, 10, 100, 100);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.drawLine = function (pen, x1, y1, x2, y2) {\n this._stateControl(pen);\n this._sw._beginPath(x1, y1);\n this._sw._appendLineSegment(x2, y2);\n this._sw._strokePath();\n _addProcSet('PDF', this._resourceObject);\n };\n PdfGraphics.prototype._createUnderlineStrikeoutPen = function (brush, font) {\n return new PdfPen(brush._color, font._metrics._size / 20);\n };\n PdfGraphics.prototype._checkCorrectLayoutRectangle = function (textSize, x, y, format) {\n var layoutedRectangle = [x, y, textSize[0], textSize[0]];\n if (format) {\n switch (format.alignment) {\n case PdfTextAlignment.center:\n layoutedRectangle[0] = layoutedRectangle[0] - layoutedRectangle[2] / 2;\n break;\n case PdfTextAlignment.right:\n layoutedRectangle[0] = layoutedRectangle[0] - layoutedRectangle[2];\n break;\n }\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.middle:\n layoutedRectangle[1] = layoutedRectangle[1] - layoutedRectangle[3] / 2;\n break;\n case PdfVerticalAlignment.bottom:\n layoutedRectangle[1] = layoutedRectangle[1] - layoutedRectangle[3];\n break;\n }\n }\n return layoutedRectangle;\n };\n PdfGraphics.prototype._drawGraphicsPath = function (pen, brush, fillMode, needClosing) {\n if (typeof fillMode === 'undefined') {\n fillMode = PdfFillMode.winding;\n }\n var isBrush = (typeof brush !== 'undefined' && brush !== null);\n var isPen = (typeof pen !== 'undefined' && pen !== null);\n var isEvenOdd = fillMode === PdfFillMode.alternate;\n if (isPen && isBrush) {\n if (needClosing) {\n this._sw._closeFillStrokePath(isEvenOdd);\n }\n else {\n this._sw._fillStrokePath(isEvenOdd);\n }\n }\n else if (!isPen && !isBrush) {\n this._sw._endPath();\n }\n else if (isPen) {\n if (needClosing) {\n this._sw._closeStrokePath();\n }\n else {\n this._sw._strokePath();\n }\n }\n else {\n if (needClosing) {\n this._sw._closeFillPath(isEvenOdd);\n }\n else {\n this._sw._fillPath(isEvenOdd);\n }\n }\n };\n PdfGraphics.prototype._initializeCoordinates = function (page) {\n var cbox;\n if (page) {\n var location_1 = [0, 0];\n var needTransformation = false;\n if (page._pageDictionary.has('CropBox') && page._pageDictionary.has('MediaBox')) {\n cbox = page._pageDictionary.getArray('CropBox');\n var mbox = page._pageDictionary.getArray('MediaBox');\n if (cbox[0] === mbox[0] && cbox[1] === mbox[1] && cbox[2] === mbox[2] && cbox[3] === mbox[3]) {\n needTransformation = true;\n }\n if (cbox[0] > 0 && cbox[3] > 0 && mbox[0] < 0 && mbox[1] < 0) {\n this.translateTransform(cbox[0], -cbox[3]);\n location_1[0] = -cbox[0];\n location_1[1] = cbox[3];\n }\n else if (!page._pageDictionary.has('CropBox')) {\n needTransformation = true;\n }\n if (needTransformation) {\n this._sw._writeComment('Change co-ordinate system to left/top.');\n if (this._cropBox) {\n this.translateTransform(this._cropBox[0], -this._cropBox[3]);\n }\n else {\n if (-(page._origin[1]) < this._mediaBoxUpperRightBound || this._mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, -this._size[1]);\n }\n else {\n this.translateTransform(0, -this._mediaBoxUpperRightBound);\n }\n }\n }\n }\n }\n else {\n this._sw._writeComment('Change co-ordinate system to left/top.');\n if (this._mediaBoxUpperRightBound !== (-this._size[1])) {\n if (this._cropBox) {\n cbox = this._cropBox;\n if (cbox[0] > 0 || cbox[1] > 0 || this._size[0] === cbox[2] || this._size[1] === cbox[3]) {\n this.translateTransform(cbox[0], -cbox[3]);\n }\n else {\n if (this._mediaBoxUpperRightBound === this._size[1] || this._mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, -this._size[1]);\n }\n else {\n this.translateTransform(0, -this._mediaBoxUpperRightBound);\n }\n }\n }\n else {\n if (this._mediaBoxUpperRightBound === this._size[1] || this._mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, -this._size[1]);\n }\n else {\n this.translateTransform(0, -this._mediaBoxUpperRightBound);\n }\n }\n }\n }\n };\n /**\n * Represents a scale transform of the graphics.\n *\n * @param {number} scaleX Scale factor in the x direction.\n * @param {number} scaleY Scale factor in the y direction.\n * @returns {void} scale transform.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new font\n * let font: PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // Save the graphics\n * let state: PdfGraphicsState = graphics.save();\n * //Set graphics scale transform.\n * graphics.scaleTransform(0.5, 0.5);\n * //Draws the String.\n * graphics.drawString(\"Hello world!\", font, [10, 20, 100, 200], undefined, new PdfBrush([0, 0, 255]));\n * //Restore the graphics.\n * graphics.restore(state);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.scaleTransform = function (scaleX, scaleY) {\n var matrix = new _PdfTransformationMatrix();\n matrix._scale(scaleX, scaleY);\n this._sw._modifyCtm(matrix);\n this._matrix._multiply(matrix);\n };\n /**\n * Represents a translate transform of the graphics.\n *\n * @param {number} x x-coordinate of the translation.\n * @param {number} y y-coordinate of the translation.\n * @returns {void} translate transform.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new font\n * let font: PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // Save the graphics\n * let state: PdfGraphicsState = graphics.save();\n * //Set graphics translate transform.\n * graphics.translateTransform(100, 100);\n * //Draws the String.\n * graphics.drawString(\"Hello world!\", font, [10, 20, 100, 200], undefined, new PdfBrush([0, 0, 255]));\n * //Restore the graphics.\n * graphics.restore(state);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.translateTransform = function (x, y) {\n var matrix = new _PdfTransformationMatrix();\n matrix._translate(x, -y);\n this._sw._modifyCtm(matrix);\n this._matrix._multiply(matrix);\n };\n /**\n * Represents a rotate transform of the graphics.\n *\n * @param {number} angle Angle of rotation in degrees\n * @returns {void} rotate transform.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new font\n * let font: PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // Save the graphics\n * let state: PdfGraphicsState = graphics.save();\n * //Set graphics rotate transform.\n * graphics.rotateTransform(-90);\n * //Draws the String.\n * graphics.drawString(\"Hello world!\", font, [10, 20, 100, 200], undefined, new PdfBrush([0, 0, 255]));\n * //Restore the graphics.\n * graphics.restore(state);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.rotateTransform = function (angle) {\n var matrix = new _PdfTransformationMatrix();\n matrix._rotate(-angle);\n this._sw._modifyCtm(matrix);\n this._matrix._multiply(matrix);\n };\n /**\n * Represents a clipping region of this graphics.\n *\n * @param {number[]} bounds Rectangle structure that represents the new clip region.\n * @param {PdfFillMode} mode Member of the PdfFillMode enumeration that specifies the filling operation to use.\n * @returns {void} clipping region.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new font\n * let font: PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //Set clip.\n * graphics.setClip([0, 0, 50, 12], PdfFillMode.alternate);\n * //Draws the String.\n * graphics.drawString(\"Hello world!\", font, [0, 0, 100, 200], undefined, new PdfBrush([0, 0, 255]));\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.setClip = function (bounds, mode) {\n if (typeof mode === 'undefined') {\n mode = PdfFillMode.winding;\n }\n this._sw._appendRectangle(bounds[0], bounds[1], bounds[2], bounds[3]);\n this._sw._clipPath(mode === PdfFillMode.alternate);\n };\n /**\n * Represents a transparency of this graphics.\n *\n * @param {number} stroke transparency value.\n * @param {number} fill transparency value.\n * @param {PdfBlendMode} mode blend mode.\n * @returns {void} transparency of this graphics.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new font\n * let font: PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //Set transparency.\n * graphics.setTransparency(0.5, 0.5, PdfBlendMode.multiply);\n * //Draws the String.\n * graphics.drawString(\"Hello world!\", font, [0, 0, 100, 200], undefined, new PdfBrush([0, 0, 255]));\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.setTransparency = function (stroke, fill, mode) {\n if (typeof fill === 'undefined') {\n fill = stroke;\n }\n if (typeof mode === 'undefined') {\n mode = PdfBlendMode.normal;\n }\n if (typeof this._transparencies === 'undefined') {\n this._transparencies = new Map();\n }\n var transparencyKey = 'CA:' + stroke.toString() + '_ca:' + fill.toString() + '_BM:' + mode.toString();\n var transparencyData;\n if (this._transparencies.size > 0) {\n this._transparencies.forEach(function (value, key) {\n if (value === transparencyKey) {\n transparencyData = key;\n }\n });\n }\n if (!transparencyData) {\n transparencyData = new _TransparencyData();\n var transparencyDict = new _PdfDictionary();\n transparencyDict.update('CA', stroke);\n transparencyDict.update('ca', fill);\n transparencyDict.update('BM', _reverseMapBlendMode(mode));\n var ref = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(ref, transparencyDict);\n transparencyData._dictionary = transparencyDict;\n transparencyData._key = transparencyKey;\n transparencyData._name = _PdfName.get(_getNewGuidString());\n transparencyData._reference = ref;\n var dictionary = void 0;\n var isReference = false;\n if (this._resourceObject.has('ExtGState')) {\n var obj = this._resourceObject.getRaw('ExtGState'); // eslint-disable-line\n if (obj !== null && typeof obj !== 'undefined') {\n if (obj instanceof _PdfReference) {\n isReference = true;\n dictionary = this._crossReference._fetch(obj);\n }\n else if (obj instanceof _PdfDictionary) {\n dictionary = obj;\n }\n }\n }\n else {\n dictionary = new _PdfDictionary(this._crossReference);\n this._resourceObject.update('ExtGState', dictionary);\n }\n dictionary.update(transparencyData._name.name, ref);\n if (isReference) {\n this._resourceObject._updated = true;\n }\n if (this._hasResourceReference) {\n this._source._updated = true;\n }\n }\n this._sw._setGraphicsState(transparencyData._name);\n };\n PdfGraphics.prototype._setTransparencyData = function (ref, name) {\n this._resourceMap.set(ref, name);\n var dictionary = this._crossReference._fetch(ref);\n var stroke = 0;\n var fill = 0;\n var mode = 0;\n if (dictionary.has('CA')) {\n stroke = dictionary.get('CA');\n }\n if (dictionary.has('ca')) {\n fill = dictionary.get('ca');\n }\n if (dictionary.has('ca')) {\n fill = dictionary.get('ca');\n }\n if (dictionary.has('BM')) {\n mode = _mapBlendMode(dictionary.get('BM'));\n }\n var tkey = 'CA:' + stroke.toString() + '_ca:' + fill.toString() + '_BM:' + mode.toString();\n var tdata = new _TransparencyData();\n tdata._dictionary = dictionary;\n tdata._key = tkey;\n tdata._name = name;\n tdata._reference = ref;\n this._transparencies.set(tdata, tkey);\n };\n PdfGraphics.prototype._getTranslateTransform = function (x, y, input) {\n input._translate(x, -y);\n return input;\n };\n PdfGraphics.prototype._getScaleTransform = function (x, y, input) {\n if (input === null || typeof input === 'undefined') {\n input = new _PdfTransformationMatrix();\n }\n input._scale(x, y);\n return input;\n };\n return PdfGraphics;\n}());\nexport { PdfGraphics };\nvar _PdfTransformationMatrix = /** @class */ (function () {\n function _PdfTransformationMatrix() {\n this._matrix = new _Matrix(1, 0, 0, 1, 0, 0);\n }\n _PdfTransformationMatrix.prototype._translate = function (x, y) {\n this._matrix._translate(x, y);\n };\n _PdfTransformationMatrix.prototype._scale = function (x, y) {\n this._matrix._elements[0] = x;\n this._matrix._elements[3] = y;\n };\n _PdfTransformationMatrix.prototype._rotate = function (angle) {\n angle = (angle * Math.PI) / 180;\n this._matrix._elements[0] = Math.cos(angle);\n this._matrix._elements[1] = Math.sin(angle);\n this._matrix._elements[2] = -Math.sin(angle);\n this._matrix._elements[3] = Math.cos(angle);\n };\n _PdfTransformationMatrix.prototype._multiply = function (matrix) {\n this._matrix._multiply(matrix._matrix);\n };\n _PdfTransformationMatrix.prototype._toString = function () {\n var builder = '';\n for (var i = 0, len = this._matrix._elements.length; i < len; i++) {\n builder += _floatToString(this._matrix._elements[Number.parseInt(i.toString(), 10)]) + ' ';\n }\n return builder;\n };\n return _PdfTransformationMatrix;\n}());\nexport { _PdfTransformationMatrix };\nvar _Matrix = /** @class */ (function () {\n function _Matrix(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (typeof arg1 === 'undefined') {\n this._elements = [];\n }\n else if (typeof arg1 === 'number') {\n this._elements = [arg1, arg2, arg3, arg4, arg5, arg6];\n }\n else {\n this._elements = arg1;\n }\n }\n Object.defineProperty(_Matrix.prototype, \"_offsetX\", {\n get: function () {\n return this._elements[4];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_Matrix.prototype, \"_offsetY\", {\n get: function () {\n return this._elements[5];\n },\n enumerable: true,\n configurable: true\n });\n _Matrix.prototype._clone = function () {\n return new _Matrix(this._elements.slice());\n };\n _Matrix.prototype._translate = function (x, y) {\n this._elements[4] = x;\n this._elements[5] = y;\n };\n _Matrix.prototype._transform = function (points) {\n var x = points[0];\n var y = points[1];\n var x2 = x * this._elements[0] + y * this._elements[2] + this._offsetX;\n var y2 = x * this._elements[1] + y * this._elements[3] + this._offsetY;\n return [x2, y2];\n };\n _Matrix.prototype._multiply = function (matrix) {\n this._elements = [(this._elements[0] * matrix._elements[0] + this._elements[1] * matrix._elements[2]),\n (this._elements[0] * matrix._elements[1] + this._elements[1] * matrix._elements[3]),\n (this._elements[2] * matrix._elements[0] + this._elements[3] * matrix._elements[2]),\n (this._elements[2] * matrix._elements[1] + this._elements[3] * matrix._elements[3]),\n (this._offsetX * matrix._elements[0] + this._offsetY * matrix._elements[2] + matrix._offsetX),\n (this._offsetX * matrix._elements[1] + this._offsetY * matrix._elements[3] + matrix._offsetY)];\n };\n return _Matrix;\n}());\nexport { _Matrix };\n/**\n * Represents a state of the graphics from a PDF page.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new font\n * let font: PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // Save the graphics\n * let state: PdfGraphicsState = graphics.save();\n * //Set graphics translate transform.\n * graphics.translateTransform(100, 100);\n * //Draws the String.\n * graphics.drawString(\"Hello world!\", font, [10, 20, 100, 200], undefined, new PdfBrush([0, 0, 255]));\n * //Restore the graphics.\n * graphics.restore(state);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfGraphicsState = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfGraphicsState` class.\n *\n * @private\n * @param {PdfGraphics} graphics Graphics.\n * @param {_PdfTransformationMatrix} matrix Matrix.\n *\n */\n function PdfGraphicsState(graphics, matrix) {\n if (graphics) {\n this._g = graphics;\n this._transformationMatrix = matrix;\n }\n this._charSpacing = 0;\n this._wordSpacing = 0;\n this._textScaling = 100;\n this._textRenderingMode = _TextRenderingMode.fill;\n }\n return PdfGraphicsState;\n}());\nexport { PdfGraphicsState };\nvar _TransparencyData = /** @class */ (function () {\n function _TransparencyData() {\n }\n return _TransparencyData;\n}());\nexport var _TextRenderingMode;\n(function (_TextRenderingMode) {\n _TextRenderingMode[_TextRenderingMode[\"fill\"] = 0] = \"fill\";\n _TextRenderingMode[_TextRenderingMode[\"stroke\"] = 1] = \"stroke\";\n _TextRenderingMode[_TextRenderingMode[\"fillStroke\"] = 2] = \"fillStroke\";\n _TextRenderingMode[_TextRenderingMode[\"none\"] = 3] = \"none\";\n _TextRenderingMode[_TextRenderingMode[\"clipFlag\"] = 4] = \"clipFlag\";\n _TextRenderingMode[_TextRenderingMode[\"clipFill\"] = 4] = \"clipFill\";\n _TextRenderingMode[_TextRenderingMode[\"clipStroke\"] = 5] = \"clipStroke\";\n _TextRenderingMode[_TextRenderingMode[\"clipFillStroke\"] = 6] = \"clipFillStroke\";\n _TextRenderingMode[_TextRenderingMode[\"clip\"] = 7] = \"clip\";\n})(_TextRenderingMode || (_TextRenderingMode = {}));\n/**\n * Represents a brush for the PDF page.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new brush\n * let brush: PdfBrush = new PdfBrush([0, 255, 255]);\n * // Draw a rectangle using brush\n * graphics.drawRectangle(10, 10, 100, 100, brush);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBrush = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfBrush` class.\n *\n * @param {number[]} color Color.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new brush\n * let brush: PdfBrush = new PdfBrush([0, 255, 255]);\n * // Draw a rectangle using brush\n * graphics.drawRectangle(10, 10, 100, 100, brush);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n function PdfBrush(color) {\n this._color = typeof color !== 'undefined' ? color : [0, 0, 0];\n }\n return PdfBrush;\n}());\nexport { PdfBrush };\n/**\n * Represents a pen for the PDF page.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new pen\n * let pen: PdfPen = new PdfPen([0, 0, 0], 1);\n * // Draw a rectangle using pen\n * graphics.drawRectangle(150, 50, 50, 50, pen);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPen = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfPen` class.\n *\n * @param {number[]} color Color.\n * @param {number} width Width.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create a new pen\n * let pen: PdfPen = new PdfPen([0, 0, 0], 1);\n * // Draw a rectangle using pen\n * graphics.drawRectangle(150, 50, 50, 50, pen);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n function PdfPen(color, width) {\n this._color = color;\n this._width = width;\n this._dashOffset = 0;\n this._dashPattern = [];\n this._dashStyle = PdfDashStyle.solid;\n this._miterLimit = 0;\n this._lineCap = PdfLineCap.flat;\n this._lineJoin = PdfLineJoin.miter;\n }\n return PdfPen;\n}());\nexport { PdfPen };\nvar _PdfUnitConvertor = /** @class */ (function () {\n function _PdfUnitConvertor() {\n this._horizontalResolution = 96;\n this._proportions = this._updateProportions(this._horizontalResolution);\n }\n _PdfUnitConvertor.prototype._updateProportions = function (pixel) {\n return [pixel / 2.54, pixel / 6.0, 1, pixel / 72.0, pixel, pixel / 300.0, pixel / 25.4];\n };\n _PdfUnitConvertor.prototype._convertUnits = function (value, from, to) {\n return this._convertFromPixels(this._convertToPixels(value, from), to);\n };\n _PdfUnitConvertor.prototype._convertFromPixels = function (value, to) {\n var index = to;\n return (value / this._proportions[Number.parseInt(index.toString(), 10)]);\n };\n _PdfUnitConvertor.prototype._convertToPixels = function (value, from) {\n var index = from;\n return (value * this._proportions[Number.parseInt(index.toString(), 10)]);\n };\n return _PdfUnitConvertor;\n}());\nexport { _PdfUnitConvertor };\n","import { _PdfDictionary, _PdfReference } from './../pdf-primitives';\nimport { _checkReview } from './../utils';\nimport { PdfLineAnnotation, PdfCircleAnnotation, PdfEllipseAnnotation, PdfAngleMeasurementAnnotation, PdfRectangleAnnotation, PdfSquareAnnotation, PdfPolyLineAnnotation, PdfPolygonAnnotation, PdfInkAnnotation, PdfPopupAnnotation, PdfAttachmentAnnotation, Pdf3DAnnotation, PdfFileLinkAnnotation, PdfWatermarkAnnotation, PdfRubberStampAnnotation, PdfSoundAnnotation, PdfFreeTextAnnotation, PdfRedactionAnnotation, PdfRichMediaAnnotation, PdfTextMarkupAnnotation, PdfDocumentLinkAnnotation, PdfTextWebLinkAnnotation, PdfUriAnnotation, PdfComment } from './annotation';\nimport { PdfAnnotationFlag } from './../enumerator';\n/**\n * The class provides methods and properties to handle the collection of `PdfAnnotation`.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access annotation coolection from first page\n * let annotations: PdfAnnotationCollection = document.getPage(0).annotations;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfAnnotationCollection = /** @class */ (function () {\n /**\n * Represents a annotation collection.\n *\n * @private\n * @param {Array<_PdfReference>} array Annotation references.\n * @param {_PdfCrossReference} xref Cross reference object.\n * @param {PdfPage} page PDF page object.\n */\n function PdfAnnotationCollection(array, xref, page) {\n this._isExport = false;\n this._annotations = array;\n this._page = page;\n this._crossReference = xref;\n this._parsedAnnotations = new Map();\n this._comments = [];\n }\n Object.defineProperty(PdfAnnotationCollection.prototype, \"count\", {\n /**\n * Gets the annotation count (Read only).\n *\n * @returns {number} Number of annotations.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the annotation count\n * let count: number = page.annotations.count;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._annotations.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `PdfAnnotation` at the specified index.\n *\n * @param {number} index Field index.\n * @returns {PdfAnnotation} Annotation at the specified index.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfAnnotation = page.annotations.at(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfAnnotationCollection.prototype.at = function (index) {\n if (index < 0 || index >= this._annotations.length) {\n throw Error('Index out of range.');\n }\n if (!this._parsedAnnotations.has(index)) {\n var dictionary = this._annotations[Number.parseInt(index.toString(), 10)];\n if (typeof dictionary !== 'undefined' && dictionary instanceof _PdfReference) {\n dictionary = this._crossReference._fetch(dictionary);\n }\n if (typeof dictionary !== 'undefined' && dictionary instanceof _PdfDictionary) {\n var annotation = this._parseAnnotation(dictionary);\n if (annotation) {\n annotation._ref = this._annotations[Number.parseInt(index.toString(), 10)];\n this._parsedAnnotations.set(index, annotation);\n }\n }\n }\n return this._parsedAnnotations.get(index);\n };\n /**\n * Add a new `PdfAnnotation` into the collection.\n *\n * @param {PdfAnnotation} annotation Annotation to add.\n * @returns {number} Annotation index.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Add a new annotation into the collection\n * page.annotations.add(annotation);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfAnnotationCollection.prototype.add = function (annotation) {\n if (typeof annotation === 'undefined' || annotation === null) {\n throw Error('annotation cannot be null or undefined');\n }\n if (annotation._isLoaded) {\n throw Error('cannot add an existing annotation');\n }\n annotation._initialize(this._page);\n var reference;\n if (typeof annotation._ref !== 'undefined' && annotation._ref._isNew) {\n reference = annotation._ref;\n }\n else {\n reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, annotation._dictionary);\n annotation._ref = reference;\n }\n var index = this._annotations.length;\n this._annotations.push(reference);\n this._parsedAnnotations.set(index, annotation);\n var isAdded = false;\n if (this._page._pageDictionary.has('Annots')) {\n var collection = this._page._pageDictionary.get('Annots');\n if (collection !== null && typeof collection !== 'undefined' && collection.indexOf(reference) === -1) {\n collection.push(reference);\n this._page._pageDictionary.set('Annots', collection);\n isAdded = true;\n }\n }\n if (!isAdded) {\n this._page._pageDictionary.set('Annots', this._annotations);\n }\n this._page._pageDictionary._updated = true;\n if (annotation instanceof PdfComment) {\n this._addCommentsAndReview(annotation, annotation._dictionary.get('F'));\n }\n this._updateCustomAppearanceResource(annotation);\n return index;\n };\n /**\n * Remove an annotation from the collection.\n *\n * @param {PdfAnnotation} annotation Annotation to remove.\n * @returns {void} Nothing.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access first annotation from the PDF page\n * let annotation: PdfAnnotation = page.annotations.at(0);\n * // Remove an annotation from the collection\n * page.annotations.remove(annotation);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfAnnotationCollection.prototype.remove = function (annotation) {\n if (annotation._ref) {\n var index = this._annotations.indexOf(annotation._ref);\n if (index > -1) {\n this.removeAt(index);\n }\n }\n };\n /**\n * Remove an annotation from the collection at the specified index.\n *\n * @param {number} index Annotation index.\n * @returns {void} Nothing.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Remove an annotation from the collection\n * page.annotations.removeAt(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfAnnotationCollection.prototype.removeAt = function (index) {\n if (index < 0 || index >= this._annotations.length) {\n throw Error('Index out of range.');\n }\n var reference = this._annotations[Number.parseInt(index.toString(), 10)];\n if (reference && this._page) {\n var array = this._page._getProperty('Annots');\n var actualIndex = array.indexOf(reference);\n if (actualIndex > -1) {\n array.splice(actualIndex, 1);\n }\n this._page._pageDictionary.set('Annots', array);\n this._page._pageDictionary._updated = true;\n if (this._annotations.indexOf(reference) > -1) {\n this._annotations.splice(index, 1);\n }\n if (this._parsedAnnotations.has(index)) {\n this._parsedAnnotations.delete(index);\n this._reorderParsedAnnotations(index);\n }\n var crossReference = this._page._crossReference;\n if (crossReference && crossReference._cacheMap.has(reference)) {\n crossReference._cacheMap.delete(reference);\n }\n }\n };\n PdfAnnotationCollection.prototype._reorderParsedAnnotations = function (index) {\n var result = new Map();\n this._parsedAnnotations.forEach(function (value, key) {\n if (key > index) {\n result.set(key - 1, value);\n }\n else {\n result.set(key, value);\n }\n });\n this._parsedAnnotations = result;\n };\n PdfAnnotationCollection.prototype._updateCustomAppearanceResource = function (annotation) {\n if (annotation instanceof PdfRubberStampAnnotation && typeof annotation._appearance !== 'undefined') {\n annotation._appearance.normal.graphics._processResources(annotation._crossReference);\n }\n };\n PdfAnnotationCollection.prototype._addCommentsAndReview = function (annotation, flag) {\n this._updateChildReference(annotation, annotation.comments, flag);\n this._updateChildReference(annotation, annotation.reviewHistory, flag);\n };\n PdfAnnotationCollection.prototype._updateChildReference = function (annotation, collection, flag) {\n if (collection && collection.count > 0) {\n if (flag !== 30) {\n for (var i = 0; i < collection.count; i++) {\n var childAnnotation = collection._collection[Number.parseInt(i.toString(), 10)];\n if (childAnnotation && !childAnnotation._dictionary.has('IRT')) {\n if (i === 0 || !collection._isReview) {\n childAnnotation._dictionary.update('IRT', annotation._ref);\n }\n else {\n childAnnotation._dictionary.update('IRT', collection._collection[i - 1]._ref);\n }\n if (collection._isReview) {\n childAnnotation._isReview = true;\n }\n else {\n childAnnotation._isComment = true;\n }\n this.add(childAnnotation);\n }\n }\n }\n else {\n throw new Error('Could not add comments/reviews to the review');\n }\n }\n };\n PdfAnnotationCollection.prototype._parseAnnotation = function (dictionary) {\n var annot;\n if (dictionary.has('Subtype')) {\n var key = dictionary.get('Subtype');\n var size = dictionary.get('Rect');\n if (key) {\n var link = void 0;\n switch (key.name) {\n case 'Line':\n annot = PdfLineAnnotation._load(this._page, dictionary);\n break;\n case 'Circle':\n if (dictionary.has('Measure')) {\n annot = PdfCircleAnnotation._load(this._page, dictionary);\n }\n else {\n var width = size[2] - size[0];\n var height = size[3] - size[1];\n if (width === height) {\n annot = PdfCircleAnnotation._load(this._page, dictionary);\n }\n else {\n annot = PdfEllipseAnnotation._load(this._page, dictionary);\n }\n }\n break;\n case 'Square':\n if (size[2] === size[3]) {\n annot = PdfSquareAnnotation._load(this._page, dictionary);\n }\n else {\n annot = PdfRectangleAnnotation._load(this._page, dictionary);\n }\n break;\n case 'Polygon':\n annot = PdfPolygonAnnotation._load(this._page, dictionary);\n break;\n case 'PolyLine':\n if (dictionary.has('Measure') && dictionary.has('IT')) {\n var type = dictionary.get('IT');\n if (type && type.name === 'PolyLineAngle') {\n annot = PdfAngleMeasurementAnnotation._load(this._page, dictionary);\n }\n }\n if (!annot) {\n annot = PdfPolyLineAnnotation._load(this._page, dictionary);\n }\n break;\n case 'Ink':\n annot = PdfInkAnnotation._load(this._page, dictionary);\n break;\n case 'Popup':\n annot = PdfPopupAnnotation._load(this._page, dictionary);\n break;\n case 'Text':\n annot = PdfPopupAnnotation._load(this._page, dictionary);\n break;\n case 'Link':\n if (dictionary.has('A')) {\n link = dictionary.get('A');\n }\n if (link && link.has('S')) {\n var type = link.get('S').name;\n if (type) {\n var isTextWebLink = this._hasValidBorder(dictionary.getArray('Border'));\n if (type === 'URI') {\n annot = isTextWebLink ?\n PdfTextWebLinkAnnotation._load(this._page, dictionary) :\n this._getLinkAnnotation(dictionary);\n }\n else if (type === 'Launch') {\n annot = PdfFileLinkAnnotation._load(this._page, dictionary);\n }\n else if (type === 'GoToR') {\n annot = this._getLinkAnnotation(dictionary);\n }\n else if (type === 'GoTo') {\n annot = PdfDocumentLinkAnnotation._load(this._page, dictionary);\n }\n }\n }\n else if (key.name === 'Link') {\n annot = PdfDocumentLinkAnnotation._load(this._page, dictionary);\n }\n break;\n case 'FileAttachment':\n annot = PdfAttachmentAnnotation._load(this._page, dictionary);\n break;\n case '3D':\n annot = Pdf3DAnnotation._load(this._page, dictionary);\n break;\n case 'FreeText':\n annot = PdfFreeTextAnnotation._load(this._page, dictionary);\n break;\n case 'Redact':\n annot = PdfRedactionAnnotation._load(this._page, dictionary);\n break;\n case 'RichMedia':\n annot = PdfRichMediaAnnotation._load(this._page, dictionary);\n break;\n case 'Watermark':\n annot = PdfWatermarkAnnotation._load(this._page, dictionary);\n break;\n case 'Stamp':\n annot = PdfRubberStampAnnotation._load(this._page, dictionary);\n break;\n case 'Sound':\n annot = PdfSoundAnnotation._load(this._page, dictionary);\n break;\n case 'Highlight':\n case 'Squiggly':\n case 'StrikeOut':\n case 'Underline':\n annot = PdfTextMarkupAnnotation._load(this._page, dictionary);\n break;\n }\n }\n }\n return annot;\n };\n PdfAnnotationCollection.prototype._getLinkAnnotation = function (dictionary) {\n var annot;\n if (dictionary.has('A')) {\n var remote = dictionary.get('A');\n if (remote && remote.has('S')) {\n var link = remote.get('S');\n if (link && link.name === 'GoToR' && remote.has('F')) {\n annot = PdfFileLinkAnnotation._load(this._page, dictionary);\n }\n else if (link && link.name === 'URI') {\n annot = PdfUriAnnotation._load(this._page, dictionary);\n }\n }\n }\n else {\n annot = PdfUriAnnotation._load(this._page, dictionary);\n }\n return annot;\n };\n PdfAnnotationCollection.prototype._hasValidBorder = function (border) {\n if (typeof border === 'undefined' || border === null) {\n return false;\n }\n for (var i = 0; i < border.length; i++) {\n var val = 0;\n var value = border[Number.parseInt(i.toString(), 10)];\n if (value !== null && typeof value !== 'undefined') {\n val = value;\n }\n if (val > 0) {\n return false;\n }\n }\n return true;\n };\n PdfAnnotationCollection.prototype._doPostProcess = function (isFlatten) {\n for (var i = this.count - 1; i >= 0; i--) {\n var annotation = this.at(i);\n if (annotation) {\n annotation._isExport = this._isExport;\n annotation._doPostProcess(annotation.flatten || isFlatten);\n }\n }\n };\n PdfAnnotationCollection.prototype._reArrange = function (ref, tabIndex, index) {\n if (this._annotations) {\n if (tabIndex > this._annotations.length) {\n tabIndex = 0;\n }\n if (index >= this._annotations.length) {\n index = this._annotations.indexOf(ref);\n }\n var annotationDictionary = this._crossReference.\n _fetch(this._annotations[Number.parseInt(index.toString(), 10)]);\n if (annotationDictionary.has('Parent')) {\n var parentReference = annotationDictionary.getRaw('Parent');\n if ((parentReference && parentReference === ref) || ref ===\n this._annotations[Number.parseInt(index.toString(), 10)]) {\n var temp = this._annotations[Number.parseInt(index.toString(), 10)];\n this._annotations[Number.parseInt(index.toString(), 10)] = this._annotations[Number.parseInt(tabIndex.toString(), 10)];\n this._annotations[Number.parseInt(tabIndex.toString(), 10)] = temp;\n }\n }\n }\n return this._annotations;\n };\n PdfAnnotationCollection.prototype._clear = function () {\n this._annotations = [];\n this._parsedAnnotations = new Map();\n this._comments = [];\n };\n return PdfAnnotationCollection;\n}());\nexport { PdfAnnotationCollection };\n/**\n * Represents the collection of `PdfPopupAnnotation`\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access annotation collection from first page\n * let annotations: PdfRectangleAnnotation = document.getPage(0).annotations;\n * // Gets the comments of annotation\n * let comments: PdfPopupAnnotationCollection = annotation.comments;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPopupAnnotationCollection = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfPopupAnnotationCollection` class\n *\n * @private\n * @param {PdfAnnotation} annotation Annotation reference\n * @param {boolean} isReview Boolean flag to set review\n */\n function PdfPopupAnnotationCollection(annotation, isReview) {\n this._collection = [];\n this._annotation = annotation;\n this._isReview = isReview;\n if (this._annotation._isLoaded || typeof annotation._page !== 'undefined') {\n this._page = annotation._page;\n this._parentDictionary = annotation._dictionary;\n if (this._annotation._isLoaded) {\n this._parseCommentsOrReview();\n }\n }\n }\n Object.defineProperty(PdfPopupAnnotationCollection.prototype, \"count\", {\n /**\n * Gets the annotation count (Read only).\n *\n * @private\n * @returns {number} Number of annotations\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access annotation collection from first page\n * let annotations: PdfRectangleAnnotation = document.getPage(0).annotations;\n * // Gets the comments of annotation\n * let comments: PdfPopupAnnotationCollection = annotation.comments;\n * // Gets the count of comments\n * let count: number = comments.count;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._collection.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the popup annotation at the specified index.\n *\n * @private\n * @param {number} index Index of the annotation\n * @returns {number} Annotation at the specified index\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access annotation collection from first page\n * let annotations: PdfRectangleAnnotation = document.getPage(0).annotations;\n * // Gets the comments of annotation\n * let comments: PdfPopupAnnotationCollection = annotation.comments;\n * // Gets the first comment\n * let comment: PdfPopupAnnotation = comments.at(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfPopupAnnotationCollection.prototype.at = function (index) {\n if (index < 0 || index >= this._collection.length) {\n throw Error('Index out of range.');\n }\n return this._collection[Number.parseInt(index.toString(), 10)];\n };\n /**\n * Add a new popup annotation into the collection\n *\n * @param {PdfPopupAnnotation} annotation Annotation to add\n * @returns {void} Nothing\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Create a new popup annotation\n * const popupAnnotation: PdfPopupAnnotation = new PdfPopupAnnotation('Test popup annotation', 10, 40, 30, 30);\n * popupAnnotation.author = 'Syncfusion';\n * // Add a new popup annotation into the collection\n * annotation.comments.add(popupAnnotation);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfPopupAnnotationCollection.prototype.add = function (annotation) {\n if (this._annotation._dictionary.get('F') === 30) {\n throw new Error('Could not add comments/reviews to the review');\n }\n annotation._dictionary.update('F', ((this._annotation.flags === PdfAnnotationFlag.locked) ? 128 : (this._isReview ? 30 : 28)));\n if (this._annotation && (this._annotation._isLoaded || (this._page && this._annotation._ref))) {\n this._page.annotations.add(annotation);\n var length_1 = this._collection.length;\n if (length_1 === 0 || !this._isReview) {\n annotation._dictionary.update('IRT', this._annotation._ref);\n }\n else {\n annotation._dictionary.update('IRT', this._collection[Number.parseInt((length_1 - 1).toString(), 10)]._ref);\n }\n if (this._isReview) {\n annotation._isReview = true;\n }\n else {\n annotation._isComment = true;\n }\n }\n this._collection.push(annotation);\n };\n /**\n * Remove an annotation from the collection\n *\n * @param {PdfPopupAnnotation} annotation Annotation to remove\n * @returns {void} Nothing\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access annotation collection from first page\n * let annotations: PdfRectangleAnnotation = document.getPage(0).annotations;\n * // Gets the comments of annotation\n * let comments: PdfPopupAnnotationCollection = annotation.comments;\n * // Gets the first comment\n * let comment: PdfPopupAnnotation = comments.at(0);\n * // Remove the comment\n * comments.remove(comment);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfPopupAnnotationCollection.prototype.remove = function (annotation) {\n var index = this._collection.indexOf(annotation);\n if (index > -1) {\n this.removeAt(index);\n }\n };\n /**\n * Remove an annotation from the collection at the specified index\n *\n * @param {number} index Annotation index to remove\n * @returns {void} Nothing\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access annotation collection from first page\n * let annotations: PdfRectangleAnnotation = document.getPage(0).annotations;\n * // Gets the comments of annotation\n * let comments: PdfPopupAnnotationCollection = annotation.comments;\n * // Remove the first comment\n * comments.removeAt(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfPopupAnnotationCollection.prototype.removeAt = function (index) {\n if (index > -1 && index < this._collection.length) {\n var annotation = this._collection[Number.parseInt(index.toString(), 10)];\n if (this._isReview && index < this._collection.length - 1) {\n var nextAnnotation = this._collection[Number.parseInt((index + 1).toString(), 10)];\n var previous = annotation._dictionary._get('IRT');\n nextAnnotation._dictionary.set('IRT', previous);\n nextAnnotation._dictionary._updated = true;\n }\n this._collection.splice(index, 1);\n this._page.annotations.remove(annotation);\n }\n else {\n throw new Error('Index out of range.');\n }\n };\n PdfPopupAnnotationCollection.prototype._parseCommentsOrReview = function () {\n if (this._isReview) {\n this._parseReview();\n }\n else {\n this._parseComments();\n }\n };\n PdfPopupAnnotationCollection.prototype._parseReview = function () {\n var collection = this._page.annotations;\n var map = new Map();\n map.set(this._annotation._ref, this._annotation);\n if (collection._comments && collection._comments.length > 0) {\n var remaining = [];\n for (var i = 0; i < collection._comments.length; i++) {\n var annotation = collection._comments[Number.parseInt(i.toString(), 10)];\n var reference = annotation._dictionary._get('IRT');\n if (annotation._isReview && reference && map.has(reference)) {\n this._collection.push(annotation);\n map.set(annotation._ref, annotation);\n }\n else {\n remaining.push(annotation);\n }\n }\n if (remaining.length > 0) {\n collection._comments = remaining;\n }\n else {\n collection._comments = [];\n }\n }\n else {\n var count = collection.count;\n for (var i = 0; i < count; i++) {\n var annotation = collection.at(i);\n if (annotation && annotation instanceof PdfPopupAnnotation) {\n var dictionary = annotation._dictionary;\n if (annotation._dictionary.has('IRT')) {\n var reference = dictionary._get('IRT');\n if (annotation._isReview && reference && map.has(reference)) {\n this._collection.push(annotation);\n map.set(annotation._ref, annotation);\n }\n else {\n collection._comments.push(annotation);\n }\n }\n }\n }\n }\n map.clear();\n };\n PdfPopupAnnotationCollection.prototype._parseComments = function () {\n var collection = this._page.annotations;\n if (collection._comments && collection._comments.length > 0) {\n var remaining = [];\n for (var i = 0; i < collection._comments.length; i++) {\n var annotation = collection._comments[Number.parseInt(i.toString(), 10)];\n var dictionary = annotation._dictionary;\n var isReview = _checkReview(dictionary);\n var reference = dictionary._get('IRT');\n if (reference && reference === this._annotation._ref && !isReview) {\n this._collection.push(annotation);\n }\n else {\n remaining.push(annotation);\n }\n }\n if (remaining.length > 0) {\n collection._comments = remaining;\n }\n else {\n collection._comments = [];\n }\n }\n else {\n var count = collection.count;\n for (var i = 0; i < count; i++) {\n var annotation = collection.at(i);\n if (annotation && annotation instanceof PdfPopupAnnotation) {\n var dictionary = annotation._dictionary;\n if (annotation._dictionary.has('IRT')) {\n var isReview = _checkReview(dictionary);\n var reference = dictionary._get('IRT');\n if (reference && reference === this._annotation._ref && !isReview) {\n this._collection.push(annotation);\n }\n else {\n collection._comments.push(annotation);\n }\n }\n }\n }\n }\n };\n return PdfPopupAnnotationCollection;\n}());\nexport { PdfPopupAnnotationCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _PdfDictionary, _PdfReference, _PdfName } from './../pdf-primitives';\nimport { PdfRadioButtonListItem, PdfStateItem, PdfWidgetAnnotation, PdfListFieldItem, _PaintParameter, PdfInteractiveBorder } from './../annotations/annotation';\nimport { _getItemValue, _checkField, _removeReferences, _removeDuplicateReference, _updateVisibility, _styleToString, _getStateTemplate, _findPage, _getInheritableProperty, _getNewGuidString, _calculateBounds, _parseColor, _mapHighlightMode, _reverseMapHighlightMode, _mapBorderStyle, _getUpdatedBounds, _setMatrix, _obtainFontDetails } from './../utils';\nimport { _PdfCheckFieldState, PdfFormFieldVisibility, _FieldFlag, PdfAnnotationFlag, PdfTextAlignment, PdfHighlightMode, PdfBorderStyle, PdfRotationAngle, PdfCheckBoxStyle, PdfFormFieldsTabOrder, PdfFillMode } from './../enumerator';\nimport { PdfTemplate } from './../graphics/pdf-template';\nimport { PdfStringFormat, PdfVerticalAlignment } from './../fonts/pdf-string-format';\nimport { _TextRenderingMode, PdfBrush, PdfPen } from './../graphics/pdf-graphics';\nimport { PdfFontFamily, PdfStandardFont, PdfFont, PdfFontStyle, PdfTrueTypeFont } from './../fonts/pdf-standard-font';\nimport { _PdfPath } from './../graphics/pdf-path';\nimport { PdfAnnotationCollection } from '../annotations/annotation-collection';\n/**\n * `PdfField` class represents the base class for form field objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the count of the loaded field items\n * let count: number = field.itemsCount;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfField = /** @class */ (function () {\n function PdfField() {\n this._visible = true;\n this._isTransparentBackColor = false;\n this._defaultFont = new PdfStandardFont(PdfFontFamily.helvetica, 8);\n this._appearanceFont = new PdfStandardFont(PdfFontFamily.helvetica, 10, PdfFontStyle.regular);\n this._defaultItemFont = new PdfStandardFont(PdfFontFamily.timesRoman, 12);\n this._flatten = false;\n this._hasData = false;\n this._circleCaptionFont = new PdfStandardFont(PdfFontFamily.helvetica, 8, PdfFontStyle.regular);\n }\n Object.defineProperty(PdfField.prototype, \"itemsCount\", {\n /**\n * Gets the count of the loaded field items (Read only).\n *\n * @returns {number} Items count.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the count of the loaded field items\n * let count: number = field.itemsCount;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._kids ? this._kids.length : 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"form\", {\n /**\n * Gets the form object of the field (Read only).\n *\n * @returns {PdfForm} Form.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the form object of the field\n * let form: PdfForm = field.form;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._form;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"name\", {\n /**\n * Gets the name of the field (Read only).\n *\n * @returns {string} Field name.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the name of the field\n * let name: string = field.name;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._name === 'undefined') {\n var names = _getInheritableProperty(this._dictionary, 'T', false, false, 'Parent');\n if (names && names.length > 0) {\n if (names.length === 1) {\n this._name = names[0];\n }\n else {\n this._name = names.join('.');\n }\n }\n }\n return this._name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"actualName\", {\n /**\n * Gets the actual name of the field (Read only).\n *\n * @private\n * @returns {string} Actual name.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the actual name of the field\n * let name: string = field.actualName;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._actualName === 'undefined' && this._dictionary.has('T')) {\n var name_1 = this._dictionary.get('T');\n if (name_1 && typeof name_1 === 'string') {\n this._actualName = name_1;\n }\n }\n return this._actualName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"mappingName\", {\n /**\n * Gets the mapping name to be used when exporting interactive form field data from the document.\n *\n * @returns {string} Mapping name.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the mapping name of the field\n * let name: string = field.mappingName;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._mappingName === 'undefined' && this._dictionary.has('TM')) {\n var name_2 = this._dictionary.get('TM');\n if (name_2 && typeof name_2 === 'string') {\n this._mappingName = name_2;\n }\n }\n return this._mappingName;\n },\n /**\n * Sets the mapping name to be used when exporting interactive form field data from the document.\n *\n * @param {string} value Mapping name.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets the mapping name of the field\n * field.mappingName = ‘Author’;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof this.mappingName === 'undefined' || this._mappingName !== value) {\n this._mappingName = value;\n this._dictionary.update('TM', value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"toolTip\", {\n /**\n * Gets the tool tip of the form field.\n *\n * @returns {string} Tooltip.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the tool tip value of the field\n * let toolTip: string = field.toolTip;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._alternateName === 'undefined' && this._dictionary.has('TU')) {\n var name_3 = this._dictionary.get('TU');\n if (name_3 && typeof name_3 === 'string') {\n this._alternateName = name_3;\n }\n }\n return this._alternateName;\n },\n /**\n * Sets the tool tip of the form field.\n *\n * @param {string} value Tooltip.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets the tool tip value of the field\n * field.toolTip = ‘Author of the document’;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof this.toolTip === 'undefined' || this._alternateName !== value) {\n this._alternateName = value;\n this._dictionary.update('TU', value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"visibility\", {\n /**\n * Gets the form field visibility.\n *\n * @returns {PdfFormFieldVisibility} Field visibility option.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the form field visibility.\n * let visibility: PdfFormFieldVisibility = field.visibility;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var value;\n if (this._isLoaded) {\n value = PdfFormFieldVisibility.visible;\n var widget = this.itemAt(this._defaultIndex);\n var flag = PdfAnnotationFlag.default;\n if (widget && widget._hasFlags) {\n flag = widget.flags;\n }\n else if (this._dictionary.has('F')) {\n flag = this._dictionary.get('F');\n }\n else {\n return PdfFormFieldVisibility.visibleNotPrintable;\n }\n var flagValue = 3;\n if ((flag & PdfAnnotationFlag.hidden) === PdfAnnotationFlag.hidden) {\n flagValue = 0;\n }\n if ((flag & PdfAnnotationFlag.noView) === PdfAnnotationFlag.noView) {\n flagValue = 1;\n }\n if ((flag & PdfAnnotationFlag.print) !== PdfAnnotationFlag.print) {\n flagValue &= 2;\n }\n switch (flagValue) {\n case 0:\n value = PdfFormFieldVisibility.hidden;\n break;\n case 1:\n value = PdfFormFieldVisibility.hiddenPrintable;\n break;\n case 2:\n value = PdfFormFieldVisibility.visibleNotPrintable;\n break;\n case 3:\n value = PdfFormFieldVisibility.visible;\n break;\n }\n }\n else {\n if (typeof this._visibility === 'undefined') {\n this._visibility = PdfFormFieldVisibility.visible;\n }\n value = this._visibility;\n }\n return value;\n },\n /**\n * Sets the form field visibility.\n *\n * @param {PdfFormFieldVisibility} value visibility.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets the form field visibility.\n * field.visibility = PdfFormFieldVisibility.visible;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n var widget = this.itemAt(this._defaultIndex);\n if (this._isLoaded) {\n if (widget && (!widget._hasFlags || this.visibility !== value)) {\n _updateVisibility(widget._dictionary, value);\n this._dictionary._updated = true;\n }\n else if (!this._dictionary.has('F') || this.visibility !== value) {\n _updateVisibility(this._dictionary, value);\n this._dictionary._updated = true;\n }\n }\n else {\n if (this.visibility !== value) {\n this._visibility = value;\n switch (value) {\n case PdfFormFieldVisibility.hidden:\n widget.flags = PdfAnnotationFlag.hidden;\n break;\n case PdfFormFieldVisibility.hiddenPrintable:\n widget.flags = (PdfAnnotationFlag.noView | PdfAnnotationFlag.print);\n break;\n case PdfFormFieldVisibility.visible:\n widget.flags = PdfAnnotationFlag.print;\n break;\n case PdfFormFieldVisibility.visibleNotPrintable:\n widget.flags = PdfAnnotationFlag.default;\n break;\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"bounds\", {\n /**\n * Gets the bounds.\n *\n * @returns {{ x: number, y: number, width: number, height: number }} Bounds.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the bounds of list box field.\n * let bounds: {x: number, y: number, width: number, height: number} = field.bounds;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var value;\n var widget = this.itemAt(this._defaultIndex);\n if (widget) {\n widget._page = this.page;\n }\n if (widget && widget.bounds) {\n value = widget.bounds;\n }\n else if (this._dictionary.has('Rect')) {\n value = _calculateBounds(this._dictionary, this.page);\n }\n if (typeof value === 'undefined' || value === null) {\n value = { x: 0, y: 0, width: 0, height: 0 };\n }\n return value;\n },\n /**\n * Sets the bounds.\n *\n * @param {{ x: number, y: number, width: number, height: number }} value bounds.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets the bounds.\n * field.bounds = {x: 10, y: 10, width: 100, height: 20};\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value.x === 0 && value.y === 0 && value.width === 0 && value.height === 0) {\n throw new Error('Cannot set empty bounds');\n }\n var widget = this.itemAt(this._defaultIndex);\n if (this._isLoaded) {\n if (typeof widget === 'undefined' || this._dictionary.has('Rect')) {\n this._dictionary.update('Rect', _getUpdatedBounds([value.x, value.y, value.width, value.height], this.page));\n }\n else {\n widget._page = this.page;\n widget.bounds = value;\n }\n }\n else {\n widget._page = this.page;\n widget.bounds = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"rotate\", {\n /**\n * Gets the rotation angle of the field.\n *\n * @returns {number} angle.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the rotation angle of the form field.\n * let rotate: number = field.rotate;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var widget = this.itemAt(this._defaultIndex);\n var angle;\n if (widget && typeof widget.rotate !== 'undefined') {\n angle = widget.rotate;\n }\n else if (this._dictionary.has('R')) {\n angle = this._dictionary.get('R');\n }\n else {\n for (var i = 0; i < this._kidsCount && typeof angle === 'undefined'; i++) {\n if (i !== this._defaultIndex) {\n widget = this.itemAt(i);\n if (widget && typeof widget.rotate !== 'undefined') {\n angle = widget.rotate;\n }\n }\n }\n }\n if (typeof angle === 'undefined') {\n angle = 0;\n }\n return angle;\n },\n /**\n * Sets the rotation angle of the field.\n *\n * @param {number} value rotation angle.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets the rotation angle.\n * field.rotate = 90;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n var widget = this.itemAt(this._defaultIndex);\n if (widget) {\n widget.rotate = value;\n }\n else if (!this._dictionary.has('R') || this._dictionary.get('R') !== value) {\n this._dictionary.update('R', value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"color\", {\n /**\n * Gets the fore color of the field.\n *\n * @returns {number[]} R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the fore color of the field.\n * let color: number[] = field.color;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var value;\n var widget = this.itemAt(this._defaultIndex);\n if (widget && widget.color) {\n value = widget.color;\n }\n else if (this._defaultAppearance) {\n value = this._da.color;\n }\n return value;\n },\n /**\n * Sets the fore color of the field.\n *\n * @param {number[]} value R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets the fore color of the field.\n * field.color = [255, 0, 0];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n var widget = this.itemAt(this._defaultIndex);\n if (widget && widget.color) {\n widget.color = value;\n }\n else {\n var isNew = false;\n if (!this._defaultAppearance) {\n this._da = new _PdfDefaultAppearance('');\n isNew = true;\n }\n if (isNew || this._da.color !== value) {\n this._da.color = value;\n this._dictionary.update('DA', this._da.toString());\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"backColor\", {\n /**\n * Gets the background color of the field.\n *\n * @returns {number[]} R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the background color of the field.\n * let backColor: number[] = field.backColor;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._parseBackColor(false);\n },\n /**\n * Sets the background color of the field.\n *\n * @param {number[]} value R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets the background color of the field.\n * field.backColor = [255, 0, 0];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._updateBackColor(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"borderColor\", {\n /**\n * Gets the border color of the field.\n *\n * @returns {number[]} R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the border color of the field.\n * let borderColor: number[] = field.borderColor;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var value;\n var widget = this.itemAt(this._defaultIndex);\n if (widget && widget.borderColor) {\n value = widget.borderColor;\n }\n else if (this._mkDictionary) {\n var dictionary = this._mkDictionary;\n if (dictionary && dictionary.has('BC')) {\n var colorArray = dictionary.getArray('BC');\n if (colorArray) {\n value = _parseColor(colorArray);\n }\n }\n }\n if (typeof value === 'undefined' || value === null) {\n value = [0, 0, 0];\n }\n return value;\n },\n /**\n * Sets the border color of the field.\n *\n * @param {number[]} value R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets the border color of the field.\n * field.borderColor = [255, 0, 0];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n var widget = this.itemAt(this._defaultIndex);\n if (widget && widget.borderColor !== value) {\n widget.borderColor = value;\n }\n else {\n var mkDict = this._mkDictionary;\n if (typeof mkDict === 'undefined') {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.update('BC', [Number.parseFloat((value[0] / 255).toFixed(3)),\n Number.parseFloat((value[1] / 255).toFixed(3)),\n Number.parseFloat((value[2] / 255).toFixed(3))]);\n this._dictionary.update('MK', dictionary);\n }\n else if (!mkDict.has('BC') || _parseColor(mkDict.getArray('BC')) !== value) {\n mkDict.update('BC', [Number.parseFloat((value[0] / 255).toFixed(3)),\n Number.parseFloat((value[1] / 255).toFixed(3)),\n Number.parseFloat((value[2] / 255).toFixed(3))]);\n this._dictionary._updated = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"readOnly\", {\n /**\n * Gets a value indicating whether read only.\n *\n * @returns {boolean} read only or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets a value indicating whether read only.\n * let readOnly: boolean = field.readOnly;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return (this._fieldFlags & _FieldFlag.readOnly) !== 0;\n },\n /**\n * Sets a value indicating whether read only.\n *\n * @param {boolean} value read only or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets a value indicating whether read only.\n * field.readOnly = true;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value) {\n this._fieldFlags |= _FieldFlag.readOnly;\n }\n else {\n if (this._fieldFlags === _FieldFlag.readOnly) {\n this._fieldFlags |= _FieldFlag.default;\n }\n this._fieldFlags &= ~_FieldFlag.readOnly;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"required\", {\n /**\n * Gets a value indicating whether the field is required.\n *\n * @returns {boolean} required or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets a value indicating whether the field is required.\n * let required: boolean = field.required;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return (this._fieldFlags & _FieldFlag.required) !== 0;\n },\n /**\n * Sets a value indicating whether the field is required.\n *\n * @param {boolean} value required or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets a value indicating whether the field is required.\n * field.required = true;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value) {\n this._fieldFlags |= _FieldFlag.required;\n }\n else {\n this._fieldFlags &= ~_FieldFlag.required;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"visible\", {\n /**\n * Gets a value indicating the visibility of the field (Read only).\n *\n * @returns {boolean} visible or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets a value indicating the visibility of the field.\n * let visible: boolean = field.visible;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._isLoaded) {\n var widget = this.itemAt(this._defaultIndex);\n var flag = PdfAnnotationFlag.default;\n if (widget && widget._hasFlags) {\n flag = widget.flags;\n }\n else if (this._dictionary.has('F')) {\n flag = this._dictionary.get('F');\n }\n return flag !== PdfAnnotationFlag.hidden;\n }\n else {\n return this._visible;\n }\n },\n /**\n * Sets a value indicating the visibility of the field.\n * Only applicable for newly created PDF form fields.\n *\n * @param {boolean} value or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets a value indicating the visibility of the field\n * field.visible = true;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (!this._isLoaded && this._visible !== value && !value) {\n this._visible = value;\n this.itemAt(this._defaultIndex).flags = PdfAnnotationFlag.hidden;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"border\", {\n /**\n * Gets the width, style and dash of the border of the field.\n *\n * @returns {PdfInteractiveBorder} Border properties.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the width, style and dash of the border of the field.\n * let border: PdfInteractiveBorder = field.border;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var widget = this.itemAt(this._defaultIndex);\n var value;\n if (widget && widget._dictionary.has('BS')) {\n value = widget.border;\n }\n else {\n value = new PdfInteractiveBorder();\n if (!(this instanceof PdfButtonField)) {\n value._width = 0;\n }\n value._dictionary = this._dictionary;\n if (this._dictionary.has('BS')) {\n var border = this._dictionary.get('BS');\n if (border) {\n if (border.has('W')) {\n value._width = border.get('W');\n }\n if (border.has('S')) {\n var borderStyle = border.get('S');\n if (borderStyle) {\n switch (borderStyle.name) {\n case 'D':\n value._style = PdfBorderStyle.dashed;\n break;\n case 'B':\n value._style = PdfBorderStyle.beveled;\n break;\n case 'I':\n value._style = PdfBorderStyle.inset;\n break;\n case 'U':\n value._style = PdfBorderStyle.underline;\n break;\n default:\n value._style = PdfBorderStyle.solid;\n break;\n }\n }\n }\n if (border.has('D')) {\n value._dash = border.getArray('D');\n }\n }\n }\n }\n return value;\n },\n /**\n * Sets the width, style and dash of the border of the field.\n *\n * @param {PdfInteractiveBorder} value Border properties.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets the width, style and dash of the border of the field.\n * field.border = new PdfInteractiveBorder(2, PdfBorderStyle.solid);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n var widget = this.itemAt(this._defaultIndex);\n if (widget) {\n this._updateBorder(widget._dictionary, value);\n }\n else {\n this._updateBorder(this._dictionary, value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"rotationAngle\", {\n /**\n * Gets the rotation of the field (Read only).\n *\n * @returns {PdfRotationAngle} Rotation angle.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the rotation of the field.\n * let rotate: PdfRotationAngle = field.rotationAngle;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var value = PdfRotationAngle.angle0;\n var widget = this.itemAt(this._defaultIndex);\n if (widget) {\n value = widget.rotationAngle;\n }\n return value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"export\", {\n /**\n * Gets a value indicating whether the field is allow to export data or not.\n *\n * @returns {boolean} Allow to export data or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets a value indicating whether the field is allow to export data or not.\n * let export: boolean = field.export;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return !((this._fieldFlags & _FieldFlag.noExport) !== 0);\n },\n /**\n * Sets a value indicating whether the field is allow to export data or not.\n *\n * @param {boolean} value Allow to export data or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets a value indicating whether the field is allow to export data or not.\n * field.export = true;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value) {\n this._fieldFlags &= ~_FieldFlag.noExport;\n }\n else {\n this._fieldFlags |= _FieldFlag.noExport;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"tabIndex\", {\n /**\n * Gets the tab index of annotation in current page.\n *\n * @returns {number} tab index.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the tab index of annotation in current page.\n * let tabIndex: number = field.tabIndex;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var annots;\n if (this.page._pageDictionary.has('Annots')) {\n annots = this.page._pageDictionary.get('Annots');\n }\n if (this._kids && this._kids.length > 0) {\n for (var i = 0; i < this._kids.length; i++) {\n var reference = this._kids[Number.parseInt(i.toString(), 10)];\n if (reference) {\n if (this.page._pageDictionary.has('Annots')) {\n if (annots) {\n var index1 = annots.indexOf(reference);\n if (index1 !== -1) {\n return index1;\n }\n }\n }\n }\n }\n }\n else if (this._dictionary.has('Subtype') && this._dictionary.get('Subtype').name === 'Widget') {\n if (this._ref) {\n if (annots) {\n var index1 = annots.indexOf(this._ref);\n if (index1 !== -1) {\n return index1;\n }\n }\n }\n }\n return -1;\n },\n /**\n * Sets the tab index of a annotation in the current page.\n *\n * @param {number} value index.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets the tab index of annotation in current page.\n * field.tabIndex = 5;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._tabIndex = value;\n var page = this.page;\n if (page && (this.form._tabOrder === PdfFormFieldsTabOrder.manual || page.tabOrder === PdfFormFieldsTabOrder.manual)) {\n if (page._pageDictionary.has('Annots')) {\n var annots = page._pageDictionary.get('Annots');\n var annotationCollection = new PdfAnnotationCollection(annots, this._crossReference, page);\n page._annotations = annotationCollection;\n var index = annots.indexOf(this._ref);\n if (index < 0) {\n index = this._annotationIndex;\n }\n var annotations = page.annotations._reArrange(this._ref, this._tabIndex, index);\n page._pageDictionary.update('Annots', annotations);\n page._pageDictionary._updated = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"page\", {\n /**\n * Gets the page object of the form field (Read only).\n *\n * @returns {PdfPage} Page object.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the page object of the form field.\n * let page: PdfPage = field.page;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (!this._page) {\n var widget = this.itemAt(this._defaultIndex);\n var dictionary = (typeof widget !== 'undefined') ? widget._dictionary : this._dictionary;\n var document_1;\n if (this._crossReference) {\n document_1 = this._crossReference._document;\n }\n var page = void 0;\n if (dictionary.has('P')) {\n var ref = dictionary.getRaw('P');\n if (ref && document_1) {\n for (var i = 0; i < document_1.pageCount; i++) {\n var entry = document_1.getPage(i);\n if (entry && entry._ref === ref) {\n page = entry;\n break;\n }\n }\n }\n }\n if (!page && document_1) {\n var widgetRef = (typeof widget !== 'undefined') ? widget._ref : this._ref;\n if (!page && widgetRef) {\n page = _findPage(document_1, widgetRef);\n }\n if (!page && this._kids && this._kids.length > 0) {\n for (var i = 0; i < this._kids.length; i++) {\n page = _findPage(document_1, this._kids[Number.parseInt(i.toString(), 10)]);\n if (page) {\n break;\n }\n }\n }\n }\n this._page = page;\n }\n return this._page;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"flatten\", {\n /**\n * Gets the boolean flag indicating whether the form field have been flattened or not.\n *\n * @returns {boolean} Flatten.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first field\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the boolean flag indicating whether the form field have been flattened or not.\n * let flatten: boolean = field.flatten;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._flatten;\n },\n /**\n * Sets the boolean flag indicating whether the form field have been flattened or not.\n *\n * @param {boolean} value Flatten.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first field\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets the boolean flag indicating whether the form field have been flattened or not.\n * field.flatten = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._flatten = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"_grayBrush\", {\n get: function () {\n if (!this._gray) {\n this._gray = new PdfBrush([128, 128, 128]);\n }\n return this._gray;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"_silverBrush\", {\n get: function () {\n if (!this._silver) {\n this._silver = new PdfBrush([198, 198, 198]);\n }\n return this._silver;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"_whiteBrush\", {\n get: function () {\n if (!this._white) {\n this._white = new PdfBrush([255, 255, 255]);\n }\n return this._white;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"_blackBrush\", {\n get: function () {\n if (!this._black) {\n this._black = new PdfBrush([0, 0, 0]);\n }\n return this._black;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"_kidsCount\", {\n get: function () {\n return this._kids ? this._kids.length : 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"_hasBackColor\", {\n get: function () {\n if (this._isLoaded) {\n var mkDictionary = this._mkDictionary;\n if (!mkDictionary) {\n var item = this.itemAt(this._defaultIndex);\n if (item && item._dictionary.has('MK')) {\n mkDictionary = item._dictionary.get('MK');\n }\n }\n return (mkDictionary && mkDictionary.has('BG'));\n }\n else {\n return !this._isTransparentBackColor;\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfField.prototype._parseBackColor = function (hasTransparency) {\n var value;\n if ((!hasTransparency) || ((this._isLoaded && this._hasBackColor) || (!this._isLoaded && !this._isTransparentBackColor))) {\n var widget = this.itemAt(this._defaultIndex);\n if (widget && widget.backColor) {\n value = widget.backColor;\n }\n else if (this._mkDictionary) {\n var mkDict = this._mkDictionary;\n if (mkDict && mkDict.has('BG')) {\n var bgArray = mkDict.getArray('BG');\n if (bgArray) {\n value = _parseColor(bgArray);\n }\n }\n }\n if (typeof value === 'undefined' || value === null) {\n value = [255, 255, 255];\n }\n }\n return value;\n };\n PdfField.prototype._updateBackColor = function (value, hasTransparency) {\n if (hasTransparency === void 0) { hasTransparency = false; }\n if (hasTransparency && value.length === 4 && value[3] !== 255) {\n this._isTransparentBackColor = true;\n if (this._dictionary.has('BG')) {\n delete this._dictionary._map.BG;\n }\n var mkDictionary = this._mkDictionary;\n if (mkDictionary && mkDictionary.has('BG')) {\n delete mkDictionary._map.BG;\n this._dictionary._updated = true;\n }\n var item = this.itemAt(this._defaultIndex);\n if (item) {\n item.backColor = value;\n }\n }\n else {\n this._isTransparentBackColor = false;\n var widget = this.itemAt(this._defaultIndex);\n if (widget && widget.backColor !== value) {\n widget.backColor = value;\n }\n else {\n var mkDictionary = this._mkDictionary;\n if (typeof mkDictionary === 'undefined') {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.update('BG', [Number.parseFloat((value[0] / 255).toFixed(3)),\n Number.parseFloat((value[1] / 255).toFixed(3)),\n Number.parseFloat((value[2] / 255).toFixed(3))]);\n this._dictionary.update('MK', dictionary);\n }\n else if (!mkDictionary.has('BG') || _parseColor(mkDictionary.getArray('BG')) !== value) {\n mkDictionary.update('BG', [Number.parseFloat((value[0] / 255).toFixed(3)),\n Number.parseFloat((value[1] / 255).toFixed(3)),\n Number.parseFloat((value[2] / 255).toFixed(3))]);\n this._dictionary._updated = true;\n }\n }\n }\n };\n /**\n * Gets the field item as `PdfWidgetAnnotation` at the specified index.\n *\n * @param {number} index Item index.\n * @returns {PdfWidgetAnnotation} Loaded PDF form field item at the specified index.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the loaded form field\n * let field: PdfField = document.form.fieldAt(0);\n * // Access the count of the field items.\n * let count: number = field.count;\n * // Access the first item\n * let item: PdfWidgetAnnotation = field.itemAt(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfField.prototype.itemAt = function (index) {\n var item;\n if (index >= 0 && index < this._kidsCount) {\n if (this._parsedItems.has(index)) {\n item = this._parsedItems.get(index);\n }\n else {\n var dictionary = void 0;\n var reference = this._kids[Number.parseInt(index.toString(), 10)];\n if (reference && reference instanceof _PdfReference) {\n dictionary = this._crossReference._fetch(reference);\n }\n if (dictionary) {\n item = PdfWidgetAnnotation._load(dictionary, this._crossReference);\n item._ref = reference;\n this._parsedItems.set(index, item);\n }\n }\n }\n return item;\n };\n /**\n * Sets the flag to indicate the new appearance creation.\n *\n * @param {boolean} value Set appearance.\n * @returns {void} Nothing.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Set boolean flag to create a new appearance stream for form fields.\n * document.form.fieldAt(0).setAppearance(true);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfField.prototype.setAppearance = function (value) {\n this._setAppearance = value;\n };\n /**\n * Gets the value associated with the specified key.\n *\n * @param {string} name Key.\n * @returns {string} Value associated with the key.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the value associated with the key 'Author'.\n * let value: string = document.form.fieldAt(0).getValue('Author');\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfField.prototype.getValue = function (name) {\n var value;\n if (this._dictionary.has(name)) {\n var element = this._dictionary.get(name); // eslint-disable-line\n if (element instanceof _PdfName) {\n value = element.name;\n }\n else if (typeof element === 'string') {\n value = element;\n }\n else {\n throw new Error('PdfException: ' + name + ' is not found');\n }\n }\n else {\n throw new Error('PdfException: ' + name + ' is not found');\n }\n return value;\n };\n /**\n * Sets the value associated with the specified key.\n *\n * @param {string} name Key.\n * @param {string} value Value associated with the key..\n * @returns {void} Nothing.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Set custom value\n * field.setValue('Author', 'John');\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfField.prototype.setValue = function (name, value) {\n if (name && name !== '' && value && value !== '') {\n this._dictionary.update(name, value);\n }\n };\n /**\n * Remove the form field item from the specified index.\n *\n * @param {number} index Item index to remove.\n * @returns {void} Nothing.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Remove the first item of the form field\n * field.removeItemAt(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfField.prototype.removeItemAt = function (index) {\n if (this._dictionary.has('Kids') && this.itemsCount > 0) {\n var item = this.itemAt(index);\n if (item && item._ref) {\n var page = item._getPage();\n if (page) {\n page._removeAnnotation(item._ref);\n }\n this._kids.splice(index, 1);\n this._dictionary.set('Kids', this._kids);\n this._dictionary._updated = true;\n this._parsedItems.delete(index);\n if (this._parsedItems.size > 0) {\n var parsedItems_1 = new Map();\n this._parsedItems.forEach(function (value, key) {\n if (key > index) {\n parsedItems_1.set(key - 1, value);\n }\n else {\n parsedItems_1.set(key, value);\n }\n });\n this._parsedItems = parsedItems_1;\n }\n }\n }\n };\n /**\n * Remove the specified form field item.\n *\n * @param {PdfWidgetAnnotation} item Item to remove.\n * @returns {void} Nothing.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Remove the first item of the form field\n * field.removeItem(field.itemAt(0));\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfField.prototype.removeItem = function (item) {\n if (item && item._ref) {\n var index = this._kids.indexOf(item._ref);\n if (index !== -1) {\n this.removeItemAt(index);\n }\n }\n };\n Object.defineProperty(PdfField.prototype, \"_fieldFlags\", {\n get: function () {\n if (typeof this._flags === 'undefined') {\n this._flags = _getInheritableProperty(this._dictionary, 'Ff', false, true, 'Parent');\n if (typeof this._flags === 'undefined') {\n this._flags = _FieldFlag.default;\n }\n }\n return this._flags;\n },\n set: function (value) {\n if (this._fieldFlags !== value) {\n this._flags = value;\n this._dictionary.update('Ff', value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"_defaultAppearance\", {\n get: function () {\n if (typeof this._da === 'undefined') {\n var da = _getInheritableProperty(this._dictionary, 'DA', false, true, 'Parent');\n if (da && da !== '') {\n this._da = new _PdfDefaultAppearance(da);\n }\n }\n return this._da;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfField.prototype, \"_mkDictionary\", {\n get: function () {\n var value;\n if (this._dictionary.has('MK')) {\n value = this._dictionary.get('MK');\n }\n return value;\n },\n enumerable: true,\n configurable: true\n });\n PdfField.prototype._updateBorder = function (dictionary, value) {\n var bs;\n var isNew = false;\n if (dictionary.has('BS')) {\n bs = dictionary.get('BS');\n }\n else {\n bs = new _PdfDictionary(this._crossReference);\n dictionary.update('BS', bs);\n isNew = true;\n }\n if (typeof value.width !== 'undefined') {\n bs.update('W', value.width);\n dictionary._updated = true;\n }\n else if (isNew) {\n bs.update('W', 0);\n }\n if (typeof value.style !== 'undefined') {\n bs.update('S', _mapBorderStyle(value.style));\n dictionary._updated = true;\n }\n else if (isNew) {\n bs.update('S', _mapBorderStyle(PdfBorderStyle.solid));\n }\n if (typeof value.dash !== 'undefined') {\n bs.update('D', value.dash);\n dictionary._updated = true;\n }\n };\n PdfField.prototype._checkFieldFlag = function (dictionary) {\n var flag = dictionary.get('F');\n return (typeof flag !== 'undefined' && flag === 6);\n };\n PdfField.prototype._initializeFont = function (font) {\n this._font = font;\n var document = this._crossReference._document;\n var resource;\n if (document) {\n if (document.form._dictionary.has('DR')) {\n resource = document.form._dictionary.get('DR');\n }\n else {\n resource = new _PdfDictionary(this._crossReference);\n }\n }\n var fontDict;\n var isReference = false;\n if (resource.has('Font')) {\n var obj = resource.getRaw('Font'); // eslint-disable-line\n if (obj && obj instanceof _PdfReference) {\n isReference = true;\n fontDict = this._crossReference._fetch(obj);\n }\n else if (obj instanceof _PdfDictionary) {\n fontDict = obj;\n }\n }\n if (!fontDict) {\n fontDict = new _PdfDictionary(this._crossReference);\n resource.update('Font', fontDict);\n }\n var keyName = _PdfName.get(_getNewGuidString());\n var reference = this._crossReference._getNextReference();\n if (font instanceof PdfTrueTypeFont) {\n if (this._font._pdfFontInternals) {\n this._crossReference._cacheMap.set(reference, this._font._pdfFontInternals);\n }\n }\n else if (this._font._dictionary) {\n this._crossReference._cacheMap.set(reference, this._font._dictionary);\n }\n fontDict.update(keyName.name, reference);\n resource._updated = true;\n document.form._dictionary.update('DR', resource);\n document.form._dictionary._updated = true;\n this._fontName = keyName.name;\n var defaultAppearance = new _PdfDefaultAppearance();\n defaultAppearance.fontName = this._fontName;\n defaultAppearance.fontSize = this._font._size;\n defaultAppearance.color = this.color ? this.color : [0, 0, 0];\n if (this._dictionary.has('Kids')) {\n var widgetDictionary = this._dictionary.getArray('Kids');\n for (var i = 0; i < widgetDictionary.length; i++) {\n var dictionary = widgetDictionary[Number.parseInt(i.toString(), 10)];\n dictionary.update('DA', defaultAppearance.toString());\n }\n }\n else if (this._dictionary.has('Subtype') && this._dictionary.get('Subtype').name === 'Widget') {\n this._dictionary.update('DA', defaultAppearance.toString());\n }\n if (isReference) {\n resource._updated = true;\n }\n };\n PdfField.prototype._drawRectangularControl = function (g, parameter) {\n g.drawRectangle(parameter.bounds[0], parameter.bounds[1], parameter.bounds[2], parameter.bounds[3], parameter.backBrush);\n this._drawBorder(g, parameter.bounds, parameter.borderPen, parameter.borderStyle, parameter.borderWidth);\n switch (parameter.borderStyle) {\n case PdfBorderStyle.inset:\n this._drawLeftTopShadow(g, parameter.bounds, parameter.borderWidth, this._grayBrush);\n this._drawRightBottomShadow(g, parameter.bounds, parameter.borderWidth, this._silverBrush);\n break;\n case PdfBorderStyle.beveled:\n this._drawLeftTopShadow(g, parameter.bounds, parameter.borderWidth, this._whiteBrush);\n this._drawRightBottomShadow(g, parameter.bounds, parameter.borderWidth, parameter.shadowBrush);\n break;\n }\n };\n PdfField.prototype._drawBorder = function (g, bounds, borderPen, style, borderWidth) {\n if (borderPen && borderWidth > 0) {\n if (style === PdfBorderStyle.underline) {\n g.drawLine(borderPen, bounds[0], bounds[0] + bounds[3] - borderWidth / 2, bounds[0] + bounds[2], bounds[1] + bounds[3] - borderWidth / 2);\n }\n else {\n g.drawRectangle(bounds[0] + borderWidth / 2, bounds[1] + borderWidth / 2, bounds[2] - borderWidth, bounds[3] - borderWidth, borderPen);\n }\n }\n };\n PdfField.prototype._drawLeftTopShadow = function (g, bounds, width, brush) {\n var path = new _PdfPath();\n var points = [];\n points.push([bounds[0] + width, bounds[1] + width]);\n points.push([bounds[0] + width, (bounds[1] + bounds[3]) - width]);\n points.push([bounds[0] + 2 * width, (bounds[1] + bounds[3]) - 2 * width]);\n points.push([bounds[0] + 2 * width, bounds[1] + 2 * width]);\n points.push([(bounds[0] + bounds[2]) - 2 * width, bounds[1] + 2 * width]);\n points.push([(bounds[0] + bounds[2]) - width, bounds[1] + width]);\n path._addPolygon(points);\n g._drawPath(path, null, brush);\n };\n PdfField.prototype._drawRightBottomShadow = function (g, bounds, width, brush) {\n var path = new _PdfPath();\n var points = [];\n points.push([bounds[0] + width, (bounds[1] + bounds[3]) - width]);\n points.push([bounds[0] + 2 * width, (bounds[1] + bounds[3]) - 2 * width]);\n points.push([(bounds[0] + bounds[2]) - 2 * width, (bounds[1] + bounds[3]) - 2 * width]);\n points.push([(bounds[0] + bounds[2]) - 2 * width, bounds[1] + 2 * width]);\n points.push([bounds[0] + bounds[2] - width, bounds[1] + width]);\n points.push([(bounds[0] + bounds[2]) - width, (bounds[1] + bounds[3]) - width]);\n path._addPolygon(points);\n g._drawPath(path, null, brush);\n };\n PdfField.prototype._drawRadioButton = function (graphics, parameter, checkSymbol, state) {\n if (checkSymbol === 'l') {\n var bounds = parameter.bounds;\n switch (state) {\n case _PdfCheckFieldState.checked:\n case _PdfCheckFieldState.unchecked:\n graphics.drawEllipse(bounds[0], bounds[1], bounds[2], bounds[3], parameter.backBrush);\n break;\n case _PdfCheckFieldState.pressedChecked:\n case _PdfCheckFieldState.pressedUnchecked:\n if ((parameter.borderStyle === PdfBorderStyle.beveled) || (parameter.borderStyle === PdfBorderStyle.underline)) {\n graphics.drawEllipse(bounds[0], bounds[1], bounds[2], bounds[3], parameter.backBrush);\n }\n else {\n graphics.drawEllipse(bounds[0], bounds[1], bounds[2], bounds[3], parameter.shadowBrush);\n }\n break;\n }\n this._drawRoundBorder(graphics, bounds, parameter.borderPen, parameter.borderWidth);\n this._drawRoundShadow(graphics, parameter, state);\n if (state === _PdfCheckFieldState.checked || state === _PdfCheckFieldState.pressedChecked) {\n var outward = [bounds[0] + parameter.borderWidth / 2,\n bounds[1] + parameter.borderWidth / 2,\n bounds[2] - parameter.borderWidth,\n bounds[3] - parameter.borderWidth];\n graphics.drawEllipse(outward[0] + (outward[2] / 4), outward[1] + (outward[2] / 4), outward[2] - (outward[2] / 2), outward[3] - (outward[2] / 2), parameter.foreBrush);\n }\n }\n else {\n this._drawCheckBox(graphics, parameter, checkSymbol, state);\n }\n };\n PdfField.prototype._drawRoundBorder = function (graphics, bounds, borderPen, borderWidth) {\n if (bounds[0] !== 0 || bounds[1] !== 0 || bounds[2] !== 0 || bounds[3] !== 0) {\n graphics.drawEllipse(bounds[0] + borderWidth / 2, bounds[1] + borderWidth / 2, bounds[2] - borderWidth, bounds[3] - borderWidth, borderPen);\n }\n };\n PdfField.prototype._drawRoundShadow = function (graphics, parameter, state) {\n var borderWidth = parameter.borderWidth;\n var inflateValue = -1.5 * borderWidth;\n var x = parameter.bounds[0] + inflateValue;\n var y = parameter.bounds[1] + inflateValue;\n var width = parameter.bounds[2] + (2 * inflateValue);\n var height = parameter.bounds[3] + (2 * inflateValue);\n var shadowBrush = parameter.shadowBrush;\n if (shadowBrush) {\n var shadowColor = shadowBrush._color;\n var leftTop = void 0;\n var rightBottom = void 0;\n switch (parameter.borderStyle) {\n case PdfBorderStyle.beveled:\n switch (state) {\n case _PdfCheckFieldState.pressedChecked:\n case _PdfCheckFieldState.pressedUnchecked:\n leftTop = new PdfPen(shadowColor, borderWidth);\n rightBottom = new PdfPen([255, 255, 255], borderWidth);\n break;\n case _PdfCheckFieldState.checked:\n case _PdfCheckFieldState.unchecked:\n leftTop = new PdfPen([255, 255, 255], borderWidth);\n rightBottom = new PdfPen(shadowColor, borderWidth);\n break;\n }\n break;\n case PdfBorderStyle.inset:\n switch (state) {\n case _PdfCheckFieldState.pressedChecked:\n case _PdfCheckFieldState.pressedUnchecked:\n leftTop = new PdfPen([0, 0, 0], borderWidth);\n rightBottom = new PdfPen([0, 0, 0], borderWidth);\n break;\n case _PdfCheckFieldState.checked:\n case _PdfCheckFieldState.unchecked:\n leftTop = new PdfPen([128, 128, 128], borderWidth);\n rightBottom = new PdfPen([192, 192, 192], borderWidth);\n break;\n }\n break;\n }\n if (leftTop && rightBottom) {\n graphics.drawArc(x, y, width, height, 135, 180, leftTop);\n graphics.drawArc(x, y, width, height, -45, 180, rightBottom);\n }\n }\n };\n PdfField.prototype._drawCheckBox = function (graphics, parameter, checkSymbol, state, font) {\n switch (state) {\n case _PdfCheckFieldState.unchecked:\n case _PdfCheckFieldState.checked:\n if (parameter.borderPen) {\n graphics.drawRectangle(parameter.bounds[0], parameter.bounds[1], parameter.bounds[2], parameter.bounds[3], parameter.backBrush);\n }\n break;\n case _PdfCheckFieldState.pressedChecked:\n case _PdfCheckFieldState.pressedUnchecked:\n if ((parameter.borderStyle === PdfBorderStyle.beveled) ||\n (parameter.borderStyle === PdfBorderStyle.underline)) {\n if (parameter.borderPen) {\n graphics.drawRectangle(parameter.bounds[0], parameter.bounds[1], parameter.bounds[2], parameter.bounds[3], parameter.backBrush);\n }\n }\n else if (parameter.borderPen) {\n graphics.drawRectangle(parameter.bounds[0], parameter.bounds[1], parameter.bounds[2], parameter.bounds[3], parameter.shadowBrush);\n }\n break;\n }\n var rectangle = parameter.bounds;\n this._drawBorder(graphics, parameter.bounds, parameter.borderPen, parameter.borderStyle, parameter.borderWidth);\n if ((state === _PdfCheckFieldState.pressedChecked) || (state === _PdfCheckFieldState.pressedUnchecked)) {\n switch (parameter.borderStyle) {\n case PdfBorderStyle.inset:\n this._drawLeftTopShadow(graphics, parameter.bounds, parameter.borderWidth, this._blackBrush);\n this._drawRightBottomShadow(graphics, parameter.bounds, parameter.borderWidth, this._whiteBrush);\n break;\n case PdfBorderStyle.beveled:\n this._drawLeftTopShadow(graphics, parameter.bounds, parameter.borderWidth, parameter.shadowBrush);\n this._drawRightBottomShadow(graphics, parameter.bounds, parameter.borderWidth, this._whiteBrush);\n break;\n }\n }\n else {\n switch (parameter.borderStyle) {\n case PdfBorderStyle.inset:\n this._drawLeftTopShadow(graphics, parameter.bounds, parameter.borderWidth, this._grayBrush);\n this._drawRightBottomShadow(graphics, parameter.bounds, parameter.borderWidth, this._silverBrush);\n break;\n case PdfBorderStyle.beveled:\n this._drawLeftTopShadow(graphics, parameter.bounds, parameter.borderWidth, this._whiteBrush);\n this._drawRightBottomShadow(graphics, parameter.bounds, parameter.borderWidth, parameter.shadowBrush);\n break;\n }\n }\n var yOffset = 0;\n var size = 0;\n switch (state) {\n case _PdfCheckFieldState.pressedChecked:\n case _PdfCheckFieldState.checked:\n if (!font) {\n var extraBorder = parameter.borderStyle === PdfBorderStyle.beveled ||\n parameter.borderStyle === PdfBorderStyle.inset;\n var borderWidth = parameter.borderWidth;\n if (extraBorder) {\n borderWidth *= 2;\n }\n var xPosition = Math.max((extraBorder ? 2 * parameter.borderWidth : parameter.borderWidth), 1);\n var xOffset = Math.min(borderWidth, xPosition);\n size = (parameter.bounds[2] > parameter.bounds[3]) ? parameter.bounds[3] : parameter.bounds[2];\n var fontSize = size - 2 * xOffset;\n font = new PdfStandardFont(PdfFontFamily.zapfDingbats, fontSize);\n if (parameter.bounds[2] > parameter.bounds[3]) {\n yOffset = ((parameter.bounds[3] - font._metrics._getHeight()) / 2);\n }\n }\n else {\n font = new PdfStandardFont(PdfFontFamily.zapfDingbats, font._size);\n }\n if (size === 0) {\n size = parameter.bounds[3];\n }\n if (parameter.pageRotationAngle !== PdfRotationAngle.angle0 || parameter.rotationAngle > 0) {\n var state_1 = graphics.save();\n var size_1 = graphics._size;\n if (parameter.pageRotationAngle !== PdfRotationAngle.angle0) {\n if (parameter.pageRotationAngle === PdfRotationAngle.angle90) {\n graphics.translateTransform(size_1[1], 0);\n graphics.rotateTransform(90);\n var y = size_1[1] - (rectangle[0] + rectangle[2]);\n var x = rectangle[1];\n rectangle = [x, y, rectangle[3], rectangle[2]];\n }\n else if (parameter.pageRotationAngle === PdfRotationAngle.angle180) {\n graphics.translateTransform(size_1[0], size_1[1]);\n graphics.rotateTransform(-180);\n var x = size_1[0] - (rectangle[0] + rectangle[2]);\n var y = size_1[1] - (rectangle[1] + rectangle[3]);\n rectangle = [x, y, rectangle[2], rectangle[3]];\n }\n else if (parameter.pageRotationAngle === PdfRotationAngle.angle270) {\n graphics.translateTransform(0, size_1[0]);\n graphics.rotateTransform(270);\n var x = size_1[0] - (rectangle[1] + rectangle[3]);\n var y = rectangle[0];\n rectangle = [x, y, rectangle[3], rectangle[2]];\n }\n }\n if (parameter.rotationAngle > 0) {\n if (parameter.rotationAngle === 90) {\n if (parameter.pageRotationAngle === PdfRotationAngle.angle90) {\n graphics.translateTransform(0, size_1[1]);\n graphics.rotateTransform(-90);\n var x = size_1[1] - (rectangle[1] + rectangle[3]);\n var y = rectangle[0];\n rectangle = [x, y, rectangle[3], rectangle[2]];\n }\n else {\n if (rectangle[2] > rectangle[3]) {\n graphics.translateTransform(0, size_1[1]);\n graphics.rotateTransform(-90);\n rectangle = [parameter.bounds[0], parameter.bounds[1], parameter.bounds[2], parameter.bounds[3]];\n }\n else {\n var z = rectangle[0];\n rectangle[0] = -(rectangle[1] + rectangle[3]);\n rectangle[1] = z;\n var height = rectangle[3];\n rectangle[3] = rectangle[2] > font._metrics._getHeight() ? rectangle[2] : font._metrics._getHeight();\n rectangle[2] = height;\n graphics.rotateTransform(-90);\n rectangle = [rectangle[0], rectangle[1], rectangle[2], rectangle[3]];\n }\n }\n }\n else if (parameter.rotationAngle === 270) {\n graphics.translateTransform(size_1[0], 0);\n graphics.rotateTransform(-270);\n var x = rectangle[1];\n var y = size_1[0] - (rectangle[0] + rectangle[2]);\n rectangle = [x, y, rectangle[3], rectangle[2]];\n }\n else if (parameter.rotationAngle === 180) {\n graphics.translateTransform(size_1[0], size_1[1]);\n graphics.rotateTransform(-180);\n var x = size_1[0] - (rectangle[0] + rectangle[2]);\n var y = size_1[1] - (rectangle[1] + rectangle[3]);\n rectangle = [x, y, rectangle[2], rectangle[3]];\n }\n graphics.drawString(checkSymbol, font, [rectangle[0], rectangle[1] - yOffset, rectangle[2], rectangle[3]], null, parameter.foreBrush, new PdfStringFormat(PdfTextAlignment.center, PdfVerticalAlignment.middle));\n graphics.restore(state_1);\n }\n else {\n graphics.drawString(checkSymbol, font, [rectangle[0], rectangle[1] - yOffset, rectangle[2], rectangle[3]], null, parameter.foreBrush, new PdfStringFormat(PdfTextAlignment.center, PdfVerticalAlignment.middle));\n }\n break;\n }\n }\n };\n PdfField.prototype._addToKid = function (item) {\n if (this._dictionary.has('Kids')) {\n this._kids = this._dictionary.get('Kids');\n }\n else {\n this._kids = [];\n this._dictionary.update('Kids', this._kids);\n this._parsedItems = new Map();\n }\n var currentIndex = this._kidsCount;\n item._index = currentIndex;\n this._kids.push(item._ref);\n this._parsedItems.set(currentIndex, item);\n };\n PdfField.prototype._drawTemplate = function (template, page, bounds) {\n if (template && page) {\n var graphics = page.graphics;\n graphics.save();\n if (page.rotation === PdfRotationAngle.angle90) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(90);\n }\n else if (page.rotation === PdfRotationAngle.angle180) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(-180);\n }\n else if (page.rotation === PdfRotationAngle.angle270) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(270);\n }\n graphics._sw._setTextRenderingMode(_TextRenderingMode.fill);\n graphics._drawTemplate(template, bounds);\n graphics.restore();\n }\n };\n PdfField.prototype._addToOptions = function (item, field) {\n if (field instanceof PdfListBoxField) {\n field._listValues.push(item._text);\n }\n field._options.push([item._value, item._text]);\n field._dictionary.set('Opt', field._options);\n field._dictionary._updated = true;\n if (!item._isFont && item._pdfFont) {\n this._initializeFont(item._pdfFont);\n }\n };\n PdfField.prototype._addAppearance = function (dictionary, template, key) {\n var appearance = new _PdfDictionary();\n if (dictionary.has('AP')) {\n appearance = dictionary.get('AP');\n _removeDuplicateReference(dictionary.get('AP'), this._crossReference, key);\n }\n else {\n appearance = new _PdfDictionary(this._crossReference);\n dictionary.update('AP', appearance);\n }\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, template._content);\n appearance.update(key, reference);\n };\n PdfField.prototype._rotateTextBox = function (rect, size, angle) {\n var rectangle = [0, 0, 0, 0];\n if (angle === PdfRotationAngle.angle180) {\n rectangle = [size[0] - (rect[0] + rect[2]), size[1] - (rect[1] + rect[3]), rect[2], rect[3]];\n }\n else if (angle === PdfRotationAngle.angle270) {\n rectangle = [rect[1], size[0] - (rect[0] + rect[2]), rect[3], rect[2]];\n }\n else if (angle === PdfRotationAngle.angle90) {\n rectangle = [size[1] - (rect[1] + rect[3]), rect[0], rect[3], rect[2]];\n }\n return rectangle;\n };\n PdfField.prototype._checkIndex = function (value, length) {\n if (value < 0 || (value !== 0 && value >= length)) {\n throw Error('Index out of range.');\n }\n };\n PdfField.prototype._getAppearanceStateValue = function () {\n var value;\n if (this._dictionary.has('Kids')) {\n for (var i = 0; i < this._kidsCount; i++) {\n var item = this.itemAt(i);\n if (item && item._dictionary && item._dictionary.has('AS')) {\n var state = item._dictionary.get('AS');\n if (state && state.name !== 'Off') {\n value = state.name;\n break;\n }\n }\n }\n }\n else if (this._dictionary.has('AS')) {\n var state = this._dictionary.get('AS');\n if (state && state.name !== 'Off') {\n value = state.name;\n }\n }\n return value;\n };\n PdfField.prototype._getTextAlignment = function () {\n if (this._textAlignment === null || typeof this._textAlignment === 'undefined') {\n if (this._isLoaded) {\n var widget = this.itemAt(this._defaultIndex);\n if (widget && widget._dictionary && widget._dictionary.has('Q')) {\n this._textAlignment = widget._dictionary.get('Q');\n }\n else if (this._dictionary.has('Q')) {\n this._textAlignment = this._dictionary.get('Q');\n }\n else {\n this._textAlignment = PdfTextAlignment.left;\n }\n }\n else {\n this._textAlignment = PdfTextAlignment.left;\n }\n }\n return this._textAlignment;\n };\n PdfField.prototype._setTextAlignment = function (value) {\n var widget = this.itemAt(this._defaultIndex);\n if (this._isLoaded && !this.readOnly) {\n if (widget && widget._dictionary) {\n widget._dictionary.update('Q', value);\n }\n else {\n this._dictionary.update('Q', value);\n }\n }\n if (!this._isLoaded && this._textAlignment !== value) {\n if (widget && widget._dictionary) {\n widget._dictionary.update('Q', value);\n }\n else if (this._dictionary) {\n this._dictionary.update('Q', value);\n }\n }\n this._textAlignment = value;\n this._stringFormat = new PdfStringFormat(value, PdfVerticalAlignment.middle);\n };\n PdfField.prototype._parseItems = function () {\n var collection = [];\n for (var i = 0; i < this.itemsCount; i++) {\n collection.push(this.itemAt(i));\n }\n return collection;\n };\n return PdfField;\n}());\nexport { PdfField };\n/**\n * `PdfTextBoxField` class represents the text box field objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfTextBoxField = /** @class */ (function (_super) {\n __extends(PdfTextBoxField, _super);\n function PdfTextBoxField(page, name, bounds) {\n var _this = _super.call(this) || this;\n _this._autoResizeText = false;\n if (page && name && bounds) {\n _this._initialize(page, name, bounds);\n }\n return _this;\n }\n /**\n * Parse an existing text box field.\n *\n * @private\n * @param {PdfForm} form Form object.\n * @param {_PdfDictionary} dictionary Field dictionary.\n * @param {_PdfCrossReference} crossReference Cross reference object.\n * @param {_PdfReference} reference Field reference.\n * @returns {PdfTextBoxField} Text box field.\n */\n PdfTextBoxField._load = function (form, dictionary, crossReference, reference) {\n var field = new PdfTextBoxField();\n field._isLoaded = true;\n field._form = form;\n field._dictionary = dictionary;\n field._crossReference = crossReference;\n field._ref = reference;\n if (field._dictionary.has('Kids')) {\n field._kids = field._dictionary.get('Kids');\n }\n field._defaultIndex = 0;\n field._parsedItems = new Map();\n return field;\n };\n Object.defineProperty(PdfTextBoxField.prototype, \"text\", {\n /**\n * Gets the value of the text box field.\n *\n * @returns {string} Text.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Gets the text value from text box field\n * let text: string = field.text;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._text === 'undefined') {\n if (this._isLoaded) {\n var text = _getInheritableProperty(this._dictionary, 'V', false, true, 'Parent');\n if (text) {\n this._text = text;\n }\n else {\n var widget = this.itemAt(this._defaultIndex);\n if (widget) {\n text = widget._dictionary.get('V');\n if (text) {\n this._text = text;\n }\n }\n }\n }\n else {\n this._text = '';\n }\n }\n return this._text;\n },\n /**\n * Sets the value of the text box field.\n *\n * @param {string} value Text.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Sets the text value to text box field\n * field.text = ‘Syncfusion’;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._isLoaded) {\n if (!this.readOnly) {\n if (!(this._dictionary.has('V') && this._dictionary.get('V') === value)) {\n this._dictionary.update('V', value);\n }\n var widget = this.itemAt(this._defaultIndex);\n if (widget && !(widget._dictionary.has('V') && widget._dictionary.get('V') === value)) {\n widget._dictionary.update('V', value);\n }\n }\n }\n else if (this._text !== value) {\n this._dictionary.update('V', value);\n this._text = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextBoxField.prototype, \"textAlignment\", {\n /**\n * Gets the text alignment in a text box.\n *\n * @returns {PdfTextAlignment} Text alignment.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Gets the text alignment from text box field\n * let alignment: PdfTextAlignment = field.textAlignment;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._getTextAlignment();\n },\n /**\n * Sets the text alignment in a text box.\n *\n * @param {PdfTextAlignment} value Text alignment.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Sets the text alignment of form field as center\n * field.textAlignment = PdfTextAlignment.center;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._textAlignment !== value) {\n this._setTextAlignment(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextBoxField.prototype, \"defaultValue\", {\n /**\n * Gets the default value of the field.\n *\n * @returns {string} Default value.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Gets the default value from the text box field\n * let value: string = field.defaultValue;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._defaultValue === 'undefined') {\n var text = _getInheritableProperty(this._dictionary, 'DV', false, true, 'Parent');\n if (text) {\n this._defaultValue = text;\n }\n }\n return this._defaultValue;\n },\n /**\n * Sets the default value of the field.\n *\n * @param {string} value Default value.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Sets the default value of the text box field\n * field.defaultValue = 'Syncfusion';\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this.defaultValue) {\n this._dictionary.update('DV', value);\n this._defaultValue = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextBoxField.prototype, \"multiLine\", {\n /**\n * Gets a value indicating whether this `PdfTextBoxField` is multiline.\n *\n * @returns {boolean} multiline.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Gets a value indicating whether this `PdfTextBoxField` is multiline.\n * let multiLine: boolean = field.multiLine;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return (this._fieldFlags & _FieldFlag.multiLine) !== 0;\n },\n /**\n * Sets a value indicating whether this `PdfTextBoxField` is multiline.\n *\n * @param {boolean} value multiLine or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Sets a value indicating whether this `PdfTextBoxField` is multiline.\n * field.multiLine = false;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value) {\n this._fieldFlags |= _FieldFlag.multiLine;\n }\n else {\n this._fieldFlags &= ~_FieldFlag.multiLine;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextBoxField.prototype, \"password\", {\n /**\n * Gets a value indicating whether this `PdfTextBoxField` is password.\n *\n * @returns {boolean} password.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Gets a value indicating whether this `PdfTextBoxField` is password.\n * let password: boolean = field.password;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return (this._fieldFlags & _FieldFlag.password) !== 0;\n },\n /**\n * Sets a value indicating whether this `PdfTextBoxField` is password.\n *\n * @param {boolean} value password or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Sets a value indicating whether this `PdfTextBoxField` is password.\n * field.password = false;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value) {\n this._fieldFlags |= _FieldFlag.password;\n }\n else {\n this._fieldFlags &= ~_FieldFlag.password;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextBoxField.prototype, \"scrollable\", {\n /**\n * Gets a value indicating whether this `PdfTextBoxField` is scrollable.\n *\n * @returns {boolean} scrollable.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Gets a value indicating whether this `PdfTextBoxField` is scrollable.\n * let scrollable: boolean = field.scrollable;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return !((this._fieldFlags & _FieldFlag.doNotScroll) !== 0);\n },\n /**\n * Sets a value indicating whether this `PdfTextBoxField` is scrollable.\n *\n * @param {boolean} value scrollable or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Sets a value indicating whether this `PdfTextBoxField` is scrollable.\n * field.scrollable = false;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value) {\n this._fieldFlags &= ~_FieldFlag.doNotScroll;\n }\n else {\n this._fieldFlags |= _FieldFlag.doNotScroll;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextBoxField.prototype, \"spellCheck\", {\n /**\n * Gets a value indicating whether to check spelling.\n *\n * @returns {boolean} spellCheck.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Gets a value indicating whether to check spelling\n * let spellCheck: boolean = field.spellCheck;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return !((this._fieldFlags & _FieldFlag.doNotSpellCheck) !== 0);\n },\n /**\n * Sets a value indicating whether to check spelling.\n *\n * @param {boolean} value spellCheck or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Sets a value indicating whether to check spelling\n * field.spellCheck = false;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value) {\n this._fieldFlags &= ~_FieldFlag.doNotSpellCheck;\n }\n else {\n this._fieldFlags |= _FieldFlag.doNotSpellCheck;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextBoxField.prototype, \"insertSpaces\", {\n /**\n * Meaningful only if the MaxLength property is set and the Multiline, Password properties are false.\n * If set, the field is automatically divided into as many equally spaced positions, or combs,\n * as the value of MaxLength, and the text is laid out into those combs.\n *\n * @returns {boolean} insertSpaces.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Gets a value indicating whether this `PdfTextBoxField` is insertSpaces.\n * let insertSpaces: boolean = field.insertSpaces;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var flags = this._fieldFlags;\n return ((_FieldFlag.comb & flags) !== 0) &&\n ((flags & _FieldFlag.multiLine) === 0) &&\n ((flags & _FieldFlag.password) === 0) &&\n ((flags & _FieldFlag.fileSelect) === 0);\n },\n /**\n * Meaningful only if the MaxLength property is set and the Multiline, Password properties are false.\n * If set, the field is automatically divided into as many equally spaced positions, or combs,\n * as the value of MaxLength, and the text is laid out into those combs.\n *\n * @param {boolean} value insertSpaces.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Sets a value indicating whether this `PdfTextBoxField` is insertSpaces.\n * field.insertSpaces = false;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value) {\n this._fieldFlags |= _FieldFlag.comb;\n }\n else {\n this._fieldFlags &= ~_FieldFlag.comb;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextBoxField.prototype, \"highlightMode\", {\n /**\n * Gets the highlight mode of the field.\n *\n * @returns {PdfHighlightMode} highlight mode.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Gets the highlight mode of text box field\n * let mode: PdfHighlightMode = field.highlightMode;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var widget = this.itemAt(this._defaultIndex);\n var mode;\n if (widget && typeof widget.highlightMode !== 'undefined') {\n mode = widget.highlightMode;\n }\n else if (this._dictionary.has('H')) {\n var name_4 = this._dictionary.get('H');\n mode = _mapHighlightMode(name_4.name);\n }\n return (typeof mode !== 'undefined') ? mode : PdfHighlightMode.noHighlighting;\n },\n /**\n * Sets the highlight mode of the field.\n *\n * @param {PdfHighlightMode} value highlight mode.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Sets the highlight mode of text box field as outline\n * field.highlightMode = PdfHighlightMode.outline;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n var widget = this.itemAt(this._defaultIndex);\n if (widget && (typeof widget.highlightMode === 'undefined' || widget.highlightMode !== value)) {\n widget.highlightMode = value;\n }\n else if (!this._dictionary.has('H') || _mapHighlightMode(this._dictionary.get('H')) !== value) {\n this._dictionary.update('H', _reverseMapHighlightMode(value));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextBoxField.prototype, \"maxLength\", {\n /**\n * Gets the maximum length of the field, in characters.\n *\n * @returns {number} maximum length.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Gets the maximum length of the field, in characters.\n * let maxLength: number = field.maxLength;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._maxLength === 'undefined') {\n var length_1 = _getInheritableProperty(this._dictionary, 'MaxLen', false, true, 'Parent');\n this._maxLength = (typeof length_1 !== 'undefined' && Number.isInteger(length_1)) ? length_1 : 0;\n }\n return this._maxLength;\n },\n /**\n * Sets the maximum length of the field, in characters.\n *\n * @param {number} value maximum length.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Sets the maximum length of the field, in characters.\n * field.maxLength = 20;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this.maxLength !== value) {\n this._dictionary.update('MaxLen', value);\n this._maxLength = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextBoxField.prototype, \"isAutoResizeText\", {\n /**\n * Gets the flag indicating whether the auto resize text enabled or not.\n * Note: Applicable only for newly created PDF fields.\n *\n * @returns {boolean} Enable or disable auto resize text.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Gets the flag indicating whether the auto resize text enabled or not.\n * let isAutoResize: boolean = field.isAutoResizeText;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._autoResizeText;\n },\n /**\n * Sets the flag indicating whether the auto resize text enabled or not.\n * Note: Applicable only for newly created PDF fields.\n *\n * @param {boolean} value Enable or disable auto resize text.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Sets the flag indicating whether the auto resize text enabled or not.\n * field.isAutoResizeText = false;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._autoResizeText = value;\n var widget = this.itemAt(this._defaultIndex);\n if (widget) {\n widget._isAutoResize = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextBoxField.prototype, \"font\", {\n /**\n * Gets the font of the field.\n *\n * @returns {PdfFont} font.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Gets the font of the field.\n * let font: PdfFont = field.font;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._font) {\n return this._font;\n }\n else {\n var widget = this.itemAt(this._defaultIndex);\n this._font = _obtainFontDetails(this._form, widget, this);\n }\n return this._font;\n },\n /**\n * Sets the font of the field.\n *\n * @param {PdfFont} value font.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Sets the font of the field\n * field.font = new PdfStandardFont(PdfFontFamily.helvetica, 12, PdfFontStyle.bold);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value && value instanceof PdfFont) {\n this._font = value;\n this._initializeFont(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextBoxField.prototype, \"backColor\", {\n /**\n * Gets the background color of the field.\n *\n * @returns {number[]} R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the background color of the field.\n * let backColor: number[] = field.backColor;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._parseBackColor(true);\n },\n /**\n * Sets the background color of the field.\n *\n * @param {number[]} value Array with R, G, B, A color values in between 0 to 255. For optional A (0-254), it signifies transparency.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the text box field at index 0\n * let firstName: PdfField = document.form.fieldAt(0);\n * // Sets the background color of the field.\n * firstName.backColor = [255, 0, 0];\n * // Access the text box field at index 1\n * let secondName: PdfField = document.form.fieldAt(1);\n * // Sets the background color of the field to transparent.\n * secondName.backColor = [0, 0, 0, 0];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._updateBackColor(value, true);\n },\n enumerable: true,\n configurable: true\n });\n PdfTextBoxField.prototype._initialize = function (page, name, bounds) {\n this._crossReference = page._crossReference;\n this._page = page;\n this._name = name;\n this._text = '';\n this._defaultValue = '';\n this._defaultIndex = 0;\n this._spellCheck = false;\n this._insertSpaces = false;\n this._multiline = false;\n this._password = false;\n this._scrollable = false;\n this._dictionary = new _PdfDictionary(this._crossReference);\n this._ref = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(this._ref, this._dictionary);\n this._dictionary.objId = this._ref.toString();\n this._dictionary.update('FT', _PdfName.get('Tx'));\n this._dictionary.update('T', name);\n this._fieldFlags |= _FieldFlag.doNotSpellCheck;\n this._initializeFont(this._defaultFont);\n this._createItem(bounds);\n };\n PdfTextBoxField.prototype._createItem = function (bounds) {\n var widget = new PdfWidgetAnnotation();\n widget._create(this._page, bounds, this);\n widget.textAlignment = PdfTextAlignment.left;\n this._stringFormat = new PdfStringFormat(widget.textAlignment, PdfVerticalAlignment.middle);\n widget._dictionary.update('MK', new _PdfDictionary(this._crossReference));\n widget._mkDictionary.update('BC', [0, 0, 0]);\n widget._mkDictionary.update('BG', [1, 1, 1]);\n widget._mkDictionary.update('CA', this.actualName);\n this._addToKid(widget);\n };\n PdfTextBoxField.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (isFlatten || this._setAppearance || this._form._setAppearance) {\n var count = this._kidsCount;\n if (this._isLoaded) {\n if (count > 0) {\n for (var i = 0; i < count; i++) {\n var item = this.itemAt(i);\n if (item) {\n this._postProcess(isFlatten, item);\n }\n }\n }\n else if ((isFlatten || this._form._setAppearance || this._setAppearance) && !this._checkFieldFlag(this._dictionary)) {\n this._postProcess(isFlatten);\n }\n }\n else if (isFlatten || this._form._setAppearance || this._setAppearance) {\n for (var i = 0; i < count; i++) {\n var item = this.itemAt(i);\n if (item && !this._checkFieldFlag(item._dictionary)) {\n var template = this._createAppearance(isFlatten, item);\n if (isFlatten) {\n this._drawTemplate(template, item._page, { x: item.bounds.x, y: item.bounds.y, width: template._size[0], height: template._size[1] });\n }\n else {\n this._addAppearance(item._dictionary, template, 'N');\n }\n item._dictionary._updated = !isFlatten;\n }\n }\n }\n if (isFlatten) {\n this._dictionary._updated = false;\n }\n }\n };\n PdfTextBoxField.prototype._postProcess = function (isFlatten, widget) {\n var template;\n var bounds;\n var source = widget ? widget : this;\n if (this._form._setAppearance || this._setAppearance || (isFlatten && !source._dictionary.has('AP'))) {\n template = this._createAppearance(isFlatten, source);\n }\n else if (source._dictionary.has('AP')) {\n var appearanceStream = void 0;\n var dictionary = source._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (reference) {\n appearanceStream.reference = reference;\n }\n if (appearanceStream) {\n template = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n if (template) {\n if (isFlatten) {\n var page = source instanceof PdfWidgetAnnotation ? source._getPage() : source.page;\n if (page) {\n var graphics = page.graphics;\n graphics.save();\n if (page.rotation === PdfRotationAngle.angle90) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(90);\n }\n else if (page.rotation === PdfRotationAngle.angle180) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(-180);\n }\n else if (page.rotation === PdfRotationAngle.angle270) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(270);\n }\n bounds = { x: source.bounds.x, y: source.bounds.y, width: template._size[0], height: template._size[1] };\n graphics._drawTemplate(template, bounds);\n graphics.restore();\n }\n source._dictionary._updated = false;\n }\n else {\n this._addAppearance(source._dictionary, template, 'N');\n }\n }\n };\n PdfTextBoxField.prototype._createAppearance = function (isFlatten, widget) {\n var bounds = widget.bounds;\n var template = new PdfTemplate([0, 0, bounds.width, bounds.height], this._crossReference);\n _setMatrix(template, null);\n template._writeTransformation = false;\n var graphics = template.graphics;\n var parameter = new _PaintParameter();\n parameter.bounds = [0, 0, bounds.width, bounds.height];\n var backcolor = widget.backColor;\n if (isFlatten && backcolor) {\n parameter.backBrush = new PdfBrush(backcolor);\n }\n parameter.foreBrush = new PdfBrush(widget.color);\n var border = widget.border;\n parameter.borderPen = new PdfPen(widget.borderColor, border.width);\n parameter.borderStyle = border.style;\n parameter.borderWidth = border.width;\n if (backcolor) {\n var shadowColor = [backcolor[0] - 64, backcolor[1] - 64, backcolor[2] - 64];\n var color = [shadowColor[0] >= 0 ? shadowColor[0] : 0,\n shadowColor[1] >= 0 ? shadowColor[1] : 0,\n shadowColor[2] >= 0 ? shadowColor[2] : 0];\n parameter.shadowBrush = new PdfBrush(color);\n }\n parameter.rotationAngle = widget.rotate;\n parameter.insertSpaces = this.insertSpaces;\n var text = this.text;\n if (text === null || typeof text === 'undefined') {\n text = '';\n }\n if (this.password) {\n var password = '';\n for (var i = 0; i < text.length; i++) {\n password += '*';\n }\n text = password;\n }\n parameter.required = this.required;\n if (!this.required) {\n graphics._sw._beginMarkupSequence('Tx');\n graphics._initializeCoordinates();\n }\n if (typeof this._font === 'undefined' || this._font === null) {\n this._font = this._defaultFont;\n }\n if (typeof this._stringFormat === 'undefined' || this._stringFormat === null) {\n if (typeof this.textAlignment === 'undefined' || this.textAlignment === null) {\n this._stringFormat = new PdfStringFormat(this.textAlignment, PdfVerticalAlignment.middle);\n }\n else {\n this._stringFormat = new PdfStringFormat(PdfTextAlignment.left, PdfVerticalAlignment.middle);\n }\n }\n this._drawTextBox(graphics, parameter, text, this._font, this._stringFormat, this.multiLine, this.scrollable, this.maxLength);\n if (!this.required) {\n graphics._sw._endMarkupSequence();\n }\n return template;\n };\n PdfTextBoxField.prototype._drawTextBox = function (g, parameter, text, font, format, multiline, scroll, maxLength) {\n if (typeof maxLength !== 'undefined') {\n if (parameter.insertSpaces) {\n var width = 0;\n if (typeof maxLength !== 'undefined' && maxLength > 0) {\n width = parameter.bounds[2] / maxLength;\n g.drawRectangle(parameter.bounds[0], parameter.bounds[1], parameter.bounds[2], parameter.bounds[3], parameter.borderPen, parameter.backBrush);\n var current = text;\n for (var i = 0; i < maxLength; i++) {\n if (format.alignment === PdfTextAlignment.right) {\n if (maxLength - current.length <= i) {\n text = current[i - (maxLength - current.length)];\n }\n else {\n text = '';\n }\n }\n else {\n if (format.alignment === PdfTextAlignment.center && current.length < maxLength) {\n var startlocation = maxLength / 2 - (Math.ceil(current.length / 2));\n if (i >= startlocation && i < startlocation + current.length) {\n text = current[i - startlocation];\n }\n else {\n text = '';\n }\n }\n else {\n if (current.length > i) {\n text = current[Number.parseInt(i.toString(), 10)];\n }\n else {\n text = '';\n }\n }\n }\n parameter.bounds[2] = width;\n format.alignment = PdfTextAlignment.center;\n this._drawTextBox(g, parameter, text, font, format, multiline, scroll);\n parameter.bounds[0] = parameter.bounds[0] + width;\n if (parameter.borderWidth) {\n g.drawLine(parameter.borderPen, parameter.bounds[0], parameter.bounds[1], parameter.bounds[0], parameter.bounds[1] + parameter.bounds[3]);\n }\n }\n }\n else {\n this._drawTextBox(g, parameter, text, font, format, multiline, scroll);\n }\n }\n else {\n this._drawTextBox(g, parameter, text, font, format, multiline, scroll);\n }\n }\n else {\n if (g._isTemplateGraphics && parameter.required) {\n g.save();\n g._initializeCoordinates();\n }\n if (!parameter.insertSpaces) {\n this._drawRectangularControl(g, parameter);\n }\n if (g._isTemplateGraphics && parameter.required) {\n g.restore();\n g.save();\n g._sw._beginMarkupSequence('Tx');\n g._initializeCoordinates();\n }\n var rectangle = parameter.bounds;\n if (parameter.borderStyle === PdfBorderStyle.beveled || parameter.borderStyle === PdfBorderStyle.inset) {\n rectangle[0] = rectangle[0] + 4 * parameter.borderWidth;\n rectangle[2] = rectangle[2] - 8 * parameter.borderWidth;\n }\n else {\n rectangle[0] = rectangle[0] + 2 * parameter.borderWidth;\n rectangle[2] = rectangle[2] - 4 * parameter.borderWidth;\n }\n if (multiline) {\n var tempheight = (typeof format === 'undefined' || format === null || format.lineSpacing === 0) ?\n font._metrics._getHeight() :\n format.lineSpacing;\n var ascent = font._metrics._getAscent(format);\n var shift = tempheight - ascent;\n if (text.indexOf('\\n') !== -1) {\n if (rectangle[0] === 0 && rectangle[1] === 1) {\n rectangle[1] = -(rectangle[1] - shift);\n }\n }\n else if (rectangle[0] === 0 && rectangle[1] === 1) {\n rectangle[1] = -(rectangle[1] - shift);\n }\n if (parameter.isAutoFontSize) {\n if (parameter.borderWidth !== 0) {\n rectangle[1] = rectangle[1] + 2.5 * parameter.borderWidth;\n }\n }\n }\n if ((g._page &&\n typeof g._page.rotation !== 'undefined' &&\n g._page.rotation !== PdfRotationAngle.angle0) ||\n parameter.rotationAngle > 0) {\n var state = g.save();\n if (typeof parameter.pageRotationAngle !== 'undefined' && parameter.pageRotationAngle !== PdfRotationAngle.angle0) {\n if (parameter.pageRotationAngle === PdfRotationAngle.angle90) {\n g.translateTransform(g._size[1], 0);\n g.rotateTransform(90);\n var y = g._size[1] - (rectangle[0] + rectangle[2]);\n var x = rectangle[1];\n rectangle = [x, y, rectangle[3], rectangle[2]];\n }\n else if (parameter.pageRotationAngle === PdfRotationAngle.angle180) {\n g.translateTransform(g._size[0], g._size[1]);\n g.rotateTransform(-180);\n var x = g._size[0] - (rectangle[0] + rectangle[2]);\n var y = g._size[1] - (rectangle[1] + rectangle[3]);\n rectangle = [x, y, rectangle[2], rectangle[3]];\n }\n else if (parameter.pageRotationAngle === PdfRotationAngle.angle270) {\n g.translateTransform(0, g._size[0]);\n g.rotateTransform(270);\n var x = g._size[0] - (rectangle[1] + rectangle[3]);\n var y = rectangle[0];\n rectangle = [x, y, rectangle[3], rectangle[2]];\n }\n }\n if (parameter.rotationAngle) {\n if (parameter.rotationAngle === 90) {\n if (parameter.pageRotationAngle === PdfRotationAngle.angle90) {\n g.translateTransform(0, g._size[1]);\n g.rotateTransform(-90);\n var x = g._size[1] - (rectangle[1] + rectangle[3]);\n var y = rectangle[0];\n rectangle = [x, y, rectangle[3], rectangle[2]];\n }\n else {\n if (rectangle[2] > rectangle[3]) {\n g.translateTransform(0, g._size[1]);\n g.rotateTransform(-90);\n rectangle = [parameter.bounds[0], parameter.bounds[1], parameter.bounds[2], parameter.bounds[3]];\n }\n else {\n var z = rectangle[0];\n rectangle[0] = -(rectangle[1] + rectangle[3]);\n rectangle[1] = z;\n var height = rectangle[3];\n rectangle[3] = rectangle[2] > font._metrics._getHeight() ? rectangle[2] : font._metrics._getHeight();\n rectangle[2] = height;\n g.rotateTransform(-90);\n }\n }\n }\n else if (parameter.rotationAngle === 270) {\n g.translateTransform(g._size[0], 0);\n g.rotateTransform(-270);\n var x = rectangle[1];\n var y = g._size[0] - (rectangle[0] + rectangle[2]);\n rectangle = [x, y, rectangle[3], rectangle[2]];\n }\n else if (parameter.rotationAngle === 180) {\n g.translateTransform(g._size[0], g._size[1]);\n g.rotateTransform(-180);\n var x = g._size[0] - (rectangle[0] + rectangle[2]);\n var y = g._size[1] - (rectangle[1] + rectangle[3]);\n rectangle = [x, y, rectangle[2], rectangle[3]];\n }\n }\n g.drawString(text, font, rectangle, null, parameter.foreBrush, format);\n g.restore(state);\n }\n else {\n g.drawString(text, font, rectangle, null, parameter.foreBrush, format);\n }\n if (g._isTemplateGraphics && parameter.required) {\n g._sw._endMarkupSequence();\n g.restore();\n }\n }\n };\n return PdfTextBoxField;\n}(PdfField));\nexport { PdfTextBoxField };\n/**\n * `PdfButtonField` class represents the button field objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new button field\n * let field: PdfButtonField = new PdfButtonField(page , 'Button1', {x: 100, y: 40, width: 100, height: 20});\n * // Add the field into PDF form\n * form.add(field);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfButtonField = /** @class */ (function (_super) {\n __extends(PdfButtonField, _super);\n function PdfButtonField(page, name, bounds) {\n var _this = _super.call(this) || this;\n if (page && name && bounds) {\n _this._initialize(page, name, bounds);\n }\n return _this;\n }\n Object.defineProperty(PdfButtonField.prototype, \"text\", {\n /**\n * Gets value of the text box field.\n *\n * @returns {string} Text.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access text box field\n * let field: PdfButtonField = document.form.fieldAt(0) as PdfButtonField;\n * // Gets the text value from button field\n * let text: string = field.text;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._isLoaded) {\n if (typeof this._text === 'undefined') {\n var widget = this.itemAt(this._defaultIndex);\n if (widget && widget._mkDictionary && widget._mkDictionary.has('CA')) {\n this._text = widget._mkDictionary.get('CA');\n }\n else if (this._mkDictionary && this._mkDictionary.has('CA')) {\n this._text = this._mkDictionary.get('CA');\n }\n }\n if (typeof this._text === 'undefined') {\n var value = _getInheritableProperty(this._dictionary, 'V', false, true, 'Parent');\n if (value) {\n this._text = value;\n }\n }\n }\n if (typeof this._text === 'undefined') {\n this._text = '';\n }\n return this._text;\n },\n /**\n * Sets value of the text box field.\n *\n * @param {string} value Text.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access button field\n * let field: PdfButtonField = document.form.fieldAt(0) as PdfButtonField;\n * // Sets the text value of form field\n * field.text = ’Click to submit’;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._isLoaded && !this.readOnly) {\n var widget = this.itemAt(this._defaultIndex);\n if (widget && widget._dictionary) {\n this._assignText(widget._dictionary, value);\n }\n else {\n this._assignText(this._dictionary, value);\n }\n }\n if (!this._isLoaded && this._text !== value) {\n var widget = this.itemAt(this._defaultIndex);\n this._assignText(widget._dictionary, value);\n this._text = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfButtonField.prototype, \"textAlignment\", {\n /**\n * Gets the text alignment in a button field.\n *\n * @returns {PdfTextAlignment} Text alignment.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access button field\n * let field: PdfButtonField = document.form.fieldAt(0) as PdfButtonField;\n * // Gets the text alignment from button field\n * let alignment: PdfTextAlignment = field.textAlignment;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._getTextAlignment();\n },\n /**\n * Sets the text alignment in a button field.\n *\n * @param {PdfTextAlignment} value Text alignment.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access button field\n * let field: PdfButtonField = document.form.fieldAt(0) as PdfButtonField;\n * // Sets the text alignment of form field as center\n * field.textAlignment = PdfTextAlignment.center;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._textAlignment !== value) {\n this._setTextAlignment(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfButtonField.prototype, \"highlightMode\", {\n /**\n * Gets the highlight mode of the field.\n *\n * @returns {PdfHighlightMode} highlight mode.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access button field\n * let field: PdfButtonField = document.form.fieldAt(0) as PdfButtonField;\n * // Gets the highlight mode from button field\n * let highlightMode: PdfHighlightMode = field. highlightMode;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var widget = this.itemAt(this._defaultIndex);\n var mode;\n if (widget && typeof widget.highlightMode !== 'undefined') {\n mode = widget.highlightMode;\n }\n else if (this._dictionary.has('H')) {\n var highlight = this._dictionary.get('H');\n mode = _mapHighlightMode(highlight.name);\n }\n return (typeof mode !== 'undefined') ? mode : PdfHighlightMode.invert;\n },\n /**\n * Sets the highlight mode of the field.\n *\n * @param {PdfHighlightMode} value highlight mode.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access button field\n * let field: PdfButtonField = document.form.fieldAt(0) as PdfButtonField;\n * // Sets the highlight mode of button field as outline\n * field.highlightMode = PdfHighlightMode.outline;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n var widget = this.itemAt(this._defaultIndex);\n if (widget && (typeof widget.highlightMode === 'undefined' || widget.highlightMode !== value)) {\n widget.highlightMode = value;\n }\n else if (!this._dictionary.has('H') || _mapHighlightMode(this._dictionary.get('H')) !== value) {\n this._dictionary.update('H', _reverseMapHighlightMode(value));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfButtonField.prototype, \"font\", {\n /**\n * Gets the font of the field.\n *\n * @returns {PdfFont} font.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfButtonField = document.form.fieldAt(0) as PdfButtonField;\n * // Gets the font of the field.\n * let font: PdfFont = field.font;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._font) {\n return this._font;\n }\n else {\n var widget = this.itemAt(this._defaultIndex);\n this._font = _obtainFontDetails(this._form, widget, this);\n }\n return this._font;\n },\n /**\n * Sets the font of the field.\n *\n * @param {PdfFont} value font.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfButtonField = document.form.fieldAt(0) as PdfButtonField;\n * // Sets the font of the field\n * field.font = new PdfStandardFont(PdfFontFamily.helvetica, 12, PdfFontStyle.bold);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value && value instanceof PdfFont) {\n this._font = value;\n this._initializeFont(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfButtonField.prototype, \"backColor\", {\n /**\n * Gets the background color of the field.\n *\n * @returns {number[]} R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the background color of the field.\n * let backColor: number[] = field.backColor;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._parseBackColor(true);\n },\n /**\n * Sets the background color of the field.\n *\n * @param {number[]} value Array with R, G, B, A color values in between 0 to 255. For optional A (0-254), it signifies transparency.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the button field at index 0\n * let submitButton: PdfField = document.form.fieldAt(0);\n * // Sets the background color of the field.\n * submitButton.backColor = [255, 0, 0];\n * // Access the button field at index 1\n * let cancelButton: PdfField = document.form.fieldAt(1);\n * // Sets the background color of the field to transparent.\n * cancelButton.backColor = [0, 0, 0, 0];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._updateBackColor(value, true);\n },\n enumerable: true,\n configurable: true\n });\n PdfButtonField.prototype._assignText = function (fieldDictionary, value) {\n var dictionary;\n if (fieldDictionary.has('MK')) {\n dictionary = fieldDictionary.get('MK');\n }\n else {\n dictionary = new _PdfDictionary(this._crossReference);\n fieldDictionary.set('MK', dictionary);\n }\n dictionary.update('CA', value);\n fieldDictionary._updated = true;\n };\n /**\n * Parse an existing button field.\n *\n * @private\n * @param {PdfForm} form Form object.\n * @param {_PdfDictionary} dictionary Field dictionary.\n * @param {_PdfCrossReference} crossReference Cross reference object.\n * @param {_PdfReference} reference Field reference.\n * @returns {PdfButtonField} Button field.\n */\n PdfButtonField._load = function (form, dictionary, crossReference, reference) {\n var field = new PdfButtonField();\n field._isLoaded = true;\n field._form = form;\n field._dictionary = dictionary;\n field._crossReference = crossReference;\n field._ref = reference;\n if (field._dictionary.has('Kids')) {\n field._kids = field._dictionary.get('Kids');\n }\n field._defaultIndex = 0;\n field._parsedItems = new Map();\n return field;\n };\n PdfButtonField.prototype._initialize = function (page, name, bounds) {\n this._crossReference = page._crossReference;\n this._page = page;\n this._name = name;\n this._defaultIndex = 0;\n this._dictionary = new _PdfDictionary(this._crossReference);\n this._ref = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(this._ref, this._dictionary);\n this._dictionary.objId = this._ref.toString();\n this._dictionary.update('FT', _PdfName.get('Btn'));\n this._dictionary.update('T', name);\n this._fieldFlags |= _FieldFlag.pushButton;\n this._initializeFont(this._defaultFont);\n this._createItem(bounds);\n };\n PdfButtonField.prototype._createItem = function (bounds) {\n var widget = new PdfWidgetAnnotation();\n widget._create(this._page, bounds, this);\n widget.textAlignment = PdfTextAlignment.center;\n this._stringFormat = new PdfStringFormat(widget.textAlignment, PdfVerticalAlignment.middle);\n widget._dictionary.update('MK', new _PdfDictionary(this._crossReference));\n widget._mkDictionary.update('BC', [0, 0, 0]);\n widget._mkDictionary.update('BG', [.827451, .827451, .827451]);\n widget._mkDictionary.update('CA', (typeof this._name !== 'undefined' && this._name !== null) ? this._name : this._actualName);\n this._addToKid(widget);\n };\n PdfButtonField.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (isFlatten || this._setAppearance || this._form._setAppearance) {\n var count = this._kidsCount;\n if (this._isLoaded) {\n if (count > 0) {\n for (var i = 0; i < count; i++) {\n var item = this.itemAt(i);\n if (item) {\n this._postProcess(isFlatten, item);\n }\n }\n }\n else if ((isFlatten || this._form._setAppearance || this._setAppearance) && !this._checkFieldFlag(this._dictionary)) {\n this._postProcess(isFlatten);\n }\n }\n else if (isFlatten || this._form._setAppearance || this._setAppearance) {\n for (var i = 0; i < count; i++) {\n var item = this.itemAt(i);\n if (item && !this._checkFieldFlag(item._dictionary)) {\n var template = this._createAppearance(item);\n if (isFlatten) {\n this._drawTemplate(template, item._getPage(), { x: item.bounds.x, y: item.bounds.y, width: template._size[0], height: template._size[1] });\n }\n else {\n this._addAppearance(item._dictionary, template, 'N');\n var pressed = this._createAppearance(item, true);\n if (pressed) {\n this._addAppearance(item._dictionary, pressed, 'D');\n }\n }\n item._dictionary._updated = !isFlatten;\n }\n }\n }\n if (isFlatten) {\n this._dictionary._updated = false;\n }\n }\n };\n PdfButtonField.prototype._postProcess = function (isFlatten, widget) {\n var template;\n var bounds;\n var source = widget ? widget : this;\n if (this._form._setAppearance || this._setAppearance || (isFlatten && !source._dictionary.has('AP'))) {\n template = this._createAppearance(source);\n }\n else if (source._dictionary.has('AP')) {\n var appearanceStream = void 0;\n var dictionary = source._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (reference) {\n appearanceStream.reference = reference;\n }\n if (appearanceStream) {\n template = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n if (template) {\n if (isFlatten) {\n var page = source instanceof PdfWidgetAnnotation ? source._getPage() : source.page;\n if (page) {\n var graphics = page.graphics;\n graphics.save();\n if (page.rotation === PdfRotationAngle.angle90) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(90);\n }\n else if (page.rotation === PdfRotationAngle.angle180) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(-180);\n }\n else if (page.rotation === PdfRotationAngle.angle270) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(270);\n }\n bounds = { x: source.bounds.x, y: source.bounds.y, width: template._size[0], height: template._size[1] };\n graphics._drawTemplate(template, bounds);\n graphics.restore();\n }\n source._dictionary._updated = false;\n }\n else {\n this._addAppearance(source._dictionary, template, 'N');\n }\n }\n };\n PdfButtonField.prototype._createAppearance = function (widget, isPressed) {\n if (isPressed === void 0) { isPressed = false; }\n var bounds = widget.bounds;\n var template = new PdfTemplate([0, 0, bounds.width, bounds.height], this._crossReference);\n var parameter = new _PaintParameter();\n parameter.bounds = [0, 0, bounds.width, bounds.height];\n var backcolor = widget.backColor;\n if (backcolor) {\n parameter.backBrush = new PdfBrush(backcolor);\n }\n parameter.foreBrush = new PdfBrush(widget.color);\n var border = widget.border;\n parameter.borderPen = new PdfPen(widget.borderColor, border.width);\n parameter.borderStyle = border.style;\n parameter.borderWidth = border.width;\n if (backcolor) {\n var shadowColor = [backcolor[0] - 64, backcolor[1] - 64, backcolor[2] - 64];\n var color = [shadowColor[0] >= 0 ? shadowColor[0] : 0,\n shadowColor[1] >= 0 ? shadowColor[1] : 0,\n shadowColor[2] >= 0 ? shadowColor[2] : 0];\n parameter.shadowBrush = new PdfBrush(color);\n }\n parameter.rotationAngle = widget.rotate;\n if (typeof this._font === 'undefined' || this._font === null) {\n this._font = this._defaultFont;\n }\n if (isPressed) {\n this._drawPressedButton(template.graphics, parameter, this.text, this._font, this._stringFormat);\n }\n else {\n this._drawButton(template.graphics, parameter, this.text, this._font, this._stringFormat);\n }\n return template;\n };\n PdfButtonField.prototype._drawButton = function (g, parameter, text, font, format) {\n this._drawRectangularControl(g, parameter);\n var rectangle = parameter.bounds;\n if ((g._page &&\n typeof g._page.rotation !== 'undefined' &&\n g._page.rotation !== PdfRotationAngle.angle0) ||\n parameter.rotationAngle > 0) {\n var state = g.save();\n if (typeof parameter.pageRotationAngle !== 'undefined' && parameter.pageRotationAngle !== PdfRotationAngle.angle0) {\n if (parameter.pageRotationAngle === PdfRotationAngle.angle90) {\n g.translateTransform(g._size[1], 0);\n g.rotateTransform(90);\n var y = g._size[1] - (rectangle[0] + rectangle[2]);\n var x = rectangle[1];\n rectangle = [x, y, rectangle[3], rectangle[2]];\n }\n else if (parameter.pageRotationAngle === PdfRotationAngle.angle180) {\n g.translateTransform(g._size[0], g._size[1]);\n g.rotateTransform(-180);\n var x = g._size[0] - (rectangle[0] + rectangle[2]);\n var y = g._size[1] - (rectangle[1] + rectangle[3]);\n rectangle = [x, y, rectangle[2], rectangle[3]];\n }\n else if (parameter.pageRotationAngle === PdfRotationAngle.angle270) {\n g.translateTransform(0, g._size[0]);\n g.rotateTransform(270);\n var x = g._size[0] - (rectangle[1] + rectangle[3]);\n var y = rectangle[0];\n rectangle = [x, y, rectangle[3], rectangle[2]];\n }\n }\n if (parameter.rotationAngle) {\n if (parameter.rotationAngle === 90) {\n if (parameter.pageRotationAngle === PdfRotationAngle.angle90) {\n g.translateTransform(0, g._size[1]);\n g.rotateTransform(-90);\n var x = g._size[1] - (rectangle[1] + rectangle[3]);\n var y = rectangle[0];\n rectangle = [x, y, rectangle[3], rectangle[2]];\n }\n else {\n if (rectangle[2] > rectangle[3]) {\n g.translateTransform(0, g._size[1]);\n g.rotateTransform(-90);\n rectangle = [parameter.bounds[0], parameter.bounds[1], parameter.bounds[2], parameter.bounds[3]];\n }\n else {\n var z = rectangle[0];\n rectangle[0] = -(rectangle[1] + rectangle[3]);\n rectangle[1] = z;\n var height = rectangle[3];\n rectangle[3] = rectangle[2] > font._metrics._getHeight() ? rectangle[2] : font._metrics._getHeight();\n rectangle[2] = height;\n g.rotateTransform(-90);\n }\n }\n }\n else if (parameter.rotationAngle === 270) {\n g.translateTransform(g._size[0], 0);\n g.rotateTransform(-270);\n var x = rectangle[1];\n var y = g._size[0] - (rectangle[0] + rectangle[2]);\n rectangle = [x, y, rectangle[3], rectangle[2]];\n }\n else if (parameter.rotationAngle === 180) {\n g.translateTransform(g._size[0], g._size[1]);\n g.rotateTransform(-180);\n var x = g._size[0] - (rectangle[0] + rectangle[2]);\n var y = g._size[1] - (rectangle[1] + rectangle[3]);\n rectangle = [x, y, rectangle[2], rectangle[3]];\n }\n }\n g.drawString(text, font, rectangle, null, parameter.foreBrush, format);\n g.restore(state);\n }\n else {\n g.drawString(text, font, rectangle, null, parameter.foreBrush, format);\n }\n };\n PdfButtonField.prototype._drawPressedButton = function (g, parameter, text, font, format) {\n switch (parameter.borderStyle) {\n case PdfBorderStyle.inset:\n g.drawRectangle(parameter.bounds[0], parameter.bounds[1], parameter.bounds[2], parameter.bounds[3], parameter.shadowBrush);\n break;\n default:\n g.drawRectangle(parameter.bounds[0], parameter.bounds[1], parameter.bounds[2], parameter.bounds[3], parameter.backBrush);\n break;\n }\n this._drawBorder(g, parameter.bounds, parameter.borderPen, parameter.borderStyle, parameter.borderWidth);\n var rectangle = [parameter.borderWidth,\n parameter.borderWidth,\n parameter.bounds[2] - parameter.borderWidth,\n parameter.bounds[3] - parameter.borderWidth];\n g.drawString(text, font, rectangle, null, parameter.foreBrush, format);\n switch (parameter.borderStyle) {\n case PdfBorderStyle.inset:\n this._drawLeftTopShadow(g, parameter.bounds, parameter.borderWidth, this._grayBrush);\n this._drawRightBottomShadow(g, parameter.bounds, parameter.borderWidth, this._silverBrush);\n break;\n case PdfBorderStyle.beveled:\n this._drawLeftTopShadow(g, parameter.bounds, parameter.borderWidth, parameter.shadowBrush);\n this._drawRightBottomShadow(g, parameter.bounds, parameter.borderWidth, this._whiteBrush);\n break;\n default:\n this._drawLeftTopShadow(g, parameter.bounds, parameter.borderWidth, parameter.shadowBrush);\n break;\n }\n };\n return PdfButtonField;\n}(PdfField));\nexport { PdfButtonField };\n/**\n * `PdfCheckBoxField` class represents the check box field objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new check box field\n * let field: PdfCheckBoxField = new PdfCheckBoxField('CheckBox1', {x: 100, y: 40, width: 20, height: 20}, page);\n * // Sets the checked flag as true.\n * field.checked = true;\n * // Sets the tool tip value\n * field.toolTip = 'Checked';\n * // Add the field into PDF form\n * form.add(field);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfCheckBoxField = /** @class */ (function (_super) {\n __extends(PdfCheckBoxField, _super);\n function PdfCheckBoxField(name, bounds, page) {\n var _this = _super.call(this) || this;\n if (page && name && bounds) {\n _this._initialize(page, name, bounds);\n }\n return _this;\n }\n /**\n * Parse an existing check box field.\n *\n * @private\n * @param {PdfForm} form Form object.\n * @param {_PdfDictionary} dictionary Field dictionary.\n * @param {_PdfCrossReference} crossReference Cross reference object.\n * @param {_PdfReference} reference Field reference.\n * @returns {PdfCheckBoxField} Check box field.\n */\n PdfCheckBoxField._load = function (form, dictionary, crossReference, reference) {\n var field = new PdfCheckBoxField();\n field._isLoaded = true;\n field._form = form;\n field._dictionary = dictionary;\n field._crossReference = crossReference;\n field._ref = reference;\n field._defaultIndex = 0;\n field._parsedItems = new Map();\n if (field._dictionary.has('Kids')) {\n field._kids = field._dictionary.get('Kids');\n }\n else {\n var item = PdfStateItem._load(dictionary, crossReference, field);\n item._isLoaded = true;\n item._ref = reference;\n field._parsedItems.set(0, item);\n }\n return field;\n };\n /**\n * Gets the item at the specified index.\n *\n * @param {number} index Index of the field item.\n * @returns {PdfStateItem} Field item at the index.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the check box field\n * let field: PdfCheckBoxField = form.fieldAt(0) as PdfCheckBoxField;\n * // Gets the first list item.\n * let item: PdfStateItem = field.itemAt(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfCheckBoxField.prototype.itemAt = function (index) {\n if (index < 0 || (index !== 0 && index >= this._kidsCount)) {\n throw Error('Index out of range.');\n }\n var item;\n if (this._parsedItems.has(index)) {\n item = this._parsedItems.get(index);\n }\n else {\n var dictionary = void 0;\n if (index >= 0 && this._kids && this._kids.length > 0 && index < this._kids.length) {\n var ref = this._kids[Number.parseInt(index.toString(), 10)];\n if (ref && ref instanceof _PdfReference) {\n dictionary = this._crossReference._fetch(ref);\n }\n if (dictionary) {\n item = PdfStateItem._load(dictionary, this._crossReference, this);\n item._isLoaded = true;\n item._ref = ref;\n this._parsedItems.set(index, item);\n }\n }\n }\n return item;\n };\n Object.defineProperty(PdfCheckBoxField.prototype, \"font\", {\n /**\n * Gets the font of the field.\n *\n * @returns {PdfFont} font.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfCheckBoxField = document.form.fieldAt(0) as PdfCheckBoxField;\n * // Gets the font of the field.\n * let font: PdfFont = field.font;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._font) {\n return this._font;\n }\n else {\n var widget = this.itemAt(this._defaultIndex);\n this._font = _obtainFontDetails(this._form, widget, this);\n }\n return this._font;\n },\n /**\n * Sets the font of the field.\n *\n * @param {PdfFont} value font.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfCheckBoxField = document.form.fieldAt(0) as PdfCheckBoxField;\n * // Sets the font of the field\n * field.font = new PdfStandardFont(PdfFontFamily.helvetica, 12, PdfFontStyle.bold);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value && value instanceof PdfFont) {\n this._font = value;\n this._initializeFont(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCheckBoxField.prototype, \"checked\", {\n /**\n * Gets the flag indicating whether the field is checked or not.\n *\n * @returns {boolean} Checked.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the check box field\n * let field: PdfCheckBoxField = form.fieldAt(0) as PdfCheckBoxField;\n * // Gets the flag indicating whether the field is checked or not.\n * let checked: Boolean = field.checked;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return (this._kidsCount > 0) ? this.itemAt(this._defaultIndex).checked : _checkField(this._dictionary);\n },\n /**\n * Sets the flag indicating whether the field is checked or not.\n *\n * @param {boolean} value Checked.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the check box field\n * let field: PdfCheckBoxField = form.fieldAt(0) as PdfCheckBoxField;\n * // Sets the flag indicating whether the field is checked or not.\n * field.checked = true;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this.checked !== value) {\n if (this._kidsCount > 0) {\n this.itemAt(this._defaultIndex).checked = value;\n }\n if (value) {\n if (this._isLoaded) {\n var entry = _getItemValue((this._kidsCount > 0) ?\n this.itemAt(this._defaultIndex)._dictionary : this._dictionary);\n this._dictionary.update('V', _PdfName.get(entry));\n this._dictionary.update('AS', _PdfName.get(entry));\n }\n else {\n this._dictionary.update('V', _PdfName.get('Yes'));\n this._dictionary.update('AS', _PdfName.get('Yes'));\n }\n }\n else {\n if (this._dictionary.has('V')) {\n delete this._dictionary._map.V;\n }\n if (this._dictionary.has('AS')) {\n delete this._dictionary._map.AS;\n }\n }\n this._dictionary._updated = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCheckBoxField.prototype, \"textAlignment\", {\n /**\n * Gets the text alignment in a check box field.\n *\n * @returns {PdfTextAlignment} Text alignment.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access check box field\n * let field: PdfCheckBoxField = document.form.fieldAt(0) as PdfCheckBoxField;\n * // Gets the text alignment from check box field\n * let alignment: PdfTextAlignment = field.textAlignment;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._getTextAlignment();\n },\n /**\n * Sets the text alignment in a check box field.\n *\n * @param {PdfTextAlignment} value Text alignment.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access check box field\n * let field: PdfCheckBoxField = document.form.fieldAt(0) as PdfCheckBoxField;\n * // Sets the text alignment of form field as center\n * field.textAlignment = PdfTextAlignment.center;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._textAlignment !== value) {\n this._setTextAlignment(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCheckBoxField.prototype, \"backColor\", {\n /**\n * Gets the background color of the field.\n *\n * @returns {number[]} R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the background color of the field.\n * let backColor: number[] = field.backColor;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._parseBackColor(true);\n },\n /**\n * Sets the background color of the field.\n *\n * @param {number[]} value Array with R, G, B, A color values in between 0 to 255. For optional A (0-254), it signifies transparency.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the check box field at index 0\n * let checkBox1: PdfField = document.form.fieldAt(0);\n * // Sets the background color of the field.\n * checkBox1.backColor = [255, 0, 0];\n * // Access the check box field at index 1\n * let checkBox2: PdfField = document.form.fieldAt(1);\n * // Sets the background color of the field to transparent.\n * checkBox2.backColor = [0, 0, 0, 0];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._updateBackColor(value, true);\n },\n enumerable: true,\n configurable: true\n });\n PdfCheckBoxField.prototype._initialize = function (page, name, bounds) {\n this._crossReference = page._crossReference;\n this._page = page;\n this._name = name;\n this._defaultIndex = 0;\n this._dictionary = new _PdfDictionary(this._crossReference);\n this._ref = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(this._ref, this._dictionary);\n this._dictionary.objId = this._ref.toString();\n this._dictionary.update('FT', _PdfName.get('Btn'));\n this._dictionary.update('T', name);\n this._createItem(bounds);\n };\n PdfCheckBoxField.prototype._createItem = function (bounds) {\n var widget = new PdfStateItem();\n widget._create(this._page, bounds, this);\n widget.textAlignment = PdfTextAlignment.center;\n this._stringFormat = new PdfStringFormat(widget.textAlignment, PdfVerticalAlignment.middle);\n widget._dictionary.update('MK', new _PdfDictionary(this._crossReference));\n widget._mkDictionary.update('BC', [0, 0, 0]);\n widget._mkDictionary.update('BG', [1, 1, 1]);\n widget.style = PdfCheckBoxStyle.check;\n widget._dictionary.update('DA', '/TiRo 0 Tf 0 0 0 rg');\n this._addToKid(widget);\n };\n PdfCheckBoxField.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n var count = this._kidsCount;\n if (this._isLoaded) {\n if (count > 0) {\n for (var i = 0; i < count; i++) {\n var item = this.itemAt(i);\n if (item) {\n if (!this._checkFieldFlag(item._dictionary)) {\n if (isFlatten) {\n var template = void 0;\n var state = item.checked ?\n _PdfCheckFieldState.checked :\n _PdfCheckFieldState.unchecked;\n if (this._setAppearance || this._form._setAppearance || !item._dictionary.has('AP')) {\n template = this._createAppearance(item, state);\n }\n else {\n template = _getStateTemplate(state, this);\n }\n this._drawTemplate(template, item._getPage(), item.bounds);\n }\n else if (this._setAppearance || this._form._setAppearance || !item._isLoaded) {\n item._postProcess(item.checked ? 'Yes' : 'Off');\n this._drawAppearance(item);\n }\n }\n item._dictionary._updated = !isFlatten;\n }\n }\n }\n else {\n var style = this.checked ?\n _PdfCheckFieldState.checked :\n _PdfCheckFieldState.unchecked;\n this._drawTemplate(_getStateTemplate(style, this), this.page, this.bounds);\n }\n }\n else {\n for (var i = 0; i < count; i++) {\n var item = this.itemAt(i);\n if (item) {\n var state = item.checked ? _PdfCheckFieldState.checked : _PdfCheckFieldState.unchecked;\n item._postProcess(item.checked ? 'Yes' : 'Off');\n if (isFlatten) {\n var template = this._createAppearance(item, state);\n this._drawTemplate(template, item._getPage(), item.bounds);\n }\n else {\n this._drawAppearance(item);\n }\n item._dictionary._updated = !isFlatten;\n }\n }\n }\n this._dictionary._updated = !isFlatten;\n };\n PdfCheckBoxField.prototype._createAppearance = function (widget, state) {\n var bounds = widget.bounds;\n var parameter = new _PaintParameter();\n parameter.bounds = [0, 0, bounds.width, bounds.height];\n var backcolor = widget.backColor;\n if (backcolor) {\n parameter.backBrush = new PdfBrush(backcolor);\n }\n parameter.foreBrush = new PdfBrush(widget.color);\n var border = widget.border;\n parameter.borderPen = new PdfPen(widget.borderColor, border.width);\n parameter.borderStyle = border.style;\n parameter.borderWidth = border.width;\n if (backcolor) {\n var shadowColor = [backcolor[0] - 64, backcolor[1] - 64, backcolor[2] - 64];\n var color = [shadowColor[0] >= 0 ? shadowColor[0] : 0,\n shadowColor[1] >= 0 ? shadowColor[1] : 0,\n shadowColor[2] >= 0 ? shadowColor[2] : 0];\n parameter.shadowBrush = new PdfBrush(color);\n }\n parameter.rotationAngle = widget.rotate;\n var template = new PdfTemplate(parameter.bounds, this._crossReference);\n var graphics = template.graphics;\n this._drawCheckBox(graphics, parameter, _styleToString(widget._style), state);\n return template;\n };\n PdfCheckBoxField.prototype._drawAppearance = function (item) {\n var appearance = new _PdfDictionary();\n if (item._dictionary.has('AP')) {\n appearance = item._dictionary.get('AP');\n if (appearance) {\n if (appearance.has('N')) {\n _removeReferences(appearance.get('N'), this._crossReference, 'Yes', 'Off');\n }\n if (appearance.has('D')) {\n _removeReferences(appearance.get('D'), this._crossReference, 'Yes', 'Off');\n }\n }\n _removeDuplicateReference(appearance, this._crossReference, 'N');\n _removeDuplicateReference(appearance, this._crossReference, 'D');\n }\n else {\n var reference = this._crossReference._getNextReference();\n appearance = new _PdfDictionary(this._crossReference);\n this._crossReference._cacheMap.set(reference, appearance);\n item._dictionary.update('AP', reference);\n }\n var normalChecked = this._createAppearance(item, _PdfCheckFieldState.checked);\n var normalCheckedReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(normalCheckedReference, normalChecked._content);\n var normalUnchecked = this._createAppearance(item, _PdfCheckFieldState.unchecked);\n var normalUncheckedReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(normalUncheckedReference, normalUnchecked._content);\n var normalDictionary = new _PdfDictionary(this._crossReference);\n normalDictionary.update('Yes', normalCheckedReference);\n normalDictionary.update('Off', normalUncheckedReference);\n var normalReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(normalReference, normalDictionary);\n appearance.update('N', normalReference);\n var pressChecked = this._createAppearance(item, _PdfCheckFieldState.pressedChecked);\n var pressCheckedReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(pressCheckedReference, pressChecked._content);\n var pressUnchecked = this._createAppearance(item, _PdfCheckFieldState.pressedUnchecked);\n var pressUncheckedReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(pressUncheckedReference, pressUnchecked._content);\n var pressedDictionary = new _PdfDictionary(this._crossReference);\n pressedDictionary.update('Yes', pressCheckedReference);\n pressedDictionary.update('Off', pressUncheckedReference);\n var pressedReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(pressedReference, pressedDictionary);\n appearance.update('D', pressedReference);\n item._dictionary._updated = true;\n };\n return PdfCheckBoxField;\n}(PdfField));\nexport { PdfCheckBoxField };\n/**\n * `PdfRadioButtonListField` class represents the radio button field objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new radio button list field\n * let field: PdfRadioButtonListField = new PdfRadioButtonListField(page, 'Age');\n * // Create and add first item\n * let first: PdfRadioButtonListItem = field.add('1-9', {x: 100, y: 140, width: 20, height: 20});\n * // Create and add second item\n * let second: PdfRadioButtonListItem = new PdfRadioButtonListItem('10-49', {x: 100, y: 170, width: 20, height: 20}, page);\n * field.add(second);\n * // Sets selected index of the radio button list field\n * field.selectedIndex = 0;\n * // Add the field into PDF form\n * form.add(field);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfRadioButtonListField = /** @class */ (function (_super) {\n __extends(PdfRadioButtonListField, _super);\n function PdfRadioButtonListField(page, name) {\n var _this = _super.call(this) || this;\n _this._selectedIndex = -1;\n if (page && name) {\n _this._initialize(page, name);\n }\n return _this;\n }\n /**\n * Parse an existing radio button list field.\n *\n * @private\n * @param {PdfForm} form Form object.\n * @param {_PdfDictionary} dictionary Field dictionary.\n * @param {_PdfCrossReference} crossReference Cross reference object.\n * @param {_PdfReference} reference Field reference.\n * @returns {PdfRadioButtonListField} Radio button list field.\n */\n PdfRadioButtonListField._load = function (form, dictionary, crossReference, reference) {\n var field = new PdfRadioButtonListField();\n field._isLoaded = true;\n field._form = form;\n field._dictionary = dictionary;\n field._crossReference = crossReference;\n field._ref = reference;\n if (field._dictionary.has('Kids')) {\n field._kids = field._dictionary.get('Kids');\n }\n field._defaultIndex = 0;\n field._parsedItems = new Map();\n if (field._kidsCount > 0) {\n field._retrieveOptionValue();\n }\n return field;\n };\n Object.defineProperty(PdfRadioButtonListField.prototype, \"checked\", {\n /**\n * Gets the flag indicating whether the field is checked or not (Read only).\n *\n * @returns {boolean} Checked.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the radio button list field\n * let field: PdfRadioButtonListField = form.fieldAt(0) as PdfRadioButtonListField;\n * // Gets the flag indicating whether the field is checked or not.\n * let checked: boolean = field.checked;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var check = false;\n if (this._kidsCount > 0) {\n check = this.itemAt(this._defaultIndex).checked;\n }\n return check;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadioButtonListField.prototype, \"selectedIndex\", {\n /**\n * Gets the selected item index.\n *\n * @returns {number} Index.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the radio button list field\n * let field: PdfRadioButtonListField = form.fieldAt(0) as PdfRadioButtonListField;\n * // Gets the selected index.\n * let index: number = field.selectedIndex;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._isLoaded && this._selectedIndex === -1) {\n this._selectedIndex = this._obtainSelectedIndex();\n }\n return this._selectedIndex;\n },\n /**\n * Sets the selected item index.\n *\n * @param {number} value Selected index.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new radio button list field\n * let field: PdfRadioButtonListField = new PdfRadioButtonListField(page, 'Age');\n * // Create and add first item\n * let first: PdfRadioButtonListItem = field.add('1-9', {x: 100, y: 140, width: 20, height: 20});\n * // Create and add second item\n * let second: PdfRadioButtonListItem = new PdfRadioButtonListItem('10-49', {x: 100, y: 170, width: 20, height: 20}, page);\n * field.add(second);\n * // Sets selected index of the radio button list field\n * field.selectedIndex = 0;\n * // Add the field into PDF form\n * form.add(field);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this.selectedIndex !== value) {\n this._selectedIndex = value;\n for (var i = 0; i < this._kidsCount; i++) {\n var item = this.itemAt(i);\n if (i === value) {\n item._dictionary.update('AS', _PdfName.get(item.value));\n var name_5 = _PdfName.get(item.value);\n this._dictionary.update('V', name_5);\n this._dictionary.update('DV', name_5);\n }\n else {\n item._dictionary.update('AS', _PdfName.get('Off'));\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the item at the specified index.\n *\n * @param {number} index Index of the field item.\n * @returns {PdfRadioButtonListItem} Field item at the index.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the radio button list field\n * let field: PdfRadioButtonListField = form.fieldAt(0) as PdfRadioButtonListField;\n * // Gets the first list item.\n * let item: PdfRadioButtonListField = field.itemAt(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfRadioButtonListField.prototype.itemAt = function (index) {\n if (index < 0 || (index !== 0 && index >= this._kidsCount)) {\n throw Error('Index out of range.');\n }\n var item;\n if (this._parsedItems.has(index)) {\n item = this._parsedItems.get(index);\n }\n else {\n var dictionary = void 0;\n if (index >= 0 && this._kids && this._kids.length > 0 && index < this._kids.length) {\n var ref = this._kids[Number.parseInt(index.toString(), 10)];\n if (ref && ref instanceof _PdfReference) {\n dictionary = this._crossReference._fetch(ref);\n }\n if (dictionary) {\n item = PdfRadioButtonListItem._load(dictionary, this._crossReference, this);\n item._ref = ref;\n item._index = index;\n this._parsedItems.set(index, item);\n }\n }\n }\n return item;\n };\n PdfRadioButtonListField.prototype.add = function (value, bounds) {\n if (value instanceof PdfRadioButtonListItem) {\n value._field = this;\n value._dictionary.update('Parent', this._ref);\n value._setField(this);\n return this._kidsCount;\n }\n else {\n return new PdfRadioButtonListItem(value, bounds, this);\n }\n };\n /**\n * Remove the radio button list item from the specified index.\n *\n * @param {number} index Item index to remove.\n * @returns {void} Nothing.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Remove the first item of the form field\n * field.removeItemAt(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfRadioButtonListField.prototype.removeItemAt = function (index) {\n var item = this.itemAt(index);\n if (item && item._ref) {\n var page = item._getPage();\n if (page) {\n page._removeAnnotation(item._ref);\n }\n this._kids.splice(index, 1);\n this._dictionary.set('Kids', this._kids);\n this._dictionary._updated = true;\n this._parsedItems.delete(index);\n if (this._parsedItems.size > 0) {\n var parsedItems_2 = new Map();\n this._parsedItems.forEach(function (value, key) {\n if (key > index) {\n parsedItems_2.set(key - 1, value);\n }\n else {\n parsedItems_2.set(key, value);\n }\n });\n this._parsedItems = parsedItems_2;\n }\n if (this._dictionary.has('Opt')) {\n var options = this._dictionary.getArray('Opt');\n if (options && options.length > 0) {\n options.splice(index, 1);\n this._dictionary.set('Opt', options);\n }\n }\n }\n };\n /**\n * Remove the specified radio button list field item.\n *\n * @param {PdfRadioButtonListItem} item Item to remove.\n * @returns {void} Nothing.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Remove the first item of the form field\n * field.removeItem(field.itemAt(0));\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfRadioButtonListField.prototype.removeItem = function (item) {\n if (item && item._ref) {\n var index = this._kids.indexOf(item._ref);\n if (index !== -1) {\n this.removeItemAt(index);\n }\n }\n };\n PdfRadioButtonListField.prototype._initialize = function (page, name) {\n this._defaultIndex = 0;\n this._crossReference = page._crossReference;\n this._page = page;\n this._name = name;\n this._dictionary = new _PdfDictionary(this._crossReference);\n this._ref = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(this._ref, this._dictionary);\n this._dictionary.objId = this._ref.toString();\n this._dictionary.update('FT', _PdfName.get('Btn'));\n this._dictionary.update('T', name);\n this._parsedItems = new Map();\n this._fieldFlags |= _FieldFlag.radio;\n };\n PdfRadioButtonListField.prototype._retrieveOptionValue = function () {\n if (this._dictionary.has('Opt')) {\n var options = this._dictionary.getArray('Opt');\n if (options && options.length > 0) {\n var itemsCount = this._kidsCount;\n var count = options.length <= itemsCount ? options.length : itemsCount;\n for (var i = 0; i < count; i++) {\n if (options[Number.parseInt(i.toString(), 10)]) {\n this.itemAt(i)._optionValue = options[Number.parseInt(i.toString(), 10)];\n }\n }\n }\n }\n };\n PdfRadioButtonListField.prototype._obtainSelectedIndex = function () {\n var index = -1;\n for (var i = 0; i < this._kidsCount; ++i) {\n var item = this.itemAt(i);\n if (item) {\n var checkName = _getInheritableProperty(item._dictionary, 'V', false, true, 'Parent');\n if (checkName && item._dictionary.has('AS')) {\n var asName = item._dictionary.get('AS');\n if (asName && asName.name.toLowerCase() !== 'off') {\n if (checkName instanceof _PdfName && checkName.name.toLowerCase() !== 'off') {\n if (asName.name === checkName.name || item._optionValue === checkName.name) {\n index = i;\n break;\n }\n }\n else if (typeof checkName === 'string' && checkName.toLowerCase() !== 'off') {\n if (asName.name === checkName || item._optionValue === checkName) {\n index = i;\n break;\n }\n }\n }\n }\n }\n }\n return index;\n };\n PdfRadioButtonListField.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n var count = this._kidsCount;\n if (this._isLoaded) {\n if (count > 0) {\n for (var i = 0; i < count; i++) {\n var item = this.itemAt(i);\n if (item && !this._checkFieldFlag(item._dictionary)) {\n if (isFlatten) {\n var template = void 0;\n var state = this.selectedIndex === i ?\n _PdfCheckFieldState.checked :\n _PdfCheckFieldState.unchecked;\n if (this._setAppearance || this._form._setAppearance || !item._dictionary.has('AP')) {\n template = this._createAppearance(item, state);\n }\n else {\n template = _getStateTemplate(state, this);\n }\n this._drawTemplate(template, item._getPage(), item.bounds);\n }\n else if (this._setAppearance || this._form._setAppearance || !item._isLoaded) {\n item._postProcess(this.selectedIndex === i ? item.value : 'Off');\n this._drawAppearance(item);\n }\n item._dictionary._updated = !isFlatten;\n }\n }\n }\n else {\n var style = this.selectedIndex !== -1 ?\n _PdfCheckFieldState.checked :\n _PdfCheckFieldState.unchecked;\n this._drawTemplate(_getStateTemplate(style, this), this.page, this.bounds);\n }\n }\n else {\n for (var i = 0; i < count; i++) {\n var item = this.itemAt(i);\n var state = this.selectedIndex === i ? _PdfCheckFieldState.checked : _PdfCheckFieldState.unchecked;\n item._dictionary.update('AS', _PdfName.get(this.selectedIndex === i ? item.value : 'Off'));\n if (isFlatten) {\n var template = this._createAppearance(item, state);\n this._drawTemplate(template, item._getPage(), item.bounds);\n }\n else {\n item._postProcess(this.selectedIndex === i ? item.value : 'Off');\n this._drawAppearance(item);\n }\n item._dictionary._updated = !isFlatten;\n }\n }\n this._dictionary._updated = !isFlatten;\n };\n PdfRadioButtonListField.prototype._createAppearance = function (widget, state) {\n var bounds = widget.bounds;\n var parameter = new _PaintParameter();\n parameter.bounds = [0, 0, bounds.width, bounds.height];\n var backcolor = widget.backColor;\n if (backcolor) {\n parameter.backBrush = new PdfBrush(backcolor);\n }\n parameter.foreBrush = new PdfBrush(widget.color);\n var border = widget.border;\n parameter.borderPen = new PdfPen(widget.borderColor, border.width);\n parameter.borderStyle = border.style;\n parameter.borderWidth = border.width;\n if (backcolor) {\n var shadowColor = [backcolor[0] - 64, backcolor[1] - 64, backcolor[2] - 64];\n var color = [shadowColor[0] >= 0 ? shadowColor[0] : 0,\n shadowColor[1] >= 0 ? shadowColor[1] : 0,\n shadowColor[2] >= 0 ? shadowColor[2] : 0];\n parameter.shadowBrush = new PdfBrush(color);\n }\n parameter.rotationAngle = widget.rotate;\n var template = new PdfTemplate(parameter.bounds, this._crossReference);\n var graphics = template.graphics;\n this._drawRadioButton(graphics, parameter, _styleToString(widget.style), state);\n return template;\n };\n PdfRadioButtonListField.prototype._drawAppearance = function (item) {\n var appearance = new _PdfDictionary();\n if (item._dictionary.has('AP')) {\n appearance = item._dictionary.get('AP');\n if (appearance) {\n if (appearance.has('N')) {\n _removeReferences(appearance.get('N'), this._crossReference, item.value, 'Off');\n }\n if (appearance.has('D')) {\n _removeReferences(appearance.get('D'), this._crossReference, item.value, 'Off');\n }\n }\n _removeDuplicateReference(appearance, this._crossReference, 'N');\n _removeDuplicateReference(appearance, this._crossReference, 'D');\n }\n else {\n var reference = this._crossReference._getNextReference();\n appearance = new _PdfDictionary(this._crossReference);\n this._crossReference._cacheMap.set(reference, appearance);\n item._dictionary.update('AP', reference);\n }\n var normalChecked = this._createAppearance(item, _PdfCheckFieldState.checked);\n var normalCheckedReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(normalCheckedReference, normalChecked._content);\n var normalUnchecked = this._createAppearance(item, _PdfCheckFieldState.unchecked);\n var normalUncheckedReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(normalUncheckedReference, normalUnchecked._content);\n var normalDictionary = new _PdfDictionary(this._crossReference);\n normalDictionary.update(item.value, normalCheckedReference);\n normalDictionary.update('Off', normalUncheckedReference);\n var normalReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(normalReference, normalDictionary);\n appearance.update('N', normalReference);\n var pressChecked = this._createAppearance(item, _PdfCheckFieldState.pressedChecked);\n var pressCheckedReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(pressCheckedReference, pressChecked._content);\n var pressUnchecked = this._createAppearance(item, _PdfCheckFieldState.pressedUnchecked);\n var pressUncheckedReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(pressUncheckedReference, pressUnchecked._content);\n var pressedDictionary = new _PdfDictionary(this._crossReference);\n pressedDictionary.update(item.value, pressCheckedReference);\n pressedDictionary.update('Off', pressUncheckedReference);\n var pressedReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(pressedReference, pressedDictionary);\n appearance.update('D', pressedReference);\n item._dictionary._updated = true;\n };\n return PdfRadioButtonListField;\n}(PdfField));\nexport { PdfRadioButtonListField };\n/**\n * Represents the base class for list box and combo box fields.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the combo box field\n * let comboBoxField: PdfListField = form.fieldAt(0) as PdfListField;\n * // Gets the count of the loaded combo box field items.\n * let comboItemsCount: number = comboBoxField.itemsCount;\n * // Access the list box field\n * let listBoxField: PdfListField = form.fieldAt(1) as PdfListField;\n * // Gets the count of the loaded list box field items.\n * let ListItemsCount: number = listBoxField.itemsCount;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfListField = /** @class */ (function (_super) {\n __extends(PdfListField, _super);\n function PdfListField() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(PdfListField.prototype, \"itemsCount\", {\n /**\n * Gets the count of the loaded field items (Read only).\n *\n * @returns {number} Items count.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the combo box field\n * let comboBoxField: PdfComboBoxField = form.fieldAt(0) as PdfComboBoxField;\n * // Gets the count of the loaded combo box field items.\n * let comboItemsCount: number = comboBoxField.itemsCount;\n * // Access the list box field\n * let listBoxField: PdfListBoxField = form.fieldAt(1) as PdfListBoxField;\n * // Gets the count of the loaded list box field items.\n * let ListItemsCount: number = listBoxField.itemsCount;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._options.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfListField.prototype, \"bounds\", {\n /**\n * Gets the bounds.\n *\n * @returns {{ x: number, y: number, width: number, height: number }} Bounds.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the combo box field\n * let comboBoxField: PdfComboBoxField = form.fieldAt(0) as PdfComboBoxField;\n * // Gets the bounds of combo box field.\n * let comboBoxBounds: {x: number, y: number, width: number, height: number} = comboBoxField.bounds;\n * // Access the combo box field\n * let listBoxField: PdfListBoxField = form.fieldAt(1) as PdfListBoxField;\n * // Gets the bounds of list box field.\n * let listBoxBounds: {x: number, y: number, width: number, height: number} = listBoxField.bounds;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var value;\n var widget = this.itemAt(this._defaultIndex);\n if (widget) {\n widget._page = this.page;\n }\n if (widget && widget.bounds) {\n value = widget.bounds;\n }\n else if (this._dictionary.has('Rect')) {\n value = _calculateBounds(this._dictionary, this.page);\n }\n if (value) {\n return value;\n }\n else if (this._bounds) {\n return this._bounds;\n }\n return value;\n },\n /**\n * Sets the bounds.\n *\n * @param {{ x: number, y: number, width: number, height: number }} value bounds.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the combo box field\n * let comboBoxField: PdfComboBoxField = form.fieldAt(0) as PdfComboBoxField;\n * // Sets the bounds of combo box field.\n * comboBoxField.bounds = {x: 10, y: 10, width: 100, height: 30};\n * // Access the list box field\n * let listBoxField: PdfListBoxField = form.fieldAt(1) as PdfListBoxField;\n * // Sets the bounds of list box field.\n * listBoxField.bounds = {x: 10, y: 50, width: 100, height: 30};\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value.x === 0 && value.y === 0 && value.width === 0 && value.height === 0) {\n throw new Error('Cannot set empty bounds');\n }\n var widget = this.itemAt(this._defaultIndex);\n if (this._isLoaded) {\n if (typeof widget === 'undefined' || this._dictionary.has('Rect')) {\n this._dictionary.update('Rect', _getUpdatedBounds([value.x, value.y, value.width, value.height], this.page));\n }\n else {\n widget._page = this.page;\n widget.bounds = value;\n }\n }\n else {\n if (widget) {\n widget._page = this.page;\n widget.bounds = value;\n }\n else {\n this._bounds = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfListField.prototype, \"selectedIndex\", {\n /**\n * Gets the selected item index or indexes.\n *\n * @returns {number | number[]} Index.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the combo box field\n * let comboBoxfield: PdfComboBoxField = form.fieldAt(0) as PdfComboBoxField;\n * // Gets the selected item index or indexes from combo box field.\n * let comboBoxIndex: number = comboBoxfield.selectedIndex;\n * // Access the list box field\n * let listBoxField: PdfListBoxField = form.fieldAt(1) as PdfListBoxField;\n * // Gets the selected item index or indexes from list box field.\n * let listBoxIndex: number = listBoxField.selectedIndex;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var value = this._dictionary.get('I');\n if (typeof value === 'undefined') {\n return [];\n }\n else {\n if (value.length === 1) {\n return value[0];\n }\n else {\n return value;\n }\n }\n },\n /**\n * Sets the selected item index or indexes.\n *\n * @param {number | number[]} value Selected index.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new list box field\n * let listField: PdfListField = new PdfListBoxField(page, 'list1', {x: 100, y: 60, width: 100, height: 50});\n * // Add list items to the field.\n * listField.addItem(new PdfListFieldItem('English', 'English'));\n * listField.addItem(new PdfListFieldItem('French', 'French'));\n * listField.addItem(new PdfListFieldItem('German', 'German'));\n * // Sets the selected index\n * listField.selectedIndex = 2;\n * // Sets the flag indicates whether the list box allows multiple selections.\n * listField.multiSelect = true;\n * // Add the field into PDF form\n * form.add(listField);\n * // Create a new combo box field\n * let comboField: PdfComboBoxField = new PdfComboBoxField(page, 'list1', {x: 100, y: 160, width: 100, height: 50});\n * // Add list items to the field.\n * comboField.addItem(new PdfListFieldItem('English', 'English'));\n * comboField.addItem(new PdfListFieldItem('French', 'French'));\n * comboField.addItem(new PdfListFieldItem('German', 'German'));\n * // Sets the selected index\n * comboField.selectedIndex = 2;\n * // Sets the flag indicates whether the combo box allows multiple selections.\n * comboField.multiSelect = true;\n * // Add the field into PDF form\n * form.add(comboField);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n var _this = this;\n var length = this._options.length;\n if (typeof value === 'number') {\n this._checkIndex(value, length);\n this._dictionary.update('I', [value]);\n this._dictionary.update('V', [this._options[Number.parseInt(value.toString(), 10)][0]]);\n }\n else {\n var values_1 = [];\n value.forEach(function (entry) {\n _this._checkIndex(entry, length);\n values_1.push(_this._options[Number.parseInt(entry.toString(), 10)][0]);\n });\n this._dictionary.update('I', value);\n this._dictionary.update('V', values_1);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfListField.prototype, \"selectedValue\", {\n /**\n * Gets the selected item value or values.\n *\n * @returns {string | string[]} Selected values.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the list box field\n * let listBoxField: PdfListBoxField = form.fieldAt(0) as PdfListBoxField;\n * // Gets the selected item value or values from list box field.\n * if (listBoxField.multiSelect) {\n * let listBoxValues: string[]; = listBoxField.selectedValue;\n * } else {\n * let listBoxValues: string = listBoxField.selectedValue;\n * }\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var _this = this;\n var values = [];\n if (this._dictionary.has('V')) {\n var value = this._dictionary.getArray('V'); // eslint-disable-line\n if (typeof value !== 'undefined') {\n if (Array.isArray(value)) {\n value.forEach(function (element) {\n values.push(element);\n });\n }\n else if (typeof value === 'string') {\n values.push(value);\n }\n }\n }\n if (values.length === 0 && this._dictionary.has('I')) {\n var value = this._dictionary.get('I');\n if (value && value.length > 0) {\n value.forEach(function (index) {\n values.push(_this._options[Number.parseInt(index.toString(), 10)][0]);\n });\n }\n }\n if (values.length === 1) {\n return values[0];\n }\n else {\n return values;\n }\n },\n /**\n * Sets the selected item value or values.\n *\n * @param {string | string[]} value Selected values.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new list box field\n * let listField: PdfListField = new PdfListBoxField(page, 'list1', {x: 100, y: 60, width: 100, height: 50});\n * // Add list items to the field.\n * listField.addItem(new PdfListFieldItem('English', 'English'));\n * listField.addItem(new PdfListFieldItem('French', 'French'));\n * listField.addItem(new PdfListFieldItem('German', 'German'));\n * // Sets the flag indicates whether the list box allows multiple selections.\n * listField.multiSelect = true;\n * // Sets the selected values\n * listField.selectedValue = ['English', 'German'];\n * // Add the field into PDF form\n * form.add(listField);\n * // Create a new combo box field\n * let comboField: PdfComboBoxField = new PdfComboBoxField(page, 'list1', {x: 100, y: 160, width: 100, height: 50});\n * // Add list items to the field.\n * comboField.addItem(new PdfListFieldItem('English', 'English'));\n * comboField.addItem(new PdfListFieldItem('French', 'French'));\n * comboField.addItem(new PdfListFieldItem('German', 'German'));\n * // Sets the selected value\n * comboField.selectedValue = ['French'];\n * // Add the field into PDF form\n * form.add(comboField);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n var _this = this;\n if (typeof value === 'string') {\n var index = this._tryGetIndex(value);\n if (index !== -1) {\n this._dictionary.update('I', [index]);\n this._dictionary.update('V', [value]);\n }\n }\n else {\n var values_2 = [];\n var indices_1 = [];\n value.forEach(function (entry) {\n var index = _this._tryGetIndex(entry);\n if (index !== -1) {\n indices_1.push(index);\n values_2.push(entry);\n }\n });\n if (values_2.length > 0) {\n this._dictionary.update('I', indices_1);\n this._dictionary.update('V', values_2);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfListField.prototype, \"multiSelect\", {\n /**\n * Gets the flag indicates whether the list field allows multiple selections.\n *\n * @returns {boolean} Value indicates whether the list field allows multiple selections.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the combo box field\n * let comboBoxField: PdfComboBoxField = form.fieldAt(0) as PdfComboBoxField;\n * // Gets the flag indicates whether the combo box allows multiple selections.\n * let comboBoxFlag: Boolean = comboBoxField.multiSelect;\n * // Access the list box field\n * let listBoxField: PdfListBoxField = form.fieldAt(1) as PdfListBoxField;\n * // Gets the flag indicates whether the list box allows multiple selections.\n * let listBoxFlag: boolean = listBoxField.multiSelect;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._isLoaded) {\n return (this._fieldFlags & _FieldFlag.multiSelect) !== 0;\n }\n else {\n return this._multiSelect;\n }\n },\n /**\n * Sets the flag indicates whether the list field allows multiple selections.\n *\n * @param {boolean} value Indicates whether the list field allows multiple selections.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new list box field\n * let listField: PdfListField = new PdfListBoxField(page, 'list1', {x: 100, y: 60, width: 100, height: 50});\n * // Add list items to the field.\n * listField.addItem(new PdfListFieldItem('English', 'English'));\n * listField.addItem(new PdfListFieldItem('French', 'French'));\n * listField.addItem(new PdfListFieldItem('German', 'German'));\n * // Sets the selected index\n * listField.selectedIndex = 2;\n * // Sets the flag indicates whether the list box allows multiple selections.\n * listField.multiSelect = true;\n * // Add the field into PDF form\n * form.add(listField);\n * // Create a new combo box field\n * let comboField: PdfComboBoxField = new PdfComboBoxField(page, 'list1', {x: 100, y: 160, width: 100, height: 50});\n * // Add list items to the field.\n * comboField.addItem(new PdfListFieldItem('English', 'English'));\n * comboField.addItem(new PdfListFieldItem('French', 'French'));\n * comboField.addItem(new PdfListFieldItem('German', 'German'));\n * // Sets the selected index\n * comboField.selectedIndex = 2;\n * // Sets the flag indicates whether the combo box allows multiple selections.\n * comboField.multiSelect = true;\n * // Add the field into PDF form\n * form.add(comboField);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this.multiSelect !== value) {\n this._multiSelect = value;\n if (value) {\n this._fieldFlags |= _FieldFlag.multiSelect;\n }\n else {\n this._fieldFlags &= ~_FieldFlag.multiSelect;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfListField.prototype, \"editable\", {\n /**\n * Gets the flag indicates whether the list field is editable.\n *\n * @returns {boolean} Value indicates whether the list field is editable.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the combo box field\n * let comboBoxField: PdfComboBoxField = form.fieldAt(0) as PdfComboBoxField;\n * // Gets the flag indicates whether the combo box is editable.\n * let comboBoxFlag: Boolean = comboBoxField.editable;\n * // Access the list box field\n * let listBoxField: PdfListBoxField = form.fieldAt(1) as PdfListBoxField;\n * // Gets the flag indicates whether the list box is editable.\n * let listBoxFlag: boolean = listBoxField.editable;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._isLoaded) {\n return (this._fieldFlags & _FieldFlag.edit) !== 0;\n }\n else {\n return this._editable;\n }\n },\n /**\n * Sets the flag indicates whether the list field is editable.\n *\n * @param {boolean} value Indicates whether the list field is editable.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new list box field\n * let listField: PdfListField = new PdfListBoxField(page, 'list1', {x: 100, y: 60, width: 100, height: 50});\n * // Add list items to the field.\n * listField.addItem(new PdfListFieldItem('English', 'English'));\n * listField.addItem(new PdfListFieldItem('French', 'French'));\n * listField.addItem(new PdfListFieldItem('German', 'German'));\n * // Sets the selected index\n * listField.selectedIndex = 2;\n * // Sets the flag indicates whether the list box is editable.\n * listField.editable = true;\n * // Add the field into PDF form\n * form.add(listField);\n * // Create a new combo box field\n * let comboField: PdfComboBoxField = new PdfComboBoxField(page, 'list1', {x: 100, y: 160, width: 100, height: 50});\n * // Add list items to the field.\n * comboField.addItem(new PdfListFieldItem('English', 'English'));\n * comboField.addItem(new PdfListFieldItem('French', 'French'));\n * comboField.addItem(new PdfListFieldItem('German', 'German'));\n * // Sets the selected index\n * comboField.selectedIndex = 2;\n * // Sets the flag indicates whether the combo box is editable.\n * comboField.editable = true;\n * // Add the field into PDF form\n * form.add(comboField);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._editable !== value) {\n this._editable = value;\n if (value) {\n this._fieldFlags |= _FieldFlag.edit;\n }\n else {\n this._fieldFlags &= ~_FieldFlag.edit;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfListField.prototype, \"font\", {\n /**\n * Gets the font of the field.\n *\n * @returns {PdfFont} font.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfListBoxField = document.form.fieldAt(0) as PdfListBoxField;\n * // Gets the font of the field.\n * let font: PdfFont = field.font;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._font) {\n return this._font;\n }\n else {\n var widget = this.itemAt(this._defaultIndex);\n this._font = _obtainFontDetails(this._form, widget, this);\n }\n return this._font;\n },\n /**\n * Sets the font of the field.\n *\n * @param {PdfFont} value font.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfListBoxField = document.form.fieldAt(0) as PdfListBoxField;\n * // Sets the font of the field\n * field.font = new PdfStandardFont(PdfFontFamily.helvetica, 12, PdfFontStyle.bold);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value && value instanceof PdfFont) {\n this._font = value;\n this._initializeFont(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfListField.prototype, \"textAlignment\", {\n /**\n * Gets the text alignment in a combo box field.\n *\n * @returns {PdfTextAlignment} Text alignment.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access combo box field\n * let field: PdfComboBoxField = document.form.fieldAt(0) as PdfComboBoxField;\n * // Gets the text alignment from combo box field\n * let alignment: PdfTextAlignment = field.textAlignment;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._getTextAlignment();\n },\n /**\n * Sets the text alignment in a combo box field.\n *\n * @param {PdfTextAlignment} value Text alignment.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access combo box field\n * let field: PdfComboBoxField = document.form.fieldAt(0) as PdfComboBoxField;\n * // Sets the text alignment of form field as center\n * field.textAlignment = PdfTextAlignment.center;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._textAlignment !== value) {\n this._setTextAlignment(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfListField.prototype, \"backColor\", {\n /**\n * Gets the background color of the field.\n *\n * @returns {number[]} R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the background color of the field.\n * let backColor: number[] = field.backColor;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._parseBackColor(true);\n },\n /**\n * Sets the background color of the field.\n *\n * @param {number[]} value Array with R, G, B, A color values in between 0 to 255. For optional A (0-254), it signifies transparency.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the list field at index 0\n * let list1: PdfField = document.form.fieldAt(0);\n * // Sets the background color of the field.\n * list1.backColor = [255, 0, 0];\n * // Access the list field at index 1\n * let list2: PdfField = document.form.fieldAt(1);\n * // Sets the background color of the field to transparent.\n * list2.backColor = [0, 0, 0, 0];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._updateBackColor(value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfListField.prototype, \"_options\", {\n get: function () {\n if (!this._optionArray) {\n if (this._dictionary.has('Opt')) {\n this._optionArray = this._dictionary.getArray('Opt');\n }\n else {\n this._optionArray = [];\n this._dictionary.update('Opt', this._optionArray);\n }\n }\n return this._optionArray;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the item at the specified index.\n *\n * @param {number} index Index of the field item.\n * @returns {PdfListFieldItem} Field item at the index.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the list box field\n * let listBox: PdfListBoxField = form.fieldAt(0) as PdfListBoxField;\n * // Gets the first list item.\n * let listBoxItem: PdfListFieldItem = listBox.itemAt(0);\n * // Access the combo box field\n * let comboBox: PdfComboBoxField = form.fieldAt(1) as PdfComboBoxField;\n * // Gets the first list item.\n * let comboBoxItem: PdfListFieldItem = comboBox.itemAt(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfListField.prototype.itemAt = function (index) {\n var item;\n if (index < this._kidsCount) {\n if (this._parsedItems.has(index)) {\n item = this._parsedItems.get(index);\n }\n else {\n var dictionary = void 0;\n var reference = this._kids[Number.parseInt(index.toString(), 10)];\n if (reference && reference instanceof _PdfReference) {\n dictionary = this._crossReference._fetch(reference);\n }\n if (dictionary) {\n item = PdfListFieldItem._load(dictionary, this._crossReference, this);\n item._index = index;\n item._ref = reference;\n if (this._options && this._options.length > 0 && index < this._options.length) {\n item._text = this._options[Number.parseInt(index.toString(), 10)][1];\n }\n else {\n item._text = '';\n }\n this._parsedItems.set(index, item);\n }\n }\n }\n else {\n if (this._parsedItems.has(index)) {\n item = this._parsedItems.get(index);\n }\n else if (this._kidsCount > 0 && this._kids && this._kids.length > 0) {\n var dictionary = void 0;\n var reference = void 0;\n if (this._kidsCount === 1) {\n reference = this._kids[0];\n }\n else {\n reference = this._kids[Number.parseInt(index.toString(), 10)];\n }\n if (reference && reference instanceof _PdfReference) {\n dictionary = this._crossReference._fetch(reference);\n }\n if (dictionary) {\n item = PdfListFieldItem._load(dictionary, this._crossReference, this);\n item._index = index;\n item._ref = reference;\n if (this._options && this._options.length > 0 && index < this._options.length) {\n item._text = this._options[Number.parseInt(index.toString(), 10)][1];\n }\n else {\n item._text = '';\n }\n this._parsedItems.set(index, item);\n }\n }\n }\n return item;\n };\n /**\n * Add list item.\n *\n * @param {PdfListFieldItem} item Item to add.\n * @returns {number} Index of the field item.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new list box field\n * let listField: PdfListField = new PdfListBoxField(page, 'list1', {x: 100, y: 60, width: 100, height: 50});\n * // Add list items to the field.\n * listField.addItem(new PdfListFieldItem('English', 'English'));\n * listField.addItem(new PdfListFieldItem('French', 'French'));\n * listField.addItem(new PdfListFieldItem('German', 'German'));\n * // Sets the selected index\n * listField.selectedIndex = 2;\n * // Sets the flag indicates whether the list box allows multiple selections.\n * listField.multiSelect = true;\n * // Add the field into PDF form\n * form.add(listField);\n * // Create a new combo box field\n * let comboField: PdfComboBoxField = new PdfComboBoxField(page, 'list1', {x: 100, y: 160, width: 100, height: 50});\n * // Add list items to the field.\n * comboField.addItem(new PdfListFieldItem('English', 'English'));\n * comboField.addItem(new PdfListFieldItem('French', 'French'));\n * comboField.addItem(new PdfListFieldItem('German', 'German'));\n * // Sets the selected index\n * comboField.selectedIndex = 2;\n * // Sets the flag indicates whether the combo box allows multiple selections.\n * comboField.multiSelect = true;\n * // Add the field into PDF form\n * form.add(comboField);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfListField.prototype.addItem = function (item) {\n this._addToOptions(item, this);\n return this._listValues.length - 1;\n };\n /**\n * Remove the list item from the specified index.\n *\n * @param {number} index Item index to remove.\n * @returns {void} Nothing.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the list box field\n * let listBoxField: PdfListBoxField = form.fieldAt(0) as PdfListBoxField;\n * // Remove the list item from the list box field\n * listBoxField.removeItemAt(1);\n * // Access the combo box field\n * let comboBoxField: PdfComboBoxField = form.fieldAt(1) as PdfComboBoxField;\n * // Remove the list item from the combo box field\n * comboBoxField.removeItemAt(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfListField.prototype.removeItemAt = function (index) {\n var item = this.itemAt(index);\n if (item && item._ref) {\n this._parsedItems.delete(index);\n if (this._parsedItems.size > 0) {\n var parsedItems_3 = new Map();\n this._parsedItems.forEach(function (value, key) {\n if (key > index) {\n parsedItems_3.set(key - 1, value);\n }\n else {\n parsedItems_3.set(key, value);\n }\n });\n this._parsedItems = parsedItems_3;\n }\n if (this._dictionary.has('Opt')) {\n var options = this._options;\n if (options && options.length > 0) {\n options.splice(index, 1);\n this._dictionary.set('Opt', options);\n this._optionArray = options;\n this._dictionary._updated = true;\n }\n }\n }\n };\n /**\n * Remove the list item.\n *\n * @param {PdfListFieldItem} item Item to remove.\n * @returns {void} Nothing.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the list box field\n * let listBoxField: PdfListBoxField = form.fieldAt(0) as PdfListBoxField;\n * // Remove the list item from the list box field\n * listBoxField.removeItem(listBoxField.itemAt(1));\n * // Access the combo box field\n * let comboBoxField: PdfComboBoxField = form.fieldAt(1) as PdfComboBoxField;\n * // Remove the list item from the combo box field\n * comboBoxField.removeItem(comboBoxField.itemAt(0));\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfListField.prototype.removeItem = function (item) {\n if (item && item.text) {\n var index = void 0;\n for (var i = 0; i < this.itemsCount; i++) {\n var fieldItem = this.itemAt(i);\n if (fieldItem && item === fieldItem && fieldItem.text === item.text) {\n index = i;\n break;\n }\n }\n if (index !== -1) {\n this.removeItemAt(index);\n }\n }\n };\n PdfListField.prototype._initialize = function (page, name, bounds) {\n this._defaultIndex = 0;\n this._crossReference = page._crossReference;\n this._page = page;\n this._name = name;\n this._dictionary = new _PdfDictionary(this._crossReference);\n this._ref = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(this._ref, this._dictionary);\n this._dictionary.objId = this._ref.toString();\n this._dictionary.update('FT', _PdfName.get('Ch'));\n this._dictionary.update('T', name);\n this._parsedItems = new Map();\n this._listValues = [];\n this._kids = [];\n this.bounds = bounds;\n this._addEmptyWidget();\n };\n PdfListField.prototype._obtainFont = function (item) {\n var fontFamily = '';\n var fontSize = 1;\n if (item && (item._dictionary.has('DS') || item._dictionary.has('DA'))) {\n if (item._dictionary.has('DS')) {\n var collection = item._dictionary.get('DS').split(';');\n for (var i = 0; i < collection.length; i++) {\n var entry = collection[Number.parseInt(i.toString(), 10)].split(':');\n if (collection[Number.parseInt(i.toString(), 10)].indexOf('font-family') !== -1) {\n fontFamily = entry[1];\n }\n else if (collection[Number.parseInt(i.toString(), 10)].indexOf('font-size') !== -1) {\n if (entry[1].endsWith('pt')) {\n fontSize = Number.parseFloat(entry[1].replace('pt', ''));\n }\n }\n else if (collection[Number.parseInt(i.toString(), 10)].indexOf('font-style') === -1 && collection[Number.parseInt(i.toString(), 10)].indexOf('font') !== -1) {\n var name_6 = entry[1];\n var split = name_6.split(' ');\n for (var j = 0; j < split.length; j++) {\n if (split[Number.parseInt(j.toString(), 10)] !== '' && !split[Number.parseInt(j.toString(), 10)].endsWith('pt')) {\n fontFamily += split[Number.parseInt(j.toString(), 10)] + ' ';\n }\n if (split[Number.parseInt(j.toString(), 10)].endsWith('pt')) {\n fontSize = Number.parseFloat(split[Number.parseInt(j.toString(), 10)].replace('pt', ''));\n }\n }\n while (fontFamily !== ' ' && fontFamily.endsWith(' ')) {\n fontFamily = fontFamily.substring(0, fontFamily.length - 2);\n }\n if (fontFamily.indexOf(',') !== -1) {\n fontFamily = fontFamily.split(',')[0];\n }\n }\n }\n }\n else {\n var value = item._dictionary.get('DA');\n if (value && value !== '' && value.indexOf('Tf') !== -1) {\n var textCollection = value.split(' ');\n for (var i = 0; i < textCollection.length; i++) {\n if (textCollection[Number.parseInt(i.toString(), 10)].indexOf('Tf') !== -1) {\n fontFamily = textCollection[i - 2];\n while (fontFamily !== '' && fontFamily.length > 1 && fontFamily[0] === '/') {\n fontFamily = fontFamily.substring(1);\n }\n fontSize = Number.parseFloat(textCollection[i - 1]);\n }\n }\n var height = 0.0;\n if (fontSize === 0) {\n var font = new PdfStandardFont(PdfFontFamily.helvetica, height);\n if (font !== null) {\n height = this._getFontHeight(font._fontFamily);\n if (Number.isNaN(height) || height === 0) {\n height = 12;\n }\n font._size = height;\n fontSize = height;\n }\n }\n }\n }\n fontFamily = fontFamily.trim();\n switch (fontFamily) {\n case 'Helv':\n this._font = new PdfStandardFont(PdfFontFamily.helvetica, fontSize, PdfFontStyle.regular);\n break;\n case 'Courier':\n case 'Cour':\n this._font = new PdfStandardFont(PdfFontFamily.courier, fontSize, PdfFontStyle.regular);\n break;\n case 'Symb':\n this._font = new PdfStandardFont(PdfFontFamily.symbol, fontSize, PdfFontStyle.regular);\n break;\n case 'TiRo':\n this._font = new PdfStandardFont(PdfFontFamily.timesRoman, fontSize, PdfFontStyle.regular);\n break;\n case 'ZaDb':\n this._font = new PdfStandardFont(PdfFontFamily.zapfDingbats, fontSize, PdfFontStyle.regular);\n break;\n default:\n this._font = new PdfStandardFont(PdfFontFamily.helvetica, fontSize, PdfFontStyle.regular);\n break;\n }\n }\n return this._font;\n };\n PdfListField.prototype._obtainSelectedValue = function () {\n var _this = this;\n var result = [];\n if (this._dictionary.has('V')) {\n var primitive = this._dictionary.get('V'); // eslint-disable-line\n var array = this._dictionary.getArray('V'); // eslint-disable-line\n if (primitive !== null && typeof primitive !== 'undefined') {\n if (typeof primitive === 'string') {\n result.push(primitive);\n }\n else if (Array.isArray(primitive)) {\n array.forEach(function (element) {\n result.push(element);\n });\n }\n }\n }\n else {\n var selectedIndexes = this._dictionary.get('I');\n if (selectedIndexes !== null &&\n typeof selectedIndexes !== 'undefined' &&\n selectedIndexes.length > 0 &&\n selectedIndexes[0] > -1 &&\n this._options &&\n this._options.length > 0) {\n selectedIndexes.forEach(function (index) {\n result.push(_this._options[Number.parseInt(index.toString(), 10)][0]);\n });\n }\n }\n return result;\n };\n PdfListField.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (isFlatten || this._setAppearance || this._form._setAppearance) {\n var count = this._kidsCount;\n if (this._kids && this._kids.length > 0) {\n if (count > 1) {\n for (var i = 0; i < count; i++) {\n var item = this.itemAt(i);\n if (item && !this._checkFieldFlag(item._dictionary)) {\n var template = this._createAppearance(item);\n if (isFlatten) {\n var page = item._getPage();\n if (page) {\n this._drawTemplate(template, page, item.bounds);\n }\n }\n else {\n this._addAppearance(item._dictionary, template, 'N');\n }\n item._dictionary._updated = !isFlatten;\n }\n }\n }\n else {\n var item = this.itemAt(0);\n var template = this._createAppearance();\n if (isFlatten) {\n var page = this.page;\n if (page) {\n this._drawTemplate(template, page, this.bounds);\n }\n }\n else {\n this._addAppearance(item._dictionary, template, 'N');\n }\n item._dictionary._updated = !isFlatten;\n }\n }\n else if (this._dictionary) {\n var template = this._createAppearance();\n if (isFlatten) {\n var page = this.page;\n if (page) {\n this._drawTemplate(template, page, this.bounds);\n }\n }\n else {\n this._addAppearance(this._dictionary, template, 'N');\n }\n }\n this._dictionary._updated = !isFlatten;\n }\n };\n PdfListField.prototype._tryGetIndex = function (value) {\n var index = -1;\n if (this._options && this._options.length > 0) {\n for (var i = 0; i < this._options.length; i++) {\n if (value === this._options[Number.parseInt(i.toString(), 10)][0]) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n PdfListField.prototype._addEmptyWidget = function () {\n var widget = new PdfWidgetAnnotation();\n widget._create(this._page, this.bounds, this);\n this._addToKid(widget);\n widget._dictionary.update('MK', new _PdfDictionary(this._crossReference));\n widget._mkDictionary.update('BC', [0, 0, 0]);\n widget._mkDictionary.update('BG', [1, 1, 1]);\n widget._dictionary.update('DA', '/TiRo 0 Tf 0 0 0 rg');\n };\n return PdfListField;\n}(PdfField));\nexport { PdfListField };\n/**\n * `PdfComboBoxField` class represents the combo box field objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new combo box field\n * let field: PdfComboBoxField = new PdfComboBoxField(page, 'list1', {x: 100, y: 60, width: 100, height: 50});\n * // Add list items to the field.\n * field.addItem(new PdfListFieldItem('English', 'English'));\n * field.addItem(new PdfListFieldItem('French', 'French'));\n * field.addItem(new PdfListFieldItem('German', 'German'));\n * // Sets the selected index\n * field.selectedIndex = 2;\n * // Sets the flag indicates whether the combo box allows multiple selections.\n * field.multiSelect = true;\n * // Add the field into PDF form\n * form.add(field);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfComboBoxField = /** @class */ (function (_super) {\n __extends(PdfComboBoxField, _super);\n function PdfComboBoxField(page, name, bounds) {\n var _this = _super.call(this) || this;\n if (page && name && bounds) {\n _this._initialize(page, name, bounds);\n _this._fieldFlags |= _FieldFlag.combo;\n }\n return _this;\n }\n Object.defineProperty(PdfComboBoxField.prototype, \"_isAutoFontSize\", {\n /**\n * Gets the boolean flag indicates whether the combo box field is auto size.\n *\n * @private\n * @returns {boolean} Returns the boolean value to check auto size.\n */\n get: function () {\n var isAutoFontSize = false;\n if (this._isLoaded && this._form) {\n var acroForm = this._form._dictionary;\n if (acroForm && acroForm.has('DA')) {\n var fontString = acroForm.get('DA');\n if (fontString) {\n var defaultAppearance = new _PdfDefaultAppearance(fontString);\n if (defaultAppearance.fontSize === 0) {\n if (this._kids && this._kids.length > 0) {\n var fontSize = false;\n if (this._dictionary.has('DA')) {\n fontString = this._dictionary.get('DA');\n if (fontString) {\n defaultAppearance = new _PdfDefaultAppearance(fontString);\n if (defaultAppearance && defaultAppearance.fontSize > 0) {\n fontSize = true;\n }\n }\n }\n if (!fontSize) {\n for (var i = 0; i < this._kids.length; i++) {\n var dictionary = void 0;\n var reference = this._kids[Number.parseInt(i.toString(), 10)];\n if (reference && reference instanceof _PdfReference) {\n dictionary = this._crossReference._fetch(reference);\n }\n if (dictionary) {\n if (dictionary.has('DA')) {\n fontString = dictionary.get('DA');\n var height = 0;\n if (fontString) {\n defaultAppearance = new _PdfDefaultAppearance(fontString);\n if (defaultAppearance) {\n height = defaultAppearance.fontSize;\n }\n }\n if (height === 0) {\n isAutoFontSize = true;\n }\n }\n else {\n isAutoFontSize = true;\n }\n }\n }\n }\n }\n else {\n if (this._dictionary.has('DA')) {\n fontString = this._dictionary.get('DA');\n var height = 0;\n if (fontString) {\n defaultAppearance = new _PdfDefaultAppearance(fontString);\n if (defaultAppearance) {\n height = defaultAppearance.fontSize;\n }\n }\n if (height === 0) {\n isAutoFontSize = true;\n }\n }\n else {\n isAutoFontSize = true;\n }\n }\n }\n }\n }\n }\n return isAutoFontSize;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Parse an existing combo box field.\n *\n * @private\n * @param {PdfForm} form Form object.\n * @param {_PdfDictionary} dictionary Field dictionary.\n * @param {_PdfCrossReference} crossReference Cross reference object.\n * @param {_PdfReference} reference Field reference.\n * @returns {PdfComboBoxField} Combo box field.\n */\n PdfComboBoxField._load = function (form, dictionary, crossReference, reference) {\n var field = new PdfComboBoxField();\n field._isLoaded = true;\n field._form = form;\n field._dictionary = dictionary;\n field._crossReference = crossReference;\n field._ref = reference;\n if (field._dictionary.has('Kids')) {\n field._kids = field._dictionary.get('Kids');\n }\n var options = field._dictionary.getArray('Opt');\n if (options !== null && typeof options !== 'undefined') {\n field._listValues = new Array(options.length);\n }\n field._defaultIndex = 0;\n field._parsedItems = new Map();\n if (field._kidsCount > 0) {\n field._retrieveOptionValue();\n }\n return field;\n };\n PdfComboBoxField.prototype._retrieveOptionValue = function () {\n if (this._dictionary.has('Opt')) {\n var options = this._dictionary.getArray('Opt');\n if (options && options.length > 0) {\n var itemsCount = this._kidsCount;\n var count = options.length <= itemsCount ? options.length : itemsCount;\n for (var i = 0; i < count; i++) {\n var text = options[Number.parseInt(i.toString(), 10)][1];\n if (text) {\n this.itemAt(i)._text = text ? text : '';\n }\n }\n }\n }\n };\n PdfComboBoxField.prototype._createAppearance = function (item) {\n var parameter = new _PaintParameter();\n if (item) {\n var bounds = item.bounds;\n var page = item._getPage();\n if (item._isLoaded && page && typeof page.rotation !== 'undefined' && page.rotation !== PdfRotationAngle.angle0) {\n parameter.bounds = this._rotateTextBox([bounds.x, bounds.y, bounds.width, bounds.height], page.size, page.rotation);\n }\n else {\n parameter.bounds = [0, 0, bounds.width, bounds.height];\n }\n var backcolor = item.backColor;\n if (backcolor) {\n parameter.backBrush = new PdfBrush(backcolor);\n }\n parameter.foreBrush = new PdfBrush(item.color);\n var border = item.border;\n parameter.borderPen = new PdfPen(item.borderColor, border.width);\n parameter.borderStyle = border.style;\n parameter.borderWidth = border.width;\n if (backcolor) {\n var shadowColor = [backcolor[0] - 64, backcolor[1] - 64, backcolor[2] - 64];\n var color = [shadowColor[0] >= 0 ? shadowColor[0] : 0,\n shadowColor[1] >= 0 ? shadowColor[1] : 0,\n shadowColor[2] >= 0 ? shadowColor[2] : 0];\n parameter.shadowBrush = new PdfBrush(color);\n }\n parameter.rotationAngle = item.rotate;\n var alignment = typeof item.textAlignment !== 'undefined' ? item.textAlignment : PdfTextAlignment.left;\n var verticalAlignment = this.multiSelect ? PdfVerticalAlignment.top : PdfVerticalAlignment.middle;\n parameter.stringFormat = new PdfStringFormat(alignment, verticalAlignment);\n }\n else {\n var bounds = this.bounds;\n if (bounds) {\n if (this._isLoaded &&\n this.page &&\n typeof this.page.rotation !== 'undefined' &&\n this.page.rotation !== PdfRotationAngle.angle0) {\n parameter.bounds = this._rotateTextBox([bounds.x, bounds.y, bounds.width, bounds.height], this.page.size, this.page.rotation);\n }\n else {\n parameter.bounds = [0, 0, bounds.width, bounds.height];\n }\n }\n var backcolor = this.backColor;\n if (backcolor) {\n parameter.backBrush = new PdfBrush(backcolor);\n }\n parameter.foreBrush = new PdfBrush(this.color);\n var border = this.border;\n parameter.borderPen = new PdfPen(this.borderColor, border.width);\n parameter.borderStyle = border.style;\n parameter.borderWidth = border.width;\n if (backcolor) {\n var shadowColor = [backcolor[0] - 64, backcolor[1] - 64, backcolor[2] - 64];\n var color = [shadowColor[0] >= 0 ? shadowColor[0] : 0,\n shadowColor[1] >= 0 ? shadowColor[1] : 0,\n shadowColor[2] >= 0 ? shadowColor[2] : 0];\n parameter.shadowBrush = new PdfBrush(color);\n }\n parameter.rotationAngle = this.rotationAngle;\n var alignment = typeof this.textAlignment !== 'undefined' ? this.textAlignment : PdfTextAlignment.left;\n var verticalAlignment = this.multiSelect ? PdfVerticalAlignment.top : PdfVerticalAlignment.middle;\n parameter.stringFormat = new PdfStringFormat(alignment, verticalAlignment);\n }\n parameter.required = this.required;\n if (parameter.bounds === null || typeof parameter.bounds === 'undefined') {\n parameter.bounds = [0, 0, 0, 0];\n }\n var template = new PdfTemplate(parameter.bounds, this._crossReference);\n var graphics = template.graphics;\n graphics._sw._clear();\n if (!this.required) {\n graphics._sw._beginMarkupSequence('Tx');\n graphics._initializeCoordinates();\n }\n if (this._isLoaded) {\n var font = void 0;\n if (item) {\n font = this._obtainFont(item);\n }\n if (typeof font === 'undefined' || font === null) {\n font = this._appearanceFont;\n }\n this._drawComboBox(graphics, parameter, font, parameter.stringFormat);\n }\n else {\n if (!this._font) {\n this._font = new PdfStandardFont(PdfFontFamily.timesRoman, this._getFontHeight(PdfFontFamily.helvetica));\n }\n this._drawComboBox(graphics, parameter, this._font, parameter.stringFormat);\n }\n if (!this.required) {\n graphics._sw._endMarkupSequence();\n }\n return template;\n };\n PdfComboBoxField.prototype._drawComboBox = function (graphics, parameter, font, stringFormat) {\n if (graphics._isTemplateGraphics && parameter.required) {\n graphics.save();\n graphics._initializeCoordinates();\n }\n this._drawRectangularControl(graphics, parameter);\n if (graphics._isTemplateGraphics && parameter.required) {\n graphics.restore();\n graphics.save();\n graphics._sw._beginMarkupSequence('Tx');\n graphics._initializeCoordinates();\n }\n var options = this._options;\n var selectedIndexes = this._dictionary.get('I');\n var i = -1;\n if (selectedIndexes && selectedIndexes.length > 0) {\n i = selectedIndexes[0];\n }\n if (i >= 0 && i < options.length) {\n var item = options[Number.parseInt(i.toString(), 10)]; // eslint-disable-line \n var location_1 = [0, 0];\n var borderWidth = parameter.borderWidth;\n var doubleBorderWidth = 2 * borderWidth;\n var defaultPadding = 2;\n var padding = (parameter.borderStyle === PdfBorderStyle.inset || parameter.borderStyle === PdfBorderStyle.beveled);\n if (padding) {\n location_1[0] = 2 * doubleBorderWidth;\n location_1[1] = 2 * borderWidth;\n }\n else {\n location_1[0] = doubleBorderWidth + defaultPadding;\n location_1[1] = 1 * borderWidth + (defaultPadding - 1);\n }\n var brush = parameter.foreBrush;\n var rect = parameter.bounds;\n var width = rect[2] - doubleBorderWidth;\n var rectangle = rect;\n if (padding) {\n rectangle[3] -= doubleBorderWidth;\n }\n else {\n rectangle[3] -= borderWidth;\n }\n graphics.setClip(rectangle, PdfFillMode.winding);\n if (parameter.rotationAngle === 0) {\n var x = rect[0] + borderWidth;\n if (padding) {\n x += borderWidth;\n width -= doubleBorderWidth;\n }\n brush = new PdfBrush([153, 193, 218]);\n graphics.drawRectangle(x, location_1[1], width, rect[3], brush);\n brush = new PdfBrush([0, 0, 0]);\n }\n var value = void 0;\n if (item && Array.isArray(item)) {\n value = item[1] ? item[1] : item[0];\n }\n else {\n value = item;\n }\n if (value) {\n var itemTextBound = [location_1[0], location_1[1], width - location_1[0], rect[3]];\n if (parameter.rotationAngle > 0) {\n var state = graphics.save();\n if (parameter.rotationAngle === 90) {\n graphics.translateTransform(0, graphics._size[1]);\n graphics.rotateTransform(-90);\n var x_1 = graphics._size[1] - (rectangle[1] + rectangle[3]);\n var y = rectangle[0];\n rectangle = [x_1, y, rectangle[3] + rectangle[2], rectangle[2]];\n }\n else if (parameter.rotationAngle === 270) {\n graphics.translateTransform(graphics._size[0], 0);\n graphics.rotateTransform(-270);\n var x_2 = rectangle[1];\n var y = graphics._size[0] - (rectangle[0] + rectangle[2]);\n rectangle = [x_2, y, rectangle[3] + rectangle[2], rectangle[2]];\n }\n else if (parameter.rotationAngle === 180) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(-180);\n var x_3 = graphics._size[0] - (rectangle[0] + rectangle[2]);\n var y = graphics._size[1] - (rectangle[1] + rectangle[3]);\n rectangle = [x_3, y, rectangle[2], rectangle[3]];\n }\n var x = rect[0] + borderWidth;\n if (padding) {\n x += borderWidth;\n width -= doubleBorderWidth;\n }\n brush = new PdfBrush([153, 193, 218]);\n graphics.drawRectangle(x, location_1[1], width, rect[3], brush);\n brush = new PdfBrush([0, 0, 0]);\n graphics.drawString(value, font, itemTextBound, null, brush, stringFormat);\n graphics.restore(state);\n }\n else {\n graphics.drawString(value, font, itemTextBound, null, brush, stringFormat);\n }\n }\n }\n if (graphics._isTemplateGraphics && parameter.required) {\n graphics._sw._endMarkupSequence();\n graphics.restore();\n }\n };\n PdfComboBoxField.prototype._getFontHeight = function (fontFamily) {\n var values = this._dictionary.get('I');\n var s;\n var itemFont;\n var format;\n var options;\n var bounds;\n var borderWidth = this.border.width;\n if (this._isLoaded) {\n itemFont = new PdfStandardFont(fontFamily, 12);\n format = new PdfStringFormat(PdfTextAlignment.center, PdfVerticalAlignment.middle);\n options = this._dictionary.getArray('Opt');\n bounds = this.bounds;\n var widths_1 = [];\n if (values && values.length > 0) {\n values.forEach(function (entry) {\n widths_1.push(itemFont.measureString(options[Number.parseInt(entry.toString(), 10)][1], [0, 0], format, 0, 0)[0]);\n });\n }\n else if (options.length > 0) {\n var max = itemFont.measureString(options[0][1], [0, 0], format, 0, 0)[0];\n for (var i = 1; i < options.length; ++i) {\n var width = itemFont.measureString(options[Number.parseInt(i.toString(), 10)][1], [0, 0], format, 0, 0)[0];\n max = Math.max(max, width);\n widths_1.push(max);\n }\n }\n s = (widths_1.length > 0) ? ((12 * (bounds.width - 4 * borderWidth)) / ((widths_1.sort())[widths_1.length - 1])) : 12;\n }\n else {\n s = 0;\n if (values && values.length > 0) {\n itemFont = new PdfStandardFont(fontFamily, 12);\n format = new PdfStringFormat(PdfTextAlignment.center, PdfVerticalAlignment.middle);\n options = this._dictionary.getArray('Opt');\n var width = itemFont.measureString(options[values[0]][1], [0, 0], format, 0, 0)[0];\n bounds = this.bounds;\n if (width) {\n s = (12 * (bounds.width - 4 * borderWidth)) / width;\n }\n else {\n s = 12;\n }\n }\n else {\n return s;\n }\n }\n var fontSize = 0;\n if (values && values.length > 0) {\n if (s !== 12) {\n itemFont = new PdfStandardFont(fontFamily, s);\n var text = options[values[0]][1];\n var textSize = itemFont.measureString(text, [0, 0], format, 0, 0);\n if (textSize[0] > bounds.width || textSize[1] > bounds.height) {\n var width = bounds.width - 4 * borderWidth;\n var h = bounds.height - 4 * borderWidth;\n var min = 0.248;\n for (var i = 1; i <= bounds.height; i++) {\n itemFont._size = i;\n var size = itemFont.measureString(text, [0, 0], format, 0, 0);\n if (size[0] > bounds.width || size[1] > h) {\n fontSize = i;\n do {\n fontSize = fontSize - 0.001;\n itemFont._size = fontSize;\n var textWidth = itemFont.getLineWidth(text, format);\n if (fontSize < min) {\n itemFont._size = min;\n break;\n }\n size = itemFont.measureString(text, [0, 0], format, 0, 0);\n if (textWidth < width && size[1] < h) {\n itemFont._size = fontSize;\n break;\n }\n } while (fontSize > min);\n s = fontSize;\n break;\n }\n }\n }\n }\n }\n else if (s > 12) {\n s = 12;\n }\n return s;\n };\n return PdfComboBoxField;\n}(PdfListField));\nexport { PdfComboBoxField };\n/**\n * `PdfListBoxField` class represents the list box field objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new list box field\n * let field: PdfListBoxField = new PdfListBoxField(page, 'list1', {x: 100, y: 60, width: 100, height: 50});\n * // Add list items to the field.\n * field.addItem(new PdfListFieldItem('English', 'English'));\n * field.addItem(new PdfListFieldItem('French', 'French'));\n * field.addItem(new PdfListFieldItem('German', 'German'));\n * // Sets the selected index\n * field.selectedIndex = 2;\n * // Sets the flag indicates whether the list box allows multiple selections.\n * field.multiSelect = true;\n * // Add the field into PDF form\n * form.add(field);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfListBoxField = /** @class */ (function (_super) {\n __extends(PdfListBoxField, _super);\n function PdfListBoxField(page, name, bounds) {\n var _this = _super.call(this) || this;\n if (page && name && bounds) {\n _this._initialize(page, name, bounds);\n }\n return _this;\n }\n /**\n * Parse an existing list box field of the PDF document.\n *\n * @private\n * @param {number} form maximum length.\n * @param {_PdfDictionary} dictionary maximum length.\n * @param {_PdfCrossReference} crossReference maximum length.\n * @param {_PdfReference} reference maximum length.\n * @returns {PdfListBoxField} List box field.\n */\n PdfListBoxField._load = function (form, dictionary, crossReference, reference) {\n var field = new PdfListBoxField();\n field._isLoaded = true;\n field._form = form;\n field._dictionary = dictionary;\n field._crossReference = crossReference;\n field._ref = reference;\n if (field._dictionary.has('Kids')) {\n field._kids = field._dictionary.get('Kids');\n }\n var options = field._dictionary.getArray('Opt');\n if (options !== null && typeof options !== 'undefined') {\n field._listValues = new Array(options.length);\n }\n field._defaultIndex = 0;\n field._parsedItems = new Map();\n if (field._kidsCount > 0) {\n field._retrieveOptionValue();\n }\n return field;\n };\n PdfListBoxField.prototype._retrieveOptionValue = function () {\n if (this._dictionary.has('Opt')) {\n var options = this._dictionary.getArray('Opt');\n if (options && options.length > 0) {\n var index = this._dictionary.get('I');\n for (var i = 0; i < options.length; i++) {\n if (typeof index !== 'undefined' && index !== null) {\n this._listValues[Number.parseInt(i.toString(), 10)] = options[Number.parseInt(i.toString(), 10)][1];\n if (i === index) {\n this.itemAt(i)._text = this._listValues[Number.parseInt(i.toString(), 10)];\n this._selectedIndex = i;\n }\n else {\n this.itemAt(i)._text = this._listValues[Number.parseInt(i.toString(), 10)];\n }\n }\n else {\n this.itemAt(i)._text = '';\n }\n }\n }\n }\n };\n PdfListBoxField.prototype._createAppearance = function (item) {\n var parameter = new _PaintParameter();\n if (item) {\n var bounds = item.bounds;\n var page = item._getPage();\n if (item._isLoaded && page && typeof page.rotation !== 'undefined' && page.rotation !== PdfRotationAngle.angle0) {\n parameter.bounds = this._rotateTextBox([bounds.x, bounds.y, bounds.width, bounds.height], page.size, page.rotation);\n }\n else {\n parameter.bounds = [0, 0, bounds.width, bounds.height];\n }\n var backcolor = item.backColor;\n if (backcolor) {\n parameter.backBrush = new PdfBrush(backcolor);\n }\n parameter.foreBrush = new PdfBrush(item.color);\n var border = item.border;\n parameter.borderPen = new PdfPen(item.borderColor, border.width);\n parameter.borderStyle = border.style;\n parameter.borderWidth = border.width;\n if (backcolor) {\n var shadowColor = [backcolor[0] - 64, backcolor[1] - 64, backcolor[2] - 64];\n var color = [shadowColor[0] >= 0 ? shadowColor[0] : 0,\n shadowColor[1] >= 0 ? shadowColor[1] : 0,\n shadowColor[2] >= 0 ? shadowColor[2] : 0];\n parameter.shadowBrush = new PdfBrush(color);\n }\n parameter.rotationAngle = item.rotate;\n var alignment = typeof item.textAlignment !== 'undefined' ? item.textAlignment : PdfTextAlignment.left;\n var verticalAlignment = this.multiSelect ? PdfVerticalAlignment.top : PdfVerticalAlignment.middle;\n parameter.stringFormat = new PdfStringFormat(alignment, verticalAlignment);\n }\n else {\n var bounds = this.bounds;\n if (this._isLoaded &&\n this.page &&\n typeof this.page.rotation !== 'undefined' &&\n this.page.rotation !== PdfRotationAngle.angle0) {\n parameter.bounds = this._rotateTextBox([bounds.x, bounds.y, bounds.width, bounds.height], this.page.size, this.page.rotation);\n }\n else {\n parameter.bounds = [0, 0, bounds.width, bounds.height];\n }\n var backcolor = this.backColor;\n if (backcolor) {\n parameter.backBrush = new PdfBrush(backcolor);\n }\n parameter.foreBrush = new PdfBrush(this.color);\n var border = this.border;\n parameter.borderPen = new PdfPen(this.borderColor, border.width);\n parameter.borderStyle = border.style;\n parameter.borderWidth = border.width;\n if (backcolor) {\n var shadowColor = [backcolor[0] - 64, backcolor[1] - 64, backcolor[2] - 64];\n var color = [shadowColor[0] >= 0 ? shadowColor[0] : 0,\n shadowColor[1] >= 0 ? shadowColor[1] : 0,\n shadowColor[2] >= 0 ? shadowColor[2] : 0];\n parameter.shadowBrush = new PdfBrush(color);\n }\n parameter.rotationAngle = this.rotationAngle;\n var alignment = typeof this.textAlignment !== 'undefined' ? this.textAlignment : PdfTextAlignment.left;\n var verticalAlignment = this.multiSelect ? PdfVerticalAlignment.top : PdfVerticalAlignment.middle;\n parameter.stringFormat = new PdfStringFormat(alignment, verticalAlignment);\n }\n parameter.required = this.required;\n var template = new PdfTemplate(parameter.bounds, this._crossReference);\n var graphics = template.graphics;\n graphics._sw._clear();\n if (!this.required) {\n graphics._sw._beginMarkupSequence('Tx');\n graphics._initializeCoordinates();\n }\n if (this._isLoaded) {\n var font = this._obtainFont(item);\n if ((typeof font === 'undefined' || font === null) || (!this._isLoaded && font.size === 1)) {\n font = this._appearanceFont;\n }\n this._drawListBox(graphics, parameter, font, parameter.stringFormat);\n }\n else {\n if (!this._font) {\n this._font = this._defaultItemFont;\n }\n this._drawListBox(graphics, parameter, this._font, parameter.stringFormat);\n }\n if (!this.required) {\n graphics._sw._endMarkupSequence();\n }\n return template;\n };\n PdfListBoxField.prototype._drawListBox = function (graphics, parameter, font, stringFormat) {\n if (graphics._isTemplateGraphics && parameter.required) {\n graphics.save();\n graphics._initializeCoordinates();\n }\n this._drawRectangularControl(graphics, parameter);\n if (graphics._isTemplateGraphics && parameter.required) {\n graphics.restore();\n graphics.save();\n graphics._sw._beginMarkupSequence('Tx');\n graphics._initializeCoordinates();\n }\n var options = this._options;\n var _loop_1 = function (index) {\n var item = options[Number.parseInt(index.toString(), 10)];\n var location_2 = [];\n var borderWidth = parameter.borderWidth;\n var doubleBorderWidth = 2 * borderWidth;\n var defaultPadding = 2;\n var padding = (parameter.borderStyle === PdfBorderStyle.inset || parameter.borderStyle === PdfBorderStyle.beveled);\n if (padding) {\n location_2.push(2 * doubleBorderWidth);\n location_2.push((index + 2) * borderWidth + font._metrics._getHeight() * index);\n }\n else {\n location_2.push(doubleBorderWidth + defaultPadding);\n location_2.push((index + 1) * borderWidth + font._metrics._getHeight() * index + (defaultPadding - 1));\n }\n var brush = parameter.foreBrush;\n var rect = parameter.bounds;\n var width = rect[2] - doubleBorderWidth;\n var rectangle = rect;\n if (padding) {\n rectangle[3] -= doubleBorderWidth;\n }\n else {\n rectangle[3] -= borderWidth;\n }\n graphics.setClip(rectangle, PdfFillMode.winding);\n var selected = false;\n var selectedIndexes = this_1._dictionary.get('I');\n if (selectedIndexes !== null && typeof selectedIndexes !== 'undefined' && selectedIndexes.length > 0) {\n selectedIndexes.forEach(function (selectedIndex) {\n selected = selected || (selectedIndex === index);\n });\n }\n if (parameter.rotationAngle === 0) {\n if (selected) {\n var x = rect[0] + borderWidth;\n if (padding) {\n x += borderWidth;\n width -= doubleBorderWidth;\n }\n brush = new PdfBrush([153, 193, 218]);\n graphics.drawRectangle(x, location_2[1], width, font._metrics._getHeight(), brush);\n brush = new PdfBrush([0, 0, 0]);\n }\n }\n var value = item[1] ? item[1] : item[0];\n var itemTextBound = [location_2[0], location_2[1], width - location_2[0], font._metrics._getHeight()];\n if (parameter.rotationAngle > 0) {\n var state = graphics.save();\n if (parameter.rotationAngle === 90) {\n graphics.translateTransform(0, graphics._size[1]);\n graphics.rotateTransform(-90);\n var x = graphics._size[1] - (rectangle[1] + rectangle[3]);\n var y = rectangle[0];\n rectangle = [x, y, rectangle[3] + rectangle[2], rectangle[2]];\n }\n else if (parameter.rotationAngle === 270) {\n graphics.translateTransform(graphics._size[0], 0);\n graphics.rotateTransform(-270);\n var x = rectangle[1];\n var y = graphics._size[0] - (rectangle[0] + rectangle[2]);\n rectangle = [x, y, rectangle[3] + rectangle[2], rectangle[2]];\n }\n else if (parameter.rotationAngle === 180) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(-180);\n var x = graphics._size[0] - (rectangle[0] + rectangle[2]);\n var y = graphics._size[1] - (rectangle[1] + rectangle[3]);\n rectangle = [x, y, rectangle[2], rectangle[3]];\n }\n if (selected) {\n var x = rect[0] + borderWidth;\n if (padding) {\n x += borderWidth;\n width -= doubleBorderWidth;\n }\n brush = new PdfBrush([153, 193, 218]);\n graphics.drawRectangle(x, location_2[1], width, font._metrics._getHeight(), brush);\n brush = new PdfBrush([0, 0, 0]);\n }\n graphics.drawString(value, font, itemTextBound, null, brush, stringFormat);\n graphics.restore(state);\n }\n else {\n graphics.drawString(value, font, itemTextBound, null, brush, stringFormat);\n }\n };\n var this_1 = this;\n for (var index = 0; index < options.length; ++index) {\n _loop_1(index);\n }\n if (graphics._isTemplateGraphics && parameter.required) {\n graphics._sw._endMarkupSequence();\n graphics.restore();\n }\n };\n PdfListBoxField.prototype._getFontHeight = function (fontFamily) {\n var itemFont = new PdfStandardFont(fontFamily, 12, PdfFontStyle.regular);\n var format = new PdfStringFormat(PdfTextAlignment.left, PdfVerticalAlignment.middle);\n var s = 0;\n if (this._listValues.length > 0) {\n var max = itemFont.measureString(this._listValues[0], [0, 0], format, 0, 0)[0];\n for (var i = 1; i < this._listValues.length; ++i) {\n var value = itemFont.measureString(this._listValues[Number.parseInt(i.toString(), 10)], [0, 0], format, 0, 0)[0];\n max = (max > value) ? max : value;\n }\n s = ((12 * (this.bounds.width - 4 * this.border.width)) / max);\n s = (s > 12) ? 12 : s;\n }\n return s;\n };\n return PdfListBoxField;\n}(PdfListField));\nexport { PdfListBoxField };\n/**\n * `PdfSignatureField` class represents the signature field objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new signature field\n * let field: PdfSignatureField = new PdfSignatureField(page, 'Signature', {x: 10, y: 10, width: 100, height: 50});\n * // Add the field into PDF form\n * form.add(field);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfSignatureField = /** @class */ (function (_super) {\n __extends(PdfSignatureField, _super);\n function PdfSignatureField(page, name, bounds) {\n var _this = _super.call(this) || this;\n _this._isSigned = false;\n if (page && name && bounds) {\n _this._initialize(page, name, bounds);\n }\n return _this;\n }\n Object.defineProperty(PdfSignatureField.prototype, \"isSigned\", {\n /**\n * Gets the flag to indicate whether the field is signed or not.\n *\n * @returns {boolean} Returns true if the field is signed; otherwise, false.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the loaded signature field\n * let field: PdfSignatureField = document.form.fieldAt(0) as PdfSignatureField;\n * // Get the signed status of the field\n * let isSigned: boolean = field.isSigned;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (!this._isSigned) {\n this._checkSigned();\n }\n return this._isSigned;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSignatureField.prototype, \"backColor\", {\n /**\n * Gets the background color of the field.\n *\n * @returns {number[]} R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the background color of the field.\n * let backColor: number[] = field.backColor;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._parseBackColor(true);\n },\n /**\n * Sets the background color of the field.\n *\n * @param {number[]} value Array with R, G, B, A color values in between 0 to 255. For optional A (0-254), it signifies transparency.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the signature field at index 0\n * let field1: PdfField = document.form.fieldAt(0);\n * // Sets the background color of the field.\n * field1.backColor = [255, 0, 0];\n * // Access the signature field at index 1\n * let field2: PdfField = document.form.fieldAt(1);\n * // Sets the background color of the field to transparent.\n * field2.backColor = [0, 0, 0, 0];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._updateBackColor(value, true);\n },\n enumerable: true,\n configurable: true\n });\n PdfSignatureField._load = function (form, dictionary, crossReference, reference) {\n var field = new PdfSignatureField();\n field._isLoaded = true;\n field._form = form;\n field._dictionary = dictionary;\n field._crossReference = crossReference;\n field._ref = reference;\n if (field._dictionary.has('Kids')) {\n field._kids = field._dictionary.get('Kids');\n }\n field._defaultIndex = 0;\n field._parsedItems = new Map();\n return field;\n };\n PdfSignatureField.prototype._initialize = function (page, name, bounds) {\n this._crossReference = page._crossReference;\n this._page = page;\n this._name = name;\n this._dictionary = new _PdfDictionary(this._crossReference);\n this._ref = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(this._ref, this._dictionary);\n this._dictionary.objId = this._ref.toString();\n this._dictionary.update('FT', _PdfName.get('Sig'));\n this._dictionary.update('T', name);\n this._defaultIndex = 0;\n this._initializeFont(this._defaultFont);\n this._createItem(bounds);\n };\n PdfSignatureField.prototype._createItem = function (bounds) {\n var widget = new PdfWidgetAnnotation();\n widget._create(this._page, bounds, this);\n widget._dictionary.update('MK', new _PdfDictionary(this._crossReference));\n widget._mkDictionary.update('BC', [0, 0, 0]);\n widget._mkDictionary.update('BG', [1, 1, 1]);\n widget._dictionary.update('DA', this._fontName + \" 8 Tf 0 0 0 rg\");\n this._addToKid(widget);\n };\n PdfSignatureField.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n var needAppearance = this._setAppearance || this._form._setAppearance;\n if (!this._isLoaded && (isFlatten || needAppearance)) {\n var count = this._kidsCount;\n if (count > 0) {\n for (var i = 0; i < count; i++) {\n var item = this.itemAt(i);\n if (item && item._dictionary && (needAppearance || (isFlatten && !item._dictionary.has('AP')))) {\n var template = this._createAppearance(item, isFlatten);\n this._addAppearance(item._dictionary, template, 'N');\n }\n }\n }\n }\n if (isFlatten) {\n var count = this._kidsCount;\n if (count > 0) {\n var firstItemTemplate = void 0;\n for (var i = 0; i < count; i++) {\n var item = this.itemAt(i);\n if (item && item._dictionary) {\n var page = item._getPage();\n if (page) {\n if (!firstItemTemplate && i === 0) {\n firstItemTemplate = this._getItemTemplate(item._dictionary);\n }\n this._flattenSignature(item._dictionary, page, item.bounds, firstItemTemplate);\n }\n }\n }\n }\n else {\n this._flattenSignature(this._dictionary, this.page, this.bounds);\n }\n }\n };\n PdfSignatureField.prototype._createAppearance = function (widget, isFlatten) {\n var bounds = widget.bounds;\n var template = new PdfTemplate([0, 0, bounds.width, bounds.height], this._crossReference);\n _setMatrix(template, null);\n template._writeTransformation = false;\n var graphics = template.graphics;\n var parameter = new _PaintParameter();\n parameter.bounds = [0, 0, bounds.width, bounds.height];\n var backcolor = widget.backColor;\n if (isFlatten && backcolor) {\n parameter.backBrush = new PdfBrush(backcolor);\n }\n parameter.foreBrush = new PdfBrush(widget.color);\n var border = widget.border;\n parameter.borderPen = new PdfPen(widget.borderColor, border.width);\n parameter.borderStyle = border.style;\n parameter.borderWidth = border.width;\n if (backcolor) {\n var shadowColor = [backcolor[0] - 64, backcolor[1] - 64, backcolor[2] - 64];\n var color = [shadowColor[0] >= 0 ? shadowColor[0] : 0,\n shadowColor[1] >= 0 ? shadowColor[1] : 0,\n shadowColor[2] >= 0 ? shadowColor[2] : 0];\n parameter.shadowBrush = new PdfBrush(color);\n }\n parameter.rotationAngle = widget.rotate;\n graphics.save();\n graphics._initializeCoordinates();\n this._drawRectangularControl(graphics, parameter);\n graphics.restore();\n return template;\n };\n PdfSignatureField.prototype._flattenSignature = function (dictionary, page, bounds, signatureTemplate) {\n var template;\n if (dictionary.has('AP')) {\n var appearanceDictionary = dictionary.get('AP');\n if (appearanceDictionary && appearanceDictionary.has('N')) {\n var appearanceStream = appearanceDictionary.get('N');\n var reference = appearanceDictionary.getRaw('N');\n if (reference && appearanceStream) {\n appearanceStream.reference = reference;\n }\n if (appearanceStream) {\n if (signatureTemplate) {\n template = signatureTemplate;\n }\n else {\n template = new PdfTemplate(appearanceStream, this._crossReference);\n }\n if (template && page) {\n var graphics = page.graphics;\n var state = graphics.save();\n if (page.rotation !== PdfRotationAngle.angle0) {\n graphics._drawTemplate(template, this._calculateTemplateBounds(bounds, page, template, graphics));\n }\n else {\n graphics._drawTemplate(template, bounds);\n }\n graphics.restore(state);\n }\n }\n }\n }\n else if (signatureTemplate && page) {\n var graphics = page.graphics;\n var state = graphics.save();\n if (page.rotation !== PdfRotationAngle.angle0) {\n graphics._drawTemplate(template, this._calculateTemplateBounds(bounds, page, template, graphics));\n }\n else {\n graphics._drawTemplate(template, bounds);\n }\n graphics.restore(state);\n }\n };\n PdfSignatureField.prototype._calculateTemplateBounds = function (bounds, page, template, graphics) {\n var x = bounds.x;\n var y = bounds.y;\n if (page) {\n var graphicsRotation = this._obtainGraphicsRotation(graphics._matrix);\n if (graphicsRotation === 90) {\n graphics.translateTransform(template._size[1], 0);\n graphics.rotateTransform(90);\n x = bounds.x;\n y = -(page._size[1] - bounds.y - bounds.height);\n }\n else if (graphicsRotation === 180) {\n graphics.translateTransform(template._size[0], template._size[1]);\n graphics.rotateTransform(180);\n x = -(page._size[0] - (bounds.x + template._size[0]));\n y = -(page._size[1] - bounds.y - template._size[1]);\n }\n else if (graphicsRotation === 270) {\n graphics.translateTransform(0, template._size[0]);\n graphics.rotateTransform(270);\n x = -(page._size[0] - bounds.x - bounds.width);\n y = bounds.y;\n }\n }\n return { x: x, y: y, width: bounds.width, height: bounds.height };\n };\n PdfSignatureField.prototype._obtainGraphicsRotation = function (matrix) {\n var angle = Math.round(Math.atan2(matrix._matrix._elements[2], matrix._matrix._elements[0]) * 180 / Math.PI);\n switch (angle) {\n case -90:\n angle = 90;\n break;\n case -180:\n angle = 180;\n break;\n case 90:\n angle = 270;\n break;\n }\n return angle;\n };\n PdfSignatureField.prototype._getItemTemplate = function (dictionary) {\n var template;\n if (dictionary.has('AP')) {\n var appearanceDictionary = dictionary.get('AP');\n if (appearanceDictionary && appearanceDictionary.has('N')) {\n var appearanceStream = appearanceDictionary.get('N');\n var reference = appearanceDictionary.getRaw('N');\n if (reference) {\n appearanceStream.reference = reference;\n }\n if (appearanceStream) {\n template = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n return template;\n };\n PdfSignatureField.prototype._checkSigned = function () {\n if (this._dictionary && this._dictionary.has('V')) {\n var dictionary = this._dictionary.get('V');\n if (dictionary !== null && typeof dictionary !== 'undefined' && dictionary.size > 0) {\n this._isSigned = true;\n }\n }\n };\n return PdfSignatureField;\n}(PdfField));\nexport { PdfSignatureField };\nvar _PdfDefaultAppearance = /** @class */ (function () {\n function _PdfDefaultAppearance(da) {\n var color;\n var fontName = '';\n var fontSize = 0;\n if (da && typeof da === 'string' && da !== '') {\n var sliced = da.split(' ');\n for (var i = 0; i < sliced.length; i++) {\n switch (sliced[Number.parseInt(i.toString(), 10)]) {\n case 'g':\n color = [Number.parseFloat(sliced[i - 1])];\n break;\n case 'rg':\n color = [Number.parseFloat(sliced[i - 3]), Number.parseFloat(sliced[i - 2]), Number.parseFloat(sliced[i - 1])];\n break;\n case 'k':\n color = [Number.parseFloat(sliced[i - 4]), Number.parseFloat(sliced[i - 3]), Number.parseFloat(sliced[i - 2]),\n Number.parseFloat(sliced[i - 1])];\n break;\n case 'Tf':\n fontSize = Number.parseFloat(sliced[i - 1]);\n fontName = sliced[i - 2].substring(1);\n if (fontName.includes('#2C')) {\n fontName.replace('#2C', ',');\n }\n break;\n }\n }\n }\n this.fontName = fontName;\n this.fontSize = fontSize;\n this.color = (typeof color !== 'undefined') ? _parseColor(color) : [0, 0, 0];\n }\n _PdfDefaultAppearance.prototype.toString = function () {\n var color = [Number.parseFloat((this.color[0] / 255).toFixed(3)),\n Number.parseFloat((this.color[1] / 255).toFixed(3)),\n Number.parseFloat((this.color[2] / 255).toFixed(3))];\n return '/' +\n this.fontName +\n ' ' +\n this.fontSize +\n ' Tf ' +\n color[0].toString() +\n ' ' +\n color[1].toString() +\n ' ' +\n color[2].toString() +\n ' rg';\n };\n return _PdfDefaultAppearance;\n}());\nexport { _PdfDefaultAppearance };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _PdfDictionary, _PdfName, _PdfReference } from './pdf-primitives';\nimport { PdfFormFieldVisibility, PdfAnnotationFlag, PdfCheckBoxStyle, PdfHighlightMode, PdfBorderStyle, PdfBorderEffectStyle, PdfLineEndingStyle, _PdfCheckFieldState, PdfMeasurementUnit, _PdfGraphicsUnit, PdfTextMarkupAnnotationType, PdfRotationAngle, PdfAnnotationState, PdfAnnotationStateModel, PdfPopupIcon, PdfRubberStampAnnotationIcon, PdfAttachmentIcon, PdfAnnotationIntent, PdfBlendMode, _PdfAnnotationType } from './enumerator';\nimport { _PdfTransformationMatrix } from './graphics/pdf-graphics';\nimport { _PdfBaseStream, _PdfStream } from './base-stream';\nimport { PdfAnnotation } from './annotations/annotation';\nimport { PdfTemplate } from './graphics/pdf-template';\nimport { PdfField } from './form/field';\nimport { PdfCjkFontFamily, PdfCjkStandardFont, PdfFontFamily, PdfFontStyle, PdfStandardFont, PdfTrueTypeFont } from './fonts/pdf-standard-font';\n/**\n * Gets the page rotation.\n *\n * @param {PdfPage} page Page.\n * @param {number} height Height.\n * @param {number} left Left.\n * @returns {number} Page rotation.\n */\nexport function _checkRotation(page, height, left) {\n var topValue = 0;\n left = (typeof left === 'undefined' || left === null) ? 0 : left;\n if (page.rotation === PdfRotationAngle.angle90) {\n topValue = (typeof height === 'undefined' || height === null) ? 0 : left;\n }\n else if (page.rotation === PdfRotationAngle.angle180) {\n topValue = (typeof height === 'undefined' || height === null) ? 0 : height;\n }\n else if (page.rotation === PdfRotationAngle.angle270) {\n var size = page.size;\n topValue = (typeof height === 'undefined' || height === null) ? 0 : size[0] - left;\n }\n return topValue;\n}\n/**\n * Gets the page index.\n *\n * @param {PdfDocument} loadedDocument Loaded document.\n * @param {_PdfDictionary} pageDictionary Page dictionary.\n * @returns {number} Page index.\n */\nexport function _getPageIndex(loadedDocument, pageDictionary) {\n var index = -1;\n for (var i = 0; i < loadedDocument.pageCount; i++) {\n var page = loadedDocument.getPage(i);\n if (page._pageDictionary === pageDictionary) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * Convert string value from annotation flag\n *\n * @private\n * @param {PdfAnnotationFlag} flag Annotation flag.\n * @returns {string} Valid string to write into XML.\n */\nexport function _annotationFlagsToString(flag) {\n var values = [];\n if ((flag & PdfAnnotationFlag.hidden) !== 0) {\n values.push('hidden');\n }\n if ((flag & PdfAnnotationFlag.invisible) !== 0) {\n values.push('invisible');\n }\n if ((flag & PdfAnnotationFlag.locked) !== 0) {\n values.push('locked');\n }\n if ((flag & PdfAnnotationFlag.noRotate) !== 0) {\n values.push('norotate');\n }\n if ((flag & PdfAnnotationFlag.noView) !== 0) {\n values.push('noview');\n }\n if ((flag & PdfAnnotationFlag.noZoom) !== 0) {\n values.push('nozoom');\n }\n if ((flag & PdfAnnotationFlag.print) !== 0) {\n values.push('print');\n }\n if ((flag & PdfAnnotationFlag.readOnly) !== 0) {\n values.push('readonly');\n }\n if ((flag & PdfAnnotationFlag.toggleNoView) !== 0) {\n values.push('togglenoview');\n }\n if ((flag & PdfAnnotationFlag.default) !== 0) {\n values.push('default');\n }\n return values.join(',');\n}\n/**\n * Convert string value to annotation flag\n *\n * @private\n * @param {string} flag String value to map\n * @returns {PdfAnnotationFlag} Annotation flag\n */\nexport function _stringToAnnotationFlags(flag) {\n switch (flag) {\n case 'hidden':\n return PdfAnnotationFlag.hidden;\n case 'invisible':\n return PdfAnnotationFlag.invisible;\n case 'locked':\n return PdfAnnotationFlag.locked;\n case 'norotate':\n return PdfAnnotationFlag.noRotate;\n case 'noview':\n return PdfAnnotationFlag.noView;\n case 'nozoom':\n return PdfAnnotationFlag.noZoom;\n case 'print':\n return PdfAnnotationFlag.print;\n case 'readonly':\n return PdfAnnotationFlag.readOnly;\n case 'togglenoview':\n return PdfAnnotationFlag.toggleNoView;\n default:\n return PdfAnnotationFlag.default;\n }\n}\n/**\n * Convert string value to byte array\n *\n * @private\n * @param {string} value string value.\n * @returns {string} Valid string to write into PDF.\n */\nexport function _stringToPdfString(value) {\n if (value.charCodeAt(0) >= '\\xEF'.charCodeAt(0)) {\n var encoding = void 0;\n if (value[0] === '\\xEF' && value[1] === '\\xBB' && value[2] === '\\xBF') {\n encoding = 'utf-8';\n }\n else if (value[0] === '\\xFF' && value[1] === '\\xFE') {\n encoding = 'utf-16le';\n }\n else if (value[0] === '\\xFE' && value[1] === '\\xFF') {\n encoding = 'utf-16be';\n }\n if (encoding) {\n try {\n return (new TextDecoder(encoding, { fatal: true })).decode(_stringToBytes(value));\n }\n catch (e) { } // eslint-disable-line\n }\n }\n var buffer = [];\n var translateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac\n ];\n for (var i = 0; i < value.length; i++) {\n var code = translateTable[value.charCodeAt(i)];\n buffer.push(code ? String.fromCharCode(code) : value.charAt(i));\n }\n return buffer.join('');\n}\n/**\n * Convert string value to byte array\n *\n * @private\n * @param {string} value string value.\n * @param {boolean} isDirect Whether to return object or number[]. Default is false.\n * @returns {Uint8Array | number[]} Byte array\n */\nexport function _stringToBytes(value, isDirect) {\n if (isDirect === void 0) { isDirect = false; }\n var bytes = [];\n for (var i = 0; i < value.length; ++i) {\n bytes.push(value.charCodeAt(i) & 0xff);\n }\n return isDirect ? bytes : new Uint8Array(bytes);\n}\n/**\n * Convert string value to byte array\n *\n * @private\n * @param {string} value string value.\n * @param {number[]} destination byte array.\n * @returns {number[]} Byte array\n */\nexport function _convertStringToBytes(value, destination) {\n for (var i = 0; i < value.length; ++i) {\n destination.push(value.charCodeAt(i) & 0xff);\n }\n return destination;\n}\n/**\n * Check equal or not.\n *\n * @private\n * @param {number[]} first byte array.\n * @param {number[]} second byte array.\n * @returns {boolean} Equal or not\n */\nexport function _areArrayEqual(first, second) {\n if (first.length !== second.length) {\n return false;\n }\n for (var i = 0; i < first.length; i++) {\n if (first[Number.parseInt(i.toString(), 10)] !== second[Number.parseInt(i.toString(), 10)]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Convert number to string as round value with fixed decimal points 2.\n *\n * @private\n * @param {number[]} value number value.\n * @returns {boolean} Equal string.\n */\nexport function _numberToString(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n return value.toFixed(7);\n}\n/**\n * Check whether entries in two array are equal or not.\n *\n * @private\n * @param {number[]} value first array.\n * @param {number[]} current second array.\n * @returns {boolean} Return true if for each elements are equal in both array.\n */\nexport function _areNotEqual(value, current) {\n var result = false;\n if (value.length !== current.length) {\n return true;\n }\n for (var i = 0; i < value.length; i++) {\n if (value[i] !== current[i]) { // eslint-disable-line\n result = true;\n break;\n }\n }\n return result;\n}\n/**\n * Process bytes and convert as string.\n *\n * @private\n * @param {Uint8Array} bytes Input data.\n * @returns {string} String value processed from input bytes.\n */\nexport function _bytesToString(bytes) {\n var length = bytes.length;\n var max = 8192;\n if (length < max) {\n return String.fromCharCode.apply(null, bytes);\n }\n var stringBuffer = [];\n for (var i = 0; i < length; i += max) {\n var chunkEnd = Math.min(i + max, length);\n var chunk = bytes.subarray(i, chunkEnd);\n stringBuffer.push(String.fromCharCode.apply(null, chunk));\n }\n return stringBuffer.join('');\n}\n/**\n * Convert string to unicode array.\n *\n * @private\n * @param {string} value string value.\n * @returns {Uint8Array} unicode array\n */\nexport function _stringToUnicodeArray(value) {\n var output = [];\n if (value !== null && typeof value !== 'undefined') {\n for (var i = 0; i < value.length; i++) {\n var code = value.charCodeAt(i);\n output.push(code / 256 >>> 0);\n output.push(code & 0xff);\n }\n }\n var unicodeArray = new Uint8Array(output);\n return unicodeArray;\n}\n/**\n * Convert byte array to hex string.\n *\n * @private\n * @param {Uint8Array} byteArray Byte array.\n * @returns {string} Hex string.\n */\nexport function _byteArrayToHexString(byteArray) {\n var nextHexByte;\n var stringBuffer = [];\n for (var i = 0; i < byteArray.length; i++) {\n nextHexByte = byteArray[Number.parseInt(i.toString(), 10)].toString(16).toUpperCase();\n if (nextHexByte.length < 2) {\n nextHexByte = '0' + nextHexByte;\n }\n stringBuffer.push(nextHexByte);\n }\n return stringBuffer.join('');\n}\n/**\n * Convert hex string to byte array.\n *\n * @private\n * @param {string} hexString Hex string.\n * @param {boolean} isDirect Whether to return object or number[]. Default is false.\n * @returns {Uint8Array | number[]} Byte array.\n */\nexport function _hexStringToByteArray(hexString, isDirect) {\n if (isDirect === void 0) { isDirect = false; }\n var array = [];\n if (hexString) {\n for (var i = 0; i < hexString.length; i += 2) {\n array.push(Number.parseInt(hexString.substring(i, i + 2), 16));\n }\n }\n return isDirect ? array : new Uint8Array(array);\n}\n/**\n * Convert hex string to normal string.\n *\n * @private\n * @param {string} hexString Hex string.\n * @returns {string} Normal string.\n */\nexport function _hexStringToString(hexString) {\n var result = '';\n if (hexString && hexString[0] === '#') {\n hexString = hexString.substring(1);\n for (var i = 0; i < hexString.length; i += 2) {\n result += String.fromCharCode(Number.parseInt(hexString.substring(i, i + 2), 16));\n }\n return result;\n }\n return hexString;\n}\n/**\n * Check whether the character code is white space.\n *\n * @private\n * @param {number} ch The character code to check.\n * @returns {boolean} True if the character is space, otherwise false.\n */\nexport function _isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n/**\n * Decode bytes from base64 string.\n *\n * @private\n * @param {string} input The base64 string to decode.\n * @param {boolean} isDirect Whether to return object or number[]. Default is false.\n * @returns {Uint8Array | number[]} Decoded bytes.\n */\nexport function _decode(input, isDirect) {\n if (isDirect === void 0) { isDirect = false; }\n var key = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var enc1;\n var enc2;\n var enc3;\n var enc4;\n var i = 0;\n var resultIndex = 0;\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, ''); // eslint-disable-line\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === key.charAt(64)) {\n totalLength--;\n }\n var output = new Array(totalLength | 0);\n while (i < input.length) {\n enc1 = key.indexOf(input.charAt(i++));\n enc2 = key.indexOf(input.charAt(i++));\n enc3 = key.indexOf(input.charAt(i++));\n enc4 = key.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n if (resultIndex < totalLength) {\n output[resultIndex++] = chr1;\n }\n if (resultIndex < totalLength) {\n output[resultIndex++] = chr2;\n }\n if (resultIndex < totalLength) {\n output[resultIndex++] = chr3;\n }\n }\n return isDirect ? output : new Uint8Array(output);\n}\n/**\n * Encode bytes to base64 string.\n *\n * @private\n * @param {Uint8Array} bytes Bytes to encode.\n * @returns {string} Decoded string.\n */\nexport function _encode(bytes) {\n var key = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var output = '';\n var currentChar = 0;\n for (var i = 0; i < bytes.length; i++) {\n if (i % 3 === 0) {\n currentChar = (bytes[Number.parseInt(i.toString(), 10)] >> 2);\n output += key[Number.parseInt(currentChar.toString(), 10)];\n currentChar = (bytes[Number.parseInt(i.toString(), 10)] << 4) & 63;\n }\n else if (i % 3 === 1) {\n currentChar += (bytes[Number.parseInt(i.toString(), 10)] >> 4);\n output += key[Number.parseInt(currentChar.toString(), 10)];\n currentChar = (bytes[Number.parseInt(i.toString(), 10)] << 2) & 63;\n }\n else if (i % 3 === 2) {\n currentChar += (bytes[Number.parseInt(i.toString(), 10)] >> 6);\n output += key[Number.parseInt(currentChar.toString(), 10)];\n currentChar = bytes[Number.parseInt(i.toString(), 10)] & 63;\n output += key[Number.parseInt(currentChar.toString(), 10)];\n }\n }\n if (bytes.length % 3 === 1) {\n output += key[Number.parseInt(currentChar.toString(), 10)] + \"==\";\n }\n if (bytes.length % 3 === 2) {\n output += key[Number.parseInt(currentChar.toString(), 10)] + \"=\";\n }\n return output;\n}\n/**\n * Get property value in inheritable mode.\n *\n * @private\n * @param {_PdfDictionary} dictionary Input dictionary.\n * @param {string} key Input dictionary.\n * @param {boolean} isArray Search array.\n * @param {boolean} stopWhenFound Stop when found.\n * @param {string[]} parentKey Key string for parent node.\n * @returns {any} Property value.\n */\nexport function _getInheritableProperty(dictionary, key, isArray, stopWhenFound) {\n if (isArray === void 0) { isArray = false; }\n if (stopWhenFound === void 0) { stopWhenFound = true; }\n var parentKey = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n parentKey[_i - 4] = arguments[_i];\n }\n var values; // eslint-disable-line\n var refSet = new Set(); // eslint-disable-line\n while (dictionary instanceof _PdfDictionary && dictionary.objId && !refSet.has(dictionary.objId)) {\n if (dictionary.objId) {\n refSet.add(dictionary.objId);\n }\n var value = isArray ? dictionary.getArray(key) : dictionary.get(key); // eslint-disable-line\n if (value !== undefined) {\n if (stopWhenFound) {\n return value;\n }\n if (!values) {\n values = [];\n }\n values.push(value);\n }\n var index = 0;\n var hasParent = false;\n while (index < parentKey.length) {\n var element = parentKey[index]; // eslint-disable-line\n if (dictionary.has(element)) {\n dictionary = dictionary.get(element);\n hasParent = true;\n break;\n }\n index++;\n }\n if (!hasParent) {\n break;\n }\n }\n return values;\n}\n/**\n * Calculate bounds of annotation or field.\n *\n * @private\n * @param {_PdfDictionary} dictionary Input dictionary.\n * @param {boolean} isWidget Input page.\n * @returns {any} Bounds value.\n */\nexport function _parseRectangle(dictionary, isWidget) {\n var rectangle = { x: 0, y: 0, width: 0, height: 0 };\n var elements = dictionary.getArray('Rect');\n if (elements && Array.isArray(elements)) {\n var x1 = elements[0];\n var y1 = elements[1];\n var x2 = elements[2];\n var y2 = elements[3];\n if (typeof x1 !== 'undefined' && typeof y1 !== 'undefined' && typeof x2 !== 'undefined' && typeof y2 !== 'undefined') {\n rectangle.x = Math.min(x1, x2);\n rectangle.y = Math.min(y1, y2);\n rectangle.width = Math.max(x1, x2) - rectangle.x;\n rectangle.height = Math.max(y1, y2) - rectangle.y;\n if (isWidget) {\n rectangle.height = parseFloat(rectangle.height.toFixed(3));\n if (elements[1] < 0) {\n rectangle.y = elements[1];\n if (elements[1] > elements[3]) {\n rectangle.y -= rectangle.height;\n }\n }\n }\n }\n }\n return rectangle;\n}\n/**\n * Calculate bounds of annotation or field.\n *\n * @private\n * @param {_PdfDictionary} dictionary Input dictionary.\n * @param {string} page Input page.\n * @returns {any} Bounds value.\n */\nexport function _calculateBounds(dictionary, page) {\n var rect;\n if (dictionary.has('Rect')) {\n rect = _parseRectangle(dictionary);\n if (page) {\n var size = page.size;\n var mBox = page.mediaBox;\n var cropBox = page.cropBox;\n if (cropBox && Array.isArray(cropBox) && cropBox.length === 4 && page._pageDictionary.has('CropBox')) {\n if ((cropBox[0] !== 0 || cropBox[1] !== 0 || size[0] === cropBox[2] ||\n size[1] === cropBox[3]) && (rect.x !== cropBox[0])) {\n rect.x -= cropBox[0];\n rect.y = cropBox[3] - (rect.y + rect.height);\n }\n else {\n rect.y = size[1] - (rect.y + rect.height);\n }\n }\n else if (mBox && Array.isArray(mBox) && mBox.length === 4 && page._pageDictionary.has('MediaBox')) {\n if (mBox[0] > 0 || mBox[1] > 0 || size[0] === mBox[2] || size[1] === mBox[3]) {\n rect.x -= mBox[0];\n rect.y = mBox[3] - (rect.y + rect.height);\n }\n else {\n rect.y = size[1] - (rect.y + rect.height);\n }\n }\n else {\n rect.y = size[1] - (rect.y + rect.height);\n }\n }\n else {\n rect.y = rect.y + rect.height;\n }\n }\n return rect;\n}\n/**\n * Calculate bounds of annotation or field.\n *\n * @private\n * @param {number[]} value array value.\n * @returns {any} Rectangle value.\n */\nexport function _toRectangle(value) {\n return {\n x: Math.min(value[0], value[2]),\n y: Math.min(value[1], value[3]),\n width: Math.abs(value[0] - value[2]),\n height: Math.abs(value[1] - value[3])\n };\n}\n/**\n * Calculate bounds of annotation or field.\n *\n * @private\n * @param {any} value Rectangle value.\n * @param {any} value.x X value.\n * @param {any} value.y Y value.\n * @param {any} value.width Width value.\n * @param {any} value.height Height value.\n * @returns {number[]} Bounds value.\n */\nexport function _fromRectangle(value) {\n return [value.x, value.y, value.x + value.width, value.y + value.height];\n}\n/**\n * Calculate bounds of annotation or field.\n *\n * @private\n * @param {number[]} value Input dictionary.\n * @param {string} page Input page.\n * @returns {number[]} Bounds value.\n */\nexport function _getUpdatedBounds(value, page) {\n var x = value[0];\n var y = value[1];\n var width = value[2];\n var height = value[3];\n if (page) {\n var size = page.size;\n var pageWidth = size[0];\n var pageHeight = size[1];\n var mBox = page.mediaBox;\n var cropBox = page.cropBox;\n if (cropBox && Array.isArray(cropBox) && cropBox.length === 4) {\n if (cropBox[0] !== 0 || cropBox[1] !== 0 || pageWidth === cropBox[2] || pageHeight === cropBox[3]) {\n x += cropBox[0];\n y = cropBox[3] - (y + height);\n }\n else {\n y = pageHeight - (y + height);\n }\n }\n else if (mBox && Array.isArray(mBox) && mBox.length === 4) {\n if (mBox[0] > 0 || mBox[1] > 0 || pageWidth === mBox[2] || pageHeight === mBox[3]) {\n x -= mBox[0];\n y = mBox[3] - (y + height);\n }\n else {\n y = pageHeight - (y + height);\n }\n }\n else {\n y = pageHeight - (y + height);\n }\n }\n return [x, y, x + width, y + height];\n}\n/**\n * Parse RGB color.\n *\n * @private\n * @param {string} colorString Color value in string format.\n * @returns {number[]} RGB color value.\n */\nexport function _convertToColor(colorString) {\n var color = _getColorValue(colorString);\n if (!color) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(colorString);\n if (result) {\n color = [Number.parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)];\n }\n }\n return color;\n}\n/**\n * Parse RGB color.\n *\n * @private\n * @param {number[]} array Color array in dictionary.\n * @returns {number[]} RGB color value.\n */\nexport function _parseColor(array) {\n var color;\n if (array) {\n if (array.length === 1) {\n var entry = array[0];\n if (typeof entry !== 'undefined') {\n var round = Math.round(entry * 255);\n color = [round, round, round];\n }\n }\n else if (array.length === 3) {\n var r = array[0];\n var g = array[1];\n var b = array[2];\n if (typeof r !== 'undefined' && typeof g !== 'undefined' && typeof b !== 'undefined') {\n color = [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n }\n }\n else if (array.length === 4) {\n var c = array[0];\n var m = array[1];\n var y = array[2];\n var k = array[3];\n if (typeof c !== 'undefined' && typeof m !== 'undefined' && typeof y !== 'undefined' && typeof k !== 'undefined') {\n var fBlack = k * 255;\n color = [Math.round(255 - Math.min(255, ((c * (255 - fBlack)) + fBlack))),\n Math.round(255 - Math.min(255, ((m * (255 - fBlack)) + fBlack))),\n Math.round(255 - Math.min(255, ((y * (255 - fBlack)) + fBlack)))];\n }\n }\n }\n return color;\n}\n/**\n * Get the border style in _PdfName.\n *\n * @private\n * @param {PdfBorderStyle} style border style in enum.\n * @returns {_PdfName} border style in _PdfName.\n */\nexport function _mapBorderStyle(style) {\n var token = 'S';\n switch (style) {\n case PdfBorderStyle.dot:\n case PdfBorderStyle.dashed:\n token = 'D';\n break;\n case PdfBorderStyle.beveled:\n token = 'B';\n break;\n case PdfBorderStyle.inset:\n token = 'I';\n break;\n case PdfBorderStyle.underline:\n token = 'U';\n break;\n }\n return _PdfName.get(token);\n}\n/**\n * Get the border effect style in _PdfName.\n *\n * @private\n * @param {string} style border effect style as string.\n * @returns {PdfBorderEffectStyle} border effect style.\n */\nexport function _mapBorderEffectStyle(style) {\n var value = PdfBorderEffectStyle.solid;\n switch (style) {\n case 'C':\n value = PdfBorderEffectStyle.cloudy;\n break;\n }\n return value;\n}\n/**\n * Get the string value for line ending style.\n *\n * @private\n * @param {PdfLineEndingStyle} style style in enum.\n * @returns {string} value default None.\n */\nexport function _reverseMapEndingStyle(style) {\n var value = 'None';\n if (typeof style !== 'undefined') {\n switch (style) {\n case PdfLineEndingStyle.openArrow:\n value = 'OpenArrow';\n break;\n case PdfLineEndingStyle.closedArrow:\n value = 'ClosedArrow';\n break;\n case PdfLineEndingStyle.rOpenArrow:\n value = 'ROpenArrow';\n break;\n case PdfLineEndingStyle.rClosedArrow:\n value = 'RClosedArrow';\n break;\n case PdfLineEndingStyle.butt:\n value = 'Butt';\n break;\n case PdfLineEndingStyle.diamond:\n value = 'Diamond';\n break;\n case PdfLineEndingStyle.circle:\n value = 'Circle';\n break;\n case PdfLineEndingStyle.square:\n value = 'Square';\n break;\n case PdfLineEndingStyle.slash:\n value = 'Slash';\n break;\n }\n }\n return value;\n}\n/**\n * Get the enum value for line ending style.\n *\n * @private\n * @param {string} style Style value in string.\n * @param {PdfLineEndingStyle} defaultValue Default style value to return.\n * @returns {PdfLineEndingStyle} enum value default 0.\n */\nexport function _mapLineEndingStyle(style, defaultValue) {\n var value = typeof defaultValue !== 'undefined' ? defaultValue : PdfLineEndingStyle.none;\n switch (style.toLowerCase()) {\n case 'openarrow':\n value = PdfLineEndingStyle.openArrow;\n break;\n case 'closedarrow':\n value = PdfLineEndingStyle.closedArrow;\n break;\n case 'ropenarrow':\n value = PdfLineEndingStyle.rOpenArrow;\n break;\n case 'rclosedarrow':\n value = PdfLineEndingStyle.rClosedArrow;\n break;\n case 'butt':\n value = PdfLineEndingStyle.butt;\n break;\n case 'diamond':\n value = PdfLineEndingStyle.diamond;\n break;\n case 'circle':\n value = PdfLineEndingStyle.circle;\n break;\n case 'square':\n value = PdfLineEndingStyle.square;\n break;\n case 'slash':\n value = PdfLineEndingStyle.slash;\n break;\n }\n return value;\n}\n/**\n * Get highlight mode.\n *\n * @private\n * @param {string} mode Mode entry in dictionary.\n * @returns {PdfHighlightMode} Highlight mode.\n */\nexport function _mapHighlightMode(mode) {\n switch (mode) {\n case 'P':\n return PdfHighlightMode.push;\n case 'N':\n return PdfHighlightMode.noHighlighting;\n case 'O':\n return PdfHighlightMode.outline;\n default:\n return PdfHighlightMode.invert;\n }\n}\n/**\n * Get highlight mode as string.\n *\n * @private\n * @param {PdfHighlightMode} mode Mode entry.\n * @returns {_PdfName} Highlight mode as PDF name.\n */\nexport function _reverseMapHighlightMode(mode) {\n switch (mode) {\n case PdfHighlightMode.push:\n return _PdfName.get('P');\n case PdfHighlightMode.noHighlighting:\n return _PdfName.get('N');\n case PdfHighlightMode.outline:\n return _PdfName.get('O');\n default:\n return _PdfName.get('I');\n }\n}\n/**\n * Reverse map blend mode.\n *\n * @private\n * @param {PdfBlendMode} mode Mode entry.\n * @returns {_PdfName} Blend mode as name.\n */\nexport function _reverseMapBlendMode(mode) {\n var token = 'Normal';\n switch (mode) {\n case PdfBlendMode.multiply:\n token = 'Multiply';\n break;\n case PdfBlendMode.screen:\n token = 'Screen';\n break;\n case PdfBlendMode.overlay:\n token = 'Overlay';\n break;\n case PdfBlendMode.darken:\n token = 'Darken';\n break;\n case PdfBlendMode.lighten:\n token = 'Lighten';\n break;\n case PdfBlendMode.colorDodge:\n token = 'ColorDodge';\n break;\n case PdfBlendMode.colorBurn:\n token = 'ColorBurn';\n break;\n case PdfBlendMode.hardLight:\n token = 'HardLight';\n break;\n case PdfBlendMode.softLight:\n token = 'SoftLight';\n break;\n case PdfBlendMode.difference:\n token = 'Difference';\n break;\n case PdfBlendMode.exclusion:\n token = 'Exclusion';\n break;\n case PdfBlendMode.hue:\n token = 'Hue';\n break;\n case PdfBlendMode.saturation:\n token = 'Saturation';\n break;\n case PdfBlendMode.color:\n token = 'Color';\n break;\n case PdfBlendMode.luminosity:\n token = 'Luminosity';\n break;\n default:\n token = 'Normal';\n break;\n }\n return _PdfName.get(token);\n}\n/**\n * Map blend mode.\n *\n * @private\n * @param {_PdfName} token Blend mode as name.\n * @returns {PdfBlendMode} Mode value;\n */\nexport function _mapBlendMode(token) {\n var style = PdfBlendMode.normal;\n switch (token.name) {\n case 'Multiply':\n style = PdfBlendMode.multiply;\n break;\n case 'Screen':\n style = PdfBlendMode.screen;\n break;\n case 'Overlay':\n style = PdfBlendMode.overlay;\n break;\n case 'Darken':\n style = PdfBlendMode.darken;\n break;\n case 'Lighten':\n style = PdfBlendMode.lighten;\n break;\n case 'ColorDodge':\n style = PdfBlendMode.colorDodge;\n break;\n case 'ColorBurn':\n style = PdfBlendMode.colorBurn;\n break;\n case 'HardLight':\n style = PdfBlendMode.hardLight;\n break;\n case 'SoftLight':\n style = PdfBlendMode.softLight;\n break;\n case 'Difference':\n style = PdfBlendMode.difference;\n break;\n case 'Exclusion':\n style = PdfBlendMode.exclusion;\n break;\n case 'Hue':\n style = PdfBlendMode.hue;\n break;\n case 'Saturation':\n style = PdfBlendMode.saturation;\n break;\n case 'Color':\n style = PdfBlendMode.color;\n break;\n case 'Luminosity':\n style = PdfBlendMode.luminosity;\n break;\n default:\n style = PdfBlendMode.normal;\n break;\n }\n return style;\n}\n/**\n * Convert float to string.\n *\n * @private\n * @param {number} value number value.\n * @returns {string} equal fixed length string value;\n */\nexport function _floatToString(value) {\n var returnString = value.toFixed(2);\n if (returnString === '0.00') {\n returnString = '.00';\n }\n return returnString;\n}\n/**\n * Check and add proc set value.\n *\n * @private\n * @param {string} value entry.\n * @param {_PdfDictionary} dictionary source dictionary.\n * @returns {void} Nothing;\n */\nexport function _addProcSet(value, dictionary) {\n var name = _PdfName.get(value);\n if (dictionary.has('ProcSet')) {\n var procset = dictionary.getArray('ProcSet');\n if (procset && procset.indexOf(name) === -1) {\n procset.push(name);\n dictionary.update('ProcSet', procset);\n }\n }\n else {\n dictionary.update('ProcSet', [name]);\n }\n}\n/**\n * Get new GUID string.\n *\n * @private\n * @returns {string} A new GUID string;\n */\nexport function _getNewGuidString() {\n return 'aaaaaaaa-aaaa-4aaa-baaa-aaaaaaaaaaaa'.replace(/[ab]/g, function (c) {\n var random = Math.random() * 16 | 0;\n var result = c === 'a' ? random : (random & 0x3 | 0x8);\n return result.toString(16);\n });\n}\n/**\n * Escape PDF name.\n *\n * @private\n * @param {string} value name value.\n * @returns {string} equal and processed name value;\n */\nexport function _escapePdfName(value) {\n var buffer = [];\n var start = 0;\n for (var i = 0; i < value.length; i++) {\n var char = value.charCodeAt(i);\n if (char < 0x21 ||\n char > 0x7e ||\n char === 0x23 ||\n char === 0x28 ||\n char === 0x29 ||\n char === 0x3c ||\n char === 0x3e ||\n char === 0x5b ||\n char === 0x5d ||\n char === 0x7b ||\n char === 0x7d ||\n char === 0x2f ||\n char === 0x25) {\n if (start < i) {\n buffer.push(value.substring(start, i));\n }\n buffer.push(\"#\" + char.toString(16));\n start = i + 1;\n }\n }\n if (buffer.length === 0) {\n return value;\n }\n if (start < value.length) {\n buffer.push(value.substring(start, value.length));\n }\n return buffer.join('');\n}\n/**\n * Calculate bezier arc points.\n *\n * @private\n * @param {number} x1 value.\n * @param {number} y1 value.\n * @param {number} x2 value.\n * @param {number} y2 value.\n * @param {number} start value.\n * @param {number} extent value.\n * @returns {number[]} bezier arc points;\n */\nexport function _getBezierArc(x1, y1, x2, y2, start, extent) {\n if (x1 > x2) {\n var swap = x1;\n x1 = x2;\n x2 = swap;\n }\n if (y2 > y1) {\n var swap = y1;\n y1 = y2;\n y2 = swap;\n }\n var angle;\n var count;\n if (Math.abs(extent) <= 90) {\n angle = extent;\n count = 1;\n }\n else {\n count = Math.ceil(Math.abs(extent) / 90);\n angle = extent / count;\n }\n var first = ((x1 + x2) / 2);\n var second = ((y1 + y2) / 2);\n var firstAngle = ((x2 - x1) / 2);\n var secondAngle = ((y2 - y1) / 2);\n var half = (angle * (Math.PI / 360));\n var value = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(half)) / Math.sin(half)));\n var points = [];\n for (var i = 0; (i < count); i++) {\n var zero = (((start + (i * angle)) * (Math.PI / 180)));\n var one = (((start + ((i + 1) * angle)) * (Math.PI / 180)));\n var cosZero = (Math.cos(zero));\n var cosOne = (Math.cos(one));\n var sinZero = (Math.sin(zero));\n var sinOne = (Math.sin(one));\n if ((angle > 0)) {\n points.push(first + (firstAngle * cosZero));\n points.push(second - (secondAngle * sinZero));\n points.push(first + (firstAngle * (cosZero - (value * sinZero))));\n points.push(second - (secondAngle * (sinZero + (value * cosZero))));\n points.push(first + (firstAngle * (cosOne + (value * sinOne))));\n points.push(second - (secondAngle * (sinOne - (value * cosOne))));\n points.push(first + (firstAngle * cosOne));\n points.push(second - (secondAngle * sinOne));\n }\n else {\n points.push(first + (firstAngle * cosZero));\n points.push(second - (secondAngle * sinZero));\n points.push(first + (firstAngle * (cosZero + (value * sinZero))));\n points.push(second - (secondAngle * (sinZero - (value * cosZero))));\n points.push(first + (firstAngle * (cosOne - (value * sinOne))));\n points.push(second - (secondAngle * (sinOne + (value * cosOne))));\n points.push(first + (firstAngle * cosOne));\n points.push(second - (secondAngle * sinOne));\n }\n }\n return points;\n}\n/**\n * Find page of the annotation.\n *\n * @private\n * @param {PdfDocument} document PDF document.\n * @param {_PdfReference} reference Annotation reference.\n * @returns {PdfPage} Page of the annotation;\n */\nexport function _findPage(document, reference) {\n var page;\n for (var i = 0; i < document.pageCount && typeof page === 'undefined'; i++) {\n var entry = document.getPage(i);\n if (entry && entry._pageDictionary.has('Annots')) {\n var annots = entry._pageDictionary.get('Annots');\n if (annots !== null && typeof annots !== 'undefined' && annots.length > 0) {\n for (var j = 0; j < annots.length && typeof page === 'undefined'; j++) {\n var ref = annots[Number.parseInt(j.toString(), 10)];\n if (ref !== null && typeof ref !== 'undefined' && ref instanceof _PdfReference && ref === reference) {\n page = entry;\n }\n }\n }\n }\n }\n return page;\n}\n/**\n * Check the field is checked or not.\n *\n * @private\n * @param {_PdfDictionary} dictionary PDF dictionary.\n * @returns {boolean} True if the field is checked, otherwise false;\n */\nexport function _checkField(dictionary) {\n var check = false;\n if (dictionary.has('AS')) {\n var state = dictionary.get('AS');\n if (state) {\n check = state.name !== 'Off';\n }\n else {\n var actual = dictionary.get('V');\n if (actual) {\n check = actual.name === _getItemValue(dictionary);\n }\n }\n }\n return check;\n}\n/**\n * Get item value from state item field.\n *\n * @private\n * @param {_PdfDictionary} itemDictionary PDF document.\n * @returns {string} value of item;\n */\nexport function _getItemValue(itemDictionary) {\n var itemValue = '';\n var name;\n if (itemDictionary.has('AS')) {\n name = itemDictionary.get('AS');\n if (name !== null && name.name !== 'Off') {\n itemValue = name.name;\n }\n }\n if (itemValue === '' && itemDictionary.has('AP')) {\n var dictionary = itemDictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearance = dictionary.get('N');\n if (appearance instanceof _PdfBaseStream) {\n appearance = appearance.dictionary;\n }\n if (appearance && appearance instanceof _PdfDictionary) {\n var keys_1 = [];\n appearance.forEach(function (key, value) {\n keys_1.push(key);\n });\n for (var i = 0; i < keys_1.length; i++) {\n if (keys_1[Number.parseInt(i.toString(), 10)] !== 'Off') {\n itemValue = keys_1[Number.parseInt(i.toString(), 10)];\n break;\n }\n }\n }\n }\n }\n return itemValue;\n}\n/**\n * Get state item template.\n *\n * @private\n * @param {_PdfCheckFieldState} state Check field state.\n * @param {PdfStateItem | PdfField} item source to check.\n * @returns {PdfTemplate} Appearance template;\n */\nexport function _getStateTemplate(state, item) {\n var value = state === _PdfCheckFieldState.checked ? _getItemValue(item._dictionary) : 'Off';\n var template;\n if (item._dictionary.has('AP')) {\n var dictionary = item._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearance = dictionary.get('N');\n if (appearance && appearance instanceof _PdfBaseStream) {\n appearance = appearance.dictionary;\n }\n if (appearance && appearance instanceof _PdfDictionary && (value && value !== '' && appearance.has(value))) {\n var stream = appearance.get(value);\n var reference = appearance.getRaw(value);\n if (reference) {\n stream.reference = reference;\n }\n if (stream) {\n template = new PdfTemplate(stream, item._crossReference);\n }\n }\n }\n }\n return template;\n}\n/**\n * Get color value\n *\n * @private\n * @param {string} colorName name of the color.\n * @returns {number[]} return color value as number array.\n */\nexport function _getColorValue(colorName) {\n var color;\n switch (colorName) {\n case 'transparent':\n color = [255, 255, 255];\n break;\n case 'aliceblue':\n color = [240, 248, 255];\n break;\n case 'antiquewhite':\n color = [250, 235, 215];\n break;\n case 'aqua':\n color = [0, 255, 255];\n break;\n case 'aquamarine':\n color = [127, 255, 212];\n break;\n case 'azure':\n color = [240, 255, 255];\n break;\n case 'beige':\n color = [245, 245, 220];\n break;\n case 'bisque':\n color = [255, 228, 196];\n break;\n case 'black':\n color = [0, 0, 0];\n break;\n case 'blanchedalmond':\n color = [255, 235, 205];\n break;\n case 'blue':\n color = [0, 0, 255];\n break;\n case 'blueviolet':\n color = [138, 43, 226];\n break;\n case 'brown':\n color = [165, 42, 42];\n break;\n case 'burlywood':\n color = [222, 184, 135];\n break;\n case 'cadetBlue':\n color = [95, 158, 160];\n break;\n case 'chartreuse':\n color = [127, 255, 0];\n break;\n case 'chocolate':\n color = [210, 105, 30];\n break;\n case 'coral':\n color = [255, 127, 80];\n break;\n case 'cornflowerblue':\n color = [100, 149, 237];\n break;\n case 'cornsilk':\n color = [255, 248, 220];\n break;\n case 'crimson':\n color = [220, 20, 60];\n break;\n case 'cyan':\n color = [0, 255, 255];\n break;\n case 'darkblue':\n color = [0, 0, 139];\n break;\n case 'darkcyan':\n color = [0, 139, 139];\n break;\n case 'darkgoldenrod':\n color = [184, 134, 11];\n break;\n case 'darkgray':\n color = [169, 169, 169];\n break;\n case 'darkgreen':\n color = [0, 100, 0];\n break;\n case 'darkkhaki':\n color = [189, 183, 107];\n break;\n case 'darkmagenta':\n color = [139, 0, 139];\n break;\n case 'darkolivegreen':\n color = [85, 107, 47];\n break;\n case 'darkorange':\n color = [255, 140, 0];\n break;\n case 'darkorchid':\n color = [153, 50, 204];\n break;\n case 'darkred':\n color = [139, 0, 0];\n break;\n case 'darksalmon':\n color = [233, 150, 122];\n break;\n case 'darkseagreen':\n color = [143, 188, 139];\n break;\n case 'darkslateblue':\n color = [72, 61, 139];\n break;\n case 'darkslategray':\n color = [47, 79, 79];\n break;\n case 'darkturquoise':\n color = [0, 206, 209];\n break;\n case 'darkviolet':\n color = [148, 0, 211];\n break;\n case 'deeppink':\n color = [255, 20, 147];\n break;\n case 'deepskyblue':\n color = [0, 191, 255];\n break;\n case 'dimgray':\n color = [105, 105, 105];\n break;\n case 'dodgerblue':\n color = [30, 144, 255];\n break;\n case 'firebrick':\n color = [178, 34, 34];\n break;\n case 'floralwhite':\n color = [255, 250, 240];\n break;\n case 'forestgreen':\n color = [34, 139, 34];\n break;\n case 'fuchsia':\n color = [255, 0, 255];\n break;\n case 'gainsboro':\n color = [220, 220, 220];\n break;\n case 'ghostwhite':\n color = [248, 248, 255];\n break;\n case 'gold':\n color = [255, 215, 0];\n break;\n case 'goldenrod':\n color = [218, 165, 32];\n break;\n case 'gray':\n color = [128, 128, 128];\n break;\n case 'green':\n color = [0, 128, 0];\n break;\n case 'greenyellow':\n color = [173, 255, 47];\n break;\n case 'honeydew':\n color = [240, 255, 240];\n break;\n case 'hotpink':\n color = [255, 105, 180];\n break;\n case 'indianred':\n color = [205, 92, 92];\n break;\n case 'indigo':\n color = [75, 0, 130];\n break;\n case 'ivory':\n color = [255, 255, 240];\n break;\n case 'khaki':\n color = [240, 230, 140];\n break;\n case 'lavender':\n color = [230, 230, 250];\n break;\n case 'lavenderblush':\n color = [255, 240, 245];\n break;\n case 'lawngreen':\n color = [124, 252, 0];\n break;\n case 'lemonchiffon':\n color = [255, 250, 205];\n break;\n case 'lightblue':\n color = [173, 216, 230];\n break;\n case 'lightcoral':\n color = [240, 128, 128];\n break;\n case 'lightcyan':\n color = [224, 255, 255];\n break;\n case 'lightgoldenrodyellow':\n color = [250, 250, 210];\n break;\n case 'lightgreen':\n color = [144, 238, 144];\n break;\n case 'lightgray':\n color = [211, 211, 211];\n break;\n case 'LightPink':\n color = [255, 182, 193];\n break;\n case 'lightsalmon':\n color = [255, 160, 122];\n break;\n case 'lightseagreen':\n color = [32, 178, 170];\n break;\n case 'lightskyblue':\n color = [135, 206, 250];\n break;\n case 'lightslategray':\n color = [119, 136, 153];\n break;\n case 'lightsteelblue':\n color = [176, 196, 222];\n break;\n case 'lightyellow':\n color = [255, 255, 224];\n break;\n case 'lime':\n color = [0, 255, 0];\n break;\n case 'limeGreen':\n color = [50, 205, 50];\n break;\n case 'linen':\n color = [250, 240, 230];\n break;\n case 'magenta':\n color = [255, 0, 255];\n break;\n case 'maroon':\n color = [128, 0, 0];\n break;\n case 'mediumaquamarine':\n color = [102, 205, 170];\n break;\n case 'mediumblue':\n color = [0, 0, 205];\n break;\n case 'mediumorchid':\n color = [186, 85, 211];\n break;\n case 'mediumpurple':\n color = [147, 112, 219];\n break;\n case 'mediumseagreen':\n color = [60, 179, 113];\n break;\n case 'mediumslateblue':\n color = [123, 104, 238];\n break;\n case 'mediumspringgreen':\n color = [0, 250, 154];\n break;\n case 'mediumturquoise':\n color = [72, 209, 204];\n break;\n case 'mediumvioletred':\n color = [199, 21, 133];\n break;\n case 'midnightblue':\n color = [25, 25, 112];\n break;\n case 'mintcream':\n color = [245, 255, 250];\n break;\n case 'mistyrose':\n color = [255, 228, 225];\n break;\n case 'moccasin':\n color = [255, 228, 181];\n break;\n case 'navajowhite':\n color = [255, 222, 173];\n break;\n case 'navy':\n color = [0, 0, 128];\n break;\n case 'oldLace':\n color = [253, 245, 230];\n break;\n case 'olive':\n color = [128, 128, 0];\n break;\n case 'olivedrab':\n color = [107, 142, 35];\n break;\n case 'orange':\n color = [255, 165, 0];\n break;\n case 'orangered':\n color = [255, 69, 0];\n break;\n case 'orchid':\n color = [218, 112, 214];\n break;\n case 'palegoldenrod':\n color = [238, 232, 170];\n break;\n case 'palegreen':\n color = [152, 251, 152];\n break;\n case 'paleturquoise':\n color = [175, 238, 238];\n break;\n case 'palebioletred':\n color = [219, 112, 147];\n break;\n case 'papayawhip':\n color = [255, 239, 213];\n break;\n case 'peachpuff':\n color = [255, 218, 185];\n break;\n case 'peru':\n color = [205, 133, 63];\n break;\n case 'pink':\n color = [255, 192, 203];\n break;\n case 'plum':\n color = [221, 160, 221];\n break;\n case 'powderblue':\n color = [176, 224, 230];\n break;\n case 'purple':\n color = [128, 0, 128];\n break;\n case 'red':\n color = [255, 0, 0];\n break;\n case 'rosybrown':\n color = [188, 143, 143];\n break;\n case 'royalblue':\n color = [65, 105, 225];\n break;\n case 'saddlebrown':\n color = [139, 69, 19];\n break;\n case 'salmon':\n color = [250, 128, 114];\n break;\n case 'sandybrown':\n color = [244, 164, 96];\n break;\n case 'seagreen':\n color = [46, 139, 87];\n break;\n case 'seashell':\n color = [255, 245, 238];\n break;\n case 'sienna':\n color = [160, 82, 45];\n break;\n case 'silver':\n color = [192, 192, 192];\n break;\n case 'skyblue':\n color = [135, 206, 235];\n break;\n case 'slateblue':\n color = [106, 90, 205];\n break;\n case 'slategray':\n color = [112, 128, 144];\n break;\n case 'snow':\n color = [255, 250, 250];\n break;\n case 'springgreen':\n color = [0, 255, 127];\n break;\n case 'steelblue':\n color = [70, 130, 180];\n break;\n case 'tan':\n color = [210, 180, 140];\n break;\n case 'teal':\n color = [0, 128, 128];\n break;\n case 'thistle':\n color = [216, 191, 216];\n break;\n case 'tomato':\n color = [255, 99, 71];\n break;\n case 'turquoise':\n color = [64, 224, 208];\n break;\n case 'violet':\n color = [238, 130, 238];\n break;\n case 'wheat':\n color = [245, 222, 179];\n break;\n case 'white':\n color = [255, 255, 255];\n break;\n case 'whitesmoke':\n color = [245, 245, 245];\n break;\n case 'yellow':\n color = [255, 255, 0];\n break;\n case 'yellowgreen':\n color = [154, 205, 50];\n break;\n }\n return color;\n}\n/**\n * Update box value in template bounds.\n *\n * @private\n * @param {PdfTemplate} template Template object.\n * @param {number} angle Angle value.\n * @returns {void} Nothing.\n */\nexport function _setMatrix(template, angle) {\n var box = template._content.dictionary.getArray('BBox');\n if (box && typeof angle !== 'undefined' && angle !== null) {\n if (angle === 0) {\n template._content.dictionary.set('Matrix', [1, 0, 0, 1, -box[0], -box[1]]);\n }\n else {\n var matrix = new _PdfTransformationMatrix();\n matrix._rotate(angle);\n template._content.dictionary.set('Matrix', matrix._matrix._elements);\n }\n }\n}\n/**\n * Get the state item style to string\n *\n * @private\n * @param {PdfCheckBoxStyle} style State item style.\n * @returns {string} return as string value.\n */\nexport function _styleToString(style) {\n var value = '4';\n switch (style) {\n case PdfCheckBoxStyle.circle:\n value = 'l';\n break;\n case PdfCheckBoxStyle.cross:\n value = '8';\n break;\n case PdfCheckBoxStyle.diamond:\n value = 'u';\n break;\n case PdfCheckBoxStyle.square:\n value = 'n';\n break;\n case PdfCheckBoxStyle.star:\n value = 'H';\n break;\n }\n return value;\n}\n/**\n * Get the string to state item style\n *\n * @private\n * @param {string} style State item style as string.\n * @returns {PdfCheckBoxStyle} return as state item style.\n */\nexport function _stringToStyle(style) {\n var value = PdfCheckBoxStyle.check;\n switch (style) {\n case 'l':\n value = PdfCheckBoxStyle.circle;\n break;\n case '8':\n value = PdfCheckBoxStyle.cross;\n break;\n case 'u':\n value = PdfCheckBoxStyle.diamond;\n break;\n case 'n':\n value = PdfCheckBoxStyle.square;\n break;\n case 'H':\n value = PdfCheckBoxStyle.star;\n break;\n }\n return value;\n}\n/**\n * Map measurement unit type.\n *\n * @private\n * @param {string} unitString measurement unit as string.\n * @returns {PdfMeasurementUnit} measurement unit.\n */\nexport function _mapMeasurementUnit(unitString) {\n var unit;\n switch (unitString) {\n case 'cm':\n unit = PdfMeasurementUnit.centimeter;\n break;\n case 'in':\n unit = PdfMeasurementUnit.inch;\n break;\n case 'mm':\n unit = PdfMeasurementUnit.millimeter;\n break;\n case 'p':\n unit = PdfMeasurementUnit.pica;\n break;\n case 'pt':\n unit = PdfMeasurementUnit.point;\n break;\n default:\n unit = PdfMeasurementUnit.centimeter;\n break;\n }\n return unit;\n}\n/**\n * Map markup annotation type.\n *\n * @private\n * @param {string} text markup type as string.\n * @returns {PdfTextMarkupAnnotationType} markup type as name.\n */\nexport function _mapMarkupAnnotationType(text) {\n var type;\n switch (text) {\n case 'Highlight':\n type = PdfTextMarkupAnnotationType.highlight;\n break;\n case 'Squiggly':\n type = PdfTextMarkupAnnotationType.squiggly;\n break;\n case 'StrikeOut':\n type = PdfTextMarkupAnnotationType.strikeOut;\n break;\n case 'Underline':\n type = PdfTextMarkupAnnotationType.underline;\n break;\n default:\n type = PdfTextMarkupAnnotationType.highlight;\n break;\n }\n return type;\n}\n/**\n * Reverse text markup annotation type.\n *\n * @private\n * @param {PdfTextMarkupAnnotationType} type markup type.\n * @returns {string} markup type as name.\n */\nexport function _reverseMarkupAnnotationType(type) {\n var token = 'Highlight';\n switch (type) {\n case PdfTextMarkupAnnotationType.highlight:\n token = 'Highlight';\n break;\n case PdfTextMarkupAnnotationType.squiggly:\n token = 'Squiggly';\n break;\n case PdfTextMarkupAnnotationType.strikeOut:\n token = 'StrikeOut';\n break;\n case PdfTextMarkupAnnotationType.underline:\n token = 'Underline';\n break;\n default:\n token = 'Highlight';\n break;\n }\n return token;\n}\n/**\n * Map graphics unit.\n *\n * @private\n * @param {string} unitString String value.\n * @returns {_PdfGraphicsUnit} PDF graphics unit.\n */\nexport function _mapGraphicsUnit(unitString) {\n var unit;\n switch (unitString) {\n case 'cm':\n unit = _PdfGraphicsUnit.centimeter;\n break;\n case 'in':\n unit = _PdfGraphicsUnit.inch;\n break;\n case 'mm':\n unit = _PdfGraphicsUnit.millimeter;\n break;\n case 'p':\n unit = _PdfGraphicsUnit.pica;\n break;\n case 'pt':\n unit = _PdfGraphicsUnit.point;\n break;\n default:\n unit = _PdfGraphicsUnit.centimeter;\n break;\n }\n return unit;\n}\n/**\n * Map rubber stamp icon.\n *\n * @param {string} iconString String value.\n * @returns {PdfRubberStampAnnotationIcon} Rubber stamp icon.\n */\nexport function _mapRubberStampIcon(iconString) {\n var icon;\n switch (iconString) {\n case '#Approved':\n icon = PdfRubberStampAnnotationIcon.approved;\n break;\n case '#AsIs':\n icon = PdfRubberStampAnnotationIcon.asIs;\n break;\n case '#Completed':\n icon = PdfRubberStampAnnotationIcon.completed;\n break;\n case '#Confidential':\n icon = PdfRubberStampAnnotationIcon.confidential;\n break;\n case '#Departmental':\n icon = PdfRubberStampAnnotationIcon.departmental;\n break;\n case '#Draft':\n icon = PdfRubberStampAnnotationIcon.draft;\n break;\n case '#Experimental':\n icon = PdfRubberStampAnnotationIcon.experimental;\n break;\n case '#Expired':\n icon = PdfRubberStampAnnotationIcon.expired;\n break;\n case '#Final':\n icon = PdfRubberStampAnnotationIcon.final;\n break;\n case '#ForComment':\n icon = PdfRubberStampAnnotationIcon.forComment;\n break;\n case '#ForPublicRelease':\n icon = PdfRubberStampAnnotationIcon.forPublicRelease;\n break;\n case '#InformationOnly':\n icon = PdfRubberStampAnnotationIcon.informationOnly;\n break;\n case '#NotApproved':\n icon = PdfRubberStampAnnotationIcon.notApproved;\n break;\n case '#NotForPublicRelease':\n icon = PdfRubberStampAnnotationIcon.notForPublicRelease;\n break;\n case '#PreliminaryResults':\n icon = PdfRubberStampAnnotationIcon.preliminaryResults;\n break;\n case '#Sold':\n icon = PdfRubberStampAnnotationIcon.sold;\n break;\n case '#TopSecret':\n icon = PdfRubberStampAnnotationIcon.topSecret;\n break;\n case '#Void':\n icon = PdfRubberStampAnnotationIcon.void;\n break;\n default:\n icon = PdfRubberStampAnnotationIcon.draft;\n break;\n }\n return icon;\n}\n/**\n * Map popup icon.\n *\n * @private\n * @param {string} iconString String value.\n * @returns {PdfRubberStampAnnotationIcon} Popup icon.\n */\nexport function _mapPopupIcon(iconString) {\n var icon;\n switch (iconString) {\n case 'Note':\n icon = PdfPopupIcon.note;\n break;\n case 'Comment':\n icon = PdfPopupIcon.comment;\n break;\n case 'Help':\n icon = PdfPopupIcon.help;\n break;\n case 'Insert':\n icon = PdfPopupIcon.insert;\n break;\n case 'Key':\n icon = PdfPopupIcon.key;\n break;\n case 'NewParagraph':\n icon = PdfPopupIcon.newParagraph;\n break;\n case 'Paragraph':\n icon = PdfPopupIcon.paragraph;\n break;\n default:\n icon = PdfPopupIcon.note;\n break;\n }\n return icon;\n}\n/**\n * Convert annotation state to string value.\n *\n * @private\n * @param {PdfAnnotationState} type Annotation state.\n * @returns {string} String value.\n */\nexport function _reverseMapAnnotationState(type) {\n var token = 'None';\n switch (type) {\n case PdfAnnotationState.none:\n token = 'None';\n break;\n case PdfAnnotationState.accepted:\n token = 'Accepted';\n break;\n case PdfAnnotationState.rejected:\n token = 'Rejected';\n break;\n case PdfAnnotationState.cancel:\n token = 'Cancelled';\n break;\n case PdfAnnotationState.completed:\n token = 'Completed';\n break;\n case PdfAnnotationState.marked:\n token = 'Marked';\n break;\n case PdfAnnotationState.unmarked:\n token = 'Unmarked';\n break;\n case PdfAnnotationState.unknown:\n token = 'Unknown';\n break;\n default:\n token = 'None';\n break;\n }\n return token;\n}\n/**\n * Convert string value to annotation state.\n *\n * @private\n * @param {string} type String value.\n * @returns {PdfAnnotationState} Annotation state.\n */\nexport function _mapAnnotationState(type) {\n var token = PdfAnnotationState.none;\n switch (type) {\n case 'None':\n token = PdfAnnotationState.none;\n break;\n case 'Accepted':\n token = PdfAnnotationState.accepted;\n break;\n case 'Rejected':\n token = PdfAnnotationState.rejected;\n break;\n case 'Cancelled':\n token = PdfAnnotationState.cancel;\n break;\n case 'Completed':\n token = PdfAnnotationState.completed;\n break;\n case 'Marked':\n token = PdfAnnotationState.marked;\n break;\n case 'Unmarked':\n token = PdfAnnotationState.unmarked;\n break;\n case 'Unknown':\n token = PdfAnnotationState.unknown;\n break;\n }\n return token;\n}\n/**\n * Convert annotation state model to string value.\n *\n * @private\n * @param {PdfAnnotationStateModel} type Annotation state model.\n * @returns {string} String value.\n */\nexport function _reverseMapAnnotationStateModel(type) {\n var token = 'None';\n switch (type) {\n case PdfAnnotationStateModel.none:\n token = 'None';\n break;\n case PdfAnnotationStateModel.marked:\n token = 'Marked';\n break;\n case PdfAnnotationStateModel.review:\n token = 'Review';\n break;\n default:\n token = 'None';\n break;\n }\n return token;\n}\n/**\n * Convert string value to annotation state model.\n *\n * @private\n * @param {string} type String value.\n * @returns {PdfAnnotationStateModel} Annotation state model.\n */\nexport function _mapAnnotationStateModel(type) {\n var token = PdfAnnotationStateModel.none;\n switch (type) {\n case 'None':\n token = PdfAnnotationStateModel.none;\n break;\n case 'Marked':\n token = PdfAnnotationStateModel.marked;\n break;\n case 'Review':\n token = PdfAnnotationStateModel.review;\n break;\n }\n return token;\n}\n/**\n * Map attachment icon.\n *\n * @private\n * @param {string} iconString String value.\n * @returns {PdfAttachmentIcon} Icon.\n */\nexport function _mapAttachmentIcon(iconString) {\n var icon;\n switch (iconString) {\n case 'PushPin':\n icon = PdfAttachmentIcon.pushPin;\n break;\n case 'Tag':\n icon = PdfAttachmentIcon.tag;\n break;\n case 'Graph':\n icon = PdfAttachmentIcon.graph;\n break;\n case 'Paperclip':\n icon = PdfAttachmentIcon.paperClip;\n break;\n default:\n icon = PdfAttachmentIcon.pushPin;\n break;\n }\n return icon;\n}\n/**\n * Map attachment intent.\n *\n * @private\n * @param {string} intentString String value.\n * @returns {PdfAnnotationIntent} intent.\n */\nexport function _mapAnnotationIntent(intentString) {\n var intent;\n switch (intentString) {\n case 'None':\n intent = PdfAnnotationIntent.none;\n break;\n case 'FreeTextCallout':\n intent = PdfAnnotationIntent.freeTextCallout;\n break;\n case 'FreeTextTypeWriter':\n intent = PdfAnnotationIntent.freeTextTypeWriter;\n break;\n default:\n intent = PdfAnnotationIntent.none;\n break;\n }\n return intent;\n}\n/**\n * Convert PDF font style to string value.\n *\n * @private\n * @param {PdfFontStyle} style Font style.\n * @returns {string} String value.\n */\nexport function _reverseMapPdfFontStyle(style) {\n var value = '';\n switch (style) {\n case PdfFontStyle.regular:\n value = 'Regular';\n break;\n case PdfFontStyle.bold:\n value = 'Bold';\n break;\n case PdfFontStyle.italic:\n value = 'Italic';\n break;\n case PdfFontStyle.underline:\n value = 'Underline';\n break;\n case PdfFontStyle.strikeout:\n value = 'Strikeout';\n break;\n default:\n value = 'Regular';\n break;\n }\n return value;\n}\n/**\n * Get special character.\n *\n * @private\n * @param {string} input Input string.\n * @returns {string} String value.\n */\nexport function _getSpecialCharacter(input) {\n var result;\n switch (input) {\n case 'head2right':\n result = '\\u27A2';\n break;\n case 'aacute':\n result = 'a\\u0301';\n break;\n case 'eacute':\n result = 'e\\u0301';\n break;\n case 'iacute':\n result = 'i\\u0301';\n break;\n case 'oacute':\n result = 'o\\u0301';\n break;\n case 'uacute':\n result = 'u\\u0301';\n break;\n case 'circleright':\n result = '\\u27B2';\n break;\n case 'bleft':\n result = '\\u21E6';\n break;\n case 'bright':\n result = '\\u21E8';\n break;\n case 'bup':\n result = '\\u21E7';\n break;\n case 'bdown':\n result = '\\u21E9';\n break;\n case 'barb4right':\n result = '\\u2794';\n break;\n case 'bleftright':\n result = '\\u2B04';\n break;\n case 'bupdown':\n result = '\\u21F3';\n break;\n case 'bnw':\n result = '\\u2B00';\n break;\n case 'bne':\n result = '\\u2B01';\n break;\n case 'bsw':\n result = '\\u2B03';\n break;\n case 'bse':\n result = '\\u2B02';\n break;\n case 'bdash1':\n result = '\\u25AD';\n break;\n case 'bdash2':\n result = '\\u25AB';\n break;\n case 'xmarkbld':\n result = '\\u2717';\n break;\n case 'checkbld':\n result = '\\u2713';\n break;\n case 'boxxmarkbld':\n result = '\\u2612';\n break;\n case 'boxcheckbld':\n result = '\\u2611';\n break;\n case 'space':\n result = '\\u0020';\n break;\n case 'pencil':\n result = '\\u270F';\n break;\n case 'scissors':\n result = '\\u2702';\n break;\n case 'scissorscutting':\n result = '\\u2701';\n break;\n case 'readingglasses':\n result = '\\u2701';\n break;\n case 'bell':\n result = '\\u2701';\n break;\n case 'book':\n result = '\\u2701';\n break;\n case 'telephonesolid':\n result = '\\u2701';\n break;\n case 'telhandsetcirc':\n result = '\\u2701';\n break;\n case 'envelopeback':\n result = '\\u2701';\n break;\n case 'hourglass':\n result = '\\u231B';\n break;\n case 'keyboard':\n result = '\\u2328';\n break;\n case 'tapereel':\n result = '\\u2707';\n break;\n case 'handwrite':\n result = '\\u270D';\n break;\n case 'handv':\n result = '\\u270C';\n break;\n case 'handptleft':\n result = '\\u261C';\n break;\n case 'handptright':\n result = '\\u261E';\n break;\n case 'handptup':\n result = '\\u261D';\n break;\n case 'handptdown':\n result = '\\u261F';\n break;\n case 'smileface':\n result = '\\u263A';\n break;\n case 'frownface':\n result = '\\u2639';\n break;\n case 'skullcrossbones':\n result = '\\u2620';\n break;\n case 'flag':\n result = '\\u2690';\n break;\n case 'pennant':\n result = '\\u1F6A9';\n break;\n case 'airplane':\n result = '\\u2708';\n break;\n case 'sunshine':\n result = '\\u263C';\n break;\n case 'droplet':\n result = '\\u1F4A7';\n break;\n case 'snowflake':\n result = '\\u2744';\n break;\n case 'crossshadow':\n result = '\\u271E';\n break;\n case 'crossmaltese':\n result = '\\u2720';\n break;\n case 'starofdavid':\n result = '\\u2721';\n break;\n case 'crescentstar':\n result = '\\u262A';\n break;\n case 'yinyang':\n result = '\\u262F';\n break;\n case 'om':\n result = '\\u0950';\n break;\n case 'wheel':\n result = '\\u2638';\n break;\n case 'aries':\n result = '\\u2648';\n break;\n case 'taurus':\n result = '\\u2649';\n break;\n case 'gemini':\n result = '\\u264A';\n break;\n case 'cancer':\n result = '\\u264B';\n break;\n case 'leo':\n result = '\\u264C';\n break;\n case 'virgo':\n result = '\\u264D';\n break;\n case 'libra':\n result = '\\u264E';\n break;\n case 'scorpio':\n result = '\\u264F';\n break;\n case 'saggitarius':\n result = '\\u2650';\n break;\n case 'capricorn':\n result = '\\u2651';\n break;\n case 'aquarius':\n result = '\\u2652';\n break;\n case 'pisces':\n result = '\\u2653';\n break;\n case 'ampersanditlc':\n result = '\\u0026';\n break;\n case 'ampersandit':\n result = '\\u0026';\n break;\n case 'circle6':\n result = '\\u25CF';\n break;\n case 'circleshadowdwn':\n result = '\\u274D';\n break;\n case 'square6':\n result = '\\u25A0';\n break;\n case 'box3':\n result = '\\u25A1';\n break;\n case 'boxshadowdwn':\n result = '\\u2751';\n break;\n case 'boxshadowup':\n result = '\\u2752';\n break;\n case 'lozenge4':\n result = '\\u2B27';\n break;\n case 'lozenge6':\n result = '\\u29EB';\n break;\n case 'rhombus6':\n result = '\\u25C6';\n break;\n case 'xrhombus':\n result = '\\u2756';\n break;\n case 'rhombus4':\n result = '\\u2B25';\n break;\n case 'clear':\n result = '\\u2327';\n break;\n case 'escape':\n result = '\\u2353';\n break;\n case 'command':\n result = '\\u2318';\n break;\n case 'rosette':\n result = '\\u2740';\n break;\n case 'rosettesolid':\n result = '\\u273F';\n break;\n case 'quotedbllftbld':\n result = '\\u275D';\n break;\n case 'quotedblrtbld':\n result = '\\u275E';\n break;\n case '.notdef':\n result = '\\u25AF';\n break;\n case 'zerosans':\n result = '\\u24EA';\n break;\n case 'onesans':\n result = '\\u2460';\n break;\n case 'twosans':\n result = '\\u2461';\n break;\n case 'threesans':\n result = '\\u2462';\n break;\n case 'foursans':\n result = '\\u2463';\n break;\n case 'fivesans':\n result = '\\u2464';\n break;\n case 'sixsans':\n result = '\\u2465';\n break;\n case 'sevensans':\n result = '\\u2466';\n break;\n case 'eightsans':\n result = '\\u2467';\n break;\n case 'ninesans':\n result = '\\u2468';\n break;\n case 'tensans':\n result = '\\u2469';\n break;\n case 'zerosansinv':\n result = '\\u24FF';\n break;\n case 'onesansinv':\n result = '\\u2776';\n break;\n case 'twosansinv':\n result = '\\u2777';\n break;\n case 'threesansinv':\n result = '\\u2778';\n break;\n case 'foursansinv':\n result = '\\u2779';\n break;\n case 'circle2':\n result = '\\u00B7';\n break;\n case 'circle4':\n result = '\\u2022';\n break;\n case 'square2':\n result = '\\u25AA';\n break;\n case 'ring2':\n result = '\\u25CB';\n break;\n case 'ringbutton2':\n result = '\\u25C9';\n break;\n case 'target':\n result = '\\u25CE';\n break;\n case 'square4':\n result = '\\u25AA';\n break;\n case 'box2':\n result = '\\u25FB';\n break;\n case 'crosstar2':\n result = '\\u2726';\n break;\n case 'pentastar2':\n result = '\\u2605';\n break;\n case 'hexstar2':\n result = '\\u2736';\n break;\n case 'octastar2':\n result = '\\u2734';\n break;\n case 'dodecastar3':\n result = '\\u2739';\n break;\n case 'octastar4':\n result = '\\u2735';\n break;\n case 'registercircle':\n result = '\\u2316';\n break;\n case 'cuspopen':\n result = '\\u27E1';\n break;\n case 'cuspopen1':\n result = '\\u2311';\n break;\n case 'circlestar':\n result = '\\u2605';\n break;\n case 'starshadow':\n result = '\\u2730';\n break;\n case 'deleteleft':\n result = '\\u232B';\n break;\n case 'deleteright':\n result = '\\u2326';\n break;\n case 'scissorsoutline':\n result = '\\u2704';\n break;\n case 'telephone':\n result = '\\u260F';\n break;\n case 'telhandset':\n result = '\\u1F4DE';\n break;\n case 'handptlft1':\n result = '\\u261C';\n break;\n case 'handptrt1':\n result = '\\u261E';\n break;\n case 'handptlftsld1':\n result = '\\u261A';\n break;\n case 'handptrtsld1':\n result = '\\u261B';\n break;\n case 'handptup1':\n result = '\\u261D';\n break;\n case 'handptdwn1':\n result = '\\u261F';\n break;\n case 'xmark':\n result = '\\u2717';\n break;\n case 'check':\n result = '\\u2713';\n break;\n case 'boxcheck':\n result = '\\u2611';\n break;\n case 'boxx':\n result = '\\u2612';\n break;\n case 'boxxbld':\n result = '\\u2612';\n break;\n case 'circlex':\n result = '=\\u2314';\n break;\n case 'circlexbld':\n result = '\\u2314';\n break;\n case 'prohibit':\n case 'prohibitbld':\n result = '\\u29B8';\n break;\n case 'ampersanditaldm':\n case 'ampersandbld':\n case 'ampersandsans':\n case 'ampersandsandm':\n result = '\\u0026';\n break;\n case 'interrobang':\n case 'interrobangdm':\n case 'interrobangsans':\n case 'interrobngsandm':\n result = '\\u203D';\n break;\n case 'sacute':\n result = 'ś';\n break;\n case 'Sacute':\n result = 'Ś';\n break;\n case 'eogonek':\n result = 'ę';\n break;\n case 'cacute':\n result = 'ć';\n break;\n case 'aogonek':\n result = 'ą';\n break;\n default:\n result = input;\n break;\n }\n return result;\n}\n/**\n * Get latin character.\n *\n * @private\n * @param {string} input Input string.\n * @returns {string} String value.\n */\nexport function _getLatinCharacter(input) {\n var result;\n switch (input) {\n case 'zero':\n result = '0';\n break;\n case 'one':\n result = '1';\n break;\n case 'two':\n result = '2';\n break;\n case 'three':\n result = '3';\n break;\n case 'four':\n result = '4';\n break;\n case 'five':\n result = '5';\n break;\n case 'six':\n result = '6';\n break;\n case 'seven':\n result = '7';\n break;\n case 'eight':\n result = '8';\n break;\n case 'nine':\n result = '9';\n break;\n case 'aacute':\n result = 'á';\n break;\n case 'asciicircum':\n result = '^';\n break;\n case 'asciitilde':\n result = '~';\n break;\n case 'asterisk':\n result = '*';\n break;\n case 'at':\n result = '@';\n break;\n case 'atilde':\n result = 'ã';\n break;\n case 'backslash':\n result = '\\\\';\n break;\n case 'bar':\n result = '|';\n break;\n case 'braceleft':\n result = '{';\n break;\n case 'braceright':\n result = '}';\n break;\n case 'bracketleft':\n result = '[';\n break;\n case 'bracketright':\n result = ']';\n break;\n case 'breve':\n result = '˘';\n break;\n case 'brokenbar':\n result = '|';\n break;\n case 'bullet3':\n result = '•';\n break;\n case 'bullet':\n result = '•';\n break;\n case 'caron':\n result = 'ˇ';\n break;\n case 'ccedilla':\n result = 'ç';\n break;\n case 'cedilla':\n result = '¸';\n break;\n case 'cent':\n result = '¢';\n break;\n case 'circumflex':\n result = 'ˆ';\n break;\n case 'colon':\n result = ':';\n break;\n case 'comma':\n result = ',';\n break;\n case 'copyright':\n result = '©';\n break;\n case 'currency1':\n result = '¤';\n break;\n case 'dagger':\n result = '†';\n break;\n case 'daggerdbl':\n result = '‡';\n break;\n case 'degree':\n result = '°';\n break;\n case 'dieresis':\n result = '¨';\n break;\n case 'divide':\n result = '÷';\n break;\n case 'dollar':\n result = '$';\n break;\n case 'dotaccent':\n result = '˙';\n break;\n case 'dotlessi':\n result = 'ı';\n break;\n case 'eacute':\n result = 'é';\n break;\n case 'middot':\n result = '˙';\n break;\n case 'edieresis':\n result = 'ë';\n break;\n case 'egrave':\n result = 'è';\n break;\n case 'ellipsis':\n result = '...';\n break;\n case 'emdash':\n result = '—';\n break;\n case 'endash':\n result = '–';\n break;\n case 'equal':\n result = '=';\n break;\n case 'eth':\n result = 'ð';\n break;\n case 'exclam':\n result = '!';\n break;\n case 'exclamdown':\n result = '¡';\n break;\n case 'florin':\n result = 'ƒ';\n break;\n case 'fraction':\n result = '⁄';\n break;\n case 'germandbls':\n result = 'ß';\n break;\n case 'grave':\n result = '`';\n break;\n case 'greater':\n result = '>';\n break;\n case 'guillemotleft4':\n result = '«';\n break;\n case 'guillemotright4':\n result = '»';\n break;\n case 'guilsinglleft':\n result = '‹';\n break;\n case 'guilsinglright':\n result = '›';\n break;\n case 'hungarumlaut':\n result = '˝';\n break;\n case 'hyphen5':\n result = '-';\n break;\n case 'iacute':\n result = 'í';\n break;\n case 'icircumflex':\n result = 'î';\n break;\n case 'idieresis':\n result = 'ï';\n break;\n case 'igrave':\n result = 'ì';\n break;\n case 'less':\n result = '<';\n break;\n case 'logicalnot':\n result = '¬';\n break;\n case 'lslash':\n result = 'ł';\n break;\n case 'Lslash':\n result = 'Ł';\n break;\n case 'macron':\n result = '¯';\n break;\n case 'minus':\n result = '−';\n break;\n case 'mu':\n result = 'μ';\n break;\n case 'multiply':\n result = '×';\n break;\n case 'ntilde':\n result = 'ñ';\n break;\n case 'numbersign':\n result = '#';\n break;\n case 'oacute':\n result = 'ó';\n break;\n case 'ocircumflex':\n result = 'ô';\n break;\n case 'odieresis':\n result = 'ö';\n break;\n case 'oe':\n result = 'oe';\n break;\n case 'ogonek':\n result = '˛';\n break;\n case 'ograve':\n result = 'ò';\n break;\n case 'onehalf':\n result = '1/2';\n break;\n case 'onequarter':\n result = '1/4';\n break;\n case 'onesuperior':\n result = '¹';\n break;\n case 'ordfeminine':\n result = 'ª';\n break;\n case 'ordmasculine':\n result = 'º';\n break;\n case 'otilde':\n result = 'õ';\n break;\n case 'paragraph':\n result = '¶';\n break;\n case 'parenleft':\n result = '(';\n break;\n case 'parenright':\n result = ')';\n break;\n case 'percent':\n result = '%';\n break;\n case 'period':\n result = '.';\n break;\n case 'periodcentered':\n result = '·';\n break;\n case 'perthousand':\n result = '‰';\n break;\n case 'plus':\n result = '+';\n break;\n case 'plusminus':\n result = '±';\n break;\n case 'question':\n result = '?';\n break;\n case 'questiondown':\n result = '¿';\n break;\n case 'quotedbl':\n result = '\\'';\n break;\n case 'quotedblbase':\n result = '„';\n break;\n case 'quotedblleft':\n result = '“';\n break;\n case 'quotedblright':\n result = '”';\n break;\n case 'quoteleft':\n result = '‘';\n break;\n case 'quoteright':\n result = '’';\n break;\n case 'quotesinglbase':\n result = '‚';\n break;\n case 'quotesingle':\n result = '\\'';\n break;\n case 'registered':\n result = '®';\n break;\n case 'ring':\n result = '˚';\n break;\n case 'scaron':\n result = 'š';\n break;\n case 'section':\n result = '§';\n break;\n case 'semicolon':\n result = ';';\n break;\n case 'slash':\n result = '/';\n break;\n case 'space6':\n result = ' ';\n break;\n case 'space':\n result = ' ';\n break;\n case 'udieresis':\n result = 'ü';\n break;\n case 'uacute':\n result = 'ú';\n break;\n case 'Ecircumflex':\n result = 'Ê';\n break;\n case 'hyphen':\n result = '-';\n break;\n case 'underscore':\n result = '_';\n break;\n case 'adieresis':\n result = 'ä';\n break;\n case 'ampersand':\n result = '&';\n break;\n case 'Adieresis':\n result = 'Ä';\n break;\n case 'Udieresis':\n result = 'Ü';\n break;\n case 'ccaron':\n result = 'č';\n break;\n case 'Scaron':\n result = 'Š';\n break;\n case 'zcaron':\n result = 'ž';\n break;\n case 'sterling':\n result = '£';\n break;\n case 'agrave':\n result = 'à';\n break;\n case 'ecircumflex':\n result = 'ê';\n break;\n case 'acircumflex':\n result = 'â';\n break;\n case 'Oacute':\n result = 'Ó';\n break;\n default:\n result = input;\n break;\n }\n return result;\n}\n/**\n * Encode value to string.\n *\n * @private\n * @param {string} value Input string.\n * @returns {string} result.\n */\nexport function _encodeValue(value) {\n var name = '';\n for (var i = 0; i < value.length; i++) {\n var code = value.charCodeAt(i) & 0xff;\n var entry = String.fromCharCode(code);\n var hex = '';\n switch (entry) {\n case ' ':\n case '%':\n case '(':\n case ')':\n case '<':\n case '>':\n case '[':\n case ']':\n case '{':\n case '}':\n case '/':\n case '#':\n name += '#';\n hex = code.toString(16).toUpperCase();\n name += (hex.length === 1 ? ('0' + hex) : hex);\n break;\n default:\n if (code > 126 || code < 37) {\n name += '#';\n hex = code.toString(16).toUpperCase();\n name += (hex.length === 1 ? ('0' + hex) : hex);\n }\n else {\n name += entry;\n }\n break;\n }\n }\n return name;\n}\n/**\n * Parse and retrieve comments and review history from the annotation.\n *\n * @private\n * @param {PdfComment} annotation Input annotation.\n * @param {boolean} isReview Input is review or not.\n * @returns {PdfPopupAnnotationCollection} result.\n */\nexport function _getCommentsOrReview(annotation, isReview) {\n if (isReview) {\n return annotation.reviewHistory;\n }\n else {\n return annotation.comments;\n }\n}\n/**\n * Returns true if input dictionary is belongs to the review history.\n *\n * @private\n * @param {_PdfDictionary} dictionary Input dictionary.\n * @returns {boolean} Input is review or not.\n */\nexport function _checkReview(dictionary) {\n var flag = dictionary.get('F');\n return ((dictionary.has('State') || dictionary.has('StateModel')) && (flag === 30 || flag === 128));\n}\n/**\n * Returns true if input dictionary is belongs to the comments.\n *\n * @private\n * @param {_PdfDictionary} dictionary Input dictionary.\n * @returns {boolean} Input is comments or not.\n */\nexport function _checkComment(dictionary) {\n var flag = dictionary.get('F');\n return (!(dictionary.has('State') || dictionary.has('StateModel')) && (flag === 28 || flag === 128));\n}\n/**\n * Update visibility.\n *\n * @private\n * @param {_PdfDictionary} dictionary Input dictionary.\n * @param {PdfFormFieldVisibility} value Visibility.\n * @returns {void} Nothing.\n */\nexport function _updateVisibility(dictionary, value) {\n if (dictionary.has('F')) {\n delete dictionary._map.F;\n dictionary._updated = true;\n }\n switch (value) {\n case PdfFormFieldVisibility.hidden:\n dictionary.update('F', PdfAnnotationFlag.hidden);\n break;\n case PdfFormFieldVisibility.hiddenPrintable:\n dictionary.update('F', (PdfAnnotationFlag.noView | PdfAnnotationFlag.print));\n break;\n case PdfFormFieldVisibility.visible:\n if (dictionary.has('DV')) {\n delete dictionary._map.DV;\n dictionary._updated = true;\n }\n if (dictionary.has('MK')) {\n var mkDict = dictionary.get('MK');\n if (mkDict && mkDict.has('BG')) {\n delete mkDict._map.BG;\n mkDict._updated = true;\n }\n }\n break;\n }\n}\n/**\n * Remove duplicate reference.\n *\n * @private\n * @param {_PdfDictionary} dictionary Input dictionary.\n * @param {_PdfCrossReference} crossTable Cross reference table.\n * @param {string} key Key string for appearance type.\n * @returns {void} Nothing.\n */\nexport function _removeDuplicateReference(dictionary, crossTable, key) {\n if (dictionary && dictionary.has(key)) {\n var oldAppearance = dictionary.getRaw(key);\n if (oldAppearance && oldAppearance instanceof _PdfReference && oldAppearance._isNew) {\n var appearance = dictionary.get(key); // eslint-disable-line\n if (appearance) {\n if (appearance instanceof _PdfReference) {\n appearance = crossTable._fetch(appearance);\n }\n var appearanceDictionary = void 0;\n if (appearance instanceof _PdfDictionary) {\n appearanceDictionary = appearance;\n }\n else if (appearance instanceof _PdfBaseStream) {\n appearanceDictionary = appearance.dictionary;\n }\n if (appearanceDictionary && appearanceDictionary.has('Resources')) {\n _removeDuplicateFromResources(appearanceDictionary.get('Resources'), crossTable);\n }\n }\n crossTable._cacheMap.delete(oldAppearance);\n }\n }\n}\n/**\n * Remove duplicate reference from resources.\n *\n * @private\n * @param {_PdfDictionary} resources Input resources.\n * @param {_PdfCrossReference} crossTable Cross reference table.\n * @returns {void} Nothing.\n */\nexport function _removeDuplicateFromResources(resources, crossTable) {\n if (resources && resources.size > 0) {\n resources.forEach(function (key, value) {\n if (typeof key !== 'undefined' && typeof value !== 'undefined') {\n if (value instanceof _PdfReference) {\n var reference = value;\n if (reference._isNew) {\n var dictionary = resources.get(key);\n if (dictionary && dictionary instanceof _PdfDictionary) {\n if (key === 'XObject' && dictionary.has('Resources')) {\n _removeDuplicateFromResources(dictionary.get('Resources'), crossTable);\n }\n crossTable._cacheMap.delete(reference);\n }\n }\n }\n else if (value instanceof _PdfDictionary) {\n if (value.has('Resources')) {\n _removeDuplicateFromResources(value.get('Resources'), crossTable);\n }\n if (key === 'Font' || key === 'XObject' || key === 'ExtGState') {\n _removeDuplicateFromResources(value, crossTable);\n }\n }\n }\n });\n }\n}\n/**\n * Remove duplicate reference.\n *\n * @private\n * @param {any} normal Input.\n * @param {_PdfCrossReference} crossReference Cross reference table.\n * @param {string} firstKey Key string for appearance type.\n * @param {string} secondKey Key string for appearance type.\n * @returns {void} Nothing.\n */\nexport function _removeReferences(normal, crossReference, firstKey, secondKey) {\n var normalElement;\n if (normal) {\n if (normal instanceof _PdfDictionary) {\n normalElement = normal;\n }\n else if (normal instanceof _PdfStream) {\n normalElement = normal.dictionary;\n }\n }\n if (normalElement) {\n _removeDuplicateReference(normalElement, crossReference, firstKey);\n _removeDuplicateReference(normalElement, crossReference, secondKey);\n }\n}\nvar BaseException = /** @class */ (function () {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n return BaseException;\n}());\nexport { BaseException };\nvar FormatError = /** @class */ (function (_super) {\n __extends(FormatError, _super);\n function FormatError(message) {\n return _super.call(this, message, 'FormatError') || this;\n }\n return FormatError;\n}(BaseException));\nexport { FormatError };\nvar ParserEndOfFileException = /** @class */ (function (_super) {\n __extends(ParserEndOfFileException, _super);\n function ParserEndOfFileException(message) {\n return _super.call(this, message, 'ParserEndOfFileException') || this;\n }\n return ParserEndOfFileException;\n}(BaseException));\nexport { ParserEndOfFileException };\n/**\n * Gets the default string.\n *\n * @param {string} item Input string.\n * @returns {string} result.\n */\nexport function _defaultToString(item) {\n if (Object.prototype.toString.call(item) === '[object String]') {\n return '$s' + item;\n }\n else {\n return '$o' + item.toString();\n }\n}\n/**\n * Gets the form field font.\n *\n * @param {PdfForm} form form.\n * @param {PdfWidgetAnnotation} widget widget annotation.\n * @param {PdfField} field field.\n * @returns {PdfFont} font.\n */\nexport function _obtainFontDetails(form, widget, field) {\n var fontFamily = '';\n var fontSize;\n var font;\n var defaultAppearance;\n if (widget && widget._dictionary.has('DA') || field._dictionary.has('DA')) {\n if (widget && widget._dictionary.has('DA')) {\n defaultAppearance = widget._dictionary.get('DA');\n }\n else {\n defaultAppearance = field._dictionary.get('DA');\n }\n }\n if (defaultAppearance && defaultAppearance !== '' && defaultAppearance.indexOf('Tf') !== -1) {\n var textCollection = defaultAppearance.split(' ');\n for (var i = 0; i < textCollection.length; i++) {\n if (textCollection[Number.parseInt(i.toString(), 10)].indexOf('Tf') !== -1) {\n fontFamily = textCollection[i - 2];\n while (fontFamily !== '' && fontFamily.length > 1 && fontFamily[0] === '/') {\n fontFamily = fontFamily.substring(1);\n }\n fontSize = Number.parseFloat(textCollection[i - 1]);\n }\n }\n }\n if (fontFamily) {\n fontFamily = fontFamily.trim();\n }\n if (form && form._dictionary.has('DR')) {\n var resources = form._dictionary.get('DR');\n if (resources.has('Font')) {\n var fonts = resources.get('Font');\n if (fonts.has(fontFamily)) {\n var fontDictionary = fonts.get(fontFamily);\n if (fontDictionary && fontFamily && fontDictionary.has('BaseFont')) {\n var baseFont = fontDictionary.get('BaseFont');\n var textFontStyle = PdfFontStyle.regular;\n if (baseFont) {\n defaultAppearance = baseFont.name;\n textFontStyle = _getFontStyle(baseFont.name);\n if (defaultAppearance.includes('-')) {\n defaultAppearance = defaultAppearance.substring(0, defaultAppearance.indexOf('-'));\n }\n if (widget && widget._dictionary.has('DA')) {\n font = _mapFont(defaultAppearance, fontSize, textFontStyle, widget);\n }\n else if (field && field._dictionary.has('DA')) {\n font = _mapFont(defaultAppearance, fontSize, textFontStyle, field);\n }\n }\n }\n }\n }\n }\n if ((font === null || typeof font === 'undefined') && fontSize) {\n font = new PdfStandardFont(PdfFontFamily.helvetica, fontSize, PdfFontStyle.regular);\n }\n if ((font === null || typeof font === 'undefined') || (font && font.size === 1)) {\n if (widget) {\n font = widget._circleCaptionFont;\n }\n else if (field) {\n font = field._circleCaptionFont;\n }\n }\n return font;\n}\n/**\n * Gets the font style.\n *\n * @param {string} fontFamilyString Font family string.\n * @returns {PdfFontStyle} result.\n */\nexport function _getFontStyle(fontFamilyString) {\n var position = fontFamilyString.indexOf('-');\n if (position < 0) {\n position = fontFamilyString.indexOf(',');\n }\n var style = PdfFontStyle.regular;\n if (position >= 0) {\n var standardName = fontFamilyString.substring(position + 1, fontFamilyString.length);\n switch (standardName) {\n case 'Bold':\n case 'BoldMT':\n style = PdfFontStyle.bold;\n break;\n case 'Italic':\n case 'ItalicMT':\n case 'Oblique':\n case 'It':\n style = PdfFontStyle.italic;\n break;\n case 'BoldItalic':\n case 'BoldItalicMT':\n case 'BoldOblique':\n style = PdfFontStyle.bold | PdfFontStyle.italic;\n break;\n }\n }\n return style;\n}\n/**\n * Map the font.\n *\n * @param {string} name Font name.\n * @param {number} size Font size.\n * @param {PdfFontStyle} style Font style.\n * @param {PdfAnnotation} annotation Annotation or Field.\n * @returns {PdfFont} result.\n */\nexport function _mapFont(name, size, style, annotation) {\n var font;\n var fontFamily = name ? name : '';\n if (fontFamily.includes('-')) {\n fontFamily = fontFamily.substring(0, fontFamily.indexOf('-'));\n }\n var fontSize = typeof size !== 'undefined' ? size : 1;\n if (annotation._dictionary.has('DS') || annotation._dictionary.has('DA')) {\n switch (fontFamily) {\n case 'Helvetica':\n font = new PdfStandardFont(PdfFontFamily.helvetica, fontSize, style);\n break;\n case 'Courier':\n font = new PdfStandardFont(PdfFontFamily.courier, fontSize, style);\n break;\n case 'Symbol':\n font = new PdfStandardFont(PdfFontFamily.symbol, fontSize, style);\n break;\n case 'Times':\n case 'TimesRoman':\n font = new PdfStandardFont(PdfFontFamily.timesRoman, fontSize, style);\n break;\n case 'ZapfDingbats':\n font = new PdfStandardFont(PdfFontFamily.zapfDingbats, fontSize, style);\n break;\n case 'MonotypeSungLight':\n font = new PdfCjkStandardFont(PdfCjkFontFamily.monotypeSungLight, fontSize, style);\n break;\n case 'SinoTypeSongLight':\n font = new PdfCjkStandardFont(PdfCjkFontFamily.sinoTypeSongLight, fontSize, style);\n break;\n case 'MonotypeHeiMedium':\n font = new PdfCjkStandardFont(PdfCjkFontFamily.monotypeHeiMedium, fontSize, style);\n break;\n case 'HanyangSystemsGothicMedium':\n font = new PdfCjkStandardFont(PdfCjkFontFamily.hanyangSystemsGothicMedium, fontSize, style);\n break;\n case 'HanyangSystemsShinMyeongJoMedium':\n font = new PdfCjkStandardFont(PdfCjkFontFamily.hanyangSystemsShinMyeongJoMedium, fontSize, style);\n break;\n case 'HeiseiKakuGothicW5':\n font = new PdfCjkStandardFont(PdfCjkFontFamily.heiseiKakuGothicW5, fontSize, style);\n break;\n case 'HeiseiMinchoW3':\n font = new PdfCjkStandardFont(PdfCjkFontFamily.heiseiMinchoW3, fontSize, style);\n break;\n default:\n if (annotation._dictionary.has('AP')) {\n var fontData = _tryParseFontStream(annotation._dictionary, annotation._crossReference, annotation);\n if (annotation._hasData) {\n var base64String = _encode(fontData);\n font = new PdfTrueTypeFont(base64String, fontSize, style);\n }\n }\n break;\n }\n }\n if (font === null || typeof font === 'undefined') {\n if (annotation instanceof PdfAnnotation) {\n if (annotation._type !== _PdfAnnotationType.widgetAnnotation) {\n font = new PdfStandardFont(PdfFontFamily.helvetica, fontSize, style);\n }\n else {\n font = annotation._circleCaptionFont;\n }\n }\n else if (annotation instanceof PdfField) {\n font = annotation._circleCaptionFont;\n }\n }\n return font;\n}\n/**\n * Gets the font stream.\n *\n * @param {_PdfDictionary} widgetDictionary Widget dictionary.\n * @param {_PdfCrossReference} crossReference Cross reference.\n * @param {PdfAnnotation} annotation Annotation.\n * @returns {Uint8Array} result.\n */\nexport function _tryParseFontStream(widgetDictionary, crossReference, annotation) {\n var fontData;\n var apperance = widgetDictionary.get('AP');\n if (apperance && apperance.has('N')) {\n var normal = apperance.get('N');\n if (normal && normal instanceof _PdfStream && normal.dictionary.has('Resources')) {\n var resourcesDictionary = normal.dictionary.get('Resources');\n if (resourcesDictionary && resourcesDictionary.has('Font')) {\n var fontDictionary = resourcesDictionary.get('Font');\n if (fontDictionary && fontDictionary instanceof _PdfDictionary) {\n fontDictionary.forEach(function (key, value) {\n if (value) {\n var dictionary = crossReference._fetch(value);\n if (dictionary && dictionary.has('DescendantFonts')) {\n var descendant = dictionary.getArray('DescendantFonts'); // eslint-disable-line\n if (descendant && descendant.length > 0) {\n for (var i = 0; i < descendant.length; i++) {\n var descendantFont = descendant[Number.parseInt(i.toString(), 10)]; // eslint-disable-line\n if (descendantFont && descendantFont instanceof _PdfDictionary && descendantFont.has('FontDescriptor')) {\n var fontDescriptor = descendantFont.get('FontDescriptor');\n if (fontDescriptor && fontDescriptor.has('FontFile2')) {\n var fontFile = fontDescriptor.get('FontFile2');\n if (fontFile && fontFile instanceof _PdfStream && fontFile.length > 0) {\n fontData = fontFile.getByteRange(fontFile.start, fontFile.end);\n if (fontData && fontData.length > 0) {\n annotation._hasData = true;\n }\n }\n }\n }\n }\n }\n }\n }\n });\n }\n }\n }\n }\n return fontData;\n}\n/**\n * Gets the boolean if two arrays are equal.\n *\n * @param {Array} inkPointsCollection Ink points collection.\n * @param {Array} previousCollection Previous collection.\n * @returns {boolean} result.\n */\nexport function _checkInkPoints(inkPointsCollection, previousCollection) {\n if (inkPointsCollection.length !== previousCollection.length) {\n return false;\n }\n for (var i = 0; i < inkPointsCollection.length; i++) {\n if (!_areArrayEqual(inkPointsCollection[Number.parseInt(i.toString(), 10)], previousCollection[Number.parseInt(i.toString(), 10)])) {\n return false;\n }\n }\n return true;\n}\n","import { _defaultToString } from './utils';\n/* eslint-disable */\nvar nameCache = Object.create(null);\nvar cmdCache = Object.create(null);\nvar refCache = Object.create(null);\nvar _PdfName = /** @class */ (function () {\n function _PdfName(name) {\n this.name = name;\n }\n _PdfName.get = function (name) {\n return nameCache[name] || (nameCache[name] = new _PdfName(name));\n };\n return _PdfName;\n}());\nexport { _PdfName };\nvar _PdfCommand = /** @class */ (function () {\n function _PdfCommand(command) {\n this.command = command;\n }\n _PdfCommand.get = function (command) {\n return cmdCache[command] || (cmdCache[command] = new _PdfCommand(command));\n };\n return _PdfCommand;\n}());\nexport { _PdfCommand };\nvar _PdfReference = /** @class */ (function () {\n function _PdfReference(objectNumber, gen) {\n this._isNew = false;\n this.objectNumber = objectNumber;\n this.generationNumber = gen;\n }\n _PdfReference.prototype.toString = function () {\n return this.objectNumber + \" \" + this.generationNumber;\n };\n _PdfReference.get = function (objectNumber, generationNumber) {\n var key = generationNumber === 0 ? objectNumber + \"R\" : objectNumber + \"R\" + generationNumber;\n return refCache[key] || (refCache[key] = new _PdfReference(objectNumber, generationNumber));\n };\n return _PdfReference;\n}());\nexport { _PdfReference };\nvar _PdfReferenceSet = /** @class */ (function () {\n function _PdfReferenceSet(parent) {\n if (parent === void 0) { parent = null; }\n this._set = new Set(parent && parent._set);\n }\n _PdfReferenceSet.prototype.has = function (ref) {\n return this._set.has(ref.toString());\n };\n _PdfReferenceSet.prototype.put = function (ref) {\n this._set.add(ref.toString());\n };\n _PdfReferenceSet.prototype.remove = function (ref) {\n this._set.delete(ref.toString());\n };\n _PdfReferenceSet.prototype.clear = function () {\n this._set.clear();\n };\n return _PdfReferenceSet;\n}());\nexport { _PdfReferenceSet };\nvar _PdfReferenceSetCache = /** @class */ (function () {\n function _PdfReferenceSetCache() {\n this._map = new Map();\n }\n Object.defineProperty(_PdfReferenceSetCache.prototype, \"size\", {\n get: function () {\n return this._map.size;\n },\n enumerable: true,\n configurable: true\n });\n _PdfReferenceSetCache.prototype.get = function (ref) {\n return this._map.get(ref.toString());\n };\n _PdfReferenceSetCache.prototype.has = function (ref) {\n return this._map.has(ref.toString());\n };\n _PdfReferenceSetCache.prototype.put = function (ref, obj) {\n this._map.set(ref.toString(), obj);\n };\n _PdfReferenceSetCache.prototype.set = function (objId, obj) {\n this._map.set(objId, obj);\n };\n _PdfReferenceSetCache.prototype.clear = function () {\n this._map.clear();\n };\n return _PdfReferenceSetCache;\n}());\nexport { _PdfReferenceSetCache };\nvar Dictionary = /** @class */ (function () {\n function Dictionary(toStringFunction) {\n this.table = {};\n this.nElements = 0;\n this.toStr = toStringFunction || _defaultToString;\n }\n Dictionary.prototype.getValue = function (key) {\n var pair = this.table['$' + this.toStr(key)];\n if (typeof pair === 'undefined') {\n return undefined;\n }\n return pair.value;\n };\n Dictionary.prototype.setValue = function (key, value) {\n var ret;\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n this.nElements++;\n ret = undefined;\n this.table[k] = {\n key: key,\n value: value\n };\n return ret;\n };\n Dictionary.prototype.keys = function () {\n var keysArray = [];\n var namesOfKeys = Object.keys(this.table);\n for (var index1 = 0; index1 < namesOfKeys.length; index1++) {\n var pair1 = this.table[namesOfKeys[index1]];\n keysArray.push(pair1.key);\n }\n return keysArray;\n };\n Dictionary.prototype.containsKey = function (key) {\n var retutnValue = true;\n if (typeof this.getValue(key) === 'undefined') {\n retutnValue = true;\n }\n else {\n retutnValue = false;\n }\n return !retutnValue;\n };\n Dictionary.prototype._size = function () {\n return this.nElements;\n };\n return Dictionary;\n}());\nexport { Dictionary };\nvar _PdfDictionary = /** @class */ (function () {\n function _PdfDictionary(xref) {\n this._isFont = false;\n this._initialize(xref);\n }\n Object.defineProperty(_PdfDictionary.prototype, \"size\", {\n get: function () {\n return Object.keys(this._map).length;\n },\n enumerable: true,\n configurable: true\n });\n _PdfDictionary.prototype.assignXref = function (xref) {\n this._crossReference = xref;\n };\n _PdfDictionary.prototype.getRaw = function (key) {\n return this._map[key];\n };\n _PdfDictionary.prototype.getRawValues = function () {\n return this._map.values;\n };\n _PdfDictionary.prototype.get = function (key1, key2, key3) {\n var value = this._get(key1, key2, key3);\n if (this._crossReference && typeof value !== 'undefined' && value instanceof _PdfReference) {\n value = this._crossReference._fetch(value);\n }\n return value;\n };\n _PdfDictionary.prototype.getArray = function (key1, key2, key3) {\n var value = this.get(key1, key2, key3);\n if (this._crossReference && typeof value !== 'undefined' && Array.isArray(value)) {\n value = value.slice();\n for (var i = 0; i < value.length; i++) {\n var reference = value[Number.parseInt(i.toString(), 10)];\n if (reference !== null && typeof reference !== 'undefined' && reference instanceof _PdfReference) {\n value[Number.parseInt(i.toString(), 10)] = this._crossReference._fetch(reference);\n }\n }\n }\n return value;\n };\n _PdfDictionary.prototype.set = function (key, value) {\n this._map[key] = value;\n };\n _PdfDictionary.prototype.has = function (key) {\n return typeof this._map[key] !== 'undefined';\n };\n _PdfDictionary.prototype.forEach = function (callback) {\n for (var key in this._map) {\n callback(key, this.getRaw(key));\n }\n };\n _PdfDictionary.prototype.update = function (key, value) {\n if (this.has(key)) {\n var prevValue = this._map[key];\n if (prevValue !== null && typeof prevValue !== 'undefined' && prevValue instanceof _PdfReference && this._crossReference) {\n prevValue = this._crossReference._fetch(prevValue);\n }\n if (prevValue !== value) {\n this._map[key] = value;\n this._updated = true;\n }\n }\n else {\n this._map[key] = value;\n this._updated = true;\n }\n };\n _PdfDictionary.getEmpty = function (xref) {\n var emptyDict = new _PdfDictionary(xref);\n emptyDict.set = function (key, value) {\n throw new Error('Should not call set on the empty dictionary.');\n };\n return emptyDict;\n };\n _PdfDictionary.merge = function (xref, dictionaryArray, mergeSubDictionary) {\n if (mergeSubDictionary === void 0) { mergeSubDictionary = false; }\n var mergedDictionary = new _PdfDictionary(xref);\n var properties = Object.create(null);\n for (var _i = 0, dictionaryArray_1 = dictionaryArray; _i < dictionaryArray_1.length; _i++) {\n var dictionary = dictionaryArray_1[_i];\n if (!(dictionary instanceof _PdfDictionary)) {\n continue;\n }\n for (var _a = 0, _b = dictionary._map; _a < _b.length; _a++) {\n var _c = _b[_a], key = _c[0], value = _c[1];\n var property = properties.get(key);\n if (typeof property === 'undefined') {\n property = [];\n properties.set(key, property);\n }\n else if (!mergeSubDictionary || !(value instanceof _PdfDictionary)) {\n continue;\n }\n property.push(value);\n }\n }\n for (var _d = 0, properties_1 = properties; _d < properties_1.length; _d++) {\n var _e = properties_1[_d], name_1 = _e[0], values = _e[1];\n if (values.length === 1 || !(values[0] instanceof _PdfDictionary)) {\n mergedDictionary._map[name_1] = values[0];\n continue;\n }\n var subDict = new _PdfDictionary(xref);\n for (var _f = 0, values_1 = values; _f < values_1.length; _f++) {\n var dictionary = values_1[_f];\n for (var _g = 0, _h = dictionary._map; _g < _h.length; _g++) {\n var _j = _h[_g], key = _j[0], value = _j[1];\n if (typeof subDict._map[key] === 'undefined') {\n subDict._map[key] = value;\n }\n }\n }\n if (subDict.size > 0) {\n mergedDictionary._map[name_1] = subDict;\n }\n }\n properties.clear();\n return mergedDictionary.size > 0 ? mergedDictionary : _PdfDictionary.getEmpty(xref);\n };\n _PdfDictionary.prototype._initialize = function (xref) {\n this._map = Object.create(null);\n this.suppressEncryption = false;\n this._updated = false;\n this.isCatalog = false;\n this._isNew = false;\n if (xref) {\n this._crossReference = xref;\n }\n };\n _PdfDictionary.prototype._get = function (key1, key2, key3) {\n var value = this._map[key1];\n if (typeof value === 'undefined') {\n value = this._map[key2];\n if (typeof key2 !== 'undefined' && key2 !== null) {\n value = this._map[key2];\n }\n else if (typeof key3 !== 'undefined' && key3 !== null) {\n value = this._map[key3];\n }\n }\n return value;\n };\n return _PdfDictionary;\n}());\nexport { _PdfDictionary };\nvar _PdfNull = /** @class */ (function () {\n function _PdfNull(value) {\n if (value === void 0) { value = []; }\n this.value = value;\n }\n return _PdfNull;\n}());\nexport { _PdfNull };\nexport function _clearPrimitiveCaches() {\n nameCache = Object.create(null);\n cmdCache = Object.create(null);\n refCache = Object.create(null);\n}\nexport function _isName(value, name) {\n return value instanceof _PdfName && (typeof name === 'undefined' || value.name === name);\n}\nexport function _isCommand(value, command) {\n return value instanceof _PdfCommand && (typeof command === 'undefined' || value.command === command);\n}\n","import { _PdfDictionary, _PdfReference, _PdfName } from './pdf-primitives';\nimport { _getInheritableProperty } from './utils';\nimport { PdfAnnotationCollection } from './annotations/annotation-collection';\nimport { PdfGraphics } from './graphics/pdf-graphics';\nimport { _PdfBaseStream, _PdfContentStream } from './base-stream';\nimport { PdfRotationAngle, PdfDestinationMode, PdfFormFieldsTabOrder, PdfPageOrientation } from './enumerator';\n/**\n * Represents a page loaded from the PDF document.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPage = /** @class */ (function () {\n /**\n * Represents a loaded page of the PDF document.\n *\n * @private\n * @param {_PdfCrossReference} crossReference Cross reference object.\n * @param {number} pageIndex page index.\n * @param {_PdfDictionary} dictionary page Dictionary.\n * @param {_PdfReference} reference page reference.\n */\n function PdfPage(crossReference, pageIndex, dictionary, reference) {\n this._isAnnotationParsed = false;\n this._pageIndex = pageIndex;\n this._pageDictionary = dictionary;\n this._crossReference = crossReference;\n this._ref = reference;\n }\n Object.defineProperty(PdfPage.prototype, \"annotations\", {\n /**\n * Gets the collection of the page's annotations (Read only).\n *\n * @returns {PdfAnnotationCollection} Annotation collection.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the annotation collection\n * let annotations: PdfAnnotationCollection = page.annotations;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._annotations === 'undefined') {\n if (this._pageDictionary.has('Annots')) {\n var annots = this._getProperty('Annots');\n if (annots && Array.isArray(annots)) {\n var widgets_1 = this._crossReference._document.form._parseWidgetReferences();\n if (widgets_1 && widgets_1.length > 0) {\n var validAnnotations_1 = [];\n annots.forEach(function (entry) {\n if (widgets_1.indexOf(entry) === -1) {\n validAnnotations_1.push(entry);\n }\n });\n this._annotations = new PdfAnnotationCollection(validAnnotations_1, this._crossReference, this);\n }\n else {\n this._annotations = new PdfAnnotationCollection(annots, this._crossReference, this);\n }\n }\n }\n if (typeof this._annotations === 'undefined') {\n this._annotations = new PdfAnnotationCollection([], this._crossReference, this);\n }\n }\n return this._annotations;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"size\", {\n /**\n * Gets the size of the page (Read only).\n *\n * @returns {number[]} Page width and height as number array.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the width and height of the PDF page as number array\n * let size: number[] = page.size;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._size === 'undefined') {\n var mBox = this.mediaBox;\n var width = 0;\n var height = 0;\n if (mBox) {\n width = mBox[2] - mBox[0];\n height = mBox[3] !== 0 ? mBox[3] - mBox[1] : mBox[1];\n }\n if (height < 0) {\n height = -height;\n }\n if (width < 0) {\n width = -width;\n }\n this._size = [width, height];\n }\n return this._size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"rotation\", {\n /**\n * Gets the rotation angle of the page (Read only).\n *\n * @returns {PdfRotationAngle} Page rotation angle.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the rotation angle of the page\n * let rotation: PdfRotationAngle = page.rotation;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var angle = 0;\n if (typeof this._rotation === 'undefined') {\n angle = _getInheritableProperty(this._pageDictionary, 'Rotate', false, true, 'Parent');\n }\n if (angle < 0) {\n angle += 360;\n }\n return (typeof angle !== 'undefined') ? ((angle / 90) % 4) : PdfRotationAngle.angle0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"tabOrder\", {\n /**\n * Gets the tab order of a PDF form field.\n *\n * @returns {PdfFormFieldsTabOrder} tab order.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the tab order of a PDF form field.\n * let tabOrder: PdfFormFieldsTabOrder = page.tabOrder;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._obtainTabOrder();\n },\n /**\n * Sets the tab order of a PDF form field.\n *\n * @param {PdfFormFieldsTabOrder} value tab order.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Sets the tab order of a PDF form field.\n * page.tabOrder = PdfFormFieldsTabOrder.row;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._tabOrder = value;\n var tabs = '';\n if (this._tabOrder !== PdfFormFieldsTabOrder.none) {\n if (this._tabOrder === PdfFormFieldsTabOrder.row) {\n tabs = 'R';\n }\n else if (this._tabOrder === PdfFormFieldsTabOrder.column) {\n tabs = 'C';\n }\n else if (this._tabOrder === PdfFormFieldsTabOrder.structure) {\n tabs = 'S';\n }\n }\n this._pageDictionary.update('Tabs', _PdfName.get(tabs));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"cropBox\", {\n /**\n * Gets the bounds that define the area intended for display or printing in the PDF viewer application (Read only).\n *\n * @returns {number[]} Page size as number array.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the cropBox of the PDF page as number array\n * let cropBox: number[] = page.cropBox;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._cBox === 'undefined') {\n this._cBox = _getInheritableProperty(this._pageDictionary, 'CropBox', false, true, 'Parent', 'P');\n }\n if (typeof this._cBox === 'undefined') {\n this._cBox = [0, 0, 0, 0];\n }\n return this._cBox;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"mediaBox\", {\n /**\n * Gets the size that specify the width and height of the page (Read only).\n *\n * @returns {number[]} Page size as number array.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the mediaBox of the PDF page as number array\n * let mediaBox: number[] = page.mediaBox;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._mBox === 'undefined') {\n this._mBox = _getInheritableProperty(this._pageDictionary, 'MediaBox', false, true, 'Parent', 'P');\n }\n if (typeof this._mBox === 'undefined') {\n this._mBox = [0, 0, 0, 0];\n }\n return this._mBox;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"orientation\", {\n /**\n * Gets the orientation of the page (Read only).\n *\n * @returns {PdfPageOrientation} Page orientation.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the orientation of the PDF page\n * let orientation: number[] = page.orientation;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._orientation === 'undefined') {\n if (typeof this.size !== 'undefined') {\n var size = this.size;\n if (size[0] > size[1]) {\n this._orientation = PdfPageOrientation.landscape;\n }\n else {\n this._orientation = PdfPageOrientation.portrait;\n }\n }\n }\n return this._orientation;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"_origin\", {\n get: function () {\n if (typeof this._o === 'undefined' || (this._o[0] === 0 && this._o[1] === 0)) {\n this._o = [this.mediaBox[0], this._mBox[1]];\n }\n return this._o;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"graphics\", {\n /**\n * Gets the graphics of the page (Read only).\n *\n * @returns {PdfGraphics} Page graphics.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * //Create a new pen.\n * let pen: PdfPen = new PdfPen([0, 0, 0], 1);\n * //Draw line on the page graphics.\n * graphics.drawLine(pen, 10, 10, 100, 100);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._g === 'undefined' || this._needInitializeGraphics) {\n this._parseGraphics();\n }\n return this._g;\n },\n enumerable: true,\n configurable: true\n });\n PdfPage.prototype._addWidget = function (reference) {\n var annots;\n if (this._pageDictionary.has('Annots')) {\n annots = this._getProperty('Annots');\n }\n if (annots && Array.isArray(annots)) {\n annots.push(reference);\n }\n else {\n this._pageDictionary.update('Annots', [reference]);\n }\n this._pageDictionary._updated = true;\n };\n PdfPage.prototype._getProperty = function (key, getArray) {\n if (getArray === void 0) { getArray = false; }\n var value = _getInheritableProperty(this._pageDictionary, key, getArray, false); // eslint-disable-line\n if (!Array.isArray(value)) {\n return value;\n }\n if (value.length === 1 || !(value[0] instanceof _PdfDictionary)) {\n return value[0];\n }\n return _PdfDictionary.merge(this._crossReference, value);\n };\n PdfPage.prototype._parseGraphics = function () {\n this._loadContents();\n var saveStream = new _PdfContentStream([32, 113, 32, 10]);\n var saveReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(saveReference, saveStream);\n this._contents.splice(0, 0, saveReference);\n var restoreStream = new _PdfContentStream([32, 81, 32, 10]);\n var restoreReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(restoreReference, restoreStream);\n this._contents.push(restoreReference);\n var contentStream = new _PdfContentStream([]);\n var contentReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(contentReference, contentStream);\n this._contents.push(contentReference);\n this._pageDictionary.set('Contents', this._contents);\n this._pageDictionary._updated = true;\n this._initializeGraphics(contentStream);\n };\n PdfPage.prototype._loadContents = function () {\n var contents = this._pageDictionary.getRaw('Contents'); // eslint-disable-line\n var ref;\n if (contents !== null && typeof contents !== 'undefined' && contents instanceof _PdfReference) {\n ref = contents;\n contents = this._crossReference._fetch(ref);\n }\n if (contents && contents instanceof _PdfBaseStream) {\n this._contents = [ref];\n }\n else if (contents && Array.isArray(contents)) {\n this._contents = contents;\n }\n else {\n this._contents = [];\n }\n };\n PdfPage.prototype._initializeGraphics = function (stream) {\n var isInvalidCase = false;\n var llx = 0;\n var lly = 0;\n var urx = 0;\n var ury = 0;\n var size = this.size;\n var mbox = this.mediaBox;\n if (mbox && mbox.length >= 4) {\n llx = mbox[0];\n lly = mbox[1];\n urx = mbox[2];\n ury = mbox[3];\n }\n var cbox;\n if (this._pageDictionary.has('CropBox')) {\n cbox = this.cropBox;\n if (cbox && cbox.length >= 4) {\n var cx = cbox[0];\n var cy = cbox[1];\n var crx = cbox[2];\n var cry = cbox[3];\n var isValid = (cx < 0 || cy < 0 || crx < 0 || cry < 0) &&\n (Math.floor(Math.abs(cy)) === Math.floor(Math.abs(size[1]))) &&\n (Math.floor(Math.abs(cx)) === Math.floor(Math.abs(size[0])));\n if (isValid) {\n this._g = new PdfGraphics([Math.max(cx, crx), Math.max(cy, cry)], stream, this._crossReference, this);\n }\n else {\n this._g = new PdfGraphics(size, stream, this._crossReference, this);\n this._g._cropBox = cbox;\n }\n }\n else {\n this._g = new PdfGraphics(size, stream, this._crossReference, this);\n }\n }\n else if ((llx < 0 || lly < 0 || urx < 0 || ury < 0) &&\n (Math.floor(Math.abs(lly)) === Math.floor(Math.abs(size[1]))) &&\n (Math.floor(Math.abs(urx)) === Math.floor(Math.abs(size[0])))) {\n var width = Math.max(llx, urx);\n var height = Math.max(lly, ury);\n if (width <= 0 || height <= 0) {\n isInvalidCase = true;\n if (llx < 0) {\n llx = -llx;\n }\n if (lly < 0) {\n lly = -lly;\n }\n if (urx < 0) {\n urx = -urx;\n }\n if (ury < 0) {\n ury = -ury;\n }\n width = Math.max(llx, urx);\n height = Math.max(lly, ury);\n }\n this._g = new PdfGraphics([width, height], stream, this._crossReference, this);\n }\n else {\n this._g = new PdfGraphics(size, stream, this._crossReference, this);\n }\n if (this._pageDictionary.has('MediaBox')) {\n this._g._mediaBoxUpperRightBound = isInvalidCase ? -lly : ury;\n }\n this._graphicsState = this._g.save();\n var origin = this._origin;\n if ((origin[0] >= 0 && origin[1] >= 0) || Math.sign(origin[0]) !== Math.sign(origin[1])) {\n this._g._initializeCoordinates();\n }\n else {\n this._g._initializeCoordinates(this);\n }\n //Need to code - set transparency group\n var rotation = this.rotation;\n if (!Number.isNaN(rotation) && (rotation !== PdfRotationAngle.angle0 || this._pageDictionary.has('Rotate'))) {\n var rotate = void 0;\n if (this._pageDictionary.has('Rotate')) {\n rotate = this._pageDictionary.get('Rotate');\n }\n else {\n rotate = rotation * 90;\n }\n var clip = this._g._clipBounds;\n if (rotate === 90) {\n this._g.translateTransform(0, size[1]);\n this._g.rotateTransform(-90);\n this._g._clipBounds = [clip[0], clip[1], size[0], size[1]];\n }\n else if (rotate === 180) {\n this._g.translateTransform(size[0], size[1]);\n this._g.rotateTransform(-180);\n }\n else if (rotate === 270) {\n this._g.translateTransform(size[0], 0);\n this._g.rotateTransform(-270);\n this._g._clipBounds = [clip[0], clip[1], size[1], size[0]];\n }\n }\n this._needInitializeGraphics = false;\n };\n PdfPage.prototype._fetchResources = function () {\n if (typeof this._resourceObject === 'undefined') {\n if (this._pageDictionary && this._pageDictionary.has('Resources')) {\n var obj = this._pageDictionary.getRaw('Resources'); // eslint-disable-line\n if (obj !== null && typeof obj !== 'undefined' && obj instanceof _PdfReference) {\n this._hasResourceReference = true;\n this._resourceObject = this._crossReference._fetch(obj);\n }\n else if (obj instanceof _PdfDictionary) {\n this._resourceObject = obj;\n }\n }\n else {\n this._resourceObject = new _PdfDictionary(this._crossReference);\n this._pageDictionary.update('Resources', this._resourceObject);\n }\n }\n return this._resourceObject;\n };\n PdfPage.prototype._getCropOrMediaBox = function () {\n var box;\n if (this._pageDictionary.has('CropBox')) {\n box = this._pageDictionary.getArray('CropBox');\n }\n else if (this._pageDictionary.has('MediaBox')) {\n box = this._pageDictionary.getArray('MediaBox');\n }\n return box;\n };\n PdfPage.prototype._beginSave = function () {\n if (typeof this._graphicsState !== 'undefined') {\n this.graphics.restore(this._graphicsState);\n this._graphicsState = null;\n this._needInitializeGraphics = true;\n }\n };\n PdfPage.prototype._destroy = function () {\n this._pageDictionary = undefined;\n this._size = undefined;\n this._mBox = undefined;\n this._cBox = undefined;\n this._o = undefined;\n this._g = undefined;\n this._graphicsState = undefined;\n this._contents = undefined;\n };\n PdfPage.prototype._obtainTabOrder = function () {\n if (this._pageDictionary.has('Tabs')) {\n var tabOrder = this._pageDictionary.get('Tabs');\n if (tabOrder === _PdfName.get('R')) {\n this._tabOrder = PdfFormFieldsTabOrder.row;\n }\n else if (tabOrder === _PdfName.get('C')) {\n this._tabOrder = PdfFormFieldsTabOrder.column;\n }\n else if (tabOrder === _PdfName.get('S')) {\n this._tabOrder = PdfFormFieldsTabOrder.structure;\n }\n else if (tabOrder === _PdfName.get('W')) {\n this._tabOrder = PdfFormFieldsTabOrder.widget;\n }\n }\n if (this._tabOrder === null || typeof this._tabOrder === 'undefined') {\n this._tabOrder = PdfFormFieldsTabOrder.none;\n }\n return this._tabOrder;\n };\n PdfPage.prototype._removeAnnotation = function (reference) {\n if (this._pageDictionary.has('Annots')) {\n var annots = this._getProperty('Annots');\n if (annots && Array.isArray(annots)) {\n var index = annots.indexOf(reference);\n if (index >= 0) {\n annots.splice(index, 1);\n }\n this._pageDictionary.set('Annots', annots);\n this._pageDictionary._updated = true;\n }\n }\n };\n return PdfPage;\n}());\nexport { PdfPage };\n/**\n * `PdfDestination` class represents the PDF destination.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the annotation at index 0\n * let annotation: PdfDocumentLinkAnnotation = document.getPage(0).annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Initializes a new instance of the `PdfDestination` class.\n * let destination: PdfDestination = new PdfDestination();\n * // Sets the zoom factor.\n * destination.zoom = 20;\n * // Sets the page where the destination is situated.\n * destination.page = page;\n * // Sets the mode of the destination.\n * destination.mode = PdfDestinationMode.fitToPage;\n * // Sets the location of the destination.\n * destination.location = [20, 20];\n * // Sets the bounds of the destination.\n * destination.destinationBounds = [20, 20, 100, 50];\n * // Sets destination to document link annotation.\n * annotation.destination = destination;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDestination = /** @class */ (function () {\n function PdfDestination(page, location) {\n this._location = [0, 0];\n this._destinationMode = PdfDestinationMode.location;\n this._zoom = 0;\n this._isValid = true;\n this._index = 0;\n this._destinationBounds = [0, 0, 0, 0];\n this._array = Array(); // eslint-disable-line\n if (typeof page !== 'undefined' && page !== null) {\n if (page.rotation === PdfRotationAngle.angle180) {\n this._location = [page.graphics._size[0], this._location[1]];\n }\n else if (page.rotation === PdfRotationAngle.angle90) {\n this._location = [0, 0];\n }\n else if (page.rotation === PdfRotationAngle.angle270) {\n this._location = [page.graphics._size[0], 0];\n }\n else {\n this._location = [0, this._location[1]];\n }\n this._page = page;\n this._index = page._pageIndex;\n }\n if (typeof location !== 'undefined' && location.length === 2) {\n this._location = location;\n }\n if (typeof location !== 'undefined' && location.length === 4) {\n this._location = [location[0], location[1]];\n this._destinationBounds = location;\n }\n }\n Object.defineProperty(PdfDestination.prototype, \"zoom\", {\n /**\n * Gets the zoom factor.\n *\n * @returns {number} zoom.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * //Access the annotation at index 0\n * let annot: PdfDocumentLinkAnnotation = page.annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Gets the zoom factor of the destination.\n * let zoom: number = annot.destination.zoom;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._zoom;\n },\n /**\n * Sets the zoom factor.\n *\n * @param {number} value zoom.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the annotation at index 0\n * let annotation: PdfDocumentLinkAnnotation = document.getPage(0).annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Initializes a new instance of the `PdfDestination` class.\n * let destination: PdfDestination = new PdfDestination();\n * // Sets the zoom factor.\n * destination.zoom = 20;\n * // Sets the page where the destination is situated.\n * destination.page = page;\n * // Sets the mode of the destination.\n * destination.mode = PdfDestinationMode.fitToPage;\n * // Sets the location of the destination.\n * destination.location = [20, 20];\n * // Sets the bounds of the destination.\n * destination.destinationBounds = [20, 20, 100, 50];\n * // Sets destination to document link annotation.\n * annotation.destination = destination;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._zoom) {\n this._zoom = value;\n this._initializePrimitive();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"page\", {\n /**\n * Gets the page where the destination is situated.\n *\n * @returns {PdfPage} page.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * //Access the annotation at index 0\n * let annot: PdfDocumentLinkAnnotation = document.getPage(0).annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Gets the page of the destination.\n * let page: PdfPage = annot.destination.page;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._page;\n },\n /**\n * Sets the page where the destination is situated.\n *\n * @param {PdfPage} value page.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the annotation at index 0\n * let annotation: PdfDocumentLinkAnnotation = document.getPage(0).annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Initializes a new instance of the `PdfDestination` class.\n * let destination: PdfDestination = new PdfDestination();\n * // Sets the zoom factor.\n * destination.zoom = 20;\n * // Sets the page where the destination is situated.\n * destination.page = page;\n * // Sets the mode of the destination.\n * destination.mode = PdfDestinationMode.fitToPage;\n * // Sets the location of the destination.\n * destination.location = [20, 20];\n * // Sets the bounds of the destination.\n * destination.destinationBounds = [20, 20, 100, 50];\n * // Sets destination to document link annotation.\n * annotation.destination = destination;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._page) {\n this._page = value;\n this._initializePrimitive();\n this._index = value._pageIndex;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"pageIndex\", {\n /**\n * Gets the page index of bookmark destination (Read only).\n *\n * @returns {number} index.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * //Access the annotation at index 0\n * let annot: PdfDocumentLinkAnnotation = document.getPage(0).annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Gets the page index of the destination.\n * let pageIndex: number = annot.destination.pageIndex;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._index;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"mode\", {\n /**\n * Gets the mode of the destination.\n *\n * @returns {PdfDestinationMode} page.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * //Access the annotation at index 0\n * let annot: PdfDocumentLinkAnnotation = document.getPage(0).annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Gets the mode of the destination.\n * let mode: PdfDestinationMode = annot.destination.mode;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._destinationMode;\n },\n /**\n * Sets the mode of the destination.\n *\n * @param {PdfDestinationMode} value page.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the annotation at index 0\n * let annotation: PdfDocumentLinkAnnotation = document.getPage(0).annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Initializes a new instance of the `PdfDestination` class.\n * let destination: PdfDestination = new PdfDestination();\n * // Sets the zoom factor.\n * destination.zoom = 20;\n * // Sets the page where the destination is situated.\n * destination.page = page;\n * // Sets the mode of the destination.\n * destination.mode = PdfDestinationMode.fitToPage;\n * // Sets the location of the destination.\n * destination.location = [20, 20];\n * // Sets the bounds of the destination.\n * destination.destinationBounds = [20, 20, 100, 50];\n * // Sets destination to document link annotation.\n * annotation.destination = destination;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._destinationMode) {\n this._destinationMode = value;\n this._initializePrimitive();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"location\", {\n /**\n * Gets the location of the destination.\n *\n * @returns {number[]} page.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the annotation at index 0\n * let annot: PdfDocumentLinkAnnotation = document.getPage(0).annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Gets the location of the destination.\n * let location: number[] = annot.destination.location;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._location;\n },\n /**\n * Sets the location of the destination.\n *\n * @param {number[]} value page.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the annotation at index 0\n * let annotation: PdfDocumentLinkAnnotation = document.getPage(0).annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Initializes a new instance of the `PdfDestination` class.\n * let destination: PdfDestination = new PdfDestination();\n * // Sets the zoom factor.\n * destination.zoom = 20;\n * // Sets the page where the destination is situated.\n * destination.page = page;\n * // Sets the mode of the destination.\n * destination.mode = PdfDestinationMode.fitToPage;\n * // Sets the location of the destination.\n * destination.location = [20, 20];\n * // Sets the bounds of the destination.\n * destination.destinationBounds = [20, 20, 100, 50];\n * // Sets destination to document link annotation.\n * annotation.destination = destination;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._location) {\n this._location = value;\n this._initializePrimitive();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"destinationBounds\", {\n /**\n * Gets the bounds of the destination.\n *\n * @returns {number[]} bounds.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the annotation at index 0\n * let annot: PdfDocumentLinkAnnotation = document.getPage(0).annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Gets the bounds of the destination.\n * let destinationBounds: number[] = annot.destination.destinationBounds;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._destinationBounds;\n },\n /**\n * Sets the bounds of the destination.\n *\n * @param {number[]} value bounds.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the annotation at index 0\n * let annotation: PdfDocumentLinkAnnotation = document.getPage(0).annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Initializes a new instance of the `PdfDestination` class.\n * let destination: PdfDestination = new PdfDestination();\n * // Sets the zoom factor.\n * destination.zoom = 20;\n * // Sets the page where the destination is situated.\n * destination.page = page;\n * // Sets the mode of the destination.\n * destination.mode = PdfDestinationMode.fitToPage;\n * // Sets the location of the destination.\n * destination.location = [20, 20];\n * // Sets the bounds of the destination.\n * destination.destinationBounds = [20, 20, 100, 50];\n * // Sets destination to document link annotation.\n * annotation.destination = destination;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._destinationBounds) {\n this._destinationBounds = value;\n this._initializePrimitive();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"isValid\", {\n /**\n * Gets a value indicating whether this instance is valid (Read only).\n *\n * @returns {boolean} value indicating whether this instance is valid.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the annotation at index 0\n * let annot: PdfDocumentLinkAnnotation = document.getPage(0).annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Gets a value indicating whether this instance is valid.\n * let isValid: boolean = annot.destination.isValid;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._isValid;\n },\n enumerable: true,\n configurable: true\n });\n PdfDestination.prototype._setValidation = function (value) {\n this._isValid = value;\n };\n PdfDestination.prototype._initializePrimitive = function () {\n this._array = [];\n var page = this._page;\n var element = this._page._pageDictionary;\n if (typeof element !== 'undefined' && element !== null) {\n this._array.push(this._page._ref);\n }\n switch (this._destinationMode) {\n case PdfDestinationMode.location:\n this._array.push(_PdfName.get('XYZ'));\n if (typeof page !== 'undefined' && page !== null) {\n this._array.push(this._location[0]);\n this._array.push(this._page.graphics._size[1] - this._location[1]);\n }\n else {\n this._array.push(0);\n this._array.push(0);\n }\n this._array.push(this._zoom);\n break;\n case PdfDestinationMode.fitToPage:\n this._array.push(_PdfName.get('Fit'));\n break;\n case PdfDestinationMode.fitR:\n this._array.push(_PdfName.get('FitR'));\n this._array.push(this._destinationBounds[0]);\n this._array.push(this._destinationBounds[1]);\n this._array.push(this._destinationBounds[2]);\n this._array.push(this._destinationBounds[3]);\n break;\n case PdfDestinationMode.fitH:\n this._array.push(_PdfName.get('FitH'));\n this._array.push((typeof page !== 'undefined' && page !== null) ? page._size[1] - this._location[1] : 0);\n break;\n }\n if (this._parent) {\n this._parent._dictionary.set('D', this._array);\n this._parent._dictionary._updated = true;\n }\n };\n return PdfDestination;\n}());\nexport { PdfDestination };\n","import { _PdfDictionary } from './../pdf-primitives';\nimport { PdfTemplate } from './../graphics/pdf-template';\n/**\n * `PdfAppearance` class represents the appearance of the annotation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new rubber stamp annotation\n * const annotation: PdfRubberStampAnnotation = new PdfRubberStampAnnotation(50, 100, 100, 50);\n * // Get the appearance of the annotation\n * let appearance: PdfAppearance = annotation.appearance;\n * // Create new image object by using JPEG image data as Base64 string format\n * let image: PdfImage = new PdfBitmap('/9j/4AAQSkZJRgABAQEAkACQAAD/4....QB//Z');\n * // Draw the image as the custom appearance for the annotation\n * appearance.normal.graphics.drawImage(image, 0, 0, 100, 50);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfAppearance = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfAppearance` class.\n *\n * @param {PdfAnnotation} annot - The annotation.\n * @param {number[]} bounds - The bounds.\n * @private\n */\n function PdfAppearance(annot, bounds) {\n this._dictionary = new _PdfDictionary();\n this._annotations = annot;\n this._crossReference = annot._crossReference;\n if (typeof bounds !== 'undefined') {\n this._bounds = bounds;\n }\n this._initialize();\n }\n Object.defineProperty(PdfAppearance.prototype, \"normal\", {\n /**\n * Get the normal appearance of the annotation.\n *\n * @returns {PdfTemplate} Returns the normal appearance of the annotation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new rubber stamp annotation\n * const annotation: PdfRubberStampAnnotation = new PdfRubberStampAnnotation(50, 100, 100, 50);\n * // Get the appearance of the annotation\n * let appearance: PdfAppearance = annotation.appearance;\n * // Access the normal template of the appearance\n * let template: PdfTemplate = appearance.normal;\n * // Create new image object by using JPEG image data as Base64 string format\n * let image: PdfImage = new PdfBitmap('/9j/4AAQSkZJRgABAQEAkACQAAD/4....QB//Z');\n * // Draw the image as the custom appearance for the annotation\n * template.graphics.drawImage(image, 0, 0, 100, 50);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (!this._templateNormal && this._dictionary.has('AP')) {\n this._templateNormal = this._dictionary.get('N');\n }\n return this._templateNormal;\n },\n /**\n * Set the normal appearance of the annotation.\n *\n * @param {PdfTemplate} value The normal appearance of the annotation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new rubber stamp annotation\n * const annotation: PdfRubberStampAnnotation = new PdfRubberStampAnnotation(50, 100, 100, 50);\n * // Get the appearance of the annotation\n * let appearance: PdfAppearance = annotation.appearance;\n * // Access the normal template of the appearance\n * let template: PdfTemplate = appearance.normal;\n * // Create new image object by using JPEG image data as Base64 string format\n * let image: PdfImage = new PdfBitmap('/9j/4AAQSkZJRgABAQEAkACQAAD/4....QB//Z');\n * // Draw the image as the custom appearance for the annotation\n * template.graphics.drawImage(image, 0, 0, 100, 50);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Add a new rubber stamp annotation to the page\n * const annotation2: PdfRubberStampAnnotation = new PdfRubberStampAnnotation(50, 200, 100, 50);\n * // Set the normal appearance of the annotation\n * annotation2.appearance.normal = annotation.appearance.normal;\n * // Add annotation to the page\n * page.annotations.add(annotation2);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value) {\n this._templateNormal = value;\n this._dictionary.set('N', this._templateNormal);\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfAppearance.prototype._initialize = function () {\n this.normal = new PdfTemplate(this._bounds, this._crossReference);\n };\n return PdfAppearance;\n}());\nexport { PdfAppearance };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfDestination } from './../pdf-page';\nimport { _PdfDictionary, _PdfName, _PdfReference } from './../pdf-primitives';\nimport { PdfFormFieldVisibility, _PdfCheckFieldState, PdfAnnotationFlag, PdfBorderStyle, PdfLineCaptionType, PdfLineEndingStyle, PdfLineIntent, PdfRotationAngle, PdfTextAlignment, PdfBorderEffectStyle, PdfMeasurementUnit, _PdfGraphicsUnit, PdfCircleMeasurementType, PdfRubberStampAnnotationIcon, PdfCheckBoxStyle, PdfTextMarkupAnnotationType, PdfPopupIcon, PdfAnnotationState, PdfAnnotationStateModel, PdfAttachmentIcon, PdfAnnotationIntent, _PdfAnnotationType, PdfDestinationMode, PdfBlendMode, PdfDashStyle, PdfLineCap } from './../enumerator';\nimport { _checkField, _removeDuplicateReference, _updateVisibility, _getPageIndex, _checkComment, _checkReview, _mapAnnotationStateModel, _mapAnnotationState, _decode, _setMatrix, _convertToColor, _findPage, _getItemValue, _areNotEqual, _calculateBounds, _parseColor, _mapHighlightMode, _reverseMapHighlightMode, _getUpdatedBounds, _mapBorderStyle, _mapLineEndingStyle, _reverseMapEndingStyle, _toRectangle, _mapBorderEffectStyle, _getStateTemplate, _mapMeasurementUnit, _mapGraphicsUnit, _stringToStyle, _styleToString, _mapMarkupAnnotationType, _reverseMarkupAnnotationType, _reverseMapAnnotationState, _reverseMapAnnotationStateModel, _mapPopupIcon, _mapRubberStampIcon, _mapAttachmentIcon, _mapAnnotationIntent, _reverseMapPdfFontStyle, _fromRectangle, _getNewGuidString, _getFontStyle, _mapFont, _checkInkPoints } from './../utils';\nimport { PdfField, _PdfDefaultAppearance, PdfListBoxField, PdfComboBoxField } from './../form/field';\nimport { PdfTemplate } from './../graphics/pdf-template';\nimport { _TextRenderingMode, PdfBrush, PdfPen, _PdfTransformationMatrix, _PdfUnitConvertor } from './../graphics/pdf-graphics';\nimport { _PdfPath } from './../graphics/pdf-path';\nimport { PdfFontFamily, PdfStandardFont, PdfFont, PdfFontStyle, PdfTrueTypeFont } from './../fonts/pdf-standard-font';\nimport { PdfStringFormat, PdfVerticalAlignment } from './../fonts/pdf-string-format';\nimport { _PdfStream } from './../base-stream';\nimport { PdfAppearance } from './pdf-appearance';\nimport { PdfPopupAnnotationCollection } from './annotation-collection';\n/**\n * Represents the base class for annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfAnnotation = page.annotations.at(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfAnnotation = /** @class */ (function () {\n function PdfAnnotation() {\n this._isImported = false;\n this._isLoaded = false;\n this._setAppearance = false;\n this._isExport = false;\n this._opacity = 1;\n this._isAllRotation = true;\n this._flatten = false;\n this._hasData = false;\n this._popUpFont = new PdfStandardFont(PdfFontFamily.helvetica, 10.5);\n this._authorBoldFont = new PdfStandardFont(PdfFontFamily.helvetica, 10.5, PdfFontStyle.bold);\n this._lineCaptionFont = new PdfStandardFont(PdfFontFamily.helvetica, 10, PdfFontStyle.regular);\n this._circleCaptionFont = new PdfStandardFont(PdfFontFamily.helvetica, 8, PdfFontStyle.regular);\n }\n Object.defineProperty(PdfAnnotation.prototype, \"author\", {\n /**\n * Gets the author of the annotation.\n *\n * @returns {string} Author.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * //Get the author of the annotation.\n * let author: string = annotation.author;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._author === 'undefined' && this._dictionary.has('Author')) {\n var author = this._dictionary.get('Author');\n if (author) {\n this._author = author;\n }\n }\n if (typeof this._author === 'undefined' && this._dictionary.has('T')) {\n var author = this._dictionary.get('T');\n if (author) {\n this._author = author;\n }\n }\n return this._author;\n },\n /**\n * Sets the author of the annotation.\n *\n * @param {string} value Author.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the author of the annotation.\n * annotation.author = ‘Syncfusion’;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._isLoaded && typeof value === 'string' && value !== this.author) {\n var hasKey = false;\n if (this._dictionary.has('T')) {\n this._dictionary.update('T', value);\n this._author = value;\n hasKey = true;\n }\n if (this._dictionary.has('Author')) {\n this._dictionary.update('Author', value);\n this._author = value;\n hasKey = true;\n }\n if (!hasKey) {\n this._dictionary.update('T', value);\n this._author = value;\n }\n }\n if (!this._isLoaded && typeof value === 'string') {\n this._dictionary.update('T', value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"border\", {\n /**\n * Gets the border of the annotation.\n *\n * @returns {PdfAnnotationBorder} Annotation border.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the border of the annotation.\n * let border: PdfAnnotationBorder = annotation.border;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._border === 'undefined') {\n var value = new PdfAnnotationBorder();\n value._dictionary = this._dictionary;\n if (this._dictionary.has('Border')) {\n var border = this._dictionary.getArray('Border');\n if (border && border.length >= 3) {\n value._hRadius = border[0];\n value._vRadius = border[1];\n value._width = border[2];\n }\n }\n if (this._dictionary.has('BS')) {\n var border = this._dictionary.get('BS');\n if (border) {\n if (border.has('W')) {\n var width = border.get('W');\n if (typeof width !== 'undefined' && !Number.isNaN(width)) {\n value._width = width;\n }\n }\n if (border.has('S')) {\n var style = border.get('S');\n if (style) {\n switch (style.name) {\n case 'D':\n value._style = PdfBorderStyle.dashed;\n break;\n case 'B':\n value._style = PdfBorderStyle.beveled;\n break;\n case 'I':\n value._style = PdfBorderStyle.inset;\n break;\n case 'U':\n value._style = PdfBorderStyle.underline;\n break;\n default:\n value._style = PdfBorderStyle.solid;\n break;\n }\n }\n }\n if (border.has('D')) {\n var dash = border.getArray('D');\n if (dash) {\n value._dash = dash;\n }\n }\n }\n }\n this._border = value;\n }\n return this._border;\n },\n /**\n * Sets the border of the annotation.\n *\n * @param {PdfAnnotationBorder} value Border.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Initializes a new instance of the ` PdfAnnotationBorder ` class.\n * let border: PdfAnnotationBorder = new PdfAnnotationBorder ();\n * //Sets the width of the annotation border.\n * border.width = 10;\n * //Sets the style of the annotation border.\n * border.style = PdfBorderStyle.dashed;\n * //Sets the dash pattern of the annotation border.\n * border.dash = [1, 2, 1];\n * // Sets the border to the PDF annotation\n * annotation.border = border;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n var current = this.border;\n var width;\n if (!this._isLoaded || (typeof value.width !== 'undefined' && current.width !== value.width)) {\n width = value.width;\n }\n var hRadius;\n if (!this._isLoaded || (typeof value.hRadius !== 'undefined' && current.hRadius !== value.hRadius)) {\n hRadius = value.hRadius;\n }\n var vRadius;\n if (!this._isLoaded || (typeof value.vRadius !== 'undefined' && current.vRadius !== value.vRadius)) {\n vRadius = value.vRadius;\n }\n var style;\n if (!this._isLoaded || (typeof value.style !== 'undefined' && current.style !== value.style)) {\n style = value.style;\n }\n var dash;\n if (typeof value.dash !== 'undefined' && current.dash !== value.dash) {\n dash = value.dash;\n }\n if (!this._isWidget && (this._dictionary.has('Border') || (width || vRadius || hRadius))) {\n this._border._hRadius = typeof hRadius !== 'undefined' ? hRadius : current.hRadius;\n this._border._vRadius = typeof vRadius !== 'undefined' ? vRadius : current.vRadius;\n this._border._width = typeof width !== 'undefined' ? width : current.width;\n this._dictionary.update('Border', [this._border.hRadius, this._border.vRadius, this._border.width]);\n }\n if (this._dictionary.has('BS') || (width || style || dash)) {\n this._border._width = typeof width !== 'undefined' ? width : current.width;\n this._border._style = typeof style !== 'undefined' ? style : current.style;\n this._border._dash = typeof dash !== 'undefined' ? dash : current.dash;\n var bs = this._dictionary.has('BS') ? this._dictionary.get('BS') : new _PdfDictionary(this._crossReference);\n bs.update('Type', _PdfName.get('Border'));\n bs.update('W', this._border.width);\n bs.update('S', _mapBorderStyle(this._border.style));\n if (typeof this._border.dash !== 'undefined') {\n bs.update('D', this._border.dash);\n }\n this._dictionary.update('BS', bs);\n this._dictionary._updated = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"flags\", {\n /**\n * Gets the flags of the annotation.\n *\n * @returns {PdfAnnotationFlag} Annotation flag.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the flags of the annotation.\n * let flag: PdfAnnotationFlag = annotation.flags;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._annotFlags === 'undefined') {\n this._annotFlags = PdfAnnotationFlag.default;\n if (this._dictionary.has('F')) {\n this._annotFlags = this._dictionary.get('F');\n }\n }\n return this._annotFlags;\n },\n /**\n * Sets the flags of the annotation.\n *\n * @param {PdfAnnotationFlag} value flag value.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the flags of the annotation.\n * annotation.flags = PdfAnnotationFlag.print;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined' && value !== this._annotFlags) {\n this._annotFlags = value;\n this._dictionary.update('F', value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"color\", {\n /**\n * Gets the fore color of the annotation.\n *\n * @returns {number[]} R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the color of the annotation.\n * let color: number[] = annotation.color;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._color === 'undefined' && this._dictionary.has('C')) {\n this._color = _parseColor(this._dictionary.getArray('C'));\n }\n return this._color;\n },\n /**\n * Sets the fore color of the annotation.\n *\n * @param {number[]} value R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the color of the annotation.\n * annotation.color = [255, 0, 0];\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined' && value.length === 3) {\n var extColor = this.color;\n if (!this._isLoaded || typeof extColor === 'undefined' || (extColor[0] !== value[0] || extColor[1] !== value[1] || extColor[2] !== value[2])) {\n this._color = value;\n this._dictionary.update('C', [Number.parseFloat((value[0] / 255).toFixed(7)),\n Number.parseFloat((value[1] / 255).toFixed(7)),\n Number.parseFloat((value[2] / 255).toFixed(7))]);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"innerColor\", {\n /**\n * Gets the inner color of the annotation.\n *\n * @returns {number[]} R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the inner color of the annotation.\n * let innerColor: number[] = annotation.innerColor;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._innerColor === 'undefined' && this._dictionary.has('IC')) {\n this._innerColor = _parseColor(this._dictionary.getArray('IC'));\n }\n return this._innerColor;\n },\n /**\n * Sets the inner color of the annotation.\n *\n * @param {number[]} value R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the inner color of the annotation.\n * annotation.innerColor = [255, 0, 0];\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined' && value.length === 3) {\n var extColor = this.innerColor;\n if (!this._isLoaded ||\n typeof extColor === 'undefined' ||\n (extColor[0] !== value[0] || extColor[1] !== value[1] || extColor[2] !== value[2])) {\n this._innerColor = value;\n this._dictionary.update('IC', [Number.parseFloat((value[0] / 255).toFixed(7)),\n Number.parseFloat((value[1] / 255).toFixed(7)),\n Number.parseFloat((value[2] / 255).toFixed(7))]);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"creationDate\", {\n /**\n * Gets the creation date of the annotation.\n *\n * @returns {Date} Creation date.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * //Get the creation date of the annotation.\n * let creationDate: Date = annotation.creationDate;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if ((typeof this._creationDate === 'undefined' || this._creationDate === null) && this._dictionary.has('CreationDate')) {\n var value = this._dictionary.get('CreationDate'); // eslint-disable-line\n if (value !== null && typeof value === 'string') {\n this._creationDate = this._stringToDate(value);\n }\n }\n return this._creationDate;\n },\n /**\n * Sets the creation date of the annotation.\n *\n * @param {Date} value Creation date.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * //Set the creation date of the annotation.\n * annotation.creationDate = new Date();\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._creationDate = value;\n this._dictionary.update('CreationDate', this._dateToString(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"modifiedDate\", {\n /**\n * Gets the modification date of the annotation.\n *\n * @returns {Date} Modified date.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * //Get the modified date of the annotation.\n * let modifiedDate: Date = annotation.modifiedDate;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if ((typeof this._modifiedDate === 'undefined' || this._modifiedDate === null)) {\n var value = void 0; // eslint-disable-line\n if (this._dictionary.has('ModDate')) {\n value = this._dictionary.get('ModDate');\n }\n else if (this._dictionary.has('M')) {\n value = this._dictionary.get('M');\n }\n if (value !== null && typeof value === 'string') {\n this._modifiedDate = this._stringToDate(value);\n }\n }\n return this._modifiedDate;\n },\n /**\n * Sets the modification date of the annotation.\n *\n * @param {Date} value Modified date.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * //Set the modified date of the annotation.\n * annotation.modifiedDate = new Date();\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._modifiedDate = value;\n this._dictionary.update('M', this._dateToString(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"bounds\", {\n /**\n * Gets the bounds of the annotation.\n *\n * @returns {{x: number, y: number, width: number, height: number}} Bounds.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the bounds of the annotation.\n * let bounds: {x: number, y: number, width: number, height: number} = annotation.bounds;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._isLoaded) {\n this._bounds = _calculateBounds(this._dictionary, this._page);\n }\n return this._bounds;\n },\n /**\n * Sets the bounds of the annotation.\n *\n * @param {{x: number, y: number, width: number, height: number}} value bounds.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the bounds of the annotation.\n * annotation.bounds = {x: 10, y: 10, width: 150, height: 5};\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value) {\n this._isBounds = true;\n if (this._isLoaded) {\n if ((value.x !== this.bounds.x) || (value.y !== this.bounds.y) ||\n (value.width !== this.bounds.width) || (value.height !== this.bounds.height)) {\n var size = this._page.size;\n if (size) {\n var y = size[1] - (value.y + value.height);\n var height = y + value.height;\n this._dictionary.update('Rect', [value.x, y, value.x + value.width, height]);\n this._bounds = value;\n }\n }\n }\n else {\n this._bounds = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"caption\", {\n /**\n * Gets the caption of the annotation.\n *\n * @returns {PdfAnnotationCaption} Annotation caption.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the caption of the annotation.\n * let caption: PdfAnnotationCaption = annotation.caption;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._caption === 'undefined') {\n var value = new PdfAnnotationCaption();\n value._dictionary = this._dictionary;\n if (this._dictionary.has('Cap')) {\n value._cap = this._dictionary.get('Cap');\n }\n if (this._dictionary.has('CP')) {\n var capType = this._dictionary.get('CP');\n if (capType) {\n value._type = capType.name === 'Top' ? PdfLineCaptionType.top : PdfLineCaptionType.inline;\n }\n }\n if (this._dictionary.has('CO')) {\n value._offset = this._dictionary.getArray('CO');\n }\n this._caption = value;\n }\n return this._caption;\n },\n /**\n * Sets the caption of the annotation.\n *\n * @param {PdfAnnotationCaption} value Annottion caption.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Create and set annotation caption values\n * annotation.caption = new PdfAnnotationCaption(true, PdfLineCaptionType.inline, [10, 10]);\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n var current = this.caption;\n if (value) {\n if (!this._isLoaded || value.cap !== current.cap) {\n this._caption.cap = value.cap;\n }\n if (!this._isLoaded || value.type !== current.type) {\n this._caption.type = value.type;\n }\n if (!this._isLoaded || value.offset !== current.offset) {\n this._caption.offset = value.offset;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"opacity\", {\n /**\n * Gets the opacity of the annotation.\n *\n * @returns {number} Opacity in between 0 t0 1.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * //Get the opacity of the annotation.\n * let opacity: number = annotation.opacity;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('CA')) {\n var opacity = this._dictionary.get('CA');\n if (typeof opacity !== 'undefined') {\n this._opacity = opacity;\n }\n }\n return this._opacity;\n },\n /**\n * Sets the opacity of the annotation.\n *\n * @param {number} value opacity in between 0 t0 1.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the opacity of the annotation.\n * annotation.opacity = 0.5;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined' && !Number.isNaN(value)) {\n if (value >= 0 && value <= 1) {\n this._dictionary.update('CA', value);\n this._opacity = value;\n }\n else if (value < 0) {\n this._dictionary.update('CA', 0);\n }\n else {\n this._dictionary.update('CA', 1);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"subject\", {\n /**\n * Gets the subject of the annotation.\n *\n * @returns {string} Subject.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * //Get the subject of the annotation.\n * let subject: string = annotation.subject;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._subject === 'undefined') {\n this._subject = this._dictionary.get('Subject', 'Subj');\n }\n return this._subject;\n },\n /**\n * Sets the subject of the annotation.\n *\n * @param {string} value Subject.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the subject of the annotation.\n * annotation.subject = 'Line Annotation';\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value === 'string') {\n var hasKey = false;\n if (this._dictionary.has('Subj')) {\n this._dictionary.update('Subj', value);\n this._subject = value;\n hasKey = true;\n }\n if (!hasKey || this._dictionary.has('Subject')) {\n this._dictionary.update('Subject', value);\n this._subject = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"name\", {\n /**\n * Gets the name of the annotation.\n *\n * @returns {string} Name.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * //Get the name of the annotation.\n * let name: string = annotation.name;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._name === 'undefined' && this._dictionary.has('NM')) {\n this._name = this._dictionary.get('NM');\n }\n return this._name;\n },\n /**\n * Sets the name of the annotation.\n *\n * @param {string} value Name.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the name of the annotation.\n * annotation.name = 'LineAnnotation';\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value === 'string') {\n this._dictionary.update('NM', value);\n this._name = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"text\", {\n /**\n * Gets the text of the annotation.\n *\n * @returns {string} Text.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * //Get the text of the annotation.\n * let text: string = annotation.text;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._text === 'undefined' && this._dictionary.has('Contents')) {\n this._text = this._dictionary.get('Contents');\n }\n return this._text;\n },\n /**\n * Sets the text of the annotation.\n *\n * @param {string} value Text.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the text of the annotation.\n * annotation.text = ‘LineAnnotation’;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value === 'string') {\n this._text = this._dictionary.get('Contents');\n if (value !== this._text) {\n this._dictionary.update('Contents', value);\n this._text = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"rotationAngle\", {\n /**\n * Gets the rotation of the annotation.\n *\n * @returns {PdfRotationAngle} Rotation angle.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * //Get the rotation angle of the annotation.\n * let rotationAngle: PdfRotationAngle = annotation.rotationAngle;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._rotate === 'undefined' && this._dictionary.has('Rotate')) {\n this._rotate = (this._dictionary.get('Rotate') / 90);\n }\n if (this._rotate === null || typeof this._rotate === 'undefined') {\n this._rotate = PdfRotationAngle.angle0;\n }\n return this._rotate;\n },\n /**\n * Sets the rotation of the annotation.\n *\n * @param {PdfRotationAngle} value rotation angle.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the rotation angle of the annotation.\n * annotation.rotationAngle = PdfRotationAngle.angle180;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n var prevRotate = this.rotationAngle;\n if (typeof value !== 'undefined' && typeof prevRotate !== 'undefined') {\n value = ((value + prevRotate) % 4);\n }\n this._dictionary.update('Rotate', value * 90);\n this._rotate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"rotate\", {\n /**\n * Gets the rotation angle of the annotation (Read only).\n *\n * @returns {number} Rotation angle.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * //Get the rotation angle of the annotation.\n * let rotate: number = annotation.rotate;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var angle = this._getRotationAngle();\n if (angle < 0) {\n angle = 360 + angle;\n }\n if (angle >= 360) {\n angle = 360 - angle;\n }\n return angle;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"flattenPopups\", {\n /**\n * Gets the boolean flag indicating whether annotation's popup have been flattened or not.\n *\n * @returns {boolean} Flatten Popup.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the boolean flag indicating whether annotation's popup have been flattened or not.\n * let flattenPopups: boolean = annotation.flattenPopups;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._isFlattenPopups;\n },\n /**\n * Sets the boolean flag indicating whether the annotation’s popup have been flattened or not.\n *\n * @param {boolean} value Flatten Popup.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the boolean flag indicating whether the annotation’s popup have been flattened or not.\n * annotation.flattenPopups = false;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined') {\n this._isFlattenPopups = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"flatten\", {\n /**\n * Gets the boolean flag indicating whether the annotation have been flattened or not.\n *\n * @returns {boolean} Flatten.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the boolean flag indicating whether the annotation have been flattened or not.\n * let flatten: boolean = annotation.flatten;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._flatten;\n },\n /**\n * Sets the boolean flag indicating whether the annotation have been flattened or not.\n *\n * @param {boolean} value Flatten.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the boolean flag indicating whether the annotation have been flattened or not.\n * annotation.flatten = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._flatten = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"_hasFlags\", {\n get: function () {\n return this._dictionary.has('F');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"_degreeToRadian\", {\n get: function () {\n if (typeof this._ratio === 'undefined') {\n this._ratio = Math.PI / 180;\n }\n return this._ratio;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Set the boolean flag to create a new appearance stream for annotations.\n *\n * @param {boolean} value Set appearance.\n * @returns {void} Nothing.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Set the boolean flag to create a new appearance stream for annotations.\n * document.getPage(0).annotations.at(0).setAppearance(true);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfAnnotation.prototype.setAppearance = function (value) {\n this._setAppearance = value;\n if (value) {\n this._dictionary._updated = true;\n }\n };\n /**\n * Gets the values associated with the specified key.\n *\n * @param {string} name Key.\n * @returns {string[]} Values associated with the key.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the values associated with the key 'Author'.\n * let values: string[] = document.getPage(0).annotations.at(0).getValues('Author');\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfAnnotation.prototype.getValues = function (name) {\n var values = [];\n if (this._dictionary.has(name)) {\n var value = this._dictionary.get(name); // eslint-disable-line\n if (Array.isArray(value)) {\n value = this._dictionary.getArray(name);\n for (var i = 0; i < value.length; i++) {\n var element = value[Number.parseInt(i.toString(), 10)]; // eslint-disable-line\n if (element instanceof _PdfName) {\n values.push(element.name);\n }\n else if (typeof element === 'string') {\n values.push(element);\n }\n else if (typeof element === 'number') {\n values.push(element.toString());\n }\n }\n }\n else if (value instanceof _PdfName) {\n values.push(value.name);\n }\n else if (typeof value === 'string') {\n values.push(value);\n }\n else {\n throw new Error('PdfException: ' + name + ' is not found');\n }\n }\n else {\n throw new Error('PdfException: ' + name + ' is not found');\n }\n return values;\n };\n /**\n * Sets the values associated with the specified key.\n *\n * @param {string} name Key.\n * @param {string} value Value associated with the key..\n * @returns {void} Nothing.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the annotation at index 0\n * let annotation: PdfAnnotation = document.getPage(0).annotations.at(0);\n * // Set Unknown state and model\n * annotation.setValues('State', 'StateModel');\n * annotation.setValues('StateModel', 'CustomState');\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfAnnotation.prototype.setValues = function (name, value) {\n if (name && name !== '' && value && value !== '') {\n this._dictionary.update(name, value);\n }\n };\n //Implementation\n PdfAnnotation.prototype._initialize = function (page, dictionary) {\n this._page = page;\n this._crossReference = page._crossReference;\n if (dictionary) {\n this._dictionary = dictionary;\n }\n if (!this._isLoaded) {\n this._dictionary.set('P', this._page._ref);\n this._dictionary.assignXref(this._crossReference);\n }\n };\n PdfAnnotation.prototype._getRotationAngle = function () {\n var angle = 0;\n if (this._dictionary.has('Rotate')) {\n angle = this._dictionary.get('Rotate');\n }\n else if (this._dictionary.has('Rotation')) {\n angle = this._dictionary.get('Rotation');\n }\n return angle;\n };\n PdfAnnotation.prototype._getBoundsValue = function (linePoints) {\n var count = linePoints.length;\n var x = [];\n var y = [];\n if (linePoints && count > 0) {\n var points = [];\n for (var i = 0; i < linePoints.length; i++) {\n var value = linePoints[Number.parseInt(i.toString(), 10)];\n points.push(value);\n }\n var x1 = 0;\n var y1 = 0;\n for (var i = 0; i < points.length; i++) {\n if (i % 2 === 0) {\n x[Number.parseInt(x1.toString(), 10)] = points[Number.parseInt(i.toString(), 10)];\n x1++;\n }\n else {\n y[Number.parseInt(y1.toString(), 10)] = points[Number.parseInt(i.toString(), 10)];\n y1++;\n }\n }\n }\n x.sort(function (a, b) { return a > b ? 1 : -1; });\n y.sort(function (a, b) { return a > b ? 1 : -1; });\n return { x: x[0], y: y[0], width: x[x.length - 1] - x[0], height: y[y.length - 1] - y[0] };\n };\n PdfAnnotation.prototype._validateTemplateMatrix = function (dictionary, template) {\n var isRotatedMatrix = false;\n var isValidMatrix = true;\n if (template === null || typeof template === 'undefined') {\n if (dictionary && dictionary.has('Matrix')) {\n var matrix = dictionary.getArray('Matrix');\n if (matrix && matrix.length > 3) {\n if (typeof matrix[0] !== 'undefined' &&\n typeof matrix[1] !== 'undefined' &&\n typeof matrix[2] !== 'undefined' &&\n typeof matrix[3] !== 'undefined') {\n if (matrix[0] === 1 && matrix[1] === 0 && matrix[2] === 0 && matrix[3] === 1) {\n isRotatedMatrix = true;\n var locationX = 0;\n var locationY = 0;\n var templateX = 0;\n var templateY = 0;\n if (matrix.length > 4) {\n templateX = -matrix[4];\n if (matrix.length > 5) {\n templateY = -matrix[5];\n }\n }\n var annotationBounds = void 0;\n if (this._dictionary.has('Rect')) {\n annotationBounds = this._dictionary.getArray('Rect');\n if (annotationBounds && annotationBounds.length > 1) {\n locationX = annotationBounds[0];\n locationY = annotationBounds[1];\n }\n }\n if (!(locationX === templateX && locationY === templateY) && templateX === 0 && templateY === 0) {\n this._locationDisplaced = true;\n }\n }\n }\n }\n }\n else {\n isRotatedMatrix = true;\n }\n return isRotatedMatrix;\n }\n else {\n var point = this.bounds;\n if (dictionary && dictionary.has('Matrix')) {\n var box = dictionary.getArray('BBox');\n var matrix = dictionary.getArray('Matrix');\n if (matrix && box && matrix.length > 3 && box.length > 2) {\n if (typeof matrix[0] !== 'undefined' &&\n typeof matrix[1] !== 'undefined' &&\n typeof matrix[2] !== 'undefined' &&\n typeof matrix[3] !== 'undefined') {\n if (matrix[0] === 1 && matrix[1] === 0 && matrix[2] === 0 && matrix[3] === 1) {\n if (typeof box[0] !== 'undefined' &&\n typeof box[1] !== 'undefined' &&\n typeof box[2] !== 'undefined' &&\n typeof box[3] !== 'undefined') {\n if (box[0] !== -(matrix[4]) && box[1] !== -(matrix[5]) || (box[0] === 0 && -matrix[4] === 0)) {\n var graphics = this._page.graphics;\n var state = graphics.save();\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n graphics.setTransparency(this._opacity);\n }\n point.x -= box[0];\n point.y += box[1];\n graphics._drawTemplate(template, point);\n graphics.restore(state);\n this._removeAnnotationFromPage(this._page, this);\n isValidMatrix = false;\n }\n }\n }\n }\n }\n }\n return isValidMatrix;\n }\n };\n PdfAnnotation.prototype._flattenAnnotationTemplate = function (template, isNormalMatrix) {\n var graphics = this._page.graphics;\n var currentBounds = this.bounds;\n if (this._type === _PdfAnnotationType.lineAnnotation && !this._dictionary.has('AP')) {\n currentBounds = _toRectangle([this.bounds.x, this.bounds.y,\n this.bounds.width, this.bounds.height]);\n if (this._page) {\n var size = this._page.size;\n var mBox = this._page.mediaBox;\n var cropBox = this._page.cropBox;\n if (cropBox && Array.isArray(cropBox) && cropBox.length === 4 && this._page._pageDictionary.has('CropBox')) {\n if ((cropBox[0] !== 0 || cropBox[1] !== 0 || size[0] === cropBox[2] ||\n size[1] === cropBox[3]) && (currentBounds.x !== cropBox[0])) {\n currentBounds.x -= cropBox[0];\n currentBounds.y = cropBox[3] - (currentBounds.y + currentBounds.height);\n }\n else {\n currentBounds.y = size[1] - (currentBounds.y + currentBounds.height);\n }\n }\n else if (mBox && Array.isArray(mBox) && mBox.length === 4 && this._page._pageDictionary.has('MediaBox')) {\n if (mBox[0] > 0 || mBox[1] > 0 || size[0] === mBox[2] || size[1] === mBox[3]) {\n currentBounds.x -= mBox[0];\n currentBounds.y = mBox[3] - (currentBounds.y + currentBounds.height);\n }\n else {\n currentBounds.y = size[1] - (currentBounds.y + currentBounds.height);\n }\n }\n else {\n currentBounds.y = size[1] - (currentBounds.y + currentBounds.height);\n }\n }\n else {\n currentBounds.y = currentBounds.y + currentBounds.height;\n }\n }\n if (typeof currentBounds !== 'undefined' && currentBounds !== null) {\n var state = graphics.save();\n this._page._needInitializeGraphics = true;\n if (this._type === _PdfAnnotationType.rubberStampAnnotation) {\n var needScale = true;\n if (this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n if (this.rotate === PdfRotationAngle.angle270 && this._page.rotation === PdfRotationAngle.angle270\n && appearanceStream.dictionary.has('Matrix')) {\n var matrix = appearanceStream.dictionary.getArray('Matrix');\n if (matrix && matrix.length === 6 && matrix[4] === 0 && matrix[5] !== 0) {\n needScale = false;\n }\n }\n }\n if (!isNormalMatrix && this.rotate !== PdfRotationAngle.angle180 && needScale) {\n template._isAnnotationTemplate = true;\n template._needScale = true;\n }\n }\n }\n if (!isNormalMatrix && this._type !== _PdfAnnotationType.rubberStampAnnotation) {\n template._isAnnotationTemplate = true;\n template._needScale = true;\n }\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n graphics.setTransparency(this._opacity);\n }\n var bounds = this._calculateTemplateBounds(currentBounds, this._page, template, isNormalMatrix, graphics);\n if (this._type === _PdfAnnotationType.rubberStampAnnotation) {\n var size = void 0;\n var location_1;\n if (this.rotate === PdfRotationAngle.angle0) {\n size = [bounds.width, bounds.height];\n location_1 = [bounds.x, bounds.y];\n }\n else {\n size = template._size;\n location_1 = [bounds.x, bounds.y];\n }\n var isRotatedMatrix = false;\n if (this.rotate !== PdfRotationAngle.angle0 && template._content) {\n if (template._content.dictionary.has('Matrix')) {\n var matrix = template._content.dictionary.getArray('Matrix');\n if (matrix && matrix.length === 6 && matrix[4] === 0 && matrix[5] !== 0) {\n isRotatedMatrix = true;\n }\n }\n }\n var scaleX = (template._size[0] > 0) ? bounds.width / template._size[0] : 1;\n var scaleY = (template._size[1] > 0) ? bounds.height / template._size[1] : 1;\n var needScale = !(scaleX === 1 && scaleY === 1);\n if (this.rotate !== PdfRotationAngle.angle0 && isRotatedMatrix) {\n if (this.rotate === PdfRotationAngle.angle90) {\n if (this._page.rotation === PdfRotationAngle.angle270) {\n if (needScale && !(bounds.x === 0 && bounds.y === 0)) {\n location_1[0] += (size[0] - size[1]);\n location_1[1] += size[0];\n }\n else {\n location_1[0] += size[1];\n location_1[1] += (size[0] - size[1]) + (size[0] - size[1]);\n }\n }\n else if (!needScale) {\n location_1[0] += size[1];\n }\n }\n else if (this.rotate === PdfRotationAngle.angle270) {\n if (this._page.rotation === PdfRotationAngle.angle270) {\n if (needScale && template._isAnnotationTemplate) {\n location_1[1] = bounds.y - bounds.width;\n }\n else if (needScale) {\n location_1[1] += (size[0] - size[1]);\n }\n }\n else {\n if (!needScale && !(bounds.x === 0 && bounds.y === 0)) {\n location_1[1] += -(size[0]);\n }\n else {\n location_1[1] += -(size[0] - size[1]);\n }\n }\n }\n else if (this.rotate === PdfRotationAngle.angle180) {\n location_1[0] += size[0];\n location_1[1] += -(size[1]);\n }\n }\n }\n graphics._drawTemplate(template, bounds);\n graphics.restore(state);\n }\n this._removeAnnotationFromPage(this._page, this);\n };\n PdfAnnotation.prototype._calculateTemplateBounds = function (bounds, page, template, isNormalMatrix, graphics) {\n var annotationBounds = bounds;\n var x = bounds.x;\n var y = bounds.y;\n var width = bounds.width;\n var height = bounds.height;\n if (!isNormalMatrix) {\n var rect = this._dictionary.getArray('Rect');\n if (rect) {\n annotationBounds = _toRectangle(rect);\n }\n }\n if (typeof page !== 'undefined') {\n var graphicsRotation = this._obtainGraphicsRotation(graphics._matrix);\n if (graphicsRotation === 90) {\n graphics.translateTransform(template._size[1], 0);\n graphics.rotateTransform(90);\n if (isNormalMatrix || (typeof this._rotate !== 'undefined' && this._rotate === PdfRotationAngle.angle180)) {\n x = bounds.x;\n if (!this._locationDisplaced) {\n y = -(page.size[1] - bounds.y - bounds.height);\n }\n else if (page._origin && page._o[1] !== 0) {\n y = bounds.y + bounds.height;\n }\n else {\n y = -(page.size[1] - (bounds.height + bounds.y) + (bounds.height - template._size[1]));\n }\n }\n else {\n x = bounds.x;\n y = -(page.size[1] - (bounds.height + bounds.y) + (bounds.width - template._size[1]));\n width = bounds.height;\n height = bounds.width;\n }\n }\n else if (graphicsRotation === 180) {\n graphics.translateTransform(template._size[0], template._size[1]);\n graphics.rotateTransform(180);\n if (isNormalMatrix) {\n x = -(page.size[0] - (bounds.x + bounds.width));\n y = -(page.size[1] - bounds.y - bounds.height);\n }\n else {\n x = -(page.size[0] - (bounds.x + template._size[0]));\n y = -(page.size[1] - bounds.y - template._size[1]);\n if (typeof this.rotationAngle !== 'undefined' &&\n (this._rotate === PdfRotationAngle.angle90 ||\n this._rotate === PdfRotationAngle.angle270)) {\n y = (-(page.size[1] - bounds.y - template._size[1]) - (bounds.width - bounds.height));\n width = bounds.height;\n height = bounds.width;\n }\n }\n }\n else if (graphicsRotation === 270) {\n graphics.translateTransform(0, template._size[0]);\n graphics.rotateTransform(270);\n if (isNormalMatrix || (typeof this.rotationAngle !== 'undefined' && this._rotate === PdfRotationAngle.angle180)) {\n x = -(page.size[0] - bounds.x - bounds.width);\n y = bounds.y;\n }\n else {\n x = -(page.size[0] - annotationBounds.x - template._size[0]);\n var matrix = template._content.dictionary.getArray('Matrix');\n var box = template._content.dictionary.getArray('BBox');\n if (matrix && box && matrix[5] !== box[2]) {\n y = bounds.y - (bounds.height - bounds.width);\n }\n else {\n y = (bounds.y + bounds.height) - bounds.width;\n }\n width = bounds.height;\n height = bounds.width;\n }\n }\n else if (graphicsRotation === 0) {\n if (!isNormalMatrix &&\n (typeof this.rotationAngle !== 'undefined' &&\n (this.rotationAngle === PdfRotationAngle.angle90 ||\n this.rotationAngle === PdfRotationAngle.angle270))) {\n x = bounds.x;\n y = (bounds.y + bounds.height - bounds.width);\n width = bounds.height;\n height = bounds.width;\n }\n }\n }\n return { x: x, y: y, width: width, height: height };\n };\n PdfAnnotation.prototype._obtainGraphicsRotation = function (matrix) {\n var radians = Math.atan2(matrix._matrix._elements[2], matrix._matrix._elements[0]);\n var angle = Math.round(radians * 180 / Math.PI);\n switch (angle) {\n case -90:\n angle = 90;\n break;\n case -180:\n angle = 180;\n break;\n case 90:\n angle = 270;\n break;\n }\n return angle;\n };\n PdfAnnotation.prototype._removeAnnotationFromPage = function (page, annotation) {\n var annotations = [];\n if (page._pageDictionary && page._pageDictionary.has('Annots')) {\n annotations = page._pageDictionary.get('Annots');\n }\n annotation._dictionary.set('P', page._ref);\n var index = annotations.indexOf(annotation._ref);\n if (index !== -1) {\n annotations.splice(index, 1);\n if (this._crossReference._cacheMap.has(annotation._ref)) {\n this._crossReference._cacheMap.delete(annotation._ref);\n }\n }\n page._pageDictionary.set('Annots', annotations);\n };\n PdfAnnotation.prototype._removeAnnotation = function (page, annotation) {\n if (page && annotation) {\n this._removeAnnotationFromPage(page, annotation);\n page._pageDictionary._updated = true;\n }\n };\n PdfAnnotation.prototype._drawCloudStyle = function (graphics, brush, pen, radius, overlap, points, isAppearance) {\n if (this._isClockWise(points)) {\n var sortedPoints = [];\n for (var i = points.length - 1; i >= 0; i--) {\n sortedPoints.push(points[Number.parseInt(i.toString(), 10)]);\n }\n points = sortedPoints;\n }\n var circles = [];\n var circleOverlap = 2 * radius * overlap;\n var previousPoint = points[points.length - 1];\n for (var i = 0; i < points.length; i++) {\n var currentPoint = points[Number.parseInt(i.toString(), 10)];\n var dx = currentPoint[0] - previousPoint[0];\n var dy = currentPoint[1] - previousPoint[1];\n var length_1 = Math.sqrt(dx * dx + dy * dy);\n dx = dx / length_1;\n dy = dy / length_1;\n for (var a = 0; a + 0.1 * circleOverlap < length_1; a += circleOverlap) {\n var cur = new _CloudStyleArc();\n cur.point = [previousPoint[0] + a * dx, previousPoint[1] + a * dy];\n circles.push(cur);\n }\n previousPoint = currentPoint;\n }\n var previousCurvedStyleArc = circles[circles.length - 1];\n for (var i = 0; i < circles.length; i++) {\n var currentCurvedStyleArc = circles[Number.parseInt(i.toString(), 10)];\n var angle = this._getIntersectionDegrees(previousCurvedStyleArc.point, currentCurvedStyleArc.point, radius);\n previousCurvedStyleArc.endAngle = angle[0];\n currentCurvedStyleArc.startAngle = angle[1];\n previousCurvedStyleArc = currentCurvedStyleArc;\n }\n var path = new _PdfPath();\n for (var i = 0; i < circles.length; i++) {\n var current = circles[Number.parseInt(i.toString(), 10)];\n var startAngle = current.startAngle % 360;\n var endAngle = current.endAngle % 360;\n var sweepAngel = 0;\n if (startAngle > 0 && endAngle < 0) {\n sweepAngel = (180 - startAngle) + (180 - (endAngle < 0 ? -endAngle : endAngle));\n }\n else if (startAngle < 0 && endAngle > 0) {\n sweepAngel = -startAngle + endAngle;\n }\n else if (startAngle > 0 && endAngle > 0) {\n var difference = 0;\n if (startAngle > endAngle) {\n difference = startAngle - endAngle;\n sweepAngel = 360 - difference;\n }\n else {\n sweepAngel = endAngle - startAngle;\n }\n }\n else if (startAngle < 0 && endAngle < 0) {\n var difference = 0;\n if (startAngle > endAngle) {\n difference = startAngle - endAngle;\n sweepAngel = 360 - difference;\n }\n else {\n sweepAngel = -(startAngle + (-endAngle));\n }\n }\n if (sweepAngel < 0) {\n sweepAngel = -sweepAngel;\n }\n current.endAngle = sweepAngel;\n path._addArc(current.point[0] - radius, current.point[1] - radius, 2 * radius, 2 * radius, startAngle, sweepAngel);\n }\n path._closeFigure();\n var tempPoints = [];\n if (isAppearance) {\n for (var i = 0; i < path._points.length; i++) {\n tempPoints.push([path._points[Number.parseInt(i.toString(), 10)][0], -path._points[Number.parseInt(i.toString(), 10)][1]]);\n }\n }\n var pdfpath;\n if (isAppearance) {\n pdfpath = new _PdfPath();\n pdfpath._points = tempPoints;\n pdfpath._pathTypes = path._pathTypes;\n }\n else {\n pdfpath = new _PdfPath();\n pdfpath._points = path._points;\n pdfpath._pathTypes = path._pathTypes;\n }\n if (brush !== null) {\n graphics._drawPath(pdfpath, null, brush);\n }\n var incise = 180 / (Math.PI * 3);\n path = new _PdfPath();\n for (var i = 0; i < circles.length; i++) {\n var current = circles[Number.parseInt(i.toString(), 10)];\n path._addArc(current.point[0] - radius, current.point[1] - radius, 2 * radius, 2 * radius, current.startAngle, current.endAngle + incise);\n }\n path._closeFigure();\n tempPoints = [];\n if (isAppearance) {\n for (var i = 0; i < path._points.length; i++) {\n tempPoints.push([path._points[Number.parseInt(i.toString(), 10)][0], -path._points[Number.parseInt(i.toString(), 10)][1]]);\n }\n }\n if (isAppearance) {\n pdfpath = new _PdfPath();\n pdfpath._points = tempPoints;\n pdfpath._pathTypes = path._pathTypes;\n }\n else {\n pdfpath = new _PdfPath();\n pdfpath._points = path._points;\n pdfpath._pathTypes = path._pathTypes;\n }\n graphics._drawPath(pdfpath, pen, null);\n };\n PdfAnnotation.prototype._isClockWise = function (points) {\n var sum = 0;\n for (var i = 0; i < points.length; i++) {\n var first = points[Number.parseInt(i.toString(), 10)];\n var second = points[(i + 1) % points.length];\n sum += (second[0] - first[0]) * (second[1] + first[1]);\n }\n return sum > 0;\n };\n PdfAnnotation.prototype._getIntersectionDegrees = function (first, second, radius) {\n var dx = second[0] - first[0];\n var dy = second[1] - first[1];\n var length = Math.sqrt(dx * dx + dy * dy);\n var a = 0.5 * length / radius;\n if (a < -1) {\n a = -1;\n }\n else if (a > 1) {\n a = 1;\n }\n var radian = Math.atan2(dy, dx);\n var cosvalue = Math.acos(a);\n return [(radian - cosvalue) * (180 / Math.PI), (Math.PI + radian + cosvalue) * (180 / Math.PI)];\n };\n PdfAnnotation.prototype._obtainStyle = function (borderPen, rectangle, borderWidth, parameter) {\n var dash = this.border.dash;\n if (dash && dash.length > 0) {\n var dashPattern = [];\n var isDash = false;\n for (var i = 0; i < dash.length; i++) {\n dashPattern[Number.parseInt(i.toString(), 10)] = dash[Number.parseInt(i.toString(), 10)];\n if (dashPattern[Number.parseInt(i.toString(), 10)] > 0) {\n isDash = true;\n }\n }\n if (isDash && this.border.style === PdfBorderStyle.dashed) {\n borderPen._dashStyle = PdfDashStyle.dash;\n borderPen._dashPattern = dashPattern;\n }\n }\n if (parameter) {\n if (parameter instanceof _PaintParameter) {\n if (!this._isBounds && this._dictionary.has('RD')) {\n var array = this._dictionary.getArray('RD');\n if (array) {\n rectangle[0] = rectangle[0] + array[0];\n rectangle[1] = rectangle[1] + borderWidth + array[1];\n rectangle[2] = rectangle[2] - (array[0] + array[2]);\n rectangle[3] = rectangle[3] - (array[1] + array[3]);\n }\n }\n else {\n rectangle[0] = rectangle[0] + borderWidth;\n rectangle[1] = rectangle[1] + borderWidth;\n rectangle[2] = rectangle[2] - this.border.width;\n rectangle[3] = rectangle[3] - this.border.width;\n }\n parameter.bounds = rectangle;\n }\n else {\n if (parameter.intensity !== 0 && parameter.style === PdfBorderEffectStyle.cloudy) {\n var radius = parameter.intensity * 5;\n rectangle[0] = rectangle[0] + radius + borderWidth;\n rectangle[1] = rectangle[1] + radius + borderWidth;\n rectangle[2] = rectangle[2] - (2 * radius) - 2 * borderWidth;\n rectangle[3] = rectangle[3] - (2 * radius) - 2 * borderWidth;\n }\n else {\n rectangle[0] = rectangle[0] + borderWidth;\n rectangle[1] = rectangle[1] + borderWidth;\n rectangle[2] = rectangle[2] - this.border.width;\n rectangle[3] = this.bounds.height - this.border.width;\n }\n }\n }\n else {\n if (!this._isBounds && this._dictionary.has('RD')) {\n var array = this._dictionary.getArray('RD');\n if (array) {\n rectangle[0] = rectangle[0] + array[0];\n rectangle[1] = rectangle[1] + borderWidth + array[1];\n rectangle[2] = rectangle[2] - (2 * array[2]);\n rectangle[3] = rectangle[3] - this.border.width;\n rectangle[3] = rectangle[3] - (2 * array[3]);\n }\n }\n else {\n rectangle[1] = rectangle[1] + borderWidth;\n rectangle[3] = this.bounds.height - this.border.width;\n }\n }\n return rectangle;\n };\n PdfAnnotation.prototype._createRectangleAppearance = function (borderEffect) {\n var width = this.border.width;\n var rdArray = this._dictionary.getArray('RD');\n if (!rdArray && borderEffect.intensity !== 0 && borderEffect.style === PdfBorderEffectStyle.cloudy) {\n var cloudRectangle = { x: this.bounds.x - borderEffect.intensity * 5 - width / 2,\n y: this.bounds.y - borderEffect.intensity * 5 - width / 2,\n width: this.bounds.width + borderEffect.intensity * 10 + width,\n height: this.bounds.height + borderEffect.intensity * 10 + width };\n var radius = borderEffect.intensity * 5;\n rdArray = [radius + width / 2, radius + width / 2, radius + width / 2, radius + width / 2];\n this._dictionary.set('RD', rdArray);\n this.bounds = cloudRectangle;\n }\n if (!this._isBounds && rdArray) {\n var cloudRectangle = { x: this.bounds.x + rdArray[0],\n y: this.bounds.y + rdArray[1],\n width: this.bounds.width - rdArray[2] * 2,\n height: this.bounds.height - rdArray[3] * 2 };\n if (borderEffect.intensity !== 0 && borderEffect.style === PdfBorderEffectStyle.cloudy) {\n cloudRectangle.x = cloudRectangle.x - borderEffect.intensity * 5 - width / 2;\n cloudRectangle.y = cloudRectangle.y - borderEffect.intensity * 5 - width / 2;\n cloudRectangle.width = cloudRectangle.width + borderEffect.intensity * 10 + width;\n cloudRectangle.height = cloudRectangle.height + borderEffect.intensity * 10 + width;\n var radius = borderEffect.intensity * 5;\n this._dictionary.set('RD', [radius + width / 2, radius + width / 2, radius + width / 2, radius + width / 2]);\n }\n else {\n delete this._dictionary._map.RD;\n }\n this.bounds = cloudRectangle;\n }\n var borderWidth = width / 2;\n var nativeRectangle = [0, 0, this.bounds.width, this.bounds.height];\n var template = new PdfTemplate(nativeRectangle, this._crossReference);\n _setMatrix(template, this._getRotationAngle());\n if (borderEffect.intensity !== 0 && borderEffect.style === PdfBorderEffectStyle.cloudy) {\n template._writeTransformation = false;\n }\n var graphics = template.graphics;\n var parameter = new _PaintParameter();\n if (this.innerColor) {\n parameter.backBrush = new PdfBrush(this._innerColor);\n }\n if (width > 0 && this.color) {\n parameter.borderPen = new PdfPen(this._color, width);\n }\n if (this.color) {\n parameter.foreBrush = new PdfBrush(this._color);\n }\n var rectangle = this._obtainStyle(parameter.borderPen, nativeRectangle, borderWidth, borderEffect);\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n graphics.save();\n graphics.setTransparency(this._opacity);\n }\n if (borderEffect.intensity !== 0 && borderEffect.style === PdfBorderEffectStyle.cloudy) {\n this._drawRectangleAppearance(rectangle, graphics, parameter, borderEffect.intensity);\n }\n else {\n graphics.drawRectangle(rectangle[0], rectangle[1], rectangle[2], rectangle[3], parameter.borderPen, parameter.backBrush);\n }\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n graphics.restore();\n }\n return template;\n };\n PdfAnnotation.prototype._drawRectangleAppearance = function (rectangle, graphics, parameter, intensity) {\n var graphicsPath = new _PdfPath();\n graphicsPath._addRectangle(rectangle[0], rectangle[1], rectangle[2], rectangle[3]);\n var radius = intensity * 4.25;\n if (radius > 0) {\n var points = [];\n for (var i = 0; i < graphicsPath._points.length; i++) {\n var sublist = [graphicsPath._points[Number.parseInt(i.toString(), 10)][0],\n -graphicsPath._points[Number.parseInt(i.toString(), 10)][1]];\n points.push(sublist);\n }\n graphicsPath = new _PdfPath();\n graphicsPath._addPolygon(points);\n this._drawCloudStyle(graphics, parameter.backBrush, parameter.borderPen, radius, 0.833, graphicsPath._points, false);\n }\n else {\n graphics.drawRectangle(rectangle[0], rectangle[1], rectangle[2], rectangle[3], parameter.borderPen, parameter.backBrush);\n }\n };\n PdfAnnotation.prototype._createCircleAppearance = function () {\n var nativeBounds = [0, 0, this.bounds.width, this.bounds.height];\n var template = new PdfTemplate(nativeBounds, this._crossReference);\n _setMatrix(template, this._getRotationAngle());\n if (this._dictionary.has('BE')) {\n template._writeTransformation = false;\n }\n var graphics = template.graphics;\n var width = this.border.width;\n var borderPen = new PdfPen(this.color, width);\n var parameter = new _PaintParameter();\n if (this.innerColor) {\n parameter.backBrush = new PdfBrush(this._innerColor);\n }\n if (width > 0) {\n parameter.borderPen = borderPen;\n }\n if (this.color) {\n parameter.foreBrush = new PdfBrush(this._color);\n }\n parameter.borderWidth = width;\n var borderWidth = width / 2;\n var rectangle = this._obtainStyle(borderPen, nativeBounds, borderWidth);\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n graphics.save();\n graphics.setTransparency(this._opacity);\n }\n if (this._dictionary.has('BE')) {\n this._drawCircleAppearance(rectangle, borderWidth, graphics, parameter);\n }\n else {\n graphics.drawEllipse(rectangle[0] + borderWidth, rectangle[1], rectangle[2] - width, rectangle[3], parameter.borderPen, parameter.backBrush);\n }\n if (typeof this._opacity !== 'undefined' && this._opacity < 1) {\n graphics.restore();\n }\n return template;\n };\n PdfAnnotation.prototype._drawCircleAppearance = function (rectangle, borderWidth, graphics, parameter) {\n var radius = 0;\n if (this._dictionary.has('RD')) {\n var array = this._dictionary.getArray('RD');\n if (array && array.length > 0) {\n radius = array[0];\n }\n }\n if (radius > 0) {\n var rect = [rectangle[0] + borderWidth,\n -rectangle[1] - rectangle[3],\n rectangle[2] - this.border.width,\n rectangle[3]];\n var left = rect[0];\n var top_1 = rect[1];\n var right = rect[0] + rect[2];\n var bottom = rect[1] + rect[3];\n var controlPointList = [];\n controlPointList.push([right, bottom]);\n controlPointList.push([left, bottom]);\n controlPointList.push([left, top_1]);\n controlPointList.push([right, top_1]);\n var startPointList = [];\n startPointList.push([right, top_1 + (rect[3] / 2)]);\n startPointList.push([left + rect[2] / 2, bottom]);\n startPointList.push([left, top_1 + (rect[3] / 2)]);\n startPointList.push([left + (rect[2] / 2), top_1]);\n var endPointList = [];\n endPointList.push([left + rect[2] / 2, bottom]);\n endPointList.push([left, top_1 + (rect[3] / 2)]);\n endPointList.push([left + (rect[2] / 2), top_1]);\n endPointList.push([right, top_1 + (rect[3] / 2)]);\n var points = [];\n for (var i = 0; i < controlPointList.length; i++) {\n this._createBezier(startPointList[Number.parseInt(i.toString(), 10)], controlPointList[Number.parseInt(i.toString(), 10)], endPointList[Number.parseInt(i.toString(), 10)], points);\n }\n this._drawCloudStyle(graphics, parameter.backBrush, parameter.borderPen, radius, 0.833, points, false);\n }\n else {\n graphics.drawEllipse(rectangle[0] + borderWidth, -rectangle[1], rectangle[2] - this.border.width, -rectangle[3], parameter.borderPen, parameter.backBrush);\n }\n };\n PdfAnnotation.prototype._createBezier = function (first, second, third, bezierPoints) {\n bezierPoints.push(first);\n this._populateBezierPoints(first, second, third, 0, bezierPoints);\n bezierPoints.push(third);\n };\n PdfAnnotation.prototype._populateBezierPoints = function (first, second, third, currentIteration, bezierPoints) {\n if (currentIteration < 2) {\n var midPoint1 = this._midPoint(first, second);\n var midPoint2 = this._midPoint(second, third);\n var midPoint3 = this._midPoint(midPoint1, midPoint2);\n currentIteration++;\n this._populateBezierPoints(first, midPoint1, midPoint3, currentIteration, bezierPoints);\n bezierPoints.push(midPoint3);\n this._populateBezierPoints(midPoint3, midPoint2, third, currentIteration, bezierPoints);\n }\n };\n PdfAnnotation.prototype._midPoint = function (first, second) {\n return [(first[0] + second[0]) / 2, (first[1] + second[1]) / 2];\n };\n PdfAnnotation.prototype._getAngle = function (linePoints) {\n var x1 = linePoints[0];\n var y1 = linePoints[1];\n var x2 = linePoints[2];\n var y2 = linePoints[3];\n var angle = 0;\n if (x2 - x1 === 0) {\n angle = (y2 > y1) ? 90 : 270;\n }\n else {\n var angleRatio = (y2 - y1) / (x2 - x1);\n var radians = Math.atan(angleRatio);\n angle = radians * (180 / Math.PI);\n if ((x2 - x1) < 0 || (y2 - y1) < 0) {\n angle += 180;\n }\n if ((x2 - x1) > 0 && (y2 - y1) < 0) {\n angle -= 180;\n }\n if (angle < 0) {\n angle += 360;\n }\n }\n return angle;\n };\n PdfAnnotation.prototype._getAxisValue = function (value, angle, length) {\n return [value[0] + Math.cos(angle * this._degreeToRadian) * length,\n value[1] + Math.sin(angle * this._degreeToRadian) * length];\n };\n PdfAnnotation.prototype._drawLineEndStyle = function (axisPoint, graphics, angle, pen, brush, style, length, isBegin) {\n var arraowAngle;\n var count;\n var startPoint;\n var first;\n var second;\n var third;\n var fourth;\n var path;\n switch (style) {\n case PdfLineEndingStyle.square:\n graphics.drawRectangle(axisPoint[0] - (3 * length), -(axisPoint[1] + (3 * length)), (6 * length), (6 * length), pen, brush);\n break;\n case PdfLineEndingStyle.circle:\n graphics.drawEllipse(axisPoint[0] - (3 * length), -(axisPoint[1] + (3 * length)), (6 * length), (6 * length), pen, brush);\n break;\n case PdfLineEndingStyle.openArrow:\n arraowAngle = isBegin ? 30 : 150;\n count = 9 * length;\n startPoint = this._getAxisValue(axisPoint, angle, (isBegin ? length : (-length)));\n first = this._getAxisValue(startPoint, (angle + arraowAngle), count);\n second = this._getAxisValue(startPoint, (angle - arraowAngle), count);\n path = new _PdfPath();\n path._pen = pen;\n path._addLine(startPoint[0], -startPoint[1], first[0], -first[1]);\n path._addLine(startPoint[0], -startPoint[1], second[0], -second[1]);\n graphics._stateControl(pen, null, null);\n graphics._buildUpPath(path._points, path._pathTypes);\n graphics._drawGraphicsPath(pen, null, path._fillMode, false);\n break;\n case PdfLineEndingStyle.closedArrow:\n arraowAngle = isBegin ? 30 : 150;\n count = 9 * length;\n startPoint = this._getAxisValue(axisPoint, angle, (isBegin ? length : (-length)));\n first = this._getAxisValue(startPoint, (angle + arraowAngle), count);\n second = this._getAxisValue(startPoint, (angle - arraowAngle), count);\n graphics.drawPolygon([[startPoint[0], -startPoint[1]], [first[0], -first[1]], [second[0], -second[1]]], pen, brush);\n break;\n case PdfLineEndingStyle.rOpenArrow:\n arraowAngle = isBegin ? 150 : 30;\n count = 9 * length;\n startPoint = this._getAxisValue(axisPoint, angle, (isBegin ? (-length) : length));\n first = this._getAxisValue(startPoint, (angle + arraowAngle), count);\n second = this._getAxisValue(startPoint, (angle - arraowAngle), count);\n path = new _PdfPath();\n path._pen = pen;\n path._addLine(startPoint[0], -startPoint[1], first[0], -first[1]);\n path._addLine(startPoint[0], -startPoint[1], second[0], -second[1]);\n graphics._stateControl(pen, null, null);\n graphics._buildUpPath(path._points, path._pathTypes);\n graphics._drawGraphicsPath(pen, null, path._fillMode, false);\n break;\n case PdfLineEndingStyle.rClosedArrow:\n arraowAngle = isBegin ? 150 : 30;\n count = 9 * length;\n startPoint = this._getAxisValue(axisPoint, angle, (isBegin ? (-length) : length));\n first = this._getAxisValue(startPoint, (angle + arraowAngle), count);\n second = this._getAxisValue(startPoint, (angle - arraowAngle), count);\n graphics.drawPolygon([[startPoint[0], -startPoint[1]], [first[0], -first[1]], [second[0], -second[1]]], pen, brush);\n break;\n case PdfLineEndingStyle.slash:\n count = 9 * length;\n first = this._getAxisValue(startPoint, (angle + 60), count);\n second = this._getAxisValue(startPoint, (angle - 120), count);\n graphics.drawLine(pen, axisPoint[0], -axisPoint[1], first[0], -first[1]);\n graphics.drawLine(pen, axisPoint[0], -axisPoint[1], second[0], -second[1]);\n break;\n case PdfLineEndingStyle.diamond:\n count = 3 * length;\n first = this._getAxisValue(axisPoint, 180, count);\n second = this._getAxisValue(axisPoint, 90, count);\n third = this._getAxisValue(axisPoint, 0, count);\n fourth = this._getAxisValue(axisPoint, -90, count);\n graphics.drawPolygon([[first[0], -first[1]], [second[0], -second[1]], [third[0], -third[1]], [fourth[0], -fourth[1]]], pen, brush);\n break;\n case PdfLineEndingStyle.butt:\n count = 3 * length;\n first = this._getAxisValue(axisPoint, (angle + 90), count);\n second = this._getAxisValue(axisPoint, (angle - 90), count);\n graphics.drawLine(pen, first[0], -first[1], second[0], -second[1]);\n break;\n }\n };\n PdfAnnotation.prototype._drawLineStyle = function (start, end, graphics, angle, pen, brush, lineStyle, length) {\n if (length === 0) {\n length = 1;\n pen = null;\n }\n this._drawLineEndStyle(start, graphics, angle, pen, brush, lineStyle.begin, length, true);\n this._drawLineEndStyle(end, graphics, angle, pen, brush, lineStyle.end, length, false);\n };\n PdfAnnotation.prototype._obtainFontDetails = function () {\n var fontFamily = '';\n var fontSize;\n var style = PdfFontStyle.regular;\n if (this._dictionary.has('DS') || this._dictionary.has('DA')) {\n var fontStyle = void 0;\n if (this._dictionary.has('DS')) {\n var collection = this._dictionary.get('DS').split(';');\n for (var i = 0; i < collection.length; i++) {\n var entry = collection[Number.parseInt(i.toString(), 10)].split(':');\n if (collection[Number.parseInt(i.toString(), 10)].indexOf('font-family') !== -1) {\n fontFamily = entry[1];\n }\n else if (collection[Number.parseInt(i.toString(), 10)].indexOf('font-size') !== -1) {\n if (entry[1].endsWith('pt')) {\n fontSize = Number.parseFloat(entry[1].replace('pt', ''));\n }\n }\n else if (collection[Number.parseInt(i.toString(), 10)].indexOf('font-style') !== -1 || collection[Number.parseInt(i.toString(), 10)].indexOf('style') !== -1) {\n fontStyle = collection[Number.parseInt(i.toString(), 10)];\n }\n else if (collection[Number.parseInt(i.toString(), 10)].indexOf('font') !== -1) {\n var name_1 = entry[1];\n var split = name_1.split(' ');\n for (var j = 0; j < split.length; j++) {\n if (split[Number.parseInt(j.toString(), 10)] !== '' && !split[Number.parseInt(j.toString(), 10)].endsWith('pt')) {\n fontFamily += split[Number.parseInt(j.toString(), 10)] + ' ';\n }\n if (split[Number.parseInt(j.toString(), 10)].endsWith('pt')) {\n fontSize = Number.parseFloat(split[Number.parseInt(j.toString(), 10)].replace('pt', ''));\n }\n }\n while (fontFamily !== ' ' && fontFamily.endsWith(' ')) {\n fontFamily = fontFamily.substring(0, fontFamily.length - 1);\n }\n if (fontFamily.indexOf(',') !== -1) {\n fontFamily = fontFamily.split(',')[0];\n }\n }\n }\n }\n else {\n var value = this._dictionary.get('DA');\n if (value && value !== '' && value.indexOf('Tf') !== -1) {\n var textCollection = value.split(' ');\n for (var i = 0; i < textCollection.length; i++) {\n if (textCollection[Number.parseInt(i.toString(), 10)].indexOf('Tf') !== -1) {\n fontFamily = textCollection[i - 2];\n while (fontFamily !== '' && fontFamily.length > 1 && fontFamily[0] === '/') {\n fontFamily = fontFamily.substring(1);\n }\n fontSize = Number.parseFloat(textCollection[i - 1]);\n }\n }\n }\n }\n if (fontStyle && fontStyle !== '') {\n var styleArray = void 0;\n if (fontStyle.includes(':')) {\n styleArray = fontStyle.split(':');\n }\n else if (fontStyle.includes(',')) {\n styleArray = fontStyle.split(',');\n }\n if (styleArray) {\n styleArray.forEach(function (entry) {\n switch (entry.toLowerCase()) {\n case 'bold':\n style |= PdfFontStyle.bold;\n break;\n case 'italic':\n style |= PdfFontStyle.italic;\n break;\n case 'strikeout':\n style |= PdfFontStyle.strikeout;\n break;\n case 'underline':\n style |= PdfFontStyle.underline;\n break;\n }\n });\n }\n }\n if (fontFamily) {\n fontFamily = fontFamily.trim();\n }\n }\n return { name: fontFamily, size: fontSize, style: style };\n };\n PdfAnnotation.prototype._obtainFont = function () {\n var fontData = this._obtainFontDetails();\n return _mapFont(fontData.name, fontData.size, fontData.style, this);\n };\n PdfAnnotation.prototype._getEqualPdfGraphicsUnit = function (measurementUnit, unitString) {\n var graphicsUnit;\n switch (measurementUnit) {\n case PdfMeasurementUnit.inch:\n graphicsUnit = _PdfGraphicsUnit.inch;\n unitString = 'in';\n break;\n case PdfMeasurementUnit.centimeter:\n graphicsUnit = _PdfGraphicsUnit.centimeter;\n unitString = 'cm';\n break;\n case PdfMeasurementUnit.millimeter:\n graphicsUnit = _PdfGraphicsUnit.millimeter;\n unitString = 'mm';\n break;\n case PdfMeasurementUnit.pica:\n graphicsUnit = _PdfGraphicsUnit.pica;\n unitString = 'p';\n break;\n case PdfMeasurementUnit.point:\n graphicsUnit = _PdfGraphicsUnit.point;\n unitString = 'pt';\n break;\n default:\n graphicsUnit = _PdfGraphicsUnit.inch;\n unitString = 'in';\n break;\n }\n return { graphicsUnit: graphicsUnit, unitString: unitString };\n };\n PdfAnnotation.prototype._createMeasureDictionary = function (unitString) {\n var d = new _PdfDictionary();\n d.set('C', 1);\n d.set('D', 100);\n d.set('F', _PdfName.get('D'));\n d.set('RD', '.');\n d.set('RT', '');\n d.set('SS', '');\n d.set('U', unitString);\n var a = new _PdfDictionary();\n a.set('C', 1);\n a.set('D', 100);\n a.set('F', _PdfName.get('D'));\n a.set('RD', '.');\n a.set('RT', '');\n a.set('SS', '');\n a.set('U', 'sq ' + unitString);\n var x = new _PdfDictionary();\n if (unitString === 'in') {\n x.set('C', 0.0138889);\n }\n else if (unitString === 'cm') {\n x.set('C', 0.0352778);\n }\n else if (unitString === 'mm') {\n x.set('C', 0.352778);\n }\n else if (unitString === 'pt') {\n x.set('C', 1);\n }\n else if (unitString === 'p') {\n x.set('C', 0.0833333);\n }\n x.set('D', 100);\n x.set('F', _PdfName.get('D'));\n x.set('RD', '.');\n x.set('RT', '');\n x.set('SS', '');\n x.set('U', unitString);\n var measureDictionary = new _PdfDictionary();\n measureDictionary.set('A', [a]);\n measureDictionary.set('D', [d]);\n measureDictionary.set('R', '1 ' + unitString + ' = 1 ' + unitString);\n measureDictionary.set('Type', _PdfName.get('Measure'));\n measureDictionary.set('X', [x]);\n return measureDictionary;\n };\n PdfAnnotation.prototype._colorToHex = function (col) {\n if (col) {\n return '#' + this._componentToHex(col[0]) + this._componentToHex(col[1]) + this._componentToHex(col[2]);\n }\n else {\n return '#' + this._componentToHex(0) + this._componentToHex(0) + this._componentToHex(0);\n }\n };\n PdfAnnotation.prototype._componentToHex = function (c) {\n var hex = c.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n PdfAnnotation.prototype._getRotatedBounds = function (bounds, rotateAngle) {\n if (bounds.width > 0 && bounds.height > 0) {\n var matrix = new _PdfTransformationMatrix();\n matrix._rotate(rotateAngle);\n var corners = [];\n corners.push([bounds.x, bounds.y]);\n corners.push([bounds.x + bounds.width, bounds.y]);\n corners.push([bounds.x + bounds.width, bounds.y + bounds.height]);\n corners.push([bounds.x, bounds.y + bounds.height]);\n for (var i = 0; i < corners.length; i++) {\n corners[Number.parseInt(i.toString(), 10)] = matrix._matrix._transform(corners[Number.parseInt(i.toString(), 10)]);\n }\n var path = new _PdfPath();\n path._addRectangle(bounds.x, bounds.y, bounds.width, bounds.height);\n for (var i = 0; i < 4; i++) {\n path._points[Number.parseInt(i.toString(), 10)] = corners[Number.parseInt(i.toString(), 10)];\n }\n var minX = corners[0][0];\n var maxX = corners[3][0];\n var minY = corners[0][1];\n var maxY = corners[3][1];\n for (var i = 0; i < 4; i++) {\n if (corners[Number.parseInt(i.toString(), 10)][0] < minX) {\n minX = corners[Number.parseInt(i.toString(), 10)][0];\n }\n if (corners[Number.parseInt(i.toString(), 10)][0] > maxX) {\n maxX = corners[Number.parseInt(i.toString(), 10)][0];\n }\n if (corners[Number.parseInt(i.toString(), 10)][1] < minY) {\n minY = corners[Number.parseInt(i.toString(), 10)][1];\n }\n if (corners[Number.parseInt(i.toString(), 10)][1] > maxY) {\n maxY = corners[Number.parseInt(i.toString(), 10)][1];\n }\n }\n return { x: bounds.x, y: bounds.y, width: maxX - minX, height: maxY - minY };\n }\n return bounds;\n };\n PdfAnnotation.prototype._flattenPopUp = function () {\n this._flattenPop(this._page, this.color, this.bounds, this.border, this.author, this.subject, this.text);\n };\n PdfAnnotation.prototype._flattenPop = function (_page, color, boundsValue, border, author, subject, text) {\n var clientSize = [0, 0];\n clientSize = _page.size;\n var x = clientSize[0] - 180;\n var annotBounds = boundsValue;\n var y = (annotBounds.y + 142) < clientSize[1] ? annotBounds.y : clientSize[1] - 142;\n var bounds = [x, y, 180, 142];\n if (this._dictionary.has('Popup')) {\n var dictionary = this._dictionary.get('Popup');\n if (dictionary) {\n var rectValue = this._dictionary.getArray('Rect');\n if (rectValue && rectValue.length === 4) {\n var left = rectValue[0];\n var top_2 = rectValue[1];\n var width = rectValue[2];\n var height = rectValue[3];\n bounds = [left, top_2, width - left, height - top_2];\n }\n }\n }\n if (typeof color === 'undefined') {\n color = [0, 0, 0];\n }\n var backBrush = new PdfBrush(color);\n var borderWidth = border.width / 2;\n var pen = new PdfPen([0, 0, 0], 1);\n var track = 0;\n var aBrush = new PdfBrush(this._getForeColor(color));\n if (typeof author !== 'undefined' && author !== null && author !== '') {\n track = this._drawAuthor(author, subject, bounds, backBrush, aBrush, _page, track, border);\n }\n else if (typeof subject !== 'undefined' && subject !== null && subject !== '') {\n var titleRect = [bounds[0] + borderWidth, bounds[1] + borderWidth, bounds[2] - border.width, 40];\n this._saveGraphics(_page, PdfBlendMode.hardLight);\n _page.graphics.drawRectangle(titleRect[0], titleRect[1], titleRect[2], titleRect[3], pen, backBrush);\n _page.graphics.restore();\n var contentRect = [titleRect[0] + 11, titleRect[1], titleRect[2], titleRect[3] / 2];\n contentRect = [contentRect[0], (contentRect[1] + contentRect[3] - 2), contentRect[2], titleRect[3] / 2];\n this._saveGraphics(_page, PdfBlendMode.normal);\n this._drawSubject(subject, contentRect, _page);\n _page.graphics.restore();\n track = 40;\n }\n else {\n this._saveGraphics(_page, PdfBlendMode.hardLight);\n var titleRect = [bounds[0] + borderWidth, bounds[1] + borderWidth, bounds[2] - border.width, 20];\n _page.graphics.drawRectangle(titleRect[0], titleRect[1], titleRect[2], titleRect[3], pen, backBrush);\n track = 20;\n _page.graphics.restore();\n }\n var rect = [bounds[0] + borderWidth, bounds[1] + borderWidth + track,\n bounds[2] - border.width, bounds[3] - (track + border.width)];\n this._saveGraphics(_page, PdfBlendMode.hardLight);\n _page.graphics.drawRectangle(rect[0], rect[1], rect[2], rect[3], new PdfPen([0, 0, 0], 1), new PdfBrush([255, 255, 255]));\n rect[0] += 11;\n rect[1] += 5;\n rect[2] -= 22;\n _page.graphics.restore();\n this._saveGraphics(_page, PdfBlendMode.normal);\n if (typeof text !== 'undefined' && text !== null && text !== '') {\n _page.graphics.drawString(text, this._popUpFont, rect, null, new PdfBrush([0, 0, 0]), null);\n }\n _page.graphics.restore();\n };\n PdfAnnotation.prototype._flattenLoadedPopUp = function () {\n var content = '';\n if (this._dictionary.has('Contents')) {\n content = this._dictionary.get('Contents');\n }\n var author = this.author;\n var subject = this.subject;\n var pen = new PdfPen([0, 0, 0], 1);\n if (!this._dictionary.has('Popup')) {\n this._flattenPop(this._page, this.color, this.bounds, this.border, author, subject, content);\n this._removeAnnotationFromPage(this._page, this);\n }\n else {\n var bounds = this._getRectangleBoundsValue();\n if (typeof this.color === 'undefined') {\n this.color = [0, 0, 0];\n }\n var backBrush = new PdfBrush(this.color);\n var borderWidth = this.border.width / 2;\n var track = 0;\n var aBrush = new PdfBrush(this._getForeColor(this.color));\n if (typeof this.author !== 'undefined' && this.author !== null && this.author !== '') {\n track = this._drawAuthor(this.author, this.subject, bounds, backBrush, aBrush, this._page, track, this.border);\n }\n else if (typeof this.subject !== 'undefined' && this.subject !== null && this.subject !== '') {\n var titleRect = [bounds[0] + borderWidth, bounds[1] + borderWidth, bounds[2] - this.border.width, 40];\n this._saveGraphics(this._page, PdfBlendMode.hardLight);\n this._page.graphics.drawRectangle(titleRect[0], titleRect[1], titleRect[2], titleRect[3], pen, backBrush);\n this._page.graphics.restore();\n var contentRect = [titleRect[0] + 11, titleRect[1], titleRect[2], titleRect[3] / 2];\n contentRect = [contentRect[0], (contentRect[1] + contentRect[3] - 2), contentRect[2], titleRect[3] / 2];\n this._saveGraphics(this._page, PdfBlendMode.normal);\n this._drawSubject(this.subject, contentRect, this._page);\n track = 40;\n this._page.graphics.restore();\n }\n else {\n this._saveGraphics(this._page, PdfBlendMode.hardLight);\n var titleRect = [bounds[0] + borderWidth, bounds[1] + borderWidth, bounds[2] - this.border.width, 20];\n this._page.graphics.drawRectangle(titleRect[0], titleRect[1], titleRect[2], titleRect[3], pen, backBrush);\n track = 20;\n this._page.graphics.restore();\n }\n this._saveGraphics(this._page, PdfBlendMode.hardLight);\n var rect = [bounds[0] + borderWidth, bounds[1] + borderWidth + track,\n bounds[2] - this.border.width, bounds[3] - (track + this.border.width)];\n this._page.graphics.drawRectangle(rect[0], rect[1], rect[2], rect[3], pen, new PdfBrush([255, 255, 255]));\n rect[0] += 11;\n rect[1] += 5;\n rect[2] -= 22;\n this._page.graphics.restore();\n this._saveGraphics(this._page, PdfBlendMode.normal);\n this._page.graphics.restore();\n //let xmlData: Array = Array();\n // if (this._dictionary.has('RC')) {\n // //xmlData = this.parseXMLData();\n // }\n // if (xmlData !== null) {\n // // Need to add xml data code\n // } else {\n if (typeof content !== 'undefined' && content !== null && content !== '') {\n this._page.graphics.drawString(content, this._popUpFont, rect, null, new PdfBrush([0, 0, 0]), null);\n }\n // }\n this._page.graphics.restore();\n this._removeAnnotationFromPage(this._page, this);\n }\n };\n PdfAnnotation.prototype._getRectangleBoundsValue = function () {\n if (this._dictionary.has('Popup')) {\n var dic = this._dictionary.get('Popup');\n var rect = dic.getArray('Rect');\n if (rect !== null) {\n if (this._page !== null) {\n if (rect[1] === 0 && rect[3] === 0) {\n rect[1] = rect[1] + rect[3];\n }\n else {\n rect[1] = this._page._size[1] - (rect[1] + rect[3]);\n }\n }\n else {\n rect[1] = (rect[1] - rect[3]);\n }\n return rect;\n }\n else {\n return [0, 0, 0, 0];\n }\n }\n else {\n return [0, 0, 0, 0];\n }\n };\n PdfAnnotation.prototype._getForeColor = function (color) {\n var fore = (((color[0] + color[1] + color[2]) / 3) > 128) ? [0, 0, 0] : [255, 255, 255];\n return fore;\n };\n PdfAnnotation.prototype._drawAuthor = function (author, subject, bounds, backBrush, aBrush, _page, trackingHeight, border) {\n var borderWidth = this.border.width / 2;\n var pen = new PdfPen([0, 0, 0], 1);\n var format = new PdfStringFormat(PdfTextAlignment.left, PdfVerticalAlignment.middle);\n var titleRect = [bounds[0] + borderWidth, bounds[1] + borderWidth, bounds[2] - border.width, 20];\n if (typeof subject !== 'undefined' && subject !== null && subject !== '') {\n titleRect[3] += 20;\n trackingHeight = titleRect[3];\n this._saveGraphics(_page, PdfBlendMode.hardLight);\n _page.graphics.drawRectangle(titleRect[0], titleRect[1], titleRect[2], titleRect[3], pen, backBrush);\n _page.graphics.restore();\n var contentRect = [titleRect[0] + 11, titleRect[1], titleRect[2], titleRect[3] / 2];\n this._saveGraphics(this._page, PdfBlendMode.normal);\n _page.graphics.drawString(author, this._authorBoldFont, contentRect, null, aBrush, format);\n contentRect = [contentRect[0], (contentRect[1] + contentRect[3] - 2), contentRect[2], titleRect[3] / 2];\n this._drawSubject(subject, contentRect, _page);\n _page.graphics.restore();\n }\n else {\n this._saveGraphics(_page, PdfBlendMode.hardLight);\n _page.graphics.drawRectangle(titleRect[0], titleRect[1], titleRect[2], titleRect[3], pen, backBrush);\n _page.graphics.restore();\n var contentRect = [titleRect[0] + 11, titleRect[1], titleRect[2], titleRect[3]];\n this._saveGraphics(_page, PdfBlendMode.normal);\n _page.graphics.drawString(author, this._popUpFont, contentRect, null, aBrush, format);\n trackingHeight = titleRect[3];\n _page.graphics.restore();\n }\n return trackingHeight;\n };\n PdfAnnotation.prototype._drawSubject = function (subject, contentRect, _page) {\n var format = new PdfStringFormat(PdfTextAlignment.left, PdfVerticalAlignment.middle);\n _page.graphics.drawString(subject, this._authorBoldFont, contentRect, null, new PdfBrush([0, 0, 0]), format);\n };\n PdfAnnotation.prototype._saveGraphics = function (_page, blendMode) {\n _page.graphics.save();\n _page.graphics.setTransparency(0.8, 0.8, blendMode);\n };\n PdfAnnotation.prototype._getBorderColorString = function (color) {\n return (color[0] / 255).toFixed(3) + ' ' + (color[1] / 255).toFixed(3) + ' ' + (color[2] / 255).toFixed(3) + ' rg ';\n };\n PdfAnnotation.prototype._stringToDate = function (date) {\n var dateFormat = new Date();\n if (date[0] === 'D' && date[1] === ':') {\n var year = date.substring(2, 6);\n var month = date.substring(6, 8);\n var day = date.substring(8, 10);\n var hour = date.substring(10, 12);\n var minute = date.substring(12, 14);\n var second = date.substring(14, 16);\n var difference = 0;\n if (date.length === 23) {\n var timeZone = date.substring(16, 22);\n if (timeZone !== '+05\\'30\\'') {\n var signature = timeZone[0];\n var timeZoneHour = timeZone.substring(1, 3);\n var timeZonMinute = timeZone.substring(4, 6);\n difference = 5.5 - (signature === '-' ? -1 : 1) * (parseInt(timeZoneHour, 10) + (parseInt(timeZonMinute, 10) / 60));\n }\n }\n dateFormat = new Date(year + '-' + month + '-' + day + 'T' + hour + ':' + minute + ':' + second);\n if (difference !== 0) {\n dateFormat.setTime(dateFormat.getTime() + (difference * 60 * 60 * 1000));\n }\n }\n else if (date.indexOf('/') !== -1) {\n var list = date.split('/');\n var year = list[2].split(' ')[0];\n var month = list[0];\n if (month !== '10' && month !== '11' && month !== '12') {\n month = '0' + month;\n }\n var day = list[1];\n var hour = list[2].split(' ')[1].split(':')[0];\n var minute = list[2].split(' ')[1].split(':')[1];\n var second = list[2].split(' ')[1].split(':')[2];\n dateFormat = new Date(year + '-' + month + '-' + day + 'T' + hour + ':' + minute + ':' + second);\n }\n else {\n dateFormat = new Date(date);\n }\n return dateFormat;\n };\n PdfAnnotation.prototype._dateToString = function (dateTime) {\n var month = (dateTime.getMonth() + 1).toString();\n if (month !== '10' && month !== '11' && month !== '12') {\n month = '0' + month;\n }\n var date = (dateTime.getDate()).toString();\n if (Number.parseInt(date) < 10) { // eslint-disable-line\n date = '0' + date;\n }\n var hours = (dateTime.getHours()).toString();\n if (Number.parseInt(hours) < 10) { // eslint-disable-line\n hours = '0' + hours;\n }\n var minutes = (dateTime.getMinutes()).toString();\n if (Number.parseInt(minutes) < 10) { // eslint-disable-line\n minutes = '0' + minutes;\n }\n var seconds = (dateTime.getSeconds()).toString();\n if (Number.parseInt(seconds) < 10) { // eslint-disable-line\n seconds = '0' + seconds;\n }\n return 'D:' + dateTime.getFullYear().toString() + month + date + hours + minutes + seconds + '+05\\'30\\'';\n };\n PdfAnnotation.prototype._obtainNativeRectangle = function () {\n var rect = [this._bounds.x, this._bounds.y, this.bounds.x + this._bounds.width, this.bounds.y + this._bounds.height];\n var cropBoxOrMediaBox;\n if (this._page) {\n var size = this._page.size;\n rect[1] = size[1] - rect[3];\n var cropBox = this._page.cropBox;\n if (cropBox && _areNotEqual(cropBox, [0, 0, 0, 0])) {\n cropBoxOrMediaBox = cropBox;\n }\n else {\n var mBox = this._page.mediaBox;\n if (mBox && _areNotEqual(mBox, [0, 0, 0, 0])) {\n cropBoxOrMediaBox = mBox;\n }\n }\n if (cropBoxOrMediaBox && cropBoxOrMediaBox.length > 2 && (cropBoxOrMediaBox[0] !== 0 || cropBoxOrMediaBox[1] !== 0)) {\n rect[0] += cropBoxOrMediaBox[0];\n rect[1] += cropBoxOrMediaBox[1];\n }\n }\n return rect;\n };\n return PdfAnnotation;\n}());\nexport { PdfAnnotation };\n/**\n * Represents the annotations which have comments and review history.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfComment = page.annotations.at(0) as PdfComment;\n * // Gets the comments of annotation\n * let comment : PdfPopupAnnotationCollection = annotation.comments;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfComment = /** @class */ (function (_super) {\n __extends(PdfComment, _super);\n function PdfComment() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(PdfComment.prototype, \"comments\", {\n /**\n * Gets the comments of the PDF annotation (Read only).\n *\n * @returns {PdfPopupAnnotationCollection} Annotation comments\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfRectangleAnnotation = page.annotations.at(0) as PdfRectangleAnnotation;\n * // Gets the comments of the PDF annotation\n * let comments: PdfPopupAnnotationCollection = annotation.comments;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._comments) {\n return this._comments;\n }\n else {\n return this._comments = new PdfPopupAnnotationCollection(this, false);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfComment.prototype, \"reviewHistory\", {\n /**\n * Gets the review history of the PDF annotation (Read only).\n *\n * @returns {PdfPopupAnnotationCollection} Annotation review history.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfRectangleAnnotation = page.annotations.at(0) as PdfRectangleAnnotation;\n * // Gets the comments of the PDF annotation\n * let comments: PdfPopupAnnotationCollection = annotation.reviewHistory;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._reviewHistory) {\n return this._reviewHistory;\n }\n else {\n return this._reviewHistory = new PdfPopupAnnotationCollection(this, true);\n }\n },\n enumerable: true,\n configurable: true\n });\n return PdfComment;\n}(PdfAnnotation));\nexport { PdfComment };\n/**\n * `PdfLineAnnotation` class represents the line annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new line annotation with line points\n * const annotation: PdfLineAnnotation = new PdfLineAnnotation([10, 50, 250, 50]);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfLineAnnotation = /** @class */ (function (_super) {\n __extends(PdfLineAnnotation, _super);\n function PdfLineAnnotation(linePoints) {\n var _this = _super.call(this) || this;\n _this._unit = PdfMeasurementUnit.centimeter;\n _this._unitString = '';\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Line'));\n if (typeof linePoints !== 'undefined') {\n _this.linePoints = linePoints;\n }\n _this._type = _PdfAnnotationType.lineAnnotation;\n return _this;\n }\n Object.defineProperty(PdfLineAnnotation.prototype, \"linePoints\", {\n /**\n * Gets the line points of the line annotation.\n *\n * @returns {number[]} Line points.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the line points of the line annotation.\n * let linePoints : number[] = annotation.linePoints;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._linePoints === 'undefined' && this._dictionary.has('L')) {\n var points = this._dictionary.getArray('L');\n if (points) {\n this._linePoints = points;\n }\n }\n return this._linePoints;\n },\n /**\n * Sets the line points of the line annotation.\n *\n * @param {number[]} value Line points.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the line points of the line annotation.\n * annotation.linePoints = [10, 50, 250, 50];\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (Array.isArray(value) && (typeof this._linePoints === 'undefined' || _areNotEqual(value, this._linePoints))) {\n if (value.length === 4) {\n this._dictionary.update('L', value);\n this._linePoints = value;\n }\n else {\n throw new Error('Line points length should be 4.');\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLineAnnotation.prototype, \"leaderExt\", {\n /**\n * Gets the line extension of the line annotation.\n *\n * @returns {number} Leader line extension.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the line extension of the line annotation.\n * let leaderExt: number = annotation.leaderExt;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._leaderExt === 'undefined' && this._dictionary.has('LLE')) {\n var leaderExt = this._dictionary.get('LLE');\n if (typeof leaderExt !== 'undefined') {\n this._leaderExt = leaderExt;\n }\n }\n return this._leaderExt;\n },\n /**\n * Sets the line extension of the line annotation.\n *\n * @param {number} value Line extension.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the line extension of the line annotation.\n * annotation.leaderExt = 4;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (!Number.isNaN(value)) {\n this._dictionary.update('LLE', value);\n this._leaderExt = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLineAnnotation.prototype, \"leaderLine\", {\n /**\n * Gets the leader line of the line annotation.\n *\n * @returns {number} Leader line.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the leader line of the line annotation.\n * let leaderLine: number = annotation.leaderLine;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._leaderLine === 'undefined' && this._dictionary.has('LL')) {\n var leaderLine = this._dictionary.get('LL');\n if (typeof leaderLine !== 'undefined') {\n this._leaderLine = leaderLine;\n }\n }\n return this._leaderLine;\n },\n /**\n * Sets the leader line of the line annotation.\n *\n * @param {number} value Leader line.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the leader line of the line annotation.\n * annotation.leaderLine = 5;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (!Number.isNaN(value) && this.leaderExt !== 0) {\n this._dictionary.update('LL', value);\n this._leaderLine = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLineAnnotation.prototype, \"lineEndingStyle\", {\n /**\n * Gets the line ending style of the line annotation.\n *\n * @returns {PdfAnnotationLineEndingStyle} Line ending style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the line ending style of the line annotation.\n * let lineEndingStyle: PdfAnnotationLineEndingStyle = annotation.lineEndingStyle;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._lineEndingStyle === 'undefined') {\n var value = new PdfAnnotationLineEndingStyle();\n value._dictionary = this._dictionary;\n if (this._dictionary.has('LE')) {\n var lineStyles = this._dictionary.getArray('LE');\n if (lineStyles && Array.isArray(lineStyles)) {\n value._begin = _mapLineEndingStyle(lineStyles[0].name);\n value._end = _mapLineEndingStyle(lineStyles[1].name);\n }\n }\n this._lineEndingStyle = value;\n }\n return this._lineEndingStyle;\n },\n /**\n * Sets the line ending style of the line annotation.\n *\n * @param {PdfAnnotationLineEndingStyle} value Line ending style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the line ending style of the line annotation.\n * annotation.lineEndingStyle = new PdfAnnotationLineEndingStyle(PdfLineEndingStyle.openArrow, PdfLineEndingStyle.closeArrow);\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n var style = this.lineEndingStyle;\n if (style.begin !== value.begin || style.end !== value.end) {\n style.begin = value.begin;\n style.end = value.end;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLineAnnotation.prototype, \"leaderOffset\", {\n /**\n * Gets the leader offset of the line annotation.\n *\n * @returns {number} Leader offset.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the leader offset value of the line annotation\n * let leaderOffset: number = annotation.leaderOffset;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._leaderOffset === 'undefined' && this._dictionary.has('LLO')) {\n var leaderOffset = this._dictionary.get('LLO');\n if (typeof leaderOffset !== 'undefined' && leaderOffset >= 0) {\n this._leaderOffset = leaderOffset;\n }\n }\n return this._leaderOffset;\n },\n /**\n * Sets the leader offset of the line annotation.\n *\n * @param {number} value Leader line offset.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the leader offset of the line annotation.\n * annotation.leaderOffset = 1;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (!Number.isNaN(value)) {\n this._dictionary.update('LLO', value);\n this._leaderOffset = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLineAnnotation.prototype, \"lineIntent\", {\n /**\n * Gets the line intent of the line annotation.\n *\n * @returns {PdfLineIntent} Line intent.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the line intent value of the line annotation\n * let lineIntent: PdfLineIntent = annotation.lineIntent;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._lineIntent === 'undefined' && this._dictionary.has('IT')) {\n var lineIntent = this._dictionary.get('IT');\n if (lineIntent) {\n this._lineIntent = lineIntent.name === 'LineDimension' ? PdfLineIntent.lineDimension : PdfLineIntent.lineArrow;\n }\n }\n return this._lineIntent;\n },\n /**\n * Sets the line intent of the line annotation.\n *\n * @param {PdfLineIntent} value Line intent.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the line intent of the line annotation.\n * annotation.lineIntent = PdfLineIntent.lineDimension;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined' && value !== this.lineIntent) {\n this._lineIntent = value;\n this._dictionary.update('IT', _PdfName.get(value === PdfLineIntent.lineDimension ? 'LineDimension' : 'LineArrow'));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLineAnnotation.prototype, \"measure\", {\n /**\n * Gets the flag to have measurement dictionary of the line annotation.\n *\n * @returns {boolean} measure.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the flag to have measurement dictionary of the line annotation.\n * let measure: boolean = annotation.measure;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._measure === 'undefined') {\n this._measure = this._dictionary.has('Measure');\n }\n return this._measure;\n },\n /**\n * Sets the flag to add measurement dictionary to the line annotation.\n *\n * @param {boolean} value Measure.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the flag to have measurement dictionary of the line annotation.\n * annotation.measure = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value) {\n if (!this._isLoaded) {\n this._measure = value;\n this.caption.cap = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLineAnnotation.prototype, \"unit\", {\n /**\n * Gets the measurement unit of the annotation.\n *\n * @returns {PdfMeasurementUnit} Measurement unit.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the measurement unit of the annotation.\n * let unit: PdfMeasurementUnit = annotation.unit;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._unit === 'undefined') {\n this._unit = PdfMeasurementUnit.centimeter;\n if (this._dictionary.has('Contents')) {\n var text = this._dictionary.get('Contents');\n this._unitString = text.substring(text.length - 2);\n this._unit = _mapMeasurementUnit(this._unitString);\n }\n }\n return this._unit;\n },\n /**\n * Sets the measurement unit of the line annotation.\n *\n * @param {PdfMeasurementUnit} value Measurement unit.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the measurement unit of the annotation.\n * annotation.unit = PdfMeasurementUnit.centimeter;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._measure) {\n if (!this._isLoaded && typeof value !== 'undefined') {\n this._unit = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfLineAnnotation._load = function (page, dictionary) {\n var annot = new PdfLineAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfLineAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfLineAnnotation.prototype._postProcess = function (flatten) {\n if (typeof this.linePoints === 'undefined' || this.linePoints === null) {\n throw new Error('Line points cannot be null or undefined');\n }\n if (!this._dictionary.has('Cap')) {\n this._dictionary.set('Cap', false);\n }\n if (!this._dictionary.has('CP')) {\n this._dictionary.set('CP', _PdfName.get('Inline'));\n }\n if (!this._dictionary.has('LE')) {\n this.lineEndingStyle = new PdfAnnotationLineEndingStyle();\n }\n if (!this._dictionary.has('LL')) {\n this.leaderLine = 0;\n }\n if (!this._dictionary.has('LLE')) {\n this.leaderExt = 0;\n }\n if (!this._dictionary.has('C')) {\n this.color = [0, 0, 0];\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dictionary);\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n if (this._measure) {\n this._appearanceTemplate = this._createLineMeasureAppearance(flatten);\n }\n else {\n if (this._setAppearance) {\n this._appearanceTemplate = this._createAppearance();\n }\n var boundsArray = this._obtainLineBounds();\n var bounds = { x: boundsArray[0],\n y: boundsArray[1], width: boundsArray[2], height: boundsArray[3] };\n this._bounds = bounds;\n var updatedBounds = [this._bounds.x,\n this._bounds.y,\n this._bounds.x + this._bounds.width,\n this._bounds.y + this._bounds.height];\n this._dictionary.update('Rect', updatedBounds);\n }\n };\n PdfLineAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (this._isLoaded) {\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n if (this._dictionary.has('Measure')) {\n this._appearanceTemplate = this._createLineMeasureAppearance(isFlatten);\n }\n else {\n this._appearanceTemplate = this._createAppearance();\n }\n }\n if (!this._appearanceTemplate && isFlatten && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n if (appearanceStream) {\n var reference = dictionary.getRaw('N');\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n else {\n this._postProcess(isFlatten);\n if (!this._appearanceTemplate) {\n if (isFlatten) {\n if (!this._dictionary.has('AP')) {\n this._appearanceTemplate = this._createAppearance();\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n if (appearanceStream) {\n var reference = dictionary.getRaw('N');\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n }\n if (typeof this.flattenPopups !== 'undefined' && this.flattenPopups && !this.measure) {\n if (this._isLoaded && !this._dictionary.has('Measure')) {\n this._flattenLoadedPopUp();\n }\n else {\n this._flattenPopUp();\n }\n }\n if (isFlatten && this._appearanceTemplate) {\n var isNormalMatrix = this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary);\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n if (!isFlatten && this._setAppearance && !this.measure) {\n var appearance = void 0;\n if (this._dictionary.has('AP')) {\n appearance = this._dictionary.get('AP');\n }\n else {\n var reference_1 = this._crossReference._getNextReference();\n appearance = new _PdfDictionary(this._crossReference);\n this._crossReference._cacheMap.set(reference_1, appearance);\n this._dictionary.update('AP', reference_1);\n }\n _removeDuplicateReference(appearance, this._crossReference, 'N');\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._appearanceTemplate._content);\n appearance.update('N', reference);\n }\n };\n PdfLineAnnotation.prototype._createLineMeasureAppearance = function (_isFlatten) {\n var nativeRectangle = [0, 0, 0, 0];\n var area = this._convertToUnit();\n var linePoints1 = this._obtainLinePoints();\n var points = [];\n for (var j = 0; j < linePoints1.length; j = j + 2) {\n points.push([linePoints1[Number.parseInt(j.toString(), 10)], (linePoints1[j + 1])]);\n }\n var graphicsPath = new _PdfPath();\n graphicsPath._points = points;\n graphicsPath._pathTypes = [0, 1];\n var rectPath = graphicsPath._getBounds();\n this._bounds = { x: rectPath[0], y: rectPath[1], width: rectPath[2], height: rectPath[3] };\n var borderPen = new PdfPen(typeof this.color !== 'undefined' ? this._color : [0, 0, 0], this.border.width);\n var backBrush;\n if (this.innerColor) {\n backBrush = new PdfBrush(this._innerColor);\n }\n nativeRectangle = this._obtainLineBounds();\n var template = new PdfTemplate(nativeRectangle, this._crossReference);\n _setMatrix(template, this._getRotationAngle());\n var parameter = new _PaintParameter();\n template._writeTransformation = false;\n var graphics = template.graphics;\n parameter.borderPen = borderPen;\n parameter.backBrush = backBrush;\n parameter.foreBrush = new PdfBrush(this.color);\n var linePoints = this._obtainLinePoints();\n var font = this._obtainFont();\n if ((typeof font === 'undefined' || font === null) || (!this._isLoaded && font.size === 1)) {\n font = this._lineCaptionFont;\n this._pdfFont = font;\n }\n if (typeof linePoints !== 'undefined' && linePoints.length === 4) {\n var format = new PdfStringFormat(PdfTextAlignment.center, PdfVerticalAlignment.middle);\n var fontSize = font.measureString(area.toFixed(2) + ' ' + this._unitString, [0, 0], format, 0, 0);\n var angle = this._getAngle(this._linePoints);\n var leaderLine = 0;\n var lineAngle = 0;\n if (this.leaderLine < 0) {\n leaderLine = -(this.leaderLine);\n lineAngle = angle + 180;\n }\n else {\n leaderLine = this.leaderLine;\n lineAngle = angle;\n }\n var offset = (typeof this.leaderOffset !== 'undefined') ? (leaderLine + this.leaderOffset) : leaderLine;\n var startPoint = this._getAxisValue([this._linePoints[0], this._linePoints[1]], (lineAngle + 90), offset);\n var endPoint = this._getAxisValue([this._linePoints[2], this._linePoints[3]], (lineAngle + 90), offset);\n var lineDistance = (Math.sqrt(Math.pow((endPoint[0] - startPoint[0]), 2) +\n Math.pow((endPoint[1] - startPoint[1]), 2)));\n var centerWidth = lineDistance / 2 - ((fontSize[0] / 2) + this.border.width);\n var first = this._getAxisValue(startPoint, angle, centerWidth);\n var second = this._getAxisValue(endPoint, (angle + 180), centerWidth);\n var start = (this.lineEndingStyle.begin === PdfLineEndingStyle.openArrow ||\n this.lineEndingStyle.begin === PdfLineEndingStyle.closedArrow) ?\n this._getAxisValue(startPoint, angle, this.border.width) :\n startPoint;\n var end = (this.lineEndingStyle.end === PdfLineEndingStyle.openArrow ||\n this.lineEndingStyle.end === PdfLineEndingStyle.closedArrow) ?\n this._getAxisValue(endPoint, angle, -this.border.width) :\n endPoint;\n var state = void 0;\n if (this.opacity && this._opacity < 1) {\n state = graphics.save();\n graphics.setTransparency(this._opacity);\n }\n if (this.caption.type === PdfLineCaptionType.top || (!this.caption.cap && this.caption.type === PdfLineCaptionType.inline)) {\n graphics.drawLine(borderPen, start[0], -start[1], end[0], -end[1]);\n }\n else {\n graphics.drawLine(borderPen, start[0], -start[1], first[0], -first[1]);\n graphics.drawLine(borderPen, end[0], -end[1], second[0], -second[1]);\n }\n if (this.opacity && this._opacity < 1) {\n graphics.restore(state);\n }\n this._drawLineStyle(startPoint, endPoint, graphics, angle, borderPen, backBrush, this.lineEndingStyle, this.border.width);\n var leaderExt = (typeof this.leaderExt !== 'undefined' ? this._leaderExt : 0);\n var beginLineExt = this._getAxisValue(startPoint, (lineAngle + 90), leaderExt);\n graphics.drawLine(borderPen, startPoint[0], -startPoint[1], beginLineExt[0], -beginLineExt[1]);\n var endLineExt = this._getAxisValue(endPoint, (lineAngle + 90), leaderExt);\n graphics.drawLine(borderPen, endPoint[0], -endPoint[1], endLineExt[0], -endLineExt[1]);\n var beginLeaderLine = this._getAxisValue(startPoint, (lineAngle - 90), leaderLine);\n graphics.drawLine(borderPen, startPoint[0], -startPoint[1], beginLeaderLine[0], -beginLeaderLine[1]);\n var endLeaderLine = this._getAxisValue(endPoint, (lineAngle - 90), leaderLine);\n graphics.drawLine(borderPen, endPoint[0], -endPoint[1], endLeaderLine[0], -endLeaderLine[1]);\n var midpoint = lineDistance / 2;\n var centerPoint = this._getAxisValue(startPoint, angle, midpoint);\n var captionPosition = void 0;\n var height = font._metrics._getHeight();\n if (this.caption.type === PdfLineCaptionType.top) {\n captionPosition = this._getAxisValue(centerPoint, (angle + 90), height);\n }\n else {\n captionPosition = this._getAxisValue(centerPoint, (angle + 90), (height / 2));\n }\n graphics.translateTransform(captionPosition[0], -captionPosition[1]);\n graphics.rotateTransform(-angle);\n graphics.drawString(area.toFixed(2) + ' ' + this._unitString, font, [(-fontSize[0] / 2), 0, 0, 0], null, parameter.foreBrush);\n graphics.restore();\n }\n if ((typeof _isFlatten !== 'undefined' && !_isFlatten) || !this._isLoaded) {\n template._content.dictionary._updated = true;\n var ref = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(ref, template._content);\n template._content.reference = ref;\n var nativeRectangle1 = [this.bounds.x,\n this.bounds.y + this.bounds.height,\n this.bounds.width,\n this.bounds.height];\n var size = this._page.size;\n nativeRectangle1[1] = size[1] - (this.bounds.y + this.bounds.height);\n if (this._isBounds && !this.measure) {\n nativeRectangle = nativeRectangle1;\n this._dictionary.update('Rect', [nativeRectangle1[0], nativeRectangle1[1], nativeRectangle1[2], nativeRectangle1[3]]);\n }\n else {\n this._dictionary.update('Rect', [nativeRectangle[0], nativeRectangle[1], nativeRectangle[2], nativeRectangle[3]]);\n }\n var ds = 'font:' +\n font._metrics._postScriptName +\n ' ' +\n font._size +\n 'pt; color:' +\n this._colorToHex(this.color);\n this._dictionary.update('DS', ds);\n if (typeof _isFlatten !== 'undefined' && !_isFlatten) {\n if (this._dictionary.has('AP')) {\n _removeDuplicateReference(this._dictionary.get('AP'), this._crossReference, 'N');\n }\n var dic = new _PdfDictionary();\n dic.set('N', ref);\n dic._updated = true;\n this._dictionary.set('AP', dic);\n var measureDictionary = this._createMeasureDictionary(this._unitString);\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, measureDictionary);\n measureDictionary._updated = true;\n if (this._dictionary.has('Measure')) {\n _removeDuplicateReference(this._dictionary, this._crossReference, 'Measure');\n }\n this._dictionary.update('Measure', reference);\n }\n var lineStyles = [];\n lineStyles.push(_PdfName.get(_reverseMapEndingStyle(this.lineEndingStyle.begin)));\n lineStyles.push(_PdfName.get(_reverseMapEndingStyle(this.lineEndingStyle.end)));\n this._dictionary.update('LE', lineStyles);\n if (this._linePoints !== null) {\n this._dictionary.update('L', this._linePoints);\n }\n else {\n throw new Error('LinePoints cannot be null');\n }\n this._dictionary.update('C', [Number.parseFloat((this.color[0] / 255).toFixed(3)),\n Number.parseFloat((this.color[1] / 255).toFixed(3)),\n Number.parseFloat((this.color[2] / 255).toFixed(3))]);\n var offset = this._dictionary.has('LLO') ? this.leaderOffset : 0;\n this._dictionary.update('Subtype', new _PdfName('Line'));\n if (this._text && this._text !== '') {\n this._dictionary.update('Contents', this._text + ' ' + area.toFixed(2) + ' ' + this._unitString);\n }\n else {\n this._dictionary.update('Contents', area.toFixed(2) + ' ' + this._unitString);\n }\n this._dictionary.update('IT', new _PdfName('LineDimension'));\n this._dictionary.update('LLE', this.leaderExt);\n this._dictionary.update('LLO', offset);\n this._dictionary.update('LL', this.leaderLine);\n this._dictionary.update('CP', _PdfName.get(this.caption.type === PdfLineCaptionType.top ? 'Top' : 'Inline'));\n this._dictionary.update('Cap', this.caption.cap);\n var bounds = [nativeRectangle[0],\n nativeRectangle[1],\n nativeRectangle[0] + nativeRectangle[2],\n nativeRectangle[1] + nativeRectangle[3]];\n this._dictionary.update('Rect', bounds);\n this._bounds = { x: bounds[0], y: bounds[1], width: bounds[2], height: bounds[3] };\n }\n return template;\n };\n PdfLineAnnotation.prototype._calculateAngle = function (startPointX, startPointY, endPointX, endPointY) {\n return -(Math.atan2((endPointY - startPointY), (endPointX - startPointX)) * (180 / Math.PI));\n };\n PdfLineAnnotation.prototype._calculateLineBounds = function (linePoints, leaderLineExt, leaderLine, leaderOffset, lineStyle, borderWidth) {\n var bounds = { x: 0, y: 0, width: 0, height: 0 };\n if (linePoints && linePoints.length === 4) {\n var angle = this._getAngle(linePoints);\n var leaderLines = 0;\n var lineAngle = 0;\n if (leaderLine < 0) {\n leaderLines = -(leaderLine);\n lineAngle = angle + 180;\n }\n else {\n leaderLines = leaderLine;\n lineAngle = angle;\n }\n var x1y1 = [linePoints[0], linePoints[1]];\n var x2y2 = [linePoints[2], linePoints[3]];\n if (leaderOffset !== 0) {\n var offsetPoint1 = this._getAxisValue(x1y1, (lineAngle + 90), leaderOffset);\n var offsetPoint2 = this._getAxisValue(x2y2, (lineAngle + 90), leaderOffset);\n linePoints[0] = offsetPoint1[0];\n linePoints[1] = offsetPoint1[1];\n linePoints[2] = offsetPoint2[0];\n linePoints[3] = offsetPoint2[1];\n }\n var startingPoint = this._getAxisValue(x1y1, (lineAngle + 90), leaderLines + leaderOffset);\n var endingPoint = this._getAxisValue(x2y2, (lineAngle + 90), leaderLines + leaderOffset);\n var beginLineLeader = this._getAxisValue(x1y1, (lineAngle + 90), leaderLineExt + leaderLines + leaderOffset);\n var endLineLeader = this._getAxisValue(x2y2, (lineAngle + 90), leaderLineExt + leaderLines + leaderOffset);\n var beginLinePoint = this._getLinePoint(lineStyle.begin, borderWidth);\n var endLinePoint = this._getLinePoint(lineStyle.end, borderWidth);\n var widthX = [];\n var heightY = [];\n if ((lineAngle >= 45 && lineAngle <= 135) || (lineAngle >= 225 && lineAngle <= 315)) {\n widthX[0] = beginLinePoint.y;\n heightY[0] = beginLinePoint.x;\n widthX[1] = endLinePoint.y;\n heightY[1] = endLinePoint.x;\n }\n else {\n widthX[0] = beginLinePoint.x;\n heightY[0] = beginLinePoint.y;\n widthX[1] = endLinePoint.x;\n heightY[1] = endLinePoint.y;\n }\n var width = Math.max(widthX[0], widthX[1]);\n var height = Math.max(heightY[0], heightY[1]);\n if (width === 0) {\n width = 1;\n }\n if (height === 0) {\n height = 1;\n }\n if (startingPoint[0] === Math.min(startingPoint[0], endingPoint[0])) {\n startingPoint[0] -= width * borderWidth;\n endingPoint[0] += width * borderWidth;\n startingPoint[0] = Math.min(startingPoint[0], linePoints[0]);\n startingPoint[0] = Math.min(startingPoint[0], beginLineLeader[0]);\n endingPoint[0] = Math.max(endingPoint[0], linePoints[2]);\n endingPoint[0] = Math.max(endingPoint[0], endLineLeader[0]);\n }\n else {\n startingPoint[0] += width * borderWidth;\n endingPoint[0] -= width * borderWidth;\n startingPoint[0] = Math.max(startingPoint[0], linePoints[0]);\n startingPoint[0] = Math.max(startingPoint[0], beginLineLeader[0]);\n endingPoint[0] = Math.min(endingPoint[0], linePoints[2]);\n endingPoint[0] = Math.min(endingPoint[0], endLineLeader[0]);\n }\n if (startingPoint[1] === Math.min(startingPoint[1], endingPoint[1])) {\n startingPoint[1] -= height * borderWidth;\n endingPoint[1] += height * borderWidth;\n startingPoint[1] = Math.min(startingPoint[1], linePoints[1]);\n startingPoint[1] = Math.min(startingPoint[1], beginLineLeader[1]);\n endingPoint[1] = Math.max(endingPoint[1], linePoints[3]);\n endingPoint[1] = Math.max(endingPoint[1], endLineLeader[1]);\n }\n else {\n startingPoint[1] += height * borderWidth;\n endingPoint[1] -= height * borderWidth;\n startingPoint[1] = Math.max(startingPoint[1], linePoints[1]);\n startingPoint[1] = Math.max(startingPoint[1], beginLineLeader[1]);\n endingPoint[1] = Math.min(endingPoint[1], linePoints[3]);\n endingPoint[1] = Math.min(endingPoint[1], endLineLeader[1]);\n }\n bounds = this._getBounds([{ x: startingPoint[0], y: startingPoint[1] }, { x: endingPoint[0], y: endingPoint[1] }]);\n }\n return bounds;\n };\n PdfLineAnnotation.prototype._getLinePoint = function (style, borderWidth) {\n var point = { x: 0, y: 0 };\n if (style) {\n switch (style) {\n case PdfLineEndingStyle.square:\n case PdfLineEndingStyle.circle:\n case PdfLineEndingStyle.diamond:\n point.x = 3;\n point.y = 3;\n break;\n case PdfLineEndingStyle.openArrow:\n case PdfLineEndingStyle.closedArrow:\n point.x = 1;\n point.y = 5;\n break;\n case PdfLineEndingStyle.rOpenArrow:\n case PdfLineEndingStyle.rClosedArrow:\n point.x = 9 + (borderWidth / 2);\n point.y = 5 + (borderWidth / 2);\n break;\n case PdfLineEndingStyle.slash:\n point.x = 5;\n point.y = 9;\n break;\n case PdfLineEndingStyle.butt:\n point.x = 1;\n point.y = 3;\n break;\n default:\n point.x = 0;\n point.y = 0;\n break;\n }\n }\n return point;\n };\n PdfLineAnnotation.prototype._getBounds = function (points) {\n var bounds = { x: 0, y: 0, width: 0, height: 0 };\n if (points.length > 0) {\n var xmin = points[0].x;\n var xmax = points[0].x;\n var ymin = points[0].y;\n var ymax = points[0].y;\n for (var i = 1; i < points.length; ++i) {\n var point = points[Number.parseInt(i.toString(), 10)];\n xmin = Math.min(point.x, xmin);\n xmax = Math.max(point.x, xmax);\n ymin = Math.min(point.y, ymin);\n ymax = Math.max(point.y, ymax);\n }\n bounds.x = xmin;\n bounds.y = ymin;\n bounds.width = xmax - xmin;\n bounds.height = ymax - ymin;\n }\n return bounds;\n };\n PdfLineAnnotation.prototype._obtainLineBounds = function () {\n var bounds = this.bounds;\n if (typeof this.linePoints !== 'undefined' && this._linePoints.length === 4) {\n var leaderOffset = this._dictionary.has('LLO') ? this.leaderOffset : 0;\n var leaderExt = this._dictionary.has('LLE') ? this.leaderExt : 0;\n var leaderLine = this._dictionary.has('LL') ? this.leaderLine : 0;\n bounds = this._calculateLineBounds(this._linePoints, leaderExt, leaderLine, leaderOffset, this.lineEndingStyle, this.border.width);\n bounds = { x: bounds.x - 8, y: bounds.y - 8, width: (bounds.width + 2 * 8), height: (bounds.height + 2 * 8) };\n }\n return [bounds.x, bounds.y, bounds.width, bounds.height];\n };\n PdfLineAnnotation.prototype._createAppearance = function () {\n var template = new PdfTemplate(this._obtainLineBounds(), this._crossReference);\n var parameter = new _PaintParameter();\n _setMatrix(template, this._getRotationAngle());\n template._writeTransformation = false;\n var graphics = template.graphics;\n var pen = new PdfPen(typeof this.color !== 'undefined' ? this._color : [0, 0, 0], this.border.width);\n if (this.border.style === PdfBorderStyle.dashed) {\n pen._dashStyle = PdfDashStyle.dash;\n }\n else if (this.border.style === PdfBorderStyle.dot) {\n pen._dashStyle = PdfDashStyle.dot;\n }\n parameter.borderPen = pen;\n parameter.foreBrush = new PdfBrush(this.color);\n var brush = new PdfBrush(typeof this.innerColor !== 'undefined' ? this._innerColor : [0, 0, 0]);\n var font = this._obtainFont();\n if ((typeof font === 'undefined' || font === null) || (!this._isLoaded && font.size === 1)) {\n font = this._lineCaptionFont;\n this._pdfFont = font;\n }\n if (!this.text && !this._dictionary.has('Contents')) {\n this.text = this.subject;\n }\n var format = new PdfStringFormat(PdfTextAlignment.center, PdfVerticalAlignment.middle);\n var lineWidth = font.measureString(this.text ? this.text : '', [0, 0], format, 0, 0)[0]; //66.71001;\n if (typeof this.linePoints !== 'undefined' && this._linePoints.length === 4) {\n var angle = this._getAngle(this._linePoints);\n var leaderLine = 0;\n var lineAngle = 0;\n if (this.leaderLine < 0) {\n leaderLine = -(this.leaderLine);\n lineAngle = angle + 180;\n }\n else {\n leaderLine = this.leaderLine;\n lineAngle = angle;\n }\n var offset = (typeof this.leaderOffset !== 'undefined') ? (leaderLine + this.leaderOffset) : leaderLine;\n var startPoint = this._getAxisValue([this._linePoints[0], this._linePoints[1]], (lineAngle + 90), offset);\n var endPoint = this._getAxisValue([this._linePoints[2], this._linePoints[3]], (lineAngle + 90), offset);\n var lineDistance = (Math.sqrt(Math.pow((endPoint[0] - startPoint[0]), 2) +\n Math.pow((endPoint[1] - startPoint[1]), 2)));\n var centerWidth = lineDistance / 2 - ((lineWidth / 2) + this.border.width);\n var first = this._getAxisValue(startPoint, angle, centerWidth);\n var second = this._getAxisValue(endPoint, (angle + 180), centerWidth);\n var start = (this.lineEndingStyle.begin === PdfLineEndingStyle.openArrow ||\n this.lineEndingStyle.begin === PdfLineEndingStyle.closedArrow) ?\n this._getAxisValue(startPoint, angle, this.border.width) :\n startPoint;\n var end = (this.lineEndingStyle.end === PdfLineEndingStyle.openArrow ||\n this.lineEndingStyle.end === PdfLineEndingStyle.closedArrow) ?\n this._getAxisValue(endPoint, angle, -this.border.width) :\n endPoint;\n if (this.opacity && this._opacity < 1) {\n var state = graphics.save();\n graphics.setTransparency(this._opacity);\n this._drawLine(graphics, pen, start, end, first, second);\n graphics.restore(state);\n }\n else {\n this._drawLine(graphics, pen, start, end, first, second);\n }\n this._drawLineStyle(startPoint, endPoint, graphics, angle, pen, brush, this.lineEndingStyle, this.border.width);\n var leaderExt = (typeof this.leaderExt !== 'undefined' ? this._leaderExt : 0);\n var beginLineExt = this._getAxisValue(startPoint, (lineAngle + 90), leaderExt);\n graphics.drawLine(pen, startPoint[0], -startPoint[1], beginLineExt[0], -beginLineExt[1]);\n var endLineExt = this._getAxisValue(endPoint, (lineAngle + 90), leaderExt);\n graphics.drawLine(pen, endPoint[0], -endPoint[1], endLineExt[0], -endLineExt[1]);\n var beginLeaderLine = this._getAxisValue(startPoint, (lineAngle - 90), leaderLine);\n graphics.drawLine(pen, startPoint[0], -startPoint[1], beginLeaderLine[0], -beginLeaderLine[1]);\n var endLeaderLine = this._getAxisValue(endPoint, (lineAngle - 90), leaderLine);\n graphics.drawLine(pen, endPoint[0], -endPoint[1], endLeaderLine[0], -endLeaderLine[1]);\n var midpoint = lineDistance / 2;\n var centerPoint = this._getAxisValue(startPoint, angle, midpoint);\n var captionPosition = void 0;\n var height = font._metrics._getHeight();\n if (this.caption.type === PdfLineCaptionType.top) {\n if (this._dictionary.has('Measure')) {\n captionPosition = this._getAxisValue(centerPoint, (angle + 90), 2 * height);\n }\n else {\n captionPosition = this._getAxisValue(centerPoint, (angle + 90), height);\n }\n }\n else {\n if (this._dictionary.has('Measure')) {\n captionPosition = this._getAxisValue(centerPoint, (angle + 90), 3 * (height / 2));\n }\n else {\n captionPosition = this._getAxisValue(centerPoint, (angle + 90), (height / 2));\n }\n }\n graphics.translateTransform(captionPosition[0], -captionPosition[1]);\n graphics.rotateTransform(-angle);\n if (this.caption.cap) {\n graphics.drawString(this.text, font, [(-lineWidth / 2), 0, 0, 0], null, parameter.foreBrush);\n }\n graphics.restore();\n var bounds = this._obtainLineBounds();\n var rectangleBounds = _fromRectangle({ x: bounds[0], y: bounds[1], width: bounds[2], height: bounds[3] });\n this.bounds = { x: rectangleBounds[0], y: rectangleBounds[1], width: rectangleBounds[2], height: rectangleBounds[3] };\n }\n return template;\n };\n PdfLineAnnotation.prototype._drawLine = function (graphics, pen, start, end, first, second) {\n if (typeof this.text === 'undefined' ||\n this._text === '' ||\n this.caption.type === PdfLineCaptionType.top ||\n (!this.caption.cap && this.caption.type === PdfLineCaptionType.inline)) {\n graphics.drawLine(pen, start[0], -start[1], end[0], -end[1]);\n }\n else {\n graphics.drawLine(pen, start[0], -start[1], first[0], -first[1]);\n graphics.drawLine(pen, end[0], -end[1], second[0], -second[1]);\n }\n };\n PdfLineAnnotation.prototype._convertToUnit = function () {\n var points = this._obtainLinePoints();\n var data = new Array(points.length / 2);\n var count = 0;\n for (var j = 0; j < points.length; j = j + 2) {\n data[Number.parseInt(count.toString(), 10)] = [points[Number.parseInt(j.toString(), 10)], (points[j + 1])];\n count++;\n }\n var distance = Math.sqrt(Math.pow((data[1][0] - data[0][0]), 2) + Math.pow((data[1][1] - data[0][1]), 2));\n var value = this._getEqualPdfGraphicsUnit(this._unit, this._unitString);\n this._unitString = value.unitString;\n return (new _PdfUnitConvertor())._convertUnits(distance, _PdfGraphicsUnit.point, value.graphicsUnit);\n };\n PdfLineAnnotation.prototype._obtainLinePoints = function () {\n var points = [];\n if (this.linePoints) {\n for (var i = 0; i < this._linePoints.length; i++) {\n points[Number.parseInt(i.toString(), 10)] = this._linePoints[Number.parseInt(i.toString(), 10)];\n }\n }\n return points;\n };\n return PdfLineAnnotation;\n}(PdfComment));\nexport { PdfLineAnnotation };\n/**\n * `PdfCircleAnnotation` class represents the circle annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new circle annotation with circle bounds\n * const annotation: PdfCircleAnnotation = new PdfCircleAnnotation(10, 10, 100, 100);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfCircleAnnotation = /** @class */ (function (_super) {\n __extends(PdfCircleAnnotation, _super);\n function PdfCircleAnnotation(x, y, width, height) {\n var _this = _super.call(this) || this;\n _this._unit = PdfMeasurementUnit.centimeter;\n _this._measureType = PdfCircleMeasurementType.diameter;\n _this._unitString = '';\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Circle'));\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n }\n _this._type = _PdfAnnotationType.circleAnnotation;\n return _this;\n }\n Object.defineProperty(PdfCircleAnnotation.prototype, \"measure\", {\n /**\n * Gets the flag to have measurement dictionary of the circle annotation.\n *\n * @returns {boolean} measure.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfCircleAnnotation = page.annotations.at(0) as PdfCircleAnnotation;\n * // Gets the flag to have measurement dictionary of the circle annotation.\n * let measure: boolean = annotation.measure;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._measure === 'undefined' && this._dictionary.has('Measure')) {\n this._measure = this._dictionary.get('Measure');\n }\n return this._measure;\n },\n /**\n * Sets the flag to add measurement dictionary to the annotation.\n *\n * @param {boolean} value Measure.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfCircleAnnotation = page.annotations.at(0) as PdfCircleAnnotation;\n * // Sets the flag to have measurement dictionary of the circle annotation.\n * annotation.measure = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value) {\n if (!this._isLoaded) {\n this._measure = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCircleAnnotation.prototype, \"unit\", {\n /**\n * Gets the measurement unit of the annotation.\n *\n * @returns {PdfMeasurementUnit} Measurement unit.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfCircleAnnotation = page.annotations.at(0) as PdfCircleAnnotation;\n * // Gets the measurement unit of the annotation.\n * let unit: PdfMeasurementUnit = annotation.unit;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._unit === 'undefined') {\n this._unit = PdfMeasurementUnit.centimeter;\n if (this._dictionary.has('Contents')) {\n var text = this._dictionary.get('Contents');\n this._unitString = text.substring(text.length - 2);\n this._unit = _mapMeasurementUnit(this._unitString);\n }\n }\n return this._unit;\n },\n /**\n * Sets the measurement unit of the annotation.\n *\n * @param {PdfMeasurementUnit} value Measurement unit.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfCircleAnnotation = page.annotations.at(0) as PdfCircleAnnotation;\n * // Sets the measurement unit of the annotation.\n * annotation.unit = PdfMeasurementUnit.centimeter;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._measure) {\n if (!this._isLoaded && typeof value !== 'undefined') {\n this._unit = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCircleAnnotation.prototype, \"measureType\", {\n /**\n * Gets the measurement type of the annotation.\n *\n * @returns {PdfCircleMeasurementType} Measurement type.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfCircleAnnotation = page.annotations.at(0) as PdfCircleAnnotation;\n * // Gets the measurement type of the annotation.\n * let type: PdfCircleMeasurementType = annotation.type;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('Contents')) {\n var text = this._dictionary.get('Contents');\n this._unitString = text.substring(text.length - 2);\n this._unit = _mapMeasurementUnit(this._unitString);\n var value = text.substring(0, text.length - 2);\n var converter = new _PdfUnitConvertor();\n var radius = converter._convertUnits(this.bounds.width / 2, _PdfGraphicsUnit.point, _mapGraphicsUnit(this._unitString));\n if (radius.toString() === value) {\n this._measureType = PdfCircleMeasurementType.radius;\n }\n else {\n this._measureType = PdfCircleMeasurementType.diameter;\n }\n }\n return this._measureType;\n },\n /**\n * Sets the measurement type of the annotation.\n *\n * @param {PdfCircleMeasurementType} value Measurement type.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfCircleAnnotation = page.annotations.at(0) as PdfCircleAnnotation;\n * // Sets the measurement type of the annotation.\n * annotation.type = PdfCircleMeasurementType.diameter;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._measure) {\n if (!this._isLoaded && typeof value !== 'undefined') {\n this._measureType = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfCircleAnnotation._load = function (page, dictionary) {\n var annot = new PdfCircleAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfCircleAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfCircleAnnotation.prototype._postProcess = function (isFlatten) {\n if (typeof this.bounds === 'undefined' || this.bounds === null) {\n throw new Error('Bounds cannot be null or undefined');\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dictionary);\n }\n if (!this._dictionary.has('C')) {\n this.color = [0, 0, 0];\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n if (this._measure) {\n this._appearanceTemplate = this._createCircleMeasureAppearance(isFlatten);\n }\n else {\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n this._appearanceTemplate = this._createCircleAppearance();\n }\n var size = this._page.size;\n var rect = [this.bounds.x,\n size[1] - (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n }\n };\n PdfCircleAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (this._isLoaded) {\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n if (this._dictionary.has('Measure')) {\n this._appearanceTemplate = this._createCircleMeasureAppearance(isFlatten);\n }\n else {\n this._appearanceTemplate = this._createCircleAppearance();\n }\n }\n if (!this._appearanceTemplate && isFlatten && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n else {\n this._postProcess(isFlatten);\n if (!this._appearanceTemplate && isFlatten) {\n if (!this._dictionary.has('AP')) {\n this._appearanceTemplate = this._createCircleAppearance();\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n if (typeof this.flattenPopups !== 'undefined' && this.flattenPopups && !this.measure) {\n if (this._isLoaded && !this._dictionary.has('Measure')) {\n this._flattenLoadedPopUp();\n }\n else {\n this._flattenPopUp();\n }\n }\n if (isFlatten && this._appearanceTemplate) {\n var isNormalMatrix = this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary);\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n if (!isFlatten && this._setAppearance && !this.measure) {\n var appearance = void 0;\n if (this._dictionary.has('AP')) {\n appearance = this._dictionary.get('AP');\n }\n else {\n var reference_2 = this._crossReference._getNextReference();\n appearance = new _PdfDictionary(this._crossReference);\n this._crossReference._cacheMap.set(reference_2, appearance);\n this._dictionary.update('AP', reference_2);\n }\n _removeDuplicateReference(appearance, this._crossReference, 'N');\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._appearanceTemplate._content);\n appearance.update('N', reference);\n }\n };\n PdfCircleAnnotation.prototype._createCircleMeasureAppearance = function (_isFlatten) {\n var borderWidth = this.border.width;\n var font = this._obtainFont();\n if ((typeof font === 'undefined' || font === null) || (!this._isLoaded && font.size === 1)) {\n font = this._circleCaptionFont;\n this._pdfFont = font;\n }\n var area = this._convertToUnit();\n var format = new PdfStringFormat(PdfTextAlignment.center, PdfVerticalAlignment.middle);\n var str = area.toFixed(2) + ' ' + this._unitString;\n var fontsize = font.measureString(str, [0, 0], format, 0, 0);\n var borderPen = new PdfPen(this.color, borderWidth);\n var nativeRectangle = [this.bounds.x,\n (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n nativeRectangle[1] = nativeRectangle[1] - nativeRectangle[3];\n var template = new PdfTemplate(nativeRectangle, this._crossReference);\n var parameter = new _PaintParameter();\n template._writeTransformation = false;\n var graphics = template.graphics;\n var width = borderWidth / 2;\n parameter.borderPen = borderPen;\n if (this.innerColor) {\n parameter.backBrush = new PdfBrush(this._innerColor);\n }\n parameter.foreBrush = new PdfBrush(this.color);\n var rect = [nativeRectangle[0],\n -nativeRectangle[1] - nativeRectangle[3],\n nativeRectangle[2],\n nativeRectangle[3]];\n graphics.save();\n graphics.drawEllipse(rect[0] + width, rect[1] + width, rect[2] - borderWidth, rect[3] - borderWidth, new PdfPen(this.color, this.border.width));\n if (this._measureType === PdfCircleMeasurementType.diameter) {\n graphics.save();\n graphics.translateTransform(nativeRectangle[0], -nativeRectangle[1]);\n var x = (nativeRectangle[3] / 2) - (fontsize[0] / 2);\n graphics.drawLine(parameter.borderPen, 0, -nativeRectangle[3] / 2, nativeRectangle[0] + nativeRectangle[2], -nativeRectangle[3] / 2);\n graphics.translateTransform(x, -(nativeRectangle[3] / 2) - font._metrics._getHeight());\n graphics.drawString(area.toFixed(2) + ' ' + this._unitString, font, [0, 0, 0, 0], null, parameter.foreBrush);\n graphics.restore();\n }\n else {\n graphics.save();\n graphics.translateTransform(nativeRectangle[0], -nativeRectangle[1]);\n var x = (nativeRectangle[2] / 2) + ((nativeRectangle[2] / 4) - (fontsize[0] / 2));\n graphics.drawLine(parameter.borderPen, nativeRectangle[2] / 2, -nativeRectangle[3] / 2, nativeRectangle[0] + nativeRectangle[2], -nativeRectangle[3] / 2);\n graphics.translateTransform(x, -(nativeRectangle[3] / 2) - font._metrics._getHeight());\n graphics.drawString(area.toFixed(2) + ' ' + this._unitString, font, [0, 0, 0, 0], null, parameter.foreBrush);\n graphics.restore();\n }\n graphics.restore();\n if ((typeof _isFlatten !== 'undefined' && !_isFlatten) || !this._isLoaded) {\n if (this._dictionary.has('AP')) {\n _removeDuplicateReference(this._dictionary.get('AP'), this._crossReference, 'N');\n }\n var dic = new _PdfDictionary();\n graphics._template._content.dictionary._updated = true;\n var ref = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(ref, graphics._template._content);\n graphics._template._content.reference = ref;\n dic.set('N', ref);\n dic._updated = true;\n this._dictionary.set('AP', dic);\n var size = this._page.size;\n var rect1 = [this.bounds.x,\n size[1] - (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n if (this._isBounds) {\n nativeRectangle = rect1;\n }\n this._dictionary.update('Rect', [rect1[0], rect1[1], rect1[0] + rect1[2], rect1[1] + rect1[3]]);\n if (this._dictionary.has('Measure')) {\n _removeDuplicateReference(this._dictionary, this._crossReference, 'Measure');\n }\n var measureDictionary = this._createMeasureDictionary(this._unitString);\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, measureDictionary);\n measureDictionary._updated = true;\n this._dictionary.update('Measure', reference);\n this._dictionary.update('Subtype', new _PdfName('Circle'));\n if (this._text && this._text !== '') {\n this._dictionary.update('Contents', this._text + ' ' + area.toFixed(2) + ' ' + this._unitString);\n }\n else {\n this._dictionary.update('Contents', area.toFixed(2) + ' ' + this._unitString);\n }\n var ds = 'font:' +\n font._metrics._postScriptName +\n ' ' +\n font._size +\n 'pt; color:' +\n this._colorToHex(this.color);\n this._dictionary.update('DS', ds);\n }\n return template;\n };\n PdfCircleAnnotation.prototype._convertToUnit = function () {\n var converter = new _PdfUnitConvertor();\n var value = this._getEqualPdfGraphicsUnit(this._unit, this._unitString);\n this._unitString = value.unitString;\n var radius = converter._convertUnits(this.bounds.width / 2, _PdfGraphicsUnit.point, value.graphicsUnit);\n if (this._measureType === PdfCircleMeasurementType.diameter) {\n radius = 2 * radius;\n }\n return radius;\n };\n return PdfCircleAnnotation;\n}(PdfComment));\nexport { PdfCircleAnnotation };\n/**\n * `PdfEllipseAnnotation` class represents the ellipse annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new ellipse annotation with bounds\n * const annotation: PdfEllipseAnnotation = new PdfEllipseAnnotation(10, 10, 100, 100);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfEllipseAnnotation = /** @class */ (function (_super) {\n __extends(PdfEllipseAnnotation, _super);\n function PdfEllipseAnnotation(x, y, width, height) {\n var _this = _super.call(this) || this;\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Circle'));\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n }\n _this._type = _PdfAnnotationType.ellipseAnnotation;\n return _this;\n }\n PdfEllipseAnnotation._load = function (page, dictionary) {\n var annot = new PdfEllipseAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfEllipseAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfEllipseAnnotation.prototype._postProcess = function (isFlatten) {\n if (typeof this.bounds === 'undefined' || this.bounds === null) {\n throw new Error('Bounds cannot be null or undefined');\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dictionary);\n }\n if (!this._dictionary.has('C')) {\n this.color = [0, 0, 0];\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n this._appearanceTemplate = this._createCircleAppearance();\n }\n var size = this._page.size;\n var rect = [this.bounds.x,\n size[1] - (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n };\n PdfEllipseAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (this._isLoaded) {\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n this._appearanceTemplate = this._createCircleAppearance();\n }\n if (!this._appearanceTemplate && isFlatten && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n else {\n this._postProcess(isFlatten);\n if (!this._appearanceTemplate && isFlatten) {\n if (!this._dictionary.has('AP')) {\n this._appearanceTemplate = this._createCircleAppearance();\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n if (typeof this.flattenPopups !== 'undefined' && this.flattenPopups) {\n if (this._isLoaded) {\n this._flattenLoadedPopUp();\n }\n else {\n this._flattenPopUp();\n }\n }\n if (isFlatten && this._appearanceTemplate) {\n var isNormalMatrix = this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary);\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n if (!isFlatten && this._setAppearance) {\n var appearance = void 0;\n if (this._dictionary.has('AP')) {\n appearance = this._dictionary.get('AP');\n }\n else {\n var reference_3 = this._crossReference._getNextReference();\n appearance = new _PdfDictionary(this._crossReference);\n this._crossReference._cacheMap.set(reference_3, appearance);\n this._dictionary.update('AP', reference_3);\n }\n _removeDuplicateReference(appearance, this._crossReference, 'N');\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._appearanceTemplate._content);\n appearance.update('N', reference);\n }\n };\n return PdfEllipseAnnotation;\n}(PdfComment));\nexport { PdfEllipseAnnotation };\n/**\n * `PdfSquareAnnotation` class represents the square annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new square annotation with bounds\n * const annotation: PdfSquareAnnotation = new PdfSquareAnnotation(10, 10, 100, 100);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfSquareAnnotation = /** @class */ (function (_super) {\n __extends(PdfSquareAnnotation, _super);\n function PdfSquareAnnotation(x, y, width, height) {\n var _this = _super.call(this) || this;\n _this._unit = PdfMeasurementUnit.centimeter;\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Square'));\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n }\n _this._type = _PdfAnnotationType.squareAnnotation;\n return _this;\n }\n Object.defineProperty(PdfSquareAnnotation.prototype, \"borderEffect\", {\n /**\n * Gets the border effect of the square annotation.\n *\n * @returns {PdfBorderEffect} Border effect.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfSquareAnnotation = page.annotations.at(0) as PdfSquareAnnotation;\n * // Gets the border effect of the square annotation.\n * let borderEffect : PdfBorderEffect = annotation.borderEffect;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._borderEffect === 'undefined') {\n var value = new PdfBorderEffect();\n value._dictionary = this._dictionary;\n if (this._dictionary.has('BE')) {\n var dictionary = this._dictionary.get('BE');\n value._intensity = dictionary.get('I');\n value._style = _mapBorderEffectStyle(dictionary.get('S').name);\n }\n this._borderEffect = value;\n }\n return this._borderEffect;\n },\n /**\n * Sets the border effect of the square annotation.\n *\n * @param {PdfBorderEffect} value Border effect.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfSquareAnnotation = page.annotations.at(0) as PdfSquareAnnotation;\n * // Sets the border effect of the square annotation.\n * annotation.borderEffect.intensity = 1;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined') {\n this._borderEffect = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSquareAnnotation.prototype, \"measure\", {\n /**\n * Gets the flag to have measurement dictionary of the Square annotation.\n *\n * @returns {boolean} measure.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfSquareAnnotation = page.annotations.at(0) as PdfSquareAnnotation;\n * // Gets the flag to have measurement dictionary of the square annotation.\n * let measure: boolean = annotation.measure;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._measure === 'undefined' && this._dictionary.has('Measure')) {\n this._measure = this._dictionary.get('Measure');\n }\n return this._measure;\n },\n /**\n * Sets the flag to add measurement dictionary to the annotation.\n *\n * @param {boolean} value Measure.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfSquareAnnotation = page.annotations.at(0) as PdfSquareAnnotation;\n * // Sets the flag to have measurement dictionary of the square annotation.\n * annotation.measure = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined') {\n if (!this._isLoaded) {\n this._measure = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSquareAnnotation.prototype, \"unit\", {\n /**\n * Gets the measurement unit of the annotation.\n *\n * @returns {PdfMeasurementUnit} Measurement unit.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfSquareAnnotation = page.annotations.at(0) as PdfSquareAnnotation;\n * // Gets the measurement unit of the annotation.\n * let unit: PdfMeasurementUnit = annotation.unit;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._unit === 'undefined') {\n this._unit = PdfMeasurementUnit.centimeter;\n if (this._dictionary.has('Contents')) {\n var text = this._dictionary.get('Contents');\n this._unitString = text.substring(text.length - 2);\n this._unit = _mapMeasurementUnit(this._unitString);\n }\n }\n return this._unit;\n },\n /**\n * Sets the measurement unit of the annotation.\n *\n * @param {PdfMeasurementUnit} value Measurement unit.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfSquareAnnotation = page.annotations.at(0) as PdfSquareAnnotation;\n * // Sets the measurement unit of the annotation.\n * annotation.unit = PdfMeasurementUnit.centimeter;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._measure) {\n if (!this._isLoaded && typeof value !== 'undefined') {\n this._unit = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfSquareAnnotation._load = function (page, dictionary) {\n var annot = new PdfSquareAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfSquareAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfSquareAnnotation.prototype._postProcess = function (isFlatten) {\n if (typeof this.bounds === 'undefined' || this.bounds === null) {\n throw new Error('Bounds cannot be null or undefined');\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dictionary);\n }\n if (!this._dictionary.has('C')) {\n this.color = [0, 0, 0];\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n if (this._measure) {\n this._appearanceTemplate = this._createSquareMeasureAppearance(isFlatten);\n }\n else {\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n this._appearanceTemplate = this._createRectangleAppearance(this.borderEffect);\n }\n var size = this._page.size;\n var rect = [this.bounds.x,\n size[1] - (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n if (typeof this._intensity === 'undefined' &&\n typeof this._borderEffect !== 'undefined' &&\n this._borderEffect.style === PdfBorderEffectStyle.cloudy) {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('I', this.borderEffect._intensity);\n if (this.borderEffect._style === PdfBorderEffectStyle.cloudy) {\n dictionary.set('S', _PdfName.get('C'));\n }\n this._dictionary.update('BE', dictionary);\n }\n }\n };\n PdfSquareAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (this._isLoaded) {\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n if (this._dictionary.has('Measure')) {\n this._appearanceTemplate = this._createSquareMeasureAppearance(isFlatten);\n }\n else {\n this._appearanceTemplate = this._createRectangleAppearance(this.borderEffect);\n }\n }\n if (!this._appearanceTemplate && isFlatten && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n else {\n this._postProcess(isFlatten);\n if (!this._appearanceTemplate && isFlatten) {\n if (!this._dictionary.has('AP')) {\n this._appearanceTemplate = this._createRectangleAppearance(this.borderEffect);\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n if (typeof this.flattenPopups !== 'undefined' && this.flattenPopups && !this.measure) {\n if (this._isLoaded && !this._dictionary.has('Measure')) {\n this._flattenLoadedPopUp();\n }\n else {\n this._flattenPopUp();\n }\n }\n if (isFlatten && this._appearanceTemplate) {\n var isNormalMatrix = this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary);\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n if (!isFlatten && this._setAppearance && !this.measure) {\n var appearance = void 0;\n if (this._dictionary.has('AP')) {\n appearance = this._dictionary.get('AP');\n }\n else {\n var reference_4 = this._crossReference._getNextReference();\n appearance = new _PdfDictionary(this._crossReference);\n this._crossReference._cacheMap.set(reference_4, appearance);\n this._dictionary.update('AP', reference_4);\n }\n _removeDuplicateReference(appearance, this._crossReference, 'N');\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._appearanceTemplate._content);\n appearance.update('N', reference);\n }\n };\n PdfSquareAnnotation.prototype._createSquareMeasureAppearance = function (_isFlatten) {\n var borderWidth = this.border.width;\n var font = this._obtainFont();\n if ((typeof font === 'undefined' || font === null) || (!this._isLoaded && font.size === 1)) {\n font = this._circleCaptionFont;\n this._pdfFont = font;\n }\n var area = this._calculateAreaOfSquare();\n var format = new PdfStringFormat(PdfTextAlignment.center, PdfVerticalAlignment.middle);\n var str = area.toFixed(2) + ' sq ' + this._unitString;\n var fontsize = font.measureString(str, [0, 0], format, 0, 0);\n var borderPen = new PdfPen(this.color, borderWidth);\n var backBrush;\n if (this.innerColor) {\n backBrush = new PdfBrush(this._innerColor);\n }\n var nativeRectangle = [this.bounds.x,\n (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n var appearanceBounds = [this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height];\n var appearance = new PdfAppearance(this, appearanceBounds);\n nativeRectangle[1] = nativeRectangle[1] - nativeRectangle[3];\n appearance.normal = new PdfTemplate(nativeRectangle, this._crossReference);\n var template = appearance.normal;\n var parameter = new _PaintParameter();\n template._writeTransformation = false;\n var graphics = appearance.normal.graphics;\n var width = borderWidth / 2;\n parameter.borderPen = borderPen;\n parameter.backBrush = backBrush;\n parameter.foreBrush = new PdfBrush(this.color);\n var rect = [nativeRectangle[0],\n -nativeRectangle[1] - nativeRectangle[3],\n nativeRectangle[2],\n nativeRectangle[3]];\n graphics.drawRectangle(rect[0] + width, rect[1] + width, rect[2] - borderWidth, rect[3] - borderWidth, new PdfPen(this.color, this.border.width));\n graphics.save();\n graphics.translateTransform(nativeRectangle[0], -nativeRectangle[1]);\n var x = (nativeRectangle[2] / 2) - (fontsize[0] / 2);\n var y = (nativeRectangle[3] / 2) - (fontsize[1] / 2);\n graphics.translateTransform(x, -y - font._metrics._getHeight());\n graphics.drawString((area.toFixed(2) + ' sq ' + this._unitString), font, [0, 0, 0, 0], null, parameter.foreBrush);\n graphics.restore();\n if ((typeof _isFlatten !== 'undefined' && !_isFlatten) || !this._isLoaded) {\n if (this._dictionary.has('AP')) {\n _removeDuplicateReference(this._dictionary.get('AP'), this._crossReference, 'N');\n }\n var dic = new _PdfDictionary();\n var tem = graphics._template._content;\n tem.dictionary._updated = true;\n var ref = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(ref, tem);\n graphics._template._content.reference = ref;\n dic.set('N', ref);\n dic._updated = true;\n this._dictionary.set('AP', dic);\n var nativeRectangle1 = [this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height];\n var size = this._page.size;\n nativeRectangle1[1] = size[1] - (this.bounds.y + this.bounds.height);\n nativeRectangle1[2] = (this.bounds.x + this.bounds.width);\n nativeRectangle1[3] = size[1] - this.bounds.y;\n if (this._isBounds) {\n nativeRectangle = nativeRectangle1;\n }\n this._dictionary.update('Rect', [nativeRectangle1[0], nativeRectangle1[1], nativeRectangle1[2], nativeRectangle1[3]]);\n if (this._dictionary.has('Measure')) {\n _removeDuplicateReference(this._dictionary, this._crossReference, 'Measure');\n }\n var reference = this._crossReference._getNextReference();\n var measureDictionary = this._createMeasureDictionary(this._unitString);\n this._crossReference._cacheMap.set(reference, measureDictionary);\n measureDictionary._updated = true;\n this._dictionary.update('Measure', reference);\n var ds = 'font:' +\n font._metrics._postScriptName +\n ' ' +\n font._size +\n 'pt; color:' +\n this._colorToHex(this.color);\n this._dictionary.update('DS', ds);\n if (this._text && this._text !== '') {\n this._dictionary.update('Contents', this._text + ' ' + area.toFixed(2) + ' sq ' + this._unitString);\n }\n else {\n this._dictionary.update('Contents', area.toFixed(2) + ' sq ' + this._unitString);\n }\n this._dictionary.update('Subject', ('Area Measurement'));\n if (typeof this.subject === 'undefined') {\n this._dictionary.update('Subject', ('Area Measurement'));\n }\n this._dictionary.update('MeasurementTypes', 129);\n this._dictionary.update('Subtype', new _PdfName('Square'));\n this._dictionary.update('IT', new _PdfName('SquareDimension'));\n var elements = this._dictionary.getArray('Rect');\n var vertices = new Array(elements.length * 2);\n vertices[0] = elements[0];\n vertices[1] = elements[3];\n vertices[2] = elements[0];\n vertices[3] = elements[1];\n vertices[4] = elements[2];\n vertices[5] = elements[1];\n vertices[6] = elements[2];\n vertices[7] = elements[3];\n this._dictionary.update('Vertices', vertices);\n }\n return template;\n };\n PdfSquareAnnotation.prototype._calculateAreaOfSquare = function () {\n var area;\n var converter = new _PdfUnitConvertor();\n var value;\n if (this.bounds.width === this.bounds.height) {\n value = this._getEqualPdfGraphicsUnit(this._unit, this._unitString);\n this._unitString = value.unitString;\n var width = converter._convertUnits(this.bounds.width, _PdfGraphicsUnit.point, value.graphicsUnit);\n area = width * width;\n }\n else {\n value = this._getEqualPdfGraphicsUnit(this._unit, this._unitString);\n this._unitString = value.unitString;\n var width = converter._convertUnits(this.bounds.width, _PdfGraphicsUnit.point, value.graphicsUnit);\n value = this._getEqualPdfGraphicsUnit(this._unit, this._unitString);\n this._unitString = value.unitString;\n var height = converter._convertUnits(this.bounds.height, _PdfGraphicsUnit.point, value.graphicsUnit);\n area = width * height;\n }\n return area;\n };\n return PdfSquareAnnotation;\n}(PdfComment));\nexport { PdfSquareAnnotation };\n/**\n * `PdfRectangleAnnotation` class represents the rectangle annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new square annotation with bounds\n * const annotation: PdfRectangleAnnotation = new PdfRectangleAnnotation(10, 10, 200, 100);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfRectangleAnnotation = /** @class */ (function (_super) {\n __extends(PdfRectangleAnnotation, _super);\n function PdfRectangleAnnotation(x, y, width, height) {\n var _this = _super.call(this) || this;\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Square'));\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n }\n _this._type = _PdfAnnotationType.rectangleAnnotation;\n return _this;\n }\n Object.defineProperty(PdfRectangleAnnotation.prototype, \"borderEffect\", {\n /**\n * Gets the border effect of the rectangle annotation.\n *\n * @returns {PdfBorderEffect} Border effect.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRectangleAnnotation = page.annotations.at(0) as PdfRectangleAnnotation;\n * // Gets the border effect of the rectangle annotation.\n * let borderEffect: PdfBorderEffect = annotation.borderEffect;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._borderEffect === 'undefined') {\n var value = new PdfBorderEffect();\n value._dictionary = this._dictionary;\n if (this._dictionary.has('BE')) {\n var dictionary = this._dictionary.get('BE');\n value._intensity = dictionary.get('I');\n value._style = _mapBorderEffectStyle(dictionary.get('S').name);\n }\n this._borderEffect = value;\n }\n return this._borderEffect;\n },\n /**\n * Sets the border effect of the rectangle annotation.\n *\n * @param {PdfBorderEffect} value Border effect.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRectangleAnnotation = page.annotations.at(0) as PdfRectangleAnnotation;\n * // Sets the border effect of rectangle annotation.\n * annotation. borderEffect.style = PdfBorderEffectStyle.cloudy;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined') {\n this._borderEffect = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfRectangleAnnotation._load = function (page, dictionary) {\n var annot = new PdfRectangleAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfRectangleAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfRectangleAnnotation.prototype._postProcess = function (isFlatten) {\n if (typeof this.bounds === 'undefined' || this.bounds === null) {\n throw new Error('Bounds cannot be null or undefined');\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dic = new _PdfDictionary(this._crossReference);\n dic.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dic);\n }\n if (!this._dictionary.has('C')) {\n this.color = [0, 0, 0];\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n this._appearanceTemplate = this._createRectangleAppearance(this.borderEffect);\n }\n var size = this._page.size;\n var rect = [this.bounds.x,\n size[1] - (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n if (typeof this._intensity === 'undefined' &&\n typeof this._borderEffect !== 'undefined' &&\n this._borderEffect.style === PdfBorderEffectStyle.cloudy) {\n var dic = new _PdfDictionary(this._crossReference);\n dic.set('I', this.borderEffect._intensity);\n if (this.borderEffect._style === PdfBorderEffectStyle.cloudy) {\n dic.set('S', _PdfName.get('C'));\n }\n this._dictionary.update('BE', dic);\n }\n };\n PdfRectangleAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (this._isLoaded) {\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n this._appearanceTemplate = this._createRectangleAppearance(this.borderEffect);\n }\n if (!this._appearanceTemplate && isFlatten && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n else {\n this._postProcess(isFlatten);\n if (!this._appearanceTemplate && isFlatten) {\n if (!this._dictionary.has('AP')) {\n this._appearanceTemplate = this._createRectangleAppearance(this.borderEffect);\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n if (typeof this.flattenPopups !== 'undefined' && this.flattenPopups) {\n if (this._isLoaded) {\n this._flattenLoadedPopUp();\n }\n else {\n this._flattenPopUp();\n }\n }\n if (isFlatten && this._appearanceTemplate) {\n var isNormalMatrix = this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary);\n if (isNormalMatrix && this._page.rotation !== PdfRotationAngle.angle0 ||\n this._isValidTemplateMatrix(this._appearanceTemplate._content.dictionary, this.bounds, this._appearanceTemplate)) {\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n }\n if (!isFlatten && this._setAppearance) {\n var appearance = void 0;\n if (this._dictionary.has('AP')) {\n appearance = this._dictionary.get('AP');\n }\n else {\n var reference_5 = this._crossReference._getNextReference();\n appearance = new _PdfDictionary(this._crossReference);\n this._crossReference._cacheMap.set(reference_5, appearance);\n this._dictionary.update('AP', reference_5);\n }\n _removeDuplicateReference(appearance, this._crossReference, 'N');\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._appearanceTemplate._content);\n appearance.update('N', reference);\n }\n };\n PdfRectangleAnnotation.prototype._isValidTemplateMatrix = function (dictionary, bounds, appearanceTemplate) {\n var isValidMatrix = true;\n var pointF = bounds;\n if (dictionary && dictionary.has('Matrix')) {\n var box = dictionary.getArray('BBox');\n var matrix = dictionary.getArray('Matrix');\n if (matrix && box && matrix.length > 3 && box.length > 2) {\n if (typeof matrix[0] !== 'undefined' &&\n typeof matrix[1] !== 'undefined' &&\n typeof matrix[2] !== 'undefined' &&\n typeof matrix[3] !== 'undefined') {\n if (matrix[0] === 1 && matrix[1] === 0 && matrix[2] === 0 && matrix[3] === 1) {\n if (typeof box[0] !== 'undefined' &&\n typeof box[1] !== 'undefined' &&\n typeof box[2] !== 'undefined' &&\n typeof box[3] !== 'undefined') {\n if (Math.round(box[0]) !== Math.round(-(matrix[4])) && Math.round(box[1]) !== Math.round(-(matrix[5])) ||\n box[0] === 0 && Math.round(-(matrix[4])) === 0) {\n var graphics = this._page.graphics;\n var state = graphics.save();\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n graphics.setTransparency(this._opacity);\n }\n pointF.x -= box[0];\n pointF.y += box[1];\n graphics._drawTemplate(appearanceTemplate, pointF);\n graphics.restore(state);\n this._removeAnnotationFromPage(this._page, this);\n isValidMatrix = false;\n }\n }\n }\n }\n }\n }\n return isValidMatrix;\n };\n return PdfRectangleAnnotation;\n}(PdfComment));\nexport { PdfRectangleAnnotation };\n/**\n * `PdfPolygonAnnotation` class represents the polygon annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new polygon annotation with bounds\n * const annotation: PdfPolygonAnnotation = new PdfPolygonAnnotation([100, 300, 150, 200, 300, 200, 350, 300, 300, 400, 150, 400]);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPolygonAnnotation = /** @class */ (function (_super) {\n __extends(PdfPolygonAnnotation, _super);\n function PdfPolygonAnnotation(points) {\n var _this = _super.call(this) || this;\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Polygon'));\n if (typeof points !== 'undefined') {\n _this._points = points;\n }\n _this._type = _PdfAnnotationType.polygonAnnotation;\n return _this;\n }\n Object.defineProperty(PdfPolygonAnnotation.prototype, \"borderEffect\", {\n /**\n * Gets the border effect of the polygon annotation.\n *\n * @returns {PdfBorderEffect} Border effect.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPolygonAnnotation = page.annotations.at(0) as PdfPolygonAnnotation;\n * // Gets the border effect of the polygon annotation.\n * let borderEffect: PdfBorderEffect = annotation.borderEffect;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._borderEffect === 'undefined') {\n var value = new PdfBorderEffect();\n value._dictionary = this._dictionary;\n if (this._dictionary.has('BE')) {\n var dictionary = this._dictionary.get('BE');\n value._intensity = dictionary.get('I');\n value._style = _mapBorderEffectStyle(dictionary.get('S').name);\n }\n this._borderEffect = value;\n }\n return this._borderEffect;\n },\n /**\n * Sets the border effect of the polygon annotation.\n *\n * @param {PdfBorderEffect} value Border effect.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPolygonAnnotation = page.annotations.at(0) as PdfPolygonAnnotation;\n * // Sets the border effect of the polygon annotation\n * annotation.borderEffect.style = PdfBorderEffectStyle.cloudy ;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined') {\n this._borderEffect = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPolygonAnnotation.prototype, \"lineExtension\", {\n /**\n * Gets the line extension of the polygon annotation.\n *\n * @returns {number} Line extension.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPolygonAnnotation = page.annotations.at(0) as PdfPolygonAnnotation;\n * // Gets the line extension of the polygon annotation\n * let lineExtension: number = annotation.lineExtension;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._lineExtension === 'undefined' && this._dictionary.has('LLE')) {\n var lineExt = this._dictionary.get('LLE');\n if (typeof lineExt !== 'undefined' && lineExt >= 0) {\n this._lineExtension = lineExt;\n }\n }\n return this._lineExtension;\n },\n /**\n * Sets the line extension of the polygon annotation.\n *\n * @param {number} value Line extension.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPolygonAnnotation = page.annotations.at(0) as PdfPolygonAnnotation;\n * // Sets the line extension of the polygon annotation\n * annotation.lineExtension = 5;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (!Number.isNaN(value)) {\n if (value >= 0) {\n this._dictionary.update('LLE', value);\n this._lineExtension = value;\n }\n else {\n throw new Error('LineExtension should be non negative number');\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n PdfPolygonAnnotation._load = function (page, dictionary) {\n var annot = new PdfPolygonAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfPolygonAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfPolygonAnnotation.prototype._postProcess = function (isFlatten) {\n if (typeof this._points === 'undefined' || this._points === null) {\n throw new Error('Points cannot be null or undefined');\n }\n if (!this._dictionary.has('LLE')) {\n this.lineExtension = 0;\n }\n if (!this._dictionary.has('C')) {\n this.color = [0, 0, 0];\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dic = new _PdfDictionary(this._crossReference);\n dic.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dic);\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n var array = [];\n for (var i = 0; i < this._points.length; i++) {\n var value = this._points[Number.parseInt(i.toString(), 10)];\n array.push(value);\n }\n if (array[0] !== array[array.length - 2] || array[1] !== array[array.length - 1]) {\n array[array.length] = this._points[0];\n array[array.length] = this._points[1];\n }\n this._points = array;\n var polygonBounds = this._getBoundsValue(this._points);\n var bounds = [polygonBounds.x,\n polygonBounds.y,\n polygonBounds.x + polygonBounds.width,\n polygonBounds.y + polygonBounds.height];\n this._dictionary.update('Rect', bounds);\n this._dictionary.update('LLE', this._lineExtension);\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n this._appearanceTemplate = this._createPolygonAppearance(isFlatten);\n }\n this._dictionary.update('Vertices', this._points);\n if (typeof this._intensity === 'undefined' &&\n typeof this._borderEffect !== 'undefined' &&\n this._borderEffect.style === PdfBorderEffectStyle.cloudy) {\n var dic = new _PdfDictionary(this._crossReference);\n dic.set('I', this.borderEffect._intensity);\n if (this.borderEffect._style === PdfBorderEffectStyle.cloudy) {\n dic.set('S', _PdfName.get('C'));\n }\n this._dictionary.update('BE', dic);\n }\n };\n PdfPolygonAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (this._isLoaded) {\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n this._appearanceTemplate = this._createPolygonAppearance(isFlatten);\n }\n if (!this._appearanceTemplate && isFlatten && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n else {\n this._postProcess(isFlatten);\n if (!this._appearanceTemplate && isFlatten) {\n if (!this._dictionary.has('AP')) {\n this._appearanceTemplate = this._createPolygonAppearance(isFlatten);\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n if (typeof this.flattenPopups !== 'undefined' && this.flattenPopups) {\n if (this._isLoaded) {\n this._flattenLoadedPopUp();\n }\n }\n if (isFlatten) {\n if (this._appearanceTemplate) {\n var isNormalMatrix = this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary);\n if (!this._appearanceTemplate._content.dictionary.has('Matrix')) {\n var box = this._appearanceTemplate._content.dictionary.getArray('BBox');\n if (box && box.length >= 2) {\n this._appearanceTemplate._content.dictionary.update('Matrix', [1, 0, 0, 1, -box[0], -box[1]]);\n }\n }\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n else {\n this._removeAnnotationFromPage(this._page, this);\n }\n }\n if (!isFlatten && this._setAppearance) {\n var appearance = void 0;\n if (this._dictionary.has('AP')) {\n appearance = this._dictionary.get('AP');\n }\n else {\n var reference_6 = this._crossReference._getNextReference();\n appearance = new _PdfDictionary(this._crossReference);\n this._crossReference._cacheMap.set(reference_6, appearance);\n this._dictionary.update('AP', reference_6);\n }\n _removeDuplicateReference(appearance, this._crossReference, 'N');\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._appearanceTemplate._content);\n appearance.update('N', reference);\n }\n };\n PdfPolygonAnnotation.prototype._createPolygonAppearance = function (flatten) {\n if (typeof flatten !== 'undefined' && flatten) {\n var borderPen = void 0;\n if (this.color && this.border.width > 0) {\n borderPen = new PdfPen(this.color, this.border.width);\n }\n var backgroundBrush = void 0;\n if (this.innerColor) {\n backgroundBrush = new PdfBrush(this.innerColor);\n }\n var graphics = this._page.graphics;\n if (borderPen || backgroundBrush) {\n var state = void 0;\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n state = graphics.save();\n graphics.setTransparency(this._opacity);\n }\n if (this.borderEffect.intensity !== 0 && this.borderEffect.style === PdfBorderEffectStyle.cloudy) {\n var radius = this.borderEffect.intensity * 4 + 0.5 * this.border.width;\n var graphicsPath = new _PdfPath();\n graphicsPath._addPolygon(this._getLinePoints());\n this._drawCloudStyle(graphics, backgroundBrush, borderPen, radius, 0.833, graphicsPath._points, false);\n }\n else {\n graphics.drawPolygon(this._getLinePoints(), borderPen, backgroundBrush);\n }\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n graphics.restore(state);\n }\n }\n return graphics._template;\n }\n else {\n var boundsValue = void 0;\n var rect = { x: 0, y: 0, width: 0, height: 0 };\n if (typeof this._points === 'undefined' && this._dictionary.has('Vertices')) {\n this._points = this._dictionary.get('Vertices');\n boundsValue = this._getBoundsValue(this._points);\n }\n else {\n boundsValue = this._getBoundsValue(this._points);\n }\n if (typeof this._borderEffect !== 'undefined' &&\n typeof this.borderEffect.intensity !== 'undefined' && this.borderEffect.intensity !== 0 &&\n this._borderEffect.style === PdfBorderEffectStyle.cloudy) {\n rect.x = boundsValue.x - (this.borderEffect.intensity * 5) - this.border.width;\n rect.y = boundsValue.y - (this.borderEffect.intensity * 5) - this.border.width;\n rect.width = boundsValue.width + (this.borderEffect.intensity * 10) + (2 * this.border.width);\n rect.height = boundsValue.height + (this.borderEffect.intensity * 10) + (2 * this.border.width);\n }\n else {\n rect.x = boundsValue.x - this.border.width;\n rect.y = boundsValue.y - this.border.width;\n rect.width = boundsValue.width + (2 * this.border.width);\n rect.height = boundsValue.height + (2 * this.border.width);\n }\n var appearance = new PdfAppearance(this, [rect.x, rect.y, rect.width, rect.height]);\n appearance.normal = new PdfTemplate([rect.x, rect.y, rect.width, rect.height], this._crossReference);\n var template = appearance.normal;\n _setMatrix(template, this._getRotationAngle());\n template._writeTransformation = false;\n var graphics = appearance.normal.graphics;\n var parameter = new _PaintParameter();\n if (this.innerColor) {\n parameter.backBrush = new PdfBrush(this._innerColor);\n }\n if (this.border.width > 0 && this.color) {\n parameter.borderPen = new PdfPen(this._color, this.border.width);\n }\n if (this.color) {\n parameter.foreBrush = new PdfBrush(this._color);\n }\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n graphics.save();\n graphics.setTransparency(this._opacity);\n }\n else {\n graphics.save();\n }\n if (this.borderEffect.intensity !== 0 && this.borderEffect.style === PdfBorderEffectStyle.cloudy) {\n var radius = this.borderEffect.intensity * 4 + 0.5 * this.border.width;\n var graphicsPath = new _PdfPath();\n graphicsPath._addPolygon(this._getLinePoints());\n this._drawCloudStyle(graphics, parameter.backBrush, parameter.borderPen, radius, 0.833, graphicsPath._points, false);\n }\n else {\n graphics.drawPolygon(this._getLinePoints(), parameter.borderPen, parameter.backBrush);\n }\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n graphics.restore();\n }\n graphics.restore();\n if (this._isBounds) {\n template._content.dictionary._updated = true;\n this._dictionary.update('LLE', this.lineExtension);\n this._dictionary.update('Vertices', this._points);\n }\n this._dictionary.update('Rect', [rect.x, rect.y, rect.x + rect.width, rect.y + rect.height]);\n return template;\n }\n };\n PdfPolygonAnnotation.prototype._getLinePoints = function () {\n var polygonPoints;\n var pageSize = this._page.size;\n var pageHeight = pageSize[1];\n var pageWidth = pageSize[0];\n if (this._dictionary.has('Vertices') && !this._isBounds) {\n var rotation = void 0;\n if (this._page._pageDictionary.has('Rotate')) {\n rotation = this._page._pageDictionary.get('Rotate');\n }\n if (this._page.rotation) {\n if (this._page.rotation === PdfRotationAngle.angle90) {\n rotation = 90;\n }\n else if (this._page.rotation === PdfRotationAngle.angle180) {\n rotation = 180;\n }\n else if (this._page.rotation === PdfRotationAngle.angle270) {\n rotation = 270;\n }\n }\n var linePoints = this._dictionary.getArray('Vertices');\n if (linePoints) {\n var points_1 = [];\n linePoints.forEach(function (value) {\n points_1.push(value);\n });\n polygonPoints = [];\n for (var j = 0; j < points_1.length; j = j + 2) {\n polygonPoints.push([points_1[Number.parseInt(j.toString(), 10)], (pageHeight - points_1[j + 1])]);\n }\n if (rotation) {\n if (rotation === 270) {\n for (var k = 0; k < polygonPoints.length; k++) {\n var x = polygonPoints[Number.parseInt(k.toString(), 10)][0];\n polygonPoints[Number.parseInt(k.toString(), 10)][0] = polygonPoints[Number.parseInt(k.toString(), 10)][1];\n polygonPoints[Number.parseInt(k.toString(), 10)][1] = pageWidth - x;\n }\n }\n else if (rotation === 90) {\n for (var k = 0; k < polygonPoints.length; k++) {\n var x = polygonPoints[Number.parseInt(k.toString(), 10)][0];\n if (this._page._origin[1] !== 0) {\n polygonPoints[Number.parseInt(k.toString(), 10)][0] = pageHeight -\n (polygonPoints[Number.parseInt(k.toString(), 10)][1] - pageHeight);\n }\n else {\n polygonPoints[Number.parseInt(k.toString(), 10)][0] = pageHeight -\n polygonPoints[Number.parseInt(k.toString(), 10)][1];\n }\n polygonPoints[Number.parseInt(k.toString(), 10)][1] = x;\n }\n }\n else if (rotation === 180) {\n for (var k = 0; k < polygonPoints.length; k++) {\n var x = polygonPoints[Number.parseInt(k.toString(), 10)][0];\n polygonPoints[Number.parseInt(k.toString(), 10)][0] = pageWidth - x;\n polygonPoints[Number.parseInt(k.toString(), 10)][1] = pageHeight -\n polygonPoints[Number.parseInt(k.toString(), 10)][1];\n }\n }\n }\n }\n }\n else if (this._points !== null) {\n var points_2 = [];\n this._points.forEach(function (value) {\n points_2.push(value);\n });\n polygonPoints = [];\n for (var j = 0; j < this._points.length; j = j + 2) {\n if (this.flatten) {\n polygonPoints.push([points_2[Number.parseInt(j.toString(), 10)], (pageHeight - points_2[j + 1])]);\n }\n else {\n polygonPoints.push([points_2[Number.parseInt(j.toString(), 10)], -points_2[j + 1]]);\n }\n }\n }\n return polygonPoints;\n };\n return PdfPolygonAnnotation;\n}(PdfComment));\nexport { PdfPolygonAnnotation };\n/**\n * `PdfPolyLineAnnotation` class represents the polyline annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new poly line annotation with bounds\n * const annotation: PdfPolyLineAnnotation = new PdfPolyLineAnnotation ([100, 300, 150, 200, 300, 200, 350, 300, 300, 400, 150, 400]);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPolyLineAnnotation = /** @class */ (function (_super) {\n __extends(PdfPolyLineAnnotation, _super);\n function PdfPolyLineAnnotation(points) {\n var _this = _super.call(this) || this;\n _this._beginLine = PdfLineEndingStyle.none;\n _this._endLine = PdfLineEndingStyle.none;\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('PolyLine'));\n if (typeof points !== 'undefined') {\n _this._points = points;\n }\n _this._type = _PdfAnnotationType.polyLineAnnotation;\n return _this;\n }\n Object.defineProperty(PdfPolyLineAnnotation.prototype, \"beginLineStyle\", {\n /**\n * Gets the begin line ending style of the annotation.\n *\n * @returns {PdfLineEndingStyle} Begin line ending style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPolyLineAnnotation = page.annotations.at(0) as PdfPolyLineAnnotation;\n * // Gets the begin line ending style of the annotation.\n * let beginLineStyle: PdfLineEndingStyle = annotation.beginLineStyle;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('LE')) {\n var lineStyles = this._dictionary.getArray('LE');\n if (lineStyles && Array.isArray(lineStyles)) {\n this._beginLine = _mapLineEndingStyle(lineStyles[0].name);\n }\n }\n return this._beginLine;\n },\n /**\n * Sets the begin line ending style of the annotation.\n *\n * @param {PdfLineEndingStyle} value Begin line ending style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPolyLineAnnotation = page.annotations.at(0) as PdfPolyLineAnnotation;\n * // Sets the begin line ending style of the annotation.\n * annotation.beginLineStyle = PdfLineEndingStyle.slash;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._beginLine) {\n this._beginLine = value;\n if (this._dictionary) {\n var lineStyle = [];\n lineStyle.push(_PdfName.get(_reverseMapEndingStyle(value)));\n lineStyle.push(_PdfName.get(_reverseMapEndingStyle(this.endLineStyle)));\n this._dictionary.update('LE', lineStyle);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPolyLineAnnotation.prototype, \"endLineStyle\", {\n /**\n * Gets the end line ending style of the annotation.\n *\n * @returns {PdfLineEndingStyle} End line ending style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPolyLineAnnotation = page.annotations.at(0) as PdfPolyLineAnnotation;\n * // Gets the end line ending style of the annotation.\n * let endLineStyle: PdfLineEndingStyle = annotation.endLineStyle;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('LE')) {\n var lineStyles = this._dictionary.getArray('LE');\n if (lineStyles && Array.isArray(lineStyles)) {\n this._endLine = _mapLineEndingStyle(lineStyles[1].name);\n }\n }\n return this._endLine;\n },\n /**\n * Sets the end line ending style of the annotation.\n *\n * @param {PdfLineEndingStyle} value End line ending style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPolyLineAnnotation = page.annotations.at(0) as PdfPolyLineAnnotation;\n * // Sets the end line ending style of the annotation.\n * annotation.endLineStyle = PdfLineEndingStyle.square;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._endLine) {\n this._endLine = value;\n if (this._dictionary) {\n var lineStyle = [];\n lineStyle.push(_PdfName.get(_reverseMapEndingStyle(this.beginLineStyle)));\n lineStyle.push(_PdfName.get(_reverseMapEndingStyle(value)));\n this._dictionary.update('LE', lineStyle);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPolyLineAnnotation.prototype, \"lineExtension\", {\n /**\n * Gets the line extension of the square annotation.\n *\n * @returns {number} Line extension.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPolyLineAnnotation = page.annotations.at(0) as PdfPolyLineAnnotation;\n * // Gets the line extension of annotation.\n * let lineExtension: number = annotation.lineExtension;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._lineExtension === 'undefined' && this._dictionary.has('LLE')) {\n var lineExt = this._dictionary.get('LLE');\n if (typeof lineExt !== 'undefined' && lineExt >= 0) {\n this._lineExtension = lineExt;\n }\n }\n return this._lineExtension;\n },\n /**\n * Sets the line extension of the square annotation.\n *\n * @param {number} value Line extension.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPolyLineAnnotation = page.annotations.at(0) as PdfPolyLineAnnotation;\n * // Sets the line extension of the annotation.\n * annotation.lineExtension = 3;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (!Number.isNaN(value)) {\n if (value >= 0) {\n this._dictionary.update('LLE', value);\n this._lineExtension = value;\n }\n else {\n throw new Error('LineExtension should be non negative number');\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfPolyLineAnnotation._load = function (page, dictionary) {\n var annot = new PdfPolyLineAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfPolyLineAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfPolyLineAnnotation.prototype._postProcess = function (isFlatten) {\n if (typeof this._points === 'undefined' || this._points === null) {\n throw new Error('Points cannot be null or undefined');\n }\n if (!this._dictionary.has('LLE')) {\n this.lineExtension = 0;\n }\n if (!this._dictionary.has('C')) {\n this.color = [0, 0, 0];\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dictionary);\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n var points = this._getLinePoints();\n var pathTypes = [];\n pathTypes.push(0);\n for (var i = 1; i < points.length; i++) {\n pathTypes.push(1);\n }\n this._polylinePoints = points;\n this._pathTypes = pathTypes;\n var path = new _PdfPath();\n path._points = points;\n path._pathTypes = pathTypes;\n this._dictionary.update('Vertices', this._points);\n var lineStyle = [];\n lineStyle.push(_PdfName.get(_reverseMapEndingStyle(this.beginLineStyle)));\n lineStyle.push(_PdfName.get(_reverseMapEndingStyle(this.endLineStyle)));\n this._dictionary.update('LE', lineStyle);\n this._dictionary.update('LLE', this._lineExtension);\n var polyLineBounds = this._getBoundsValue(this._points);\n var rectangle = [polyLineBounds.x,\n polyLineBounds.y,\n polyLineBounds.x + polyLineBounds.width,\n polyLineBounds.y + polyLineBounds.height];\n this._dictionary.update('Rect', rectangle);\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n this._appearanceTemplate = this._createPolyLineAppearance(isFlatten);\n }\n };\n PdfPolyLineAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (this._isLoaded) {\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n this._appearanceTemplate = this._createPolyLineAppearance(isFlatten);\n }\n if (!this._appearanceTemplate && isFlatten && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n else {\n this._postProcess(isFlatten);\n if (!this._appearanceTemplate && isFlatten) {\n if (!this._dictionary.has('AP')) {\n this._appearanceTemplate = this._createPolyLineAppearance(isFlatten);\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n if (typeof this.flattenPopups !== 'undefined' && this.flattenPopups) {\n if (this._isLoaded) {\n this._flattenLoadedPopUp();\n }\n }\n if (isFlatten) {\n if (this._appearanceTemplate) {\n var isNormalMatrix = this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary);\n if (!this._appearanceTemplate._content.dictionary.has('Matrix')) {\n var box = this._appearanceTemplate._content.dictionary.getArray('BBox');\n if (box) {\n this._appearanceTemplate._content.dictionary.update('Matrix', [1, 0, 0, 1, -box[0], -box[1]]);\n }\n }\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n else {\n this._removeAnnotationFromPage(this._page, this);\n }\n }\n if (!isFlatten && this._setAppearance) {\n var appearance = void 0;\n if (this._dictionary.has('AP')) {\n appearance = this._dictionary.get('AP');\n }\n else {\n var reference_7 = this._crossReference._getNextReference();\n appearance = new _PdfDictionary(this._crossReference);\n this._crossReference._cacheMap.set(reference_7, appearance);\n this._dictionary.update('AP', reference_7);\n }\n _removeDuplicateReference(appearance, this._crossReference, 'N');\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._appearanceTemplate._content);\n appearance.update('N', reference);\n }\n };\n PdfPolyLineAnnotation.prototype._createPolyLineAppearance = function (flatten) {\n if (typeof flatten !== 'undefined' && flatten) {\n var borderPen = void 0;\n if (this.color && this.border.width > 0) {\n borderPen = new PdfPen(this.color, this.border.width);\n }\n var graphics = this._page.graphics;\n if (borderPen) {\n var state = void 0;\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n state = graphics.save();\n graphics.setTransparency(this._opacity);\n }\n var points = this._getLinePoints();\n var pathTypes = [];\n pathTypes.push(0);\n if (points && points.length > 0) {\n for (var i = 1; i < points.length; i++) {\n pathTypes.push(1);\n }\n var path = new _PdfPath();\n path._points = points;\n path._pathTypes = pathTypes;\n graphics._drawPath(path, borderPen);\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n graphics.restore(state);\n }\n }\n }\n return graphics._template;\n }\n else {\n var boundsValue = void 0;\n var rect = { x: 0, y: 0, width: 0, height: 0 };\n if (typeof this._points === 'undefined' && this._dictionary.has('Vertices')) {\n this._points = this._dictionary.get('Vertices');\n boundsValue = this._getBoundsValue(this._points);\n }\n else {\n boundsValue = this._getBoundsValue(this._points);\n }\n rect.x = boundsValue.x - this.border.width;\n rect.y = boundsValue.y - this.border.width;\n rect.width = boundsValue.width + (2 * this.border.width);\n rect.height = boundsValue.height + (2 * this.border.width);\n var appearance = new PdfAppearance(this, [rect.x, rect.y, rect.width, rect.height]);\n appearance.normal = new PdfTemplate([rect.x, rect.y, rect.width, rect.height], this._crossReference);\n var template = appearance.normal;\n _setMatrix(template, this._getRotationAngle());\n template._writeTransformation = false;\n var graphics = appearance.normal.graphics;\n var parameter = new _PaintParameter();\n if (this.innerColor) {\n parameter.backBrush = new PdfBrush(this._innerColor);\n }\n if (this.border.width > 0 && this.color) {\n parameter.borderPen = new PdfPen(this._color, this.border.width);\n }\n if (this.color) {\n parameter.foreBrush = new PdfBrush(this._color);\n }\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n graphics.save();\n graphics.setTransparency(this._opacity);\n }\n else {\n graphics.save();\n }\n var path = new _PdfPath();\n if (typeof this._polylinePoints !== 'undefined' && this._polylinePoints !== null) {\n path._points = this._polylinePoints;\n }\n else {\n path._points = this._getLinePoints();\n }\n if (typeof this._pathTypes !== 'undefined' && this._polylinePoints !== null) {\n path._pathTypes = this._pathTypes;\n }\n else {\n this._pathTypes = [];\n this._pathTypes.push(0);\n for (var i = 1; i < path._points.length; i++) {\n this._pathTypes.push(1);\n }\n path._pathTypes = this._pathTypes;\n }\n graphics._drawPath(path, parameter.borderPen, parameter.backBrush);\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n graphics.restore();\n }\n graphics.restore();\n if (this._isBounds) {\n template._content.dictionary._updated = true;\n var lineStyle = [];\n lineStyle.push(_PdfName.get(_reverseMapEndingStyle(this.beginLineStyle)));\n lineStyle.push(_PdfName.get(_reverseMapEndingStyle(this.endLineStyle)));\n this._dictionary.update('LE', lineStyle);\n this._dictionary.update('LLE', this.lineExtension);\n this._dictionary.update('Vertices', this._points);\n }\n this._dictionary.update('Rect', [rect.x, rect.y, rect.x + rect.width, rect.y + rect.height]);\n return template;\n }\n };\n PdfPolyLineAnnotation.prototype._getLinePoints = function () {\n var pageSize = this._page.size;\n var pageHeight = pageSize[1];\n var points;\n if (this._dictionary.has('Vertices') && !this._isBounds) {\n var linePoints = this._dictionary.getArray('Vertices');\n if (linePoints) {\n points = [];\n for (var j = 0; j < linePoints.length; j = j + 2) {\n points.push([linePoints[Number.parseInt(j.toString(), 10)], (pageHeight - linePoints[j + 1])]);\n }\n }\n }\n else if (this._points) {\n var polyLinepoints_1 = [];\n this._points.forEach(function (value) {\n polyLinepoints_1.push(value);\n });\n points = [];\n for (var j = 0; j < polyLinepoints_1.length; j = j + 2) {\n if (this.flatten) {\n points.push([polyLinepoints_1[Number.parseInt(j.toString(), 10)], (pageHeight - polyLinepoints_1[j + 1])]);\n }\n else {\n points.push([polyLinepoints_1[Number.parseInt(j.toString(), 10)], -polyLinepoints_1[j + 1]]);\n }\n }\n }\n return points;\n };\n return PdfPolyLineAnnotation;\n}(PdfComment));\nexport { PdfPolyLineAnnotation };\n/**\n * `PdfAngleMeasurementAnnotation` class represents the angle measurement annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new angle measurement annotation\n * const annotation: PdfAngleMeasurementAnnotation = new PdfAngleMeasurementAnnotation([[100, 700], [150, 650], [100, 600]]);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfAngleMeasurementAnnotation = /** @class */ (function (_super) {\n __extends(PdfAngleMeasurementAnnotation, _super);\n function PdfAngleMeasurementAnnotation(points) {\n var _this = _super.call(this) || this;\n _this._linePoints = [];\n _this._firstIntersectionPoint = [0, 0];\n _this._secondIntersectionPoint = [0, 0];\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('PolyLine'));\n if (typeof points !== 'undefined' && points.length > 0) {\n if (points.length > 6) {\n throw new Error('Points length should not be greater than 3');\n }\n _this._pointArray = points;\n for (var i = 0; i < points.length; i++) {\n _this._linePoints.push(points[Number.parseInt(i.toString(), 10)][0]);\n _this._linePoints.push(points[Number.parseInt(i.toString(), 10)][1]);\n }\n }\n _this._type = _PdfAnnotationType.angleMeasurementAnnotation;\n return _this;\n }\n Object.defineProperty(PdfAngleMeasurementAnnotation.prototype, \"measure\", {\n /**\n * Gets the flag to have measurement dictionary of the angle measurement annotation.\n *\n * @returns {boolean} measure.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfAngleMeasurementAnnotation = page.annotations.at(0) as PdfAngleMeasurementAnnotation;\n * // Gets the flag to have measurement dictionary of the angle annotation.\n * let measure: boolean = annotation.measure;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._measure === 'undefined' && this._dictionary.has('Measure')) {\n this._measure = this._dictionary.get('Measure');\n }\n return this._measure;\n },\n /**\n * Sets the flag to add measurement dictionary to the annotation.\n *\n * @param {boolean} value Measure.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfAngleMeasurementAnnotation = page.annotations.at(0) as PdfAngleMeasurementAnnotation;\n * // Sets the flag to add measurement dictionary to the annotation.\n * annotation.measure = true;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value && !this._isLoaded) {\n this._measure = value;\n this.caption.cap = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfAngleMeasurementAnnotation._load = function (page, dictionary) {\n var annot = new PdfAngleMeasurementAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfAngleMeasurementAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfAngleMeasurementAnnotation.prototype._postProcess = function () {\n if (!this._pointArray) {\n throw new Error('Points cannot be null or undefined');\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dictionary);\n }\n if (!this._dictionary.has('C')) {\n this.color = [0, 0, 0];\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n this._appearanceTemplate = this._createAngleMeasureAppearance();\n };\n PdfAngleMeasurementAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (this._isLoaded) {\n if (!isFlatten && this._setAppearance) {\n this._appearanceTemplate = this._createAngleMeasureAppearance();\n }\n if (!this._appearanceTemplate && isFlatten && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n else {\n this._postProcess();\n if (!this._appearanceTemplate) {\n if (isFlatten) {\n if (!this._dictionary.has('AP')) {\n this._appearanceTemplate = this._createAngleMeasureAppearance();\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n }\n if (isFlatten && this._appearanceTemplate) {\n var isNormalMatrix = this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary);\n if (!this._appearanceTemplate._content.dictionary.has('Matrix')) {\n var box = this._appearanceTemplate._content.dictionary.getArray('BBox');\n if (box) {\n this._appearanceTemplate._content.dictionary.update('Matrix', [1, 0, 0, 1, -box[0], -box[1]]);\n }\n }\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n };\n PdfAngleMeasurementAnnotation.prototype._createAngleMeasureAppearance = function () {\n var borderWidth = this.border.width;\n var font = this._obtainFont();\n if ((typeof font === 'undefined' || font === null) || (!this._isLoaded && font.size === 1)) {\n font = this._circleCaptionFont;\n this._pdfFont = font;\n }\n var format = new PdfStringFormat(PdfTextAlignment.center, PdfVerticalAlignment.middle);\n var angle = (this._calculateAngle() * (180.0 / Math.PI));\n if (angle < 0) {\n angle = -angle;\n }\n if (angle > 180) {\n angle = 360 - angle;\n }\n this._dictionary.update('Vertices', this._linePoints);\n var ds = 'font:' +\n font._metrics._postScriptName +\n ' ' +\n font._size +\n 'pt; color:' +\n this._colorToHex(this.color);\n this._dictionary.update('DS', ds);\n if (this.text === (' ' + angle.toFixed(2) + '°')) {\n this._dictionary.update('Contents', this.text);\n }\n else if (this.text) {\n this._dictionary.update('Contents', this.text);\n }\n if (typeof this.subject === 'undefined') {\n this._dictionary.update('Subject', 'Angle Measurement');\n }\n this._dictionary.update('MeasurementTypes', 1152);\n this._dictionary.update('Subtype', new _PdfName('PolyLine'));\n this._dictionary.update('IT', new _PdfName('PolyLineAngle'));\n var measureDictionary = new _PdfDictionary();\n var d = [];\n var t = [];\n var a = [];\n var x = [];\n var v = [];\n measureDictionary.set('Type', _PdfName.get('measureDictionary'));\n measureDictionary.set('R', '1 in = 1 in');\n measureDictionary.set('Subtype', 'RL');\n measureDictionary.set('TargetUnitConversion', 0.1388889);\n var dDictionary = new _PdfDictionary();\n dDictionary.set('U', 'in');\n dDictionary.set('Type', 'NumberFormat');\n dDictionary.set('C', 1);\n dDictionary.set('D', 1);\n dDictionary.set('SS', '');\n d.push(dDictionary);\n var tDictionary = new _PdfDictionary();\n tDictionary.set('U', '°');\n tDictionary.set('Type', 'NumberFormat');\n tDictionary.set('C', 1);\n tDictionary.set('D', 1);\n tDictionary.set('FD', true);\n tDictionary.set('SS', '');\n t.push(tDictionary);\n var aDictionary = new _PdfDictionary();\n aDictionary.set('U', 'sq in');\n aDictionary.set('Type', 'NumberFormat');\n aDictionary.set('C', 1);\n aDictionary.set('D', 1);\n aDictionary.set('FD', true);\n aDictionary.set('SS', '');\n a.push(aDictionary);\n var vDictionary = new _PdfDictionary();\n vDictionary.set('U', 'cu in');\n vDictionary.set('Type', 'NumberFormat');\n vDictionary.set('C', 1);\n vDictionary.set('D', 1);\n vDictionary.set('FD', true);\n vDictionary.set('SS', '');\n v.push(vDictionary);\n var xDictionary = new _PdfDictionary();\n xDictionary.set('U', 'in');\n xDictionary.set('Type', 'NumberFormat');\n xDictionary.set('C', 1);\n xDictionary.set('D', 1);\n xDictionary.set('SS', '');\n x.push(xDictionary);\n measureDictionary.set('D', d);\n measureDictionary.set('T', t);\n measureDictionary.set('A', a);\n measureDictionary.set('X', x);\n measureDictionary.set('V', v);\n if (this._dictionary.has('Measure')) {\n _removeDuplicateReference(this._dictionary, this._crossReference, 'Measure');\n }\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, measureDictionary);\n measureDictionary._updated = true;\n this._dictionary.update('Measure', reference);\n var rectValue = [0, 0, 0, 0];\n var boundsValue = this._getAngleBoundsValue();\n var points = this._obtainLinePoints();\n var pathTypes = [];\n pathTypes.push(0);\n for (var i = 1; i < points.length; i++) {\n pathTypes.push(1);\n }\n var graphicspath = new _PdfPath();\n graphicspath._addRectangle(points[1][0] - this._radius, -(points[1][1] + this._radius), 2 * this._radius, 2 * this._radius);\n var size = font.measureString(angle.toString() + '°', [0, 0], format, 0, 0);\n var midPoint = [(this._firstIntersectionPoint[0] + this._secondIntersectionPoint[0]) / 2,\n ((this._firstIntersectionPoint[1] + this._secondIntersectionPoint[1]) / 2)];\n var center = [points[1][0], -points[1][1]];\n var x1 = points[1][0] + this._radius * Math.cos((this._startAngle + (this._sweepAngle / 2)) * (Math.PI / 180.0));\n var y = points[1][1] + this._radius * Math.sin((this._startAngle + (this._sweepAngle / 2)) * (Math.PI / 180.0));\n var start = [midPoint[0], midPoint[1]];\n var xDiff = start[0] - center[0];\n var yDiff = start[1] - center[1];\n var midpointAngle = ((Math.atan2(yDiff, xDiff)) * (180.0 / Math.PI));\n var left = false;\n var right = false;\n var up = false;\n var down = false;\n if (midpointAngle > 0) {\n if (midpointAngle < 45) {\n right = true;\n }\n else if (midpointAngle >= 45 && midpointAngle < 135) {\n up = true;\n }\n else {\n left = true;\n }\n }\n else {\n midpointAngle = -midpointAngle;\n if (midpointAngle === 0) {\n (new _PdfPath())._addRectangle(boundsValue[0], boundsValue[1], boundsValue[2], boundsValue[3]);\n }\n else if (midpointAngle < 45) {\n right = true;\n }\n else if (midpointAngle >= 45 && midpointAngle < 135) {\n down = true;\n }\n else {\n left = true;\n }\n }\n if (rectValue[0] === 0 && rectValue[1] === 0 && rectValue[2] === 0 && rectValue[3] === 0) {\n rectValue = boundsValue;\n this.bounds = { x: boundsValue[0], y: boundsValue[1], width: boundsValue[2], height: boundsValue[3] };\n }\n var path = new _PdfPath();\n path._pathTypes = pathTypes;\n path._points = points;\n this._dictionary.set('Rect', [rectValue[0], rectValue[1], rectValue[0] + rectValue[2], rectValue[1] + rectValue[3]]);\n var appearance = new PdfAppearance(this, boundsValue);\n appearance.normal = new PdfTemplate(rectValue, this._crossReference);\n var template = appearance.normal;\n template._writeTransformation = false;\n var graphics = appearance.normal.graphics;\n var width = borderWidth / 2;\n var pen = new PdfPen(this._color, width);\n if (this.border.style === PdfBorderStyle.dashed) {\n pen._dashStyle = PdfDashStyle.dash;\n }\n var brush = new PdfBrush(this._color);\n graphics.save();\n path._addArc(points[1][0] - this._radius, points[1][1] - this._radius, 2 * this._radius, 2 * this._radius, this._startAngle, this._sweepAngle);\n graphics._drawPath(path, pen);\n if (up) {\n graphics.drawString(angle.toString() + '°', font, [x1 - (size[0] / 2), -(-y + font._metrics._getHeight() + 2), 0, 0], null, brush);\n }\n else if (right) {\n graphics.drawString(angle.toString() + '°', font, [x1 + 2, -(-y + font._metrics._getHeight() / 2), 0, 0], null, brush);\n }\n else if (left) {\n graphics.drawString(angle.toString() + '°', font, [x1 - size[0] - 2, -(-y + font._metrics._getHeight() / 2), 0, 0], null, brush);\n }\n else if (down) {\n graphics.drawString(angle.toString() + '°', font, [x1 - (size[0] / 2), (y + 2), 0, 0], null, brush);\n }\n graphics.restore();\n graphics._template._content.dictionary._updated = true;\n var reference1 = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference1, graphics._template._content);\n graphics._template._content.reference = reference1;\n if (this._dictionary.has('AP')) {\n _removeDuplicateReference(this._dictionary.get('AP'), this._crossReference, 'N');\n }\n var appearanceDictionary = new _PdfDictionary();\n appearanceDictionary.set('N', reference1);\n appearanceDictionary._updated = true;\n this._dictionary.set('AP', appearanceDictionary);\n return template;\n };\n PdfAngleMeasurementAnnotation.prototype._getAngleBoundsValue = function () {\n var points = this._obtainLinePoints();\n for (var i = 0; i < points.length; i++) {\n points[Number.parseInt(i.toString(), 10)][1] = -points[Number.parseInt(i.toString(), 10)][1];\n }\n var path = new _PdfPath();\n path._points = points;\n path._pathTypes = [0, 1, 1];\n return path._getBounds();\n };\n PdfAngleMeasurementAnnotation.prototype._obtainLinePoints = function () {\n var points;\n var collection;\n if (this._linePoints) {\n points = new Array(this._linePoints.length);\n for (var i = 0; i < this._linePoints.length; i++) {\n points[Number.parseInt(i.toString(), 10)] = this._linePoints[Number.parseInt(i.toString(), 10)];\n }\n collection = new Array(points.length / 2);\n var count = 0;\n for (var j = 0; j < points.length; j = j + 2) {\n collection[Number.parseInt(count.toString(), 10)] = [points[Number.parseInt(j.toString(), 10)], -points[j + 1]];\n count++;\n }\n }\n return collection;\n };\n PdfAngleMeasurementAnnotation.prototype._calculateAngle = function () {\n var points = [0, 0];\n if (typeof this._linePoints !== 'undefined' && this._linePoints.length === 0 && this._isLoaded) {\n if (this._dictionary.has('Vertices')) {\n this._linePoints = this._dictionary.get('Vertices');\n }\n }\n for (var i = 0; i < this._linePoints.length; i++) {\n points[Number.parseInt(i.toString(), 10)] = this._linePoints[Number.parseInt(i.toString(), 10)];\n }\n var collection = [];\n for (var j = 0; j < points.length; j = j + 2) {\n collection.push([points[Number.parseInt(j.toString(), 10)], points[j + 1]]);\n }\n var point1 = collection[0];\n var point2 = collection[1];\n var point3 = collection[2];\n var firstLineDistance = Math.sqrt(Math.pow((point2[0] - point1[0]), 2) + Math.pow((point2[1] - point1[1]), 2));\n var secondLineDistance = Math.sqrt(Math.pow((point2[0] - point3[0]), 2) + Math.pow((point2[1] - point3[1]), 2));\n this._radius = Math.min(firstLineDistance, secondLineDistance) / 4;\n var graphicsPath = new _PdfPath();\n graphicsPath._points = collection;\n graphicsPath._pathTypes = [0, 1, 1];\n var intersectionPoint1;\n var intersectionPoint2;\n var value = this._findLineCircleIntersectionPoints(point2[0], point2[1], this._radius, point1, point2, intersectionPoint1, intersectionPoint2);\n intersectionPoint1 = value.first;\n intersectionPoint2 = value.second;\n if (this._firstIntersectionPoint[0] === 0 && this._firstIntersectionPoint[1] === 0) {\n this._firstIntersectionPoint = intersectionPoint2;\n }\n intersectionPoint1 = [0, 0];\n intersectionPoint2 = [0, 0];\n value = this._findLineCircleIntersectionPoints(point2[0], point2[1], this._radius, point3, point2, intersectionPoint1, intersectionPoint2);\n intersectionPoint1 = value.first;\n intersectionPoint2 = value.second;\n if (this._secondIntersectionPoint[0] === 0 && this._secondIntersectionPoint[1] === 0) {\n this._secondIntersectionPoint = intersectionPoint2;\n }\n var xDiff = this._firstIntersectionPoint[0] - point2[0];\n var yDiff = this._firstIntersectionPoint[1] - point2[1];\n var startAngle = (Math.atan2(yDiff, xDiff) * (180.0 / Math.PI));\n xDiff = this._secondIntersectionPoint[0] - point2[0];\n yDiff = this._secondIntersectionPoint[1] - point2[1];\n var sweepAngle = (Math.atan2(yDiff, xDiff) * (180.0 / Math.PI));\n startAngle = startAngle > 0 ? startAngle = 360 - startAngle : -startAngle;\n sweepAngle = sweepAngle > 0 ? sweepAngle = 360 - sweepAngle : -sweepAngle;\n if (startAngle === 180 && sweepAngle === 0) {\n this._startAngle = startAngle;\n this._sweepAngle = 180;\n }\n else if (startAngle === 0 && sweepAngle === 180) {\n this._startAngle = sweepAngle;\n this._sweepAngle = 180;\n }\n else if (startAngle < 180) {\n if (startAngle > sweepAngle) {\n this._startAngle = sweepAngle;\n this._sweepAngle = startAngle - sweepAngle;\n }\n else if (startAngle + 180 < sweepAngle) {\n this._startAngle = sweepAngle;\n this._sweepAngle = (360 - sweepAngle) + startAngle;\n }\n else {\n this._startAngle = startAngle;\n this._sweepAngle = sweepAngle - startAngle;\n }\n }\n else {\n if (startAngle < sweepAngle) {\n this._startAngle = startAngle;\n this._sweepAngle = sweepAngle - startAngle;\n }\n else if (startAngle - 180 > sweepAngle) {\n this._startAngle = startAngle;\n this._sweepAngle = (360 - startAngle) + sweepAngle;\n }\n else {\n this._startAngle = sweepAngle;\n this._sweepAngle = startAngle - sweepAngle;\n }\n }\n return (Math.atan2((point3[0] - point2[0]), (point3[1] - point2[1])) -\n Math.atan2((point1[0] - point2[0]), (point1[1] - point2[1])));\n };\n PdfAngleMeasurementAnnotation.prototype._findLineCircleIntersectionPoints = function (centerX, centerY, radius, point1, point2, intersection1, intersection2) {\n var dx = point2[0] - point1[0];\n var dy = point2[1] - point1[1];\n var a = dx * dx + dy * dy;\n var b = 2 * (dx * (point1[0] - centerX) + dy * (point1[1] - centerY));\n var c = (point1[0] - centerX) * (point1[0] - centerX) + (point1[1] - centerY) * (point1[1] - centerY) - radius * radius;\n var e = b * b - 4 * a * c;\n if ((a <= 0.0000001) || (e < 0)) {\n intersection1 = [Number.NaN, Number.NaN];\n intersection2 = [Number.NaN, Number.NaN];\n }\n else if (e === 0) {\n var t = -b / (2 * a);\n intersection1 = [point1[0] + t * dx, point1[1] + t * dy];\n intersection2 = [Number.NaN, Number.NaN];\n }\n else {\n var t = ((-b + Math.sqrt(e)) / (2 * a));\n intersection1 = [point1[0] + t * dx, point1[1] + t * dy];\n t = ((-b - Math.sqrt(e)) / (2 * a));\n intersection2 = [point1[0] + t * dx, point1[1] + t * dy];\n }\n return { first: intersection1, second: intersection2 };\n };\n return PdfAngleMeasurementAnnotation;\n}(PdfComment));\nexport { PdfAngleMeasurementAnnotation };\n/**\n * `PdfInkAnnotation` class represents the ink annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new ink annotation with the bounds and ink points\n * const annotation: PdfInkAnnotation = new PdfInkAnnotation([0, 0, 300, 400], [40, 300, 60, 100, 40, 50, 40, 300]);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfInkAnnotation = /** @class */ (function (_super) {\n __extends(PdfInkAnnotation, _super);\n function PdfInkAnnotation(points, linePoints) {\n var _this = _super.call(this) || this;\n _this._inkPointsCollection = [];\n _this._previousCollection = [];\n _this._isModified = false;\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Ink'));\n if (typeof points !== 'undefined') {\n _this._points = points;\n _this.bounds = { x: points[0], y: points[1], width: points[2], height: points[3] };\n }\n if (typeof linePoints !== 'undefined') {\n _this._linePoints = linePoints;\n }\n _this._type = _PdfAnnotationType.inkAnnotation;\n return _this;\n }\n Object.defineProperty(PdfInkAnnotation.prototype, \"inkPointsCollection\", {\n /**\n * Gets the ink points collection of the annotation.\n *\n * @returns {Array} Ink points collection.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfInkAnnotation = page.annotations.at(0) as PdfInkAnnotation;\n * // Get the ink points collection of the annotation\n * let inkPointsCollection: Array = annotation.inkPointsCollection;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._inkPointsCollection.length === 0 && this._dictionary.has('InkList')) {\n var inkList = this._dictionary.get('InkList');\n if (Array.isArray(inkList) && inkList.length > 0) {\n this._inkPointsCollection = inkList;\n }\n }\n return this._inkPointsCollection;\n },\n /**\n * Sets the ink points collection of the annotation.\n *\n * @param {Array} value Ink points collection.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * // Create a new ink annotation\n * const annotation: PdfInkAnnotation = new PdfInkAnnotation([0, 0, 300, 400], [40, 300, 60, 100, 40, 50, 40, 300]);\n * // Set the ink points collection of the annotation\n * annotation.inkPointsCollection = [[422, 690, 412, 708, 408, 715, 403, 720, 400, 725], [420, 725, 420, 715, 415, 705, 400, 690, 405, 695]];\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (Array.isArray(value) && value.length > 0 && value !== this._inkPointsCollection) {\n this._inkPointsCollection = value;\n this._isModified = true;\n if (this._isLoaded) {\n this._dictionary.update('InkList', value);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfInkAnnotation._load = function (page, dictionary) {\n var annot = new PdfInkAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfInkAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfInkAnnotation.prototype._postProcess = function () {\n if (typeof this._points === 'undefined' || this._points === null) {\n throw new Error('Points cannot be null or undefined');\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dictionary);\n }\n if (!this._dictionary.has('C')) {\n this.color = [0, 0, 0];\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n var nativeRectangle = this._addInkPoints();\n var bounds = [nativeRectangle[0],\n nativeRectangle[1],\n nativeRectangle[0] + nativeRectangle[2],\n nativeRectangle[1] + nativeRectangle[3]];\n this._dictionary.update('Rect', bounds);\n if (this._setAppearance) {\n var appearance = new PdfAppearance(this, nativeRectangle);\n appearance.normal = new PdfTemplate(nativeRectangle, this._crossReference);\n var template = appearance.normal;\n _setMatrix(template, this._getRotationAngle());\n template._writeTransformation = false;\n this._appearanceTemplate = this._createInkAppearance(template);\n if (this._dictionary.has('AP')) {\n _removeDuplicateReference(this._dictionary.get('AP'), this._crossReference, 'N');\n }\n var dictionary = new _PdfDictionary();\n this._appearanceTemplate._content.dictionary._updated = true;\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._appearanceTemplate._content);\n this._appearanceTemplate._content.reference = reference;\n dictionary.set('N', reference);\n dictionary._updated = true;\n this._dictionary.set('AP', dictionary);\n }\n };\n PdfInkAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n this._isFlatten = isFlatten;\n if (this._isLoaded) {\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n if (this._inkPointsCollection.length === 0) {\n this._inkPointsCollection = this._obtainInkListCollection();\n }\n var rect = this._getInkBoundsValue();\n var template = new PdfTemplate(rect, this._crossReference);\n _setMatrix(template, this._getRotationAngle());\n template._writeTransformation = false;\n this._appearanceTemplate = this._createInkAppearance(template);\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n if (!isFlatten) {\n if (this._dictionary.has('AP')) {\n _removeDuplicateReference(this._dictionary.get('AP'), this._crossReference, 'N');\n }\n var dictionary = new _PdfDictionary();\n this._appearanceTemplate._content.dictionary._updated = true;\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._appearanceTemplate._content);\n this._appearanceTemplate._content.reference = reference;\n dictionary.set('N', reference);\n dictionary._updated = true;\n this._dictionary.set('AP', dictionary);\n }\n }\n if (!this._appearanceTemplate && isFlatten && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n else {\n this._postProcess();\n if (!this._appearanceTemplate) {\n if (isFlatten) {\n if (!this._dictionary.has('AP')) {\n if (this._inkPointsCollection.length === 0) {\n this._inkPointsCollection = this._obtainInkListCollection();\n }\n var rect = this._getInkBoundsValue();\n var template = new PdfTemplate(rect, this._crossReference);\n _setMatrix(template, this._getRotationAngle());\n template._writeTransformation = false;\n this._appearanceTemplate = this._createInkAppearance(template);\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n }\n if (typeof this.flattenPopups !== 'undefined' && this.flattenPopups) {\n if (this._isLoaded) {\n this._flattenLoadedPopUp();\n }\n else {\n this._flattenPopUp();\n }\n }\n if (isFlatten &&\n this._appearanceTemplate &&\n this._appearanceTemplate._size !== null &&\n typeof this._appearanceTemplate._size !== 'undefined') {\n var isNormalMatrix = this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary);\n if (!this._appearanceTemplate._content.dictionary.has('Matrix')) {\n var box = this._appearanceTemplate._content.dictionary.getArray('BBox');\n if (box) {\n this._appearanceTemplate._content.dictionary.update('Matrix', [1, 0, 0, 1, -box[0], -box[1]]);\n }\n }\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n };\n PdfInkAnnotation.prototype._createInkAppearance = function (template) {\n var graphics = template.graphics;\n if (this._inkPointsCollection !== null &&\n this._inkPointsCollection.length > 0 &&\n this.color !== null &&\n typeof this._color !== 'undefined') {\n for (var l = 0; l < this._inkPointsCollection.length; l++) {\n if (this._inkPointsCollection[Number.parseInt(l.toString(), 10)].length % 2 === 0) {\n var inkPoints = this._inkPointsCollection[Number.parseInt(l.toString(), 10)];\n if (inkPoints.length === 2) {\n var locx = inkPoints[0] - 0.5;\n var locy = inkPoints[1] - 0.5;\n var locw = inkPoints[0] + 0.5;\n var loch = inkPoints[1] + 0.5;\n inkPoints = [locx, locy, locw, loch];\n }\n var point = new Array(inkPoints.length / 2);\n var count = 0;\n for (var j = 0; j < inkPoints.length; j = j + 2) {\n point[Number.parseInt(count.toString(), 10)] = [inkPoints[Number.parseInt(j.toString(), 10)], inkPoints[j + 1]];\n count++;\n }\n var pathPointCont = count + (count * 2) - 2;\n var pathPoints = new Array(pathPointCont);\n var p1 = [];\n var p2 = [];\n var value = this._getControlPoints(point, p1, p2);\n p1 = value.controlP1;\n p2 = value.controlP2;\n var index = 0;\n for (var i = 0; i < pathPointCont - 1; i = i + 3) {\n pathPoints[Number.parseInt(i.toString(), 10)] = point[Number.parseInt(index.toString(), 10)];\n pathPoints[i + 1] = p1[Number.parseInt(index.toString(), 10)];\n pathPoints[i + 2] = p2[Number.parseInt(index.toString(), 10)];\n index++;\n }\n pathPoints[pathPointCont - 1] = point[point.length - 1];\n if (pathPoints !== null) {\n var pointsCollection = pathPoints;\n for (var k = 0; k < pointsCollection.length; k++) {\n var point_1 = pointsCollection[Number.parseInt(k.toString(), 10)];\n pointsCollection[Number.parseInt(k.toString(), 10)] = [point_1[0], (-point_1[1])];\n }\n var path1 = new _PdfPath();\n var path2 = null;\n if (point.length === 2) {\n var width = point[1][0] - point[0][0];\n var height = point[1][1] - point[0][1];\n path1._addEllipse(point[0][0] + (0.5), -(point[0][1] + height + (0.5)), width, height);\n path2 = new _PdfPath();\n path2._pathTypes = path1._pathTypes;\n path2._points = path1._points;\n }\n else {\n path1._addBezierPoints(pointsCollection);\n path2 = new _PdfPath();\n path2._pathTypes = path1._pathTypes;\n path2._points = pointsCollection;\n }\n var borderPen = new PdfPen(this.color, this.border.width);\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n var state = graphics.save();\n graphics.setTransparency(this._opacity);\n if (this._isLoaded) {\n borderPen._lineCap = PdfLineCap.round;\n }\n graphics._drawPath(path2, borderPen);\n graphics.restore(state);\n }\n else {\n graphics._drawPath(path2, borderPen);\n }\n }\n }\n }\n if (this._isFlatten) {\n this.bounds = { x: this.bounds.x,\n y: (this._page.size[1] - (this.bounds.y + this.bounds.height)),\n width: this.bounds.width,\n height: this.bounds.height };\n }\n }\n return template;\n };\n PdfInkAnnotation.prototype._getControlPoints = function (point, p1, p2) {\n if (point === null) {\n throw new Error('pointCollection');\n }\n var pointCount = point.length - 1;\n if (pointCount < 1) {\n throw new Error('At least two knot PointFs required pointCollection');\n }\n if (pointCount === 1) {\n p1 = [[((2 * point[0][0] + point[1][0]) / 3), ((2 * point[0][1] + point[1][1]) / 3)]];\n p2 = [[(2 * p1[0][0] - point[0][0]), (2 * p1[0][1] - point[0][1])]];\n }\n var rightVector = [];\n for (var i = 1; i < pointCount - 1; ++i) {\n rightVector[Number.parseInt(i.toString(), 10)] = 4 * point[Number.parseInt(i.toString(), 10)][0] + 2 * point[i + 1][0];\n }\n rightVector[0] = point[0][0] + 2 * point[1][0];\n rightVector[pointCount - 1] = (8 * point[pointCount - 1][0] + point[Number.parseInt(pointCount.toString(), 10)][0]) / 2.0;\n var xValue = this._getSingleControlPoint(rightVector);\n for (var i = 1; i < pointCount - 1; ++i) {\n rightVector[Number.parseInt(i.toString(), 10)] = 4 * point[Number.parseInt(i.toString(), 10)][1] + 2 * point[i + 1][1];\n }\n rightVector[0] = point[0][1] + 2 * point[1][1];\n rightVector[pointCount - 1] = (8 * point[pointCount - 1][1] + point[Number.parseInt(pointCount.toString(), 10)][1]) / 2.0;\n var yValue = this._getSingleControlPoint(rightVector);\n p1 = new Array(pointCount);\n p2 = new Array(pointCount);\n for (var i = 0; i < pointCount; ++i) {\n p1[Number.parseInt(i.toString(), 10)] = [xValue[Number.parseInt(i.toString(), 10)], yValue[Number.parseInt(i.toString(), 10)]];\n if (i < pointCount - 1) {\n p2[Number.parseInt(i.toString(), 10)] = [2 * point[i + 1][0] - xValue[i + 1], 2 * point[i + 1][1] - yValue[i + 1]];\n }\n else {\n var x = (point[Number.parseInt(pointCount.toString(), 10)][0] + xValue[pointCount - 1]) / 2;\n var y = (point[Number.parseInt(pointCount.toString(), 10)][1] + yValue[pointCount - 1]) / 2;\n p2[Number.parseInt(i.toString(), 10)] = [x, y];\n }\n }\n return { controlP1: p1, controlP2: p2 };\n };\n PdfInkAnnotation.prototype._getSingleControlPoint = function (rightVector) {\n var count = rightVector.length;\n var vector = [];\n var tmpVector = [];\n var divisor = 2.0;\n vector[0] = rightVector[0] / divisor;\n for (var i = 1; i < count; i++) {\n tmpVector[Number.parseInt(i.toString(), 10)] = 1 / divisor;\n divisor = (i < count - 1 ? 4.0 : 3.5) - tmpVector[Number.parseInt(i.toString(), 10)];\n vector[Number.parseInt(i.toString(), 10)] = (rightVector[Number.parseInt(i.toString(), 10)] - vector[i - 1]) / divisor;\n }\n for (var i = 1; i < count; i++) {\n vector[count - i - 1] -= tmpVector[count - i] * vector[count - i];\n }\n return vector;\n };\n PdfInkAnnotation.prototype._addInkPoints = function () {\n var _this = this;\n var inkCollection = [];\n if (this._linePoints !== null && (this._previousCollection.length === 0 || this._isModified)) {\n this._inkPointsCollection.unshift(this._linePoints);\n this._isModified = false;\n }\n var isEqual = _checkInkPoints(this._inkPointsCollection, this._previousCollection);\n if (this._inkPointsCollection !== null && !isEqual) {\n for (var i = 0; i < this._inkPointsCollection.length; i++) {\n var inkList = this._inkPointsCollection[Number.parseInt(i.toString(), 10)];\n inkCollection.push(inkList);\n }\n this._dictionary.update('InkList', inkCollection);\n }\n if (this._inkPointsCollection.length > 0) {\n this._inkPointsCollection.forEach(function (inkList) {\n _this._previousCollection.push(inkList);\n });\n }\n return this._getInkBoundsValue();\n };\n PdfInkAnnotation.prototype._getInkBoundsValue = function () {\n var bounds = [0, 0, 0, 0];\n if (this._points) {\n this.bounds = { x: this._points[0], y: this._points[1], width: this._points[2], height: this._points[3] };\n }\n bounds = [this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height];\n var borderWidth = this.border.width;\n if (this._inkPointsCollection !== null) {\n if (this._inkPointsCollection.length > 0) {\n var termsList = [];\n for (var i = 0; i < this._inkPointsCollection.length; i++) {\n var subList = this._inkPointsCollection[Number.parseInt(i.toString(), 10)];\n if (subList !== null) {\n if (subList.length % 2 === 0) {\n for (var j = 0; j < subList.length; j++) {\n termsList.push(subList[Number.parseInt(j.toString(), 10)]);\n }\n }\n }\n }\n var isTwoPoints = false;\n if (!this._isLoaded && termsList.length === 2) {\n isTwoPoints = true;\n termsList.push((termsList[0] + 1));\n termsList.push((termsList[1] + 1));\n }\n var pointCollection = new Array(termsList.length / 2);\n var count = 0;\n for (var j = 0; j < termsList.length; j = j + 2) {\n pointCollection[Number.parseInt(count.toString(), 10)] = [termsList[Number.parseInt(j.toString(), 10)],\n termsList[j + 1]];\n count++;\n }\n if (this._isLoaded) {\n if (pointCollection.length > 0) {\n var xMin = 0;\n var yMin = 0;\n var xMax = 0;\n var yMax = 0;\n var first = true;\n for (var i = 0; i < pointCollection.length; i++) {\n var point = pointCollection[Number.parseInt(i.toString(), 10)];\n if (first) {\n xMin = point[0];\n yMin = point[1];\n first = false;\n }\n else {\n if (point[0] < xMin) {\n xMin = point[0];\n }\n else if (point[0] > xMax) {\n xMax = point[0];\n }\n if (point[1] < yMin) {\n yMin = point[1];\n }\n else if (point[1] > yMax) {\n yMax = point[1];\n }\n }\n }\n bounds = [xMin, yMin, xMax - xMin, yMax - yMin];\n this.bounds = { x: bounds[0], y: bounds[1], width: bounds[2], height: bounds[3] };\n if (this._isFlatten || this._setAppearance) {\n bounds[0] = this.bounds.x - borderWidth;\n bounds[1] = this.bounds.y - borderWidth;\n bounds[2] = this.bounds.width + (2 * borderWidth);\n bounds[3] = this.bounds.height + (2 * borderWidth);\n }\n }\n else {\n if (this._points) {\n bounds = this._points;\n }\n else if (pointCollection.length > 0) {\n bounds = this._dictionary.get('Rect');\n }\n else {\n bounds = [this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height];\n }\n }\n }\n else {\n bounds = this._calculateInkBounds(pointCollection, bounds, borderWidth, isTwoPoints);\n }\n this.bounds = { x: bounds[0], y: bounds[1], width: bounds[2], height: bounds[3] };\n }\n }\n return bounds;\n };\n PdfInkAnnotation.prototype._calculateInkBounds = function (pointCollection, bounds, borderWidth, isTwoPoints) {\n if (pointCollection.length > 5) {\n var xMin = 0;\n var yMin = 0;\n var xMax = 0;\n var yMax = 0;\n var first = true;\n for (var i = 0; i < pointCollection.length; i++) {\n var point = pointCollection[Number.parseInt(i.toString(), 10)];\n if (first) {\n xMin = point[0];\n yMin = point[1];\n xMax = point[0];\n yMax = point[1];\n first = false;\n }\n else {\n if (point[0] < xMin) {\n xMin = point[0];\n }\n else if (point[0] > xMax) {\n xMax = point[0];\n }\n if (point[1] < yMin) {\n yMin = point[1];\n }\n else if (point[1] > yMax) {\n yMax = point[1];\n }\n }\n }\n if (bounds[2] < xMax) {\n xMax = bounds[2];\n }\n if (bounds[3] < yMax) {\n yMax = bounds[3];\n }\n bounds = [xMin, yMin, xMax, yMax];\n if (this._isFlatten || this._setAppearance) {\n var factor = isTwoPoints ? 2 : 3;\n bounds[0] = bounds[0] - borderWidth;\n bounds[1] = bounds[1] - borderWidth;\n bounds[2] = bounds[2] + (factor * borderWidth);\n bounds[3] = bounds[3] + (factor * borderWidth);\n }\n }\n else {\n if (typeof this._points === 'undefined' && pointCollection.length > 0) {\n bounds = this._dictionary.get('Rect');\n }\n else {\n bounds = this._points;\n }\n }\n return bounds;\n };\n PdfInkAnnotation.prototype._obtainInkListCollection = function () {\n var path = [];\n if (this._dictionary.has('InkList')) {\n var inkList = this._dictionary.getArray('InkList');\n var list = [];\n for (var i = 0; i < inkList.length; i++) {\n var innerList = inkList[Number.parseInt(i.toString(), 10)];\n for (var j = 0; j < innerList.length; j++) {\n list.push(innerList[Number.parseInt(j.toString(), 10)]);\n }\n path.push(list);\n }\n }\n return path;\n };\n return PdfInkAnnotation;\n}(PdfComment));\nexport { PdfInkAnnotation };\n/**\n * `PdfPopupAnnotation` class represents the popup annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new popup annotation\n * const annotation: PdfPopupAnnotation = new PdfPopupAnnotation('Test popup annotation', 10, 40, 30, 30);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPopupAnnotation = /** @class */ (function (_super) {\n __extends(PdfPopupAnnotation, _super);\n function PdfPopupAnnotation(text, x, y, width, height) {\n var _this = _super.call(this) || this;\n _this._icon = PdfPopupIcon.note;\n _this._iconString = '';\n _this._stateModel = PdfAnnotationStateModel.none;\n _this._state = PdfAnnotationState.none;\n _this._open = false;\n _this._isReview = false;\n _this._isComment = false;\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Text'));\n if (typeof text !== 'undefined') {\n _this.text = text;\n }\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n }\n _this._type = _PdfAnnotationType.popupAnnotation;\n return _this;\n }\n Object.defineProperty(PdfPopupAnnotation.prototype, \"open\", {\n /**\n * Gets the boolean flag indicating whether annotation has open or not.\n *\n * @returns {boolean} Caption.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPopupAnnotation = page.annotations.at(0) as PdfPopupAnnotation;\n * // Gets the boolean flag indicating whether annotation has open or not.\n * let open: boolean = annotation.open;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('Open')) {\n this._open = this._dictionary.get('Open');\n }\n return this._open;\n },\n /**\n * Sets the boolean flag indicating whether annotation has open or not.\n *\n * @param {boolean} value Open.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPopupAnnotation = page.annotations.at(0) as PdfPopupAnnotation;\n * // Sets the boolean flag indicating whether annotation has open or not.\n * annotation.open = true;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined') {\n this._open = value;\n this._dictionary.update('Open', this._open);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPopupAnnotation.prototype, \"icon\", {\n /**\n * Gets the icon type of the popup annotation.\n *\n * @returns {PdfPopupIcon} Annotation icon.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPopupAnnotation = page.annotations.at(0) as PdfPopupAnnotation;\n * // Gets the icon type of the popup annotation.\n * let icon: PdfPopupIcon = annotation.icon;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('Name')) {\n this._icon = _mapPopupIcon(this._dictionary.get('Name').name);\n }\n return this._icon;\n },\n /**\n * Sets the icon type of the popup annotation.\n *\n * @param {PdfPopupIcon} value Annotation icon.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPopupAnnotation = page.annotations.at(0) as PdfPopupAnnotation;\n * // Sets the icon type of the popup annotation.\n * annotation.icon = PdfPopupIcon.newParagraph;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined') {\n this._icon = value;\n this._dictionary.update('Name', _PdfName.get(this._obtainIconName(this._icon)));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPopupAnnotation.prototype, \"stateModel\", {\n /**\n * Gets the state model of the popup annotation.\n *\n * @returns {PdfAnnotationStateModel} Annotation State Model.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPopupAnnotation = page.annotations.at(0) as PdfPopupAnnotation;\n * // Gets the state model of the popup annotation.\n * let stateModel: PdfAnnotationStateModel = annotation.stateModel;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('StateModel')) {\n this._stateModel = _mapAnnotationStateModel(this._dictionary.get('StateModel'));\n }\n return this._stateModel;\n },\n /**\n * Sets the state model of the popup annotation.\n *\n * @param {PdfAnnotationStateModel} value Annotation State Model.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPopupAnnotation = page.annotations.at(0) as PdfPopupAnnotation;\n * // Sets the state model of the popup annotation.\n * annotation.stateModel = PdfAnnotationStateModel.marked;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined') {\n this._stateModel = value;\n this._dictionary.update('StateModel', _reverseMapAnnotationStateModel(this._stateModel));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPopupAnnotation.prototype, \"state\", {\n /**\n * Gets the state of the popup annotation.\n *\n * @returns {PdfAnnotationState} Annotation State.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPopupAnnotation = page.annotations.at(0) as PdfPopupAnnotation;\n * // Gets the state of the popup annotation.\n * let state: PdfAnnotationState = annotation.state;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('State')) {\n this._state = _mapAnnotationState(this._dictionary.get('State'));\n }\n return this._state;\n },\n /**\n * Sets the state of the popup annotation.\n *\n * @param {PdfAnnotationState} value Annotation State.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfPopupAnnotation = page.annotations.at(0) as PdfPopupAnnotation;\n * // Sets the state of the popup annotation.\n * annotation.state = PdfAnnotationState.completed;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined') {\n this._state = value;\n this._dictionary.update('State', _reverseMapAnnotationState(this._state));\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfPopupAnnotation._load = function (page, dictionary) {\n var annot = new PdfPopupAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n if (dictionary.has('IRT')) {\n annot._isReview = _checkReview(dictionary);\n if (!annot._isReview) {\n annot._isComment = _checkComment(dictionary);\n }\n }\n return annot;\n };\n PdfPopupAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfPopupAnnotation.prototype._postProcess = function () {\n if (typeof this.bounds === 'undefined' || this.bounds === null) {\n this._bounds = { x: 0, y: 0, width: 0, height: 0 };\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dictionary);\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n var rectangle = [this.bounds.x, this.bounds.y, (this.bounds.x + this.bounds.width),\n (this.bounds.y + this.bounds.height)];\n this._dictionary.update('Rect', rectangle);\n if (this._setAppearance) {\n this._appearanceTemplate = this._createPopupAppearance();\n if (this._appearanceTemplate) {\n if (this._dictionary.has('AP')) {\n _removeDuplicateReference(this._dictionary.get('AP'), this._crossReference, 'N');\n }\n var dictionary = new _PdfDictionary();\n this._appearanceTemplate._content.dictionary._updated = true;\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._appearanceTemplate._content);\n this._appearanceTemplate._content.reference = reference;\n dictionary.set('N', reference);\n dictionary._updated = true;\n this._dictionary.set('AP', dictionary);\n }\n }\n var size = this._page.size;\n var rect = [this.bounds.x,\n size[1] - (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n };\n PdfPopupAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (this._isLoaded) {\n if (!this._appearanceTemplate && this._isFlattenPopups && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n if (this._appearanceTemplate !== null) {\n var state = this._page.graphics.save();\n if (this.opacity < 1) {\n this._page.graphics.setTransparency(this.opacity);\n }\n this._page.graphics._drawTemplate(this._appearanceTemplate, this.bounds);\n this._page.graphics.restore(state);\n }\n }\n }\n }\n else {\n this._postProcess();\n if (!this._appearanceTemplate) {\n if (isFlatten) {\n if (!this._dictionary.has('AP')) {\n this._appearanceTemplate = this._createPopupAppearance();\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (appearanceStream) {\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n }\n if (typeof this.flattenPopups !== 'undefined' && this.flattenPopups && this.flatten) {\n if (this._isLoaded) {\n this._flattenLoadedPopUp();\n }\n else {\n this._flattenPopUp();\n }\n }\n if (isFlatten) {\n this._removeAnnotation(this._page, this);\n }\n };\n PdfPopupAnnotation.prototype._createPopupAppearance = function () {\n var template;\n if (this._dictionary.has('Name')) {\n if (this._dictionary.get('Name').name === 'Comment') {\n if (this._dictionary.has('Rect')) {\n var nativeRectangle = [0, 0, this.bounds.width, this.bounds.height];\n template = new PdfTemplate(nativeRectangle, this._crossReference);\n _setMatrix(template, this._getRotationAngle());\n var graphics = template.graphics;\n var rectValue = this._dictionary.getArray('Rect');\n if (rectValue !== null) {\n var pen = new PdfPen([0, 0, 0], 0.3);\n var brush = new PdfBrush(this.color);\n var pen1 = new PdfPen([255, 255, 255], 1);\n var points = new Array();\n points.push([6, 8]);\n points.push([9, 8]);\n points.push([4, 12]);\n var path = new _PdfPath();\n if (this.color[0] === 0 && this.color[0] === 0 && this.color[0] === 0) {\n brush = new PdfBrush([255, 215, 0]);\n }\n graphics.save();\n var template_1 = new PdfTemplate([0, 0, 15, 14], this._crossReference);\n template_1.graphics.drawRectangle(0, 0, 15, 14, pen, brush);\n template_1.graphics.drawPolygon(points, pen, new PdfBrush([255, 255, 255]));\n path._addEllipse(2, 2, 11, 8);\n template_1.graphics._drawPath(path, pen, new PdfBrush([255, 255, 255]));\n template_1.graphics.drawArc(2, 2, 11, 8, 108, 12.7, pen1);\n template_1.graphics.drawLine(pen, 4, 12, 6.5, 10);\n graphics._drawTemplate(template_1, { x: 0, y: 0, width: this.bounds.width, height: this.bounds.height });\n graphics.restore();\n }\n }\n }\n }\n return template;\n };\n PdfPopupAnnotation.prototype._obtainIconName = function (icon) {\n switch (icon) {\n case PdfPopupIcon.note:\n this._iconString = 'Note';\n break;\n case PdfPopupIcon.comment:\n this._iconString = 'Comment';\n break;\n case PdfPopupIcon.help:\n this._iconString = 'Help';\n break;\n case PdfPopupIcon.insert:\n this._iconString = 'Insert';\n break;\n case PdfPopupIcon.key:\n this._iconString = 'Key';\n break;\n case PdfPopupIcon.newParagraph:\n this._iconString = 'NewParagraph';\n break;\n case PdfPopupIcon.paragraph:\n this._iconString = 'Paragraph';\n break;\n }\n return this._iconString;\n };\n return PdfPopupAnnotation;\n}(PdfComment));\nexport { PdfPopupAnnotation };\n/**\n * `PdfFileLinkAnnotation` class represents the link annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new file link annotation\n * let annotation: PdfFileLinkAnnotation = new PdfFileLinkAnnotation(10, 40, 30, 30, \"image.png\");\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfFileLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfFileLinkAnnotation, _super);\n function PdfFileLinkAnnotation(x, y, width, height, fileName) {\n var _this = _super.call(this) || this;\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Link'));\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n }\n if (typeof fileName !== 'undefined' && fileName !== null) {\n _this._fileName = fileName;\n }\n _this._type = _PdfAnnotationType.fileLinkAnnotation;\n return _this;\n }\n Object.defineProperty(PdfFileLinkAnnotation.prototype, \"action\", {\n /**\n * Gets the action of the annotation.\n *\n * @returns {string} Action.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFileLinkAnnotation = page.annotations.at(0) as PdfFileLinkAnnotation;\n * // Gets the action of the annotation.\n * let action: string = annotation.action;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._action === 'undefined' && this._dictionary.has('A')) {\n var dictionary = this._dictionary.get('A');\n if (dictionary && dictionary.has('Next')) {\n var action = dictionary.get('Next');\n if (Array.isArray(action)) {\n for (var i = 0; i < action.length; i++) {\n var reference = action[Number.parseInt(i.toString(), 10)];\n if (reference && reference instanceof _PdfReference) {\n var actionDictionary = this._crossReference._fetch(reference);\n if (actionDictionary.has('JS')) {\n this._action = actionDictionary.get('JS');\n }\n }\n }\n }\n }\n }\n return this._action;\n },\n /**\n * Sets the action of the annotation.\n *\n * @param {string} value Action.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFileLinkAnnotation = page.annotations.at(0) as PdfFileLinkAnnotation;\n * // Sets the action of the annotation.\n * annotation.action = ‘syncfusion’;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (!this._isLoaded && typeof value === 'string') {\n this._action = value;\n }\n if (this._isLoaded && typeof value === 'string') {\n if (this.action !== value && this._dictionary.has('A')) {\n var dictionary = this._dictionary.get('A');\n if (dictionary && dictionary.has('Next')) {\n var action = dictionary.get('Next');\n if (Array.isArray(action)) {\n for (var i = 0; i < action.length; i++) {\n var reference = action[Number.parseInt(i.toString(), 10)];\n if (reference && reference instanceof _PdfReference) {\n var actionDictionary = this._crossReference._fetch(reference);\n if (actionDictionary.has('JS')) {\n actionDictionary.update('JS', value);\n this._action = value;\n this._dictionary._updated = true;\n }\n }\n }\n }\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfFileLinkAnnotation._load = function (page, dictionary) {\n var annot = new PdfFileLinkAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfFileLinkAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfFileLinkAnnotation.prototype._postProcess = function () {\n if (typeof this.bounds === 'undefined' || this.bounds === null) {\n throw new Error('Bounds cannot be null or undefined');\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dictionary);\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n this._addAction();\n var size = this._page.size;\n var rect = [this.bounds.x,\n size[1] - (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n };\n PdfFileLinkAnnotation.prototype._addAction = function () {\n var _this = this;\n if (this._dictionary.has('A')) {\n var action = this._dictionary.get('A');\n if (action) {\n if (typeof this._action !== 'undefined' && this._action !== null && action.has('Next')) {\n var nextAction = action.get('Next');\n if (Array.isArray(nextAction) && nextAction.length > 0) {\n nextAction.forEach(function (reference) {\n if (reference && reference instanceof _PdfReference && reference._isNew) {\n _this._crossReference._cacheMap.delete(reference);\n }\n });\n }\n }\n if (action.has('F')) {\n _removeDuplicateReference(action, this._crossReference, 'F');\n }\n }\n _removeDuplicateReference(this._dictionary, this._crossReference, 'A');\n }\n var dictionary = new _PdfDictionary();\n dictionary.set('Type', _PdfName.get('Action'));\n dictionary.set('S', _PdfName.get('Launch'));\n var fileDictionary = new _PdfDictionary();\n fileDictionary.set('Type', _PdfName.get('Filespec'));\n fileDictionary.set('UF', this._fileName);\n if (typeof this._action !== 'undefined' && this._action !== null) {\n var actionDictionary = new _PdfDictionary();\n actionDictionary.set('Type', _PdfName.get('Action'));\n actionDictionary.set('S', _PdfName.get('JavaScript'));\n actionDictionary.set('JS', this._action);\n var ref = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(ref, actionDictionary);\n actionDictionary._updated = true;\n dictionary.set('Next', [ref]);\n }\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, fileDictionary);\n fileDictionary._updated = true;\n dictionary.set('F', reference);\n dictionary._updated = true;\n this._dictionary.set('A', dictionary);\n };\n PdfFileLinkAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (!this._isLoaded) {\n this._postProcess();\n }\n if (isFlatten) {\n var appearanceStream = void 0;\n if (this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (reference && appearanceStream) {\n appearanceStream.reference = reference;\n }\n }\n }\n if (appearanceStream) {\n var template = new PdfTemplate(appearanceStream, this._crossReference);\n var isNormalMatrix = this._validateTemplateMatrix(template._content.dictionary);\n this._flattenAnnotationTemplate(template, isNormalMatrix);\n }\n else {\n this._removeAnnotation(this._page, this);\n }\n }\n };\n return PdfFileLinkAnnotation;\n}(PdfAnnotation));\nexport { PdfFileLinkAnnotation };\n/**\n * `PdfUriAnnotation` class represents the URI annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new URI annotation\n * let annotation: PdfUriAnnotation = new PdfUriAnnotation(100, 150, 200, 100, ‘http://www.google.com’);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfUriAnnotation = /** @class */ (function (_super) {\n __extends(PdfUriAnnotation, _super);\n function PdfUriAnnotation(x, y, width, height, uri) {\n var _this = _super.call(this) || this;\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Link'));\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n }\n if (typeof uri !== 'undefined' && uri !== null) {\n _this._uri = uri;\n }\n _this._type = _PdfAnnotationType.uriAnnotation;\n return _this;\n }\n Object.defineProperty(PdfUriAnnotation.prototype, \"uri\", {\n /**\n * Gets the uri of the annotation.\n *\n * @returns {string} Uri.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfUriAnnotation = page.annotations.at(0) as PdfUriAnnotation;\n * // Gets the uri of the annotation.\n * let uri: string = annotation.uri;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._uri === 'undefined' && this._dictionary.has('A')) {\n var linkDict = this._dictionary.get('A');\n if (linkDict.has('URI')) {\n this._uri = linkDict.get('URI');\n }\n }\n return this._uri;\n },\n /**\n * Sets the uri of the annotation.\n *\n * @param {string} value Uri.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new URI annotation\n * let annotation: PdfUriAnnotation = new PdfUriAnnotation(100, 150, 200, 100);\n * // Sets the uri of the annotation\n * annotation.uri = ‘http://www.google.com’;\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value === 'string') {\n if (this._isLoaded && this._dictionary.has('A') && value !== this.uri) {\n var linkDict = this._dictionary.get('A');\n if (linkDict.has('URI')) {\n this._uri = value;\n linkDict.update('URI', value);\n this._dictionary._updated = true;\n }\n }\n else {\n this._uri = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfUriAnnotation._load = function (page, dictionary) {\n var annot = new PdfUriAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfUriAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfUriAnnotation.prototype._postProcess = function () {\n if (typeof this.bounds === 'undefined' || this.bounds === null) {\n throw new Error('Bounds cannot be null or undefined');\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dictionary);\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n this._addAction();\n var size = this._page.size;\n var rect = [this.bounds.x,\n size[1] - (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n };\n PdfUriAnnotation.prototype._addAction = function () {\n var dictionary = new _PdfDictionary();\n dictionary.set('Type', _PdfName.get('Action'));\n dictionary.set('S', _PdfName.get('URI'));\n if (typeof this._uri !== 'undefined') {\n dictionary.set('URI', this._uri);\n }\n dictionary._updated = true;\n this._dictionary.set('A', dictionary);\n this._dictionary.update('Border', [this.border.hRadius, this.border.vRadius, this.border.width]);\n };\n PdfUriAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (!this._isLoaded) {\n this._postProcess();\n }\n if (isFlatten) {\n var appearanceStream = void 0;\n if (this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (reference && appearanceStream) {\n appearanceStream.reference = reference;\n }\n }\n }\n if (appearanceStream) {\n var template = new PdfTemplate(appearanceStream, this._crossReference);\n var isNormalMatrix = this._validateTemplateMatrix(template._content.dictionary);\n this._flattenAnnotationTemplate(template, isNormalMatrix);\n }\n else {\n this._removeAnnotation(this._page, this);\n }\n }\n };\n return PdfUriAnnotation;\n}(PdfAnnotation));\nexport { PdfUriAnnotation };\n/**\n * `PdfDocumentLinkAnnotation` class represents the document link annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new document link annotation\n * let annotation: PdfDocumentLinkAnnotation = new PdfDocumentLinkAnnotation(100, 150, 40, 60);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocumentLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfDocumentLinkAnnotation, _super);\n function PdfDocumentLinkAnnotation(x, y, width, height) {\n var _this = _super.call(this) || this;\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Link'));\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n }\n _this._type = _PdfAnnotationType.documentLinkAnnotation;\n return _this;\n }\n Object.defineProperty(PdfDocumentLinkAnnotation.prototype, \"destination\", {\n /**\n * Gets the destination of the annotation.\n *\n * @returns {PdfDestination} Destination.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfDocumentLinkAnnotation = page.annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Gets the destination of the annotation.\n * let destination: PdfDestination =annotation.destination;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._isLoaded) {\n this.destination = this._obtainDestination();\n }\n return this._destination;\n },\n /**\n * Sets the destination of the annotation.\n *\n * @param {PdfDestination} value Destination.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfDocumentLinkAnnotation = page.annotations.at(0) as PdfDocumentLinkAnnotation;\n * // Initializes a new instance of the `PdfDestination` class.\n * let destination: PdfDestination = new PdfDestination();\n * // Sets the zoom factor.\n * destination.zoom = 20;\n * // Sets the page where the destination is situated.\n * destination.page = page;\n * // Sets the mode of the destination.\n * destination.mode = PdfDestinationMode.fitToPage;\n * // Sets the location of the destination.\n * destination.location = [20, 20];\n * // Sets the bounds of the destination.\n * destination.destinationBounds = [20, 20, 100, 50];\n * // Sets destination to document link annotation.\n * annotation.destination = destination;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== null) {\n this._destination = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfDocumentLinkAnnotation._load = function (page, dictionary) {\n var annot = new PdfDocumentLinkAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfDocumentLinkAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfDocumentLinkAnnotation.prototype._postProcess = function () {\n if (typeof this.bounds === 'undefined' || this.bounds === null) {\n throw new Error('Bounds cannot be null or undefined');\n }\n this._addDocument();\n var size = this._page.size;\n var rect = [this.bounds.x,\n size[1] - (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n };\n PdfDocumentLinkAnnotation.prototype._obtainDestination = function () {\n if (this._dictionary.has('Dest')) {\n var array = this._dictionary.get('Dest'); // eslint-disable-line\n var holder = void 0;\n if (array[0] instanceof _PdfReference) {\n holder = array[0];\n }\n if ((typeof holder === 'undefined' || holder === null) && typeof array[0] === 'number') {\n var pageNumber = array[0];\n var page = this._crossReference._document.getPage(pageNumber);\n if (page) {\n var mode = array[1];\n if (mode.name === 'XYZ') {\n var left = array[2];\n var top_3 = array[3];\n var zoom = array[4];\n var topValue = (typeof top_3 !== 'undefined' && top_3 !== null) ? (page.size[1] - top_3) : 0;\n var leftValue = (typeof left !== 'undefined' && left !== null) ? left : 0;\n this._destination = new PdfDestination(page, [leftValue, topValue]);\n if (typeof zoom !== 'undefined' && zoom !== null) {\n this._destination.zoom = zoom;\n }\n if ((typeof left === 'undefined' && left === null) || (typeof top_3 === 'undefined' && top_3 === null)\n || (typeof zoom === 'undefined' && zoom === null)) {\n this._destination._setValidation(false);\n }\n }\n else {\n this._destination = new PdfDestination(page);\n this._destination.mode = PdfDestinationMode.fitToPage;\n }\n }\n }\n if (holder) {\n var index = _getPageIndex(this._crossReference._document, this._crossReference._fetch(holder));\n var page = this._crossReference._document.getPage(index);\n if (array[1] instanceof _PdfName) {\n var mode = array[1];\n if (mode) {\n if (mode.name === 'XYZ') {\n var left = array[2];\n var top_4 = array[3];\n var zoom = array[4];\n var topValue = (typeof top_4 !== 'undefined' && top_4 !== null) ? (page.size[1] - top_4) : 0;\n var leftValue = (typeof left !== 'undefined' && left !== null) ? left : 0;\n this._destination = new PdfDestination(page, [leftValue, topValue]);\n if (typeof zoom !== 'undefined' && zoom !== null) {\n this._destination.zoom = zoom;\n }\n if ((typeof left === 'undefined' && left === null) || (typeof top_4 === 'undefined' && top_4 === null)\n || (typeof zoom === 'undefined' && zoom === null)) {\n this._destination._setValidation(false);\n }\n }\n else {\n if (page && mode.name === 'Fit') {\n this._destination = new PdfDestination(page);\n this._destination.mode = PdfDestinationMode.fitToPage;\n }\n }\n }\n }\n }\n }\n else if (this._dictionary.has('A') && !this._destination) {\n var action = this._dictionary.get('A');\n if (action.has('D')) {\n var reference = action.get('D'); // eslint-disable-line\n if (reference !== null && typeof reference !== 'undefined') {\n var referenceArray = void 0; // eslint-disable-line\n if (Array.isArray(reference)) {\n referenceArray = reference;\n }\n else if (reference instanceof _PdfReference) {\n var referenceValue = this._crossReference._fetch(reference); // eslint-disable-line\n if (Array.isArray(referenceValue)) {\n referenceArray = referenceValue;\n }\n }\n if (referenceArray && (referenceArray[0] instanceof _PdfReference || typeof referenceArray[0] === 'number')) {\n var document_1 = this._crossReference._document;\n var index = void 0;\n if (referenceArray[0] instanceof _PdfReference) {\n index = _getPageIndex(document_1, this._crossReference._fetch(referenceArray[0]));\n }\n else {\n index = referenceArray[0];\n }\n var page = document_1.getPage(index);\n if (page) {\n var mode = referenceArray[1];\n if (mode.name === 'FitBH' || mode.name === 'FitH') {\n var top_5 = referenceArray[2];\n var topValue = (typeof top_5 !== 'undefined' && top_5 !== null) ? (page.size[1] - top_5) : 0;\n this._destination = new PdfDestination(page, [0, topValue]);\n if (typeof top_5 === 'undefined' || top_5 === null) {\n this._destination._setValidation(false);\n }\n }\n else if (mode.name === 'XYZ') {\n var left = referenceArray[2];\n var top_6 = referenceArray[3];\n var zoom = referenceArray[4];\n var topValue = (typeof top_6 !== 'undefined' && top_6 !== null) ? (page.size[1] - top_6) : 0;\n var leftValue = (typeof left !== 'undefined' && left !== null) ? left : 0;\n this._destination = new PdfDestination(page, [leftValue, topValue]);\n if (typeof zoom !== 'undefined' && zoom !== null) {\n this._destination.zoom = zoom;\n }\n if ((typeof left !== 'undefined' && left !== null) || (typeof top_6 !== 'undefined' && top_6 !== null)\n || (typeof zoom !== 'undefined' && zoom !== null)) {\n this._destination._setValidation(false);\n }\n }\n else if (mode.name === 'FitR') {\n if (referenceArray.length === 6) {\n var left = referenceArray[2];\n var bottom = referenceArray[3];\n var right = referenceArray[4];\n var top_7 = referenceArray[5];\n this._destination = new PdfDestination(page, [left, bottom, right, top_7]);\n }\n }\n else if (mode.name === 'Fit') {\n this._destination = new PdfDestination(page);\n this._destination.mode = PdfDestinationMode.fitToPage;\n }\n }\n }\n }\n }\n }\n return this._destination;\n };\n PdfDocumentLinkAnnotation.prototype._addDocument = function () {\n if (this.destination) {\n this._dictionary.set('Dest', this.destination._array);\n }\n };\n PdfDocumentLinkAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (!this._isLoaded) {\n this._postProcess();\n }\n if (isFlatten) {\n var appearanceStream = void 0;\n if (this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (reference && appearanceStream) {\n appearanceStream.reference = reference;\n }\n }\n }\n if (appearanceStream) {\n var template = new PdfTemplate(appearanceStream, this._crossReference);\n var isNormalMatrix = this._validateTemplateMatrix(template._content.dictionary);\n this._flattenAnnotationTemplate(template, isNormalMatrix);\n }\n else {\n this._removeAnnotation(this._page, this);\n }\n }\n };\n return PdfDocumentLinkAnnotation;\n}(PdfAnnotation));\nexport { PdfDocumentLinkAnnotation };\n/**\n * `PdfTextWebLinkAnnotation` class represents the link annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new PDF string format\n * const format: PdfStringFormat = new PdfStringFormat(PdfTextAlignment.left, PdfVerticalAlignment.top);\n * // Create a new standard font\n * const font: PdfStandardFont = new PdfStandardFont(PdfFontFamily.helvetica, 10, PdfFontStyle.regular);\n * // Get the text size\n * let size: number[] = font.measureString(\"Syncfusion Site\", format, [0, 0], 0, 0);\n * // Create a new text web link annotation\n * let annot: PdfTextWebLinkAnnotation = new PdfTextWebLinkAnnotation(50, 40, size[0], size[1], [0, 0, 0], [165, 42, 42], 1);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfTextWebLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfTextWebLinkAnnotation, _super);\n function PdfTextWebLinkAnnotation(x, y, width, height, brushColor, penColor, penWidth, text) {\n var _this = _super.call(this) || this;\n _this._isActionAdded = false;\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Link'));\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n }\n _this._textWebLink = typeof text !== 'undefined' && text !== null ? text : '';\n if (typeof brushColor !== 'undefined' && brushColor !== null) {\n _this._brush = new PdfBrush(brushColor);\n }\n if (typeof penColor !== 'undefined' && penColor !== null) {\n _this._pen = new PdfPen(penColor, penWidth ? penWidth : 1);\n }\n _this._type = _PdfAnnotationType.textWebLinkAnnotation;\n return _this;\n }\n Object.defineProperty(PdfTextWebLinkAnnotation.prototype, \"font\", {\n /**\n * Gets the font of the annotation.\n *\n * @returns {PdfFont} font.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfTextWebLinkAnnotation = page.annotations.at(0) as PdfTextWebLinkAnnotation;\n * // Gets the font of the annotation.\n * let font: PdfFont = annotation.font;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._font;\n },\n /**\n * Sets the font of the annotation.\n *\n * @param {PdfFont} value font.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfTextWebLinkAnnotation = page.annotations.at(0) as PdfTextWebLinkAnnotation;\n * // Sets the font of the annotation.\n * annotation.font = new PdfStandardFont(PdfFontFamily.helvetica, 10, PdfFontStyle.regular);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._font = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextWebLinkAnnotation.prototype, \"url\", {\n /**\n * Gets the url of the annotation.\n *\n * @returns {string} Url.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfTextWebLinkAnnotation = page.annotations.at(0) as PdfTextWebLinkAnnotation;\n * // Gets the URL of the annotation.\n * let url: string = annotation.url;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._url === 'undefined' && this._dictionary.has('A')) {\n var linkDict = this._dictionary.get('A');\n if (linkDict.has('URI')) {\n this._url = linkDict.get('URI');\n }\n }\n return this._url;\n },\n /**\n * Sets the url of the annotation.\n *\n * @param {string} value Url.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfTextWebLinkAnnotation = page.annotations.at(0) as PdfTextWebLinkAnnotation;\n * // Sets the URL of the annotation.\n * annotation.url = ‘http://www.syncfusion.com’;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value === 'string') {\n if (this._isLoaded && this._dictionary.has('A')) {\n var linkSource = this._dictionary._get('A'); // eslint-disable-line\n var linkDict = this._dictionary.get('A');\n if (linkDict && linkDict.has('URI')) {\n this._url = value;\n linkDict.update('URI', value);\n if (!(linkSource instanceof _PdfReference)) {\n this._dictionary._updated = linkDict._updated;\n }\n }\n }\n else {\n this._url = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfTextWebLinkAnnotation._load = function (page, dictionary) {\n var annot = new PdfTextWebLinkAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfTextWebLinkAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfTextWebLinkAnnotation.prototype._postProcess = function () {\n if (typeof this.bounds === 'undefined' || this.bounds === null) {\n throw new Error('Bounds cannot be null or undefined');\n }\n if (!this._isActionAdded) {\n this._addAction();\n this._isActionAdded = true;\n }\n var size = this._page.size;\n var rect = [this.bounds.x, size[1] - (this.bounds.y + this.bounds.height), this.bounds.width, this.bounds.height];\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n };\n PdfTextWebLinkAnnotation.prototype._addAction = function () {\n var rect = [this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height];\n if (typeof this.font === 'undefined' || this.font === null) {\n this.font = this._lineCaptionFont;\n }\n var format = new PdfStringFormat(PdfTextAlignment.left, PdfVerticalAlignment.top);\n this._page.graphics.drawString(this._textWebLink, this.font, rect, this._pen, this._brush, format);\n var dictionary = new _PdfDictionary();\n dictionary.set('Type', _PdfName.get('Action'));\n dictionary.set('S', _PdfName.get('URI'));\n if (typeof this._url !== 'undefined') {\n dictionary.set('URI', this._url);\n }\n dictionary._updated = true;\n this._dictionary.set('A', dictionary);\n this._dictionary.update('Border', [0, 0, 0]);\n };\n PdfTextWebLinkAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (!this._isLoaded) {\n this._postProcess();\n }\n if (isFlatten) {\n var appearanceStream = void 0;\n if (this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (reference && appearanceStream) {\n appearanceStream.reference = reference;\n }\n }\n }\n if (appearanceStream) {\n var template = new PdfTemplate(appearanceStream, this._crossReference);\n var isNormalMatrix = this._validateTemplateMatrix(template._content.dictionary);\n this._flattenAnnotationTemplate(template, isNormalMatrix);\n }\n else {\n this._removeAnnotation(this._page, this);\n }\n }\n };\n return PdfTextWebLinkAnnotation;\n}(PdfAnnotation));\nexport { PdfTextWebLinkAnnotation };\n/**\n * `PdfAttachmentAnnotation` class represents the attachment annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new attachment annotation\n * const annotation: PdfAttachmentAnnotation = new PdfAttachmentAnnotation(300, 200, 30, 30, \"Nature.jpg\", imageData);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfAttachmentAnnotation = /** @class */ (function (_super) {\n __extends(PdfAttachmentAnnotation, _super);\n function PdfAttachmentAnnotation(x, y, width, height, fileName, data) {\n var _this = _super.call(this) || this;\n _this._icon = PdfAttachmentIcon.pushPin;\n _this._iconString = '';\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('FileAttachment'));\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n }\n if (typeof fileName !== 'undefined') {\n _this._fileName = fileName;\n }\n _this._stream = new _PdfStream(typeof data === 'string' ? _decode(data) : data);\n _this._type = _PdfAnnotationType.fileAttachmentAnnotation;\n return _this;\n }\n Object.defineProperty(PdfAttachmentAnnotation.prototype, \"icon\", {\n /**\n * Gets the icon type of the attachment annotation.\n *\n * @returns {PdfAttachmentIcon} Annotation icon.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfAttachmentAnnotation = page.annotations.at(0) as PdfAttachmentAnnotation;\n * // Gets the icon type of the attachment annotation.\n * let icon: PdfAttachmentIcon = annotation.icon;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('Name')) {\n this._icon = _mapAttachmentIcon(this._dictionary.get('Name').name);\n }\n return this._icon;\n },\n /**\n * Sets the icon type of the attachment annotation.\n *\n * @param {PdfAttachmentIcon} value Annotation icon.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfAttachmentAnnotation = page.annotations.at(0) as PdfAttachmentAnnotation;\n * // Sets the icon type of the attachment annotation.\n * annotation.icon = PdfAttachmentIcon.pushPin;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined') {\n this._icon = value;\n this._dictionary.update('Name', _PdfName.get(this._obtainIconName(this._icon)));\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfAttachmentAnnotation._load = function (page, dictionary) {\n var annot = new PdfAttachmentAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfAttachmentAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfAttachmentAnnotation.prototype._postProcess = function () {\n if (typeof this.bounds === 'undefined' || this.bounds === null) {\n throw new Error('Bounds cannot be null or undefined');\n }\n var size = this._page.size;\n var rect = [this.bounds.x,\n size[1] - (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n this._addAttachment();\n };\n PdfAttachmentAnnotation.prototype._addAttachment = function () {\n if (this._dictionary.has('FS')) {\n var fileSpecification = this._dictionary.get('FS');\n if (fileSpecification && fileSpecification.has('EF')) {\n var embeddedFile = fileSpecification.get('EF');\n if (embeddedFile && embeddedFile.has('F')) {\n _removeDuplicateReference(embeddedFile, this._crossReference, 'F');\n }\n }\n _removeDuplicateReference(this._dictionary, this._crossReference, 'FS');\n }\n var fileSpectDictionary = new _PdfDictionary();\n fileSpectDictionary.set('Type', _PdfName.get('Filespec'));\n fileSpectDictionary.set('Desc', this._fileName);\n fileSpectDictionary.set('F', this._fileName);\n fileSpectDictionary.set('UF', this._fileName);\n var fileDictionary = new _PdfDictionary();\n fileDictionary.set('Type', _PdfName.get('EmbeddedFile'));\n var paramsDictionary = new _PdfDictionary();\n var dateTime = new Date();\n paramsDictionary.set('CreationDate', dateTime.toTimeString());\n paramsDictionary.set('ModDate', new Date().toTimeString());\n paramsDictionary.set('Size', this._stream.length);\n fileDictionary.set('Params', paramsDictionary);\n this._stream.dictionary = new _PdfDictionary();\n this._stream.dictionary = fileDictionary;\n fileDictionary._crossReference = this._crossReference;\n var char1 = this._crossReference._newLine.charCodeAt(0);\n var char2 = this._crossReference._newLine.charCodeAt(1);\n var buffer = [char1, char2, 37, 80, 68, 70, 45];\n fileDictionary._crossReference._writeObject(this._stream, buffer);\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._stream);\n fileDictionary._updated = true;\n var efileDictionary = new _PdfDictionary();\n efileDictionary.set('F', reference);\n fileSpectDictionary.set('EF', efileDictionary);\n var fsReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(fsReference, fileSpectDictionary);\n fileSpectDictionary._updated = true;\n this._dictionary.update('FS', fsReference);\n };\n PdfAttachmentAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (!this._isLoaded) {\n this._postProcess();\n }\n if (isFlatten) {\n var appearanceStream = void 0;\n if (this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (reference && appearanceStream) {\n appearanceStream.reference = reference;\n }\n }\n }\n if (appearanceStream) {\n var template = new PdfTemplate(appearanceStream, this._crossReference);\n var isNormalMatrix = this._validateTemplateMatrix(template._content.dictionary);\n this._flattenAnnotationTemplate(template, isNormalMatrix);\n }\n else {\n this._removeAnnotation(this._page, this);\n }\n }\n };\n PdfAttachmentAnnotation.prototype._obtainIconName = function (icon) {\n switch (icon) {\n case PdfAttachmentIcon.pushPin:\n this._iconString = 'PushPin';\n break;\n case PdfAttachmentIcon.tag:\n this._iconString = 'Tag';\n break;\n case PdfAttachmentIcon.graph:\n this._iconString = 'Graph';\n break;\n case PdfAttachmentIcon.paperClip:\n this._iconString = 'Paperclip';\n break;\n }\n return this._iconString;\n };\n return PdfAttachmentAnnotation;\n}(PdfComment));\nexport { PdfAttachmentAnnotation };\n/**\n * `Pdf3DAnnotation` class represents the 3D annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: Pdf3DAnnotation = page.annotations.at(0) as Pdf3DAnnotation;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar Pdf3DAnnotation = /** @class */ (function (_super) {\n __extends(Pdf3DAnnotation, _super);\n /**\n * Initializes a new instance of the `Pdf3DAnnotation` class.\n *\n * @private\n */\n function Pdf3DAnnotation() {\n var _this = _super.call(this) || this;\n _this._type = _PdfAnnotationType.movieAnnotation;\n return _this;\n }\n Pdf3DAnnotation._load = function (page, dictionary) {\n var annot = new Pdf3DAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n Pdf3DAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n Pdf3DAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (isFlatten) {\n var appearanceStream = void 0;\n if (this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (reference && appearanceStream) {\n appearanceStream.reference = reference;\n }\n }\n }\n if (appearanceStream) {\n var template = new PdfTemplate(appearanceStream, this._crossReference);\n var isNormalMatrix = this._validateTemplateMatrix(template._content.dictionary);\n this._flattenAnnotationTemplate(template, isNormalMatrix);\n }\n else {\n this._removeAnnotation(this._page, this);\n }\n }\n };\n return Pdf3DAnnotation;\n}(PdfAnnotation));\nexport { Pdf3DAnnotation };\n/**\n * `PdfTextMarkupAnnotation` class represents the text markup annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new text markup annotation\n * let annotation: PdfTextMarkupAnnotation = new PdfTextMarkupAnnotation('Text markup', 50, 100, 100, 50);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfTextMarkupAnnotation = /** @class */ (function (_super) {\n __extends(PdfTextMarkupAnnotation, _super);\n function PdfTextMarkupAnnotation(text, x, y, width, height) {\n var _this = _super.call(this) || this;\n _this._textMarkupType = PdfTextMarkupAnnotationType.highlight;\n _this._quadPoints = new Array(8);\n _this._boundsCollection = [];\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n if (typeof text !== 'undefined') {\n _this._text = text;\n }\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n _this._boundsCollection.push([_this.bounds.x, _this.bounds.y, _this.bounds.width, _this.bounds.height]);\n }\n _this._type = _PdfAnnotationType.textMarkupAnnotation;\n return _this;\n }\n Object.defineProperty(PdfTextMarkupAnnotation.prototype, \"textMarkUpColor\", {\n /**\n * Gets the text markup color of the annotation.\n *\n * @returns {number[]} Text markup color as R, G, B color array in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfTextMarkupAnnotation = page.annotations.at(0) as PdfTextMarkupAnnotation;\n * // Gets the textMarkUp Color type of the attachment annotation.\n * let textMarkUpColor: number[] = annotation.textMarkUpColor;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._textMarkUpColor === 'undefined' && this._dictionary.has('C')) {\n this._textMarkUpColor = _parseColor(this._dictionary.getArray('C'));\n }\n return this._textMarkUpColor;\n },\n /**\n * Sets the text markup color of the annotation.\n *\n * @param {number[]} value R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfTextMarkupAnnotation = page.annotations.at(0) as PdfTextMarkupAnnotation;\n * // Sets the textMarkUp Color type of the attachment annotation.\n * annotation.textMarkUpColor = [255, 255, 255];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined' && value.length === 3) {\n var extColor = this.color;\n if (!this._isLoaded ||\n typeof extColor === 'undefined' ||\n (extColor[0] !== value[0] || extColor[1] !== value[1] || extColor[2] !== value[2])) {\n this._color = value;\n this._textMarkUpColor = value;\n this._dictionary.update('C', [Number.parseFloat((value[0] / 255).toFixed(3)),\n Number.parseFloat((value[1] / 255).toFixed(3)),\n Number.parseFloat((value[2] / 255).toFixed(3))]);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextMarkupAnnotation.prototype, \"textMarkupType\", {\n /**\n * Gets the markup type of the annotation.\n *\n * @returns {PdfTextMarkupAnnotationType} Markup type.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfTextMarkupAnnotation = page.annotations.at(0) as PdfTextMarkupAnnotation;\n * // Gets the markup type of the annotation.\n * let textMarkupType: PdfTextMarkupAnnotationType = annotation.textMarkupType;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('Subtype')) {\n var text = this._dictionary.get('Subtype');\n this._textMarkupType = _mapMarkupAnnotationType(text.name);\n }\n return this._textMarkupType;\n },\n /**\n * Sets the markup type of the annotation.\n *\n * @param {PdfTextMarkupAnnotationType} value Markup type.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfTextMarkupAnnotation = page.annotations.at(0) as PdfTextMarkupAnnotation;\n * // Sets the markup type of the annotation.\n * annotation.textMarkupType = PdfTextMarkupAnnotationType.squiggly;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined') {\n this._textMarkupType = value;\n this._dictionary.update('Subtype', _PdfName.get(_reverseMarkupAnnotationType(value)));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextMarkupAnnotation.prototype, \"boundsCollection\", {\n /**\n * Gets the markup bounds collection of the annotation.\n *\n * @returns {Array} Markup bounds.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfTextMarkupAnnotation = page.annotations.at(0) as PdfTextMarkupAnnotation;\n * // Gets the markup bounds collection of the annotation.\n * let boundsCollection : Array = annotation.boundsCollection;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._isLoaded) {\n var collection = [];\n if (this._dictionary.has('QuadPoints')) {\n var points = this._dictionary.getArray('QuadPoints');\n if (points && points.length > 0) {\n var count = points.length / 8;\n for (var i = 0; i < count; i++) {\n var x = points[4 + (i * 8)] - points[i * 8];\n var y = points[5 + (i * 8)] - points[1 + (i * 8)];\n var height = Math.sqrt((x * x) + (y * y));\n x = points[6 + (i * 8)] - points[4 + (i * 8)];\n y = points[7 + (i * 8)] - points[5 + (i * 8)];\n var width = Math.sqrt((x * x) + (y * y));\n var rect = [points[i * 8], this._page.size[1] - points[1 + (i * 8)], width, height];\n collection.push(rect);\n }\n }\n }\n return collection;\n }\n return this._boundsCollection;\n },\n /**\n * Sets the markup bounds collection of the annotation.\n *\n * @param {Array} value Markup bounds.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfTextMarkupAnnotation = page.annotations.at(0) as PdfTextMarkupAnnotation;\n * // Sets the markup bounds collection of the annotation.\n * annotation.boundsCollection = [[50, 50, 100, 100], [201, 101, 61, 31], [101, 401, 61, 31]];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (!this._isLoaded && typeof value !== 'undefined') {\n if (this._boundsCollection.length > 0) {\n this._quadPoints = new Array(8 + (value.length * 8));\n for (var i = 0; i < value.length; i++) {\n this._boundsCollection.push(value[Number.parseInt(i.toString(), 10)]);\n }\n }\n else {\n this._quadPoints = new Array(8);\n this._boundsCollection = value;\n }\n }\n if (this._isLoaded && typeof value !== 'undefined') {\n var isChanged = false;\n if (this.boundsCollection.length === value.length) {\n for (var i = 0; i < value.length; i++) {\n var values = value[Number.parseInt(i.toString(), 10)];\n for (var j = 0; j < values.length; j++) {\n if (value[Number.parseInt(i.toString(), 10)][Number.parseInt(j.toString(), 10)] !==\n this.boundsCollection[Number.parseInt(i.toString(), 10)][Number.parseInt(j.toString(), 10)]) {\n isChanged = true;\n break;\n }\n }\n }\n }\n else {\n isChanged = true;\n }\n if (isChanged) {\n this._quadPoints = new Array((value.length * 8));\n var pageHeight = this._page.size[1];\n for (var i = 0; i < value.length; i++) {\n this._quadPoints[0 + (Number.parseInt(i.toString(), 10) * 8)] = value[Number.parseInt(i.toString(), 10)][0];\n this._quadPoints[1 + (Number.parseInt(i.toString(), 10) * 8)] = pageHeight -\n value[Number.parseInt(i.toString(), 10)][1];\n this._quadPoints[2 + (Number.parseInt(i.toString(), 10) * 8)] = value[Number.parseInt(i.toString(), 10)][0] +\n value[Number.parseInt(i.toString(), 10)][2];\n this._quadPoints[3 + (Number.parseInt(i.toString(), 10) * 8)] = pageHeight -\n value[Number.parseInt(i.toString(), 10)][1];\n this._quadPoints[4 + (Number.parseInt(i.toString(), 10) * 8)] = value[Number.parseInt(i.toString(), 10)][0];\n this._quadPoints[5 + (Number.parseInt(i.toString(), 10) * 8)] = this._quadPoints[1 + (i * 8)] -\n value[Number.parseInt(i.toString(), 10)][3];\n this._quadPoints[6 + (Number.parseInt(i.toString(), 10) * 8)] = value[Number.parseInt(i.toString(), 10)][0] +\n value[Number.parseInt(i.toString(), 10)][2];\n this._quadPoints[7 + (Number.parseInt(i.toString(), 10) * 8)] = this._quadPoints[5 +\n (Number.parseInt(i.toString(), 10) * 8)];\n }\n this._dictionary.update('QuadPoints', this._quadPoints);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfTextMarkupAnnotation._load = function (page, dictionary) {\n var annot = new PdfTextMarkupAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfTextMarkupAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfTextMarkupAnnotation.prototype._postProcess = function () {\n if (typeof this.bounds === 'undefined' || this.bounds === null) {\n throw new Error('Bounds cannot be null or undefined');\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n dictionary.set('W', this.border.width);\n this._dictionary.set('BS', dictionary);\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n var size = this._page.size;\n this._setQuadPoints(size);\n var rect = [this.bounds.x,\n size[1] - (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n this._dictionary.update('Subtype', _PdfName.get(_reverseMarkupAnnotationType(this._textMarkupType)));\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n if (this._setAppearance) {\n this._appearanceTemplate = this._createMarkupAppearance();\n if (!this._isLoaded && this._boundsCollection.length > 1) {\n var native = this._obtainNativeRectangle();\n this._dictionary.update('Rect', [native[0], native[1], native[0] + native[2], native[1] + native[3]]);\n }\n if (this._dictionary.has('AP')) {\n _removeDuplicateReference(this._dictionary.get('AP'), this._crossReference, 'N');\n }\n var dictionary = new _PdfDictionary();\n this._appearanceTemplate._content.dictionary._updated = true;\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._appearanceTemplate._content);\n this._appearanceTemplate._content.reference = reference;\n dictionary.set('N', reference);\n dictionary._updated = true;\n this._dictionary.set('AP', dictionary);\n }\n if (typeof this._text !== 'undefined' && this._text !== null) {\n this._dictionary.set('Contents', this._text);\n }\n };\n PdfTextMarkupAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (this._isLoaded) {\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n this._appearanceTemplate = this._createMarkupAppearance();\n if (!isFlatten) {\n if (this._dictionary.has('AP')) {\n _removeDuplicateReference(this._dictionary.get('AP'), this._crossReference, 'N');\n }\n var dictionary = new _PdfDictionary();\n this._appearanceTemplate._content.dictionary._updated = true;\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._appearanceTemplate._content);\n this._appearanceTemplate._content.reference = reference;\n dictionary.set('N', reference);\n dictionary._updated = true;\n this._dictionary.set('AP', dictionary);\n }\n }\n if (!this._appearanceTemplate && isFlatten && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n if (appearanceStream) {\n var reference = dictionary.getRaw('N');\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n else {\n this._postProcess();\n if (!this._appearanceTemplate) {\n if (isFlatten) {\n if (!this._dictionary.has('AP')) {\n this._appearanceTemplate = this._createMarkupAppearance();\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n if (appearanceStream) {\n var reference = dictionary.getRaw('N');\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n }\n if (typeof this.flattenPopups !== 'undefined' && this.flattenPopups) {\n if (this._isLoaded) {\n this._flattenLoadedPopUp();\n }\n else {\n this._flattenPopUp();\n }\n }\n if (isFlatten && this._appearanceTemplate) {\n var isNormalMatrix = this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary);\n if (!this._appearanceTemplate._content.dictionary.has('Matrix') && !this._isLoaded) {\n var box = this._appearanceTemplate._content.dictionary.getArray('BBox');\n if (box) {\n this._appearanceTemplate._content.dictionary.update('Matrix', [1, 0, 0, 1, -box[0], -box[1]]);\n }\n }\n if (isNormalMatrix && typeof this._page.rotation !== 'undefined' && this._page.rotation !== PdfRotationAngle.angle0) {\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n else if (isNormalMatrix && this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary, this._appearanceTemplate)) {\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n else if (!this._dictionary.has('AP') && this._appearanceTemplate) {\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n }\n };\n PdfTextMarkupAnnotation.prototype._createMarkupAppearance = function () {\n var width;\n var height = 0;\n var rectangle;\n if (this.boundsCollection.length > 1) {\n var pdfPath = new _PdfPath();\n for (var i = 0; i < this.boundsCollection.length; i++) {\n var bounds = [];\n bounds[0] = this.boundsCollection[Number.parseInt(i.toString(), 10)][0];\n bounds[1] = this.boundsCollection[Number.parseInt(i.toString(), 10)][1];\n bounds[2] = this.boundsCollection[Number.parseInt(i.toString(), 10)][2];\n bounds[3] = this.boundsCollection[Number.parseInt(i.toString(), 10)][3];\n pdfPath._addRectangle(bounds[0], bounds[1], bounds[2], bounds[3]);\n }\n var rect = pdfPath._getBounds();\n rectangle = { x: rect[0], y: rect[1], width: rect[2], height: rect[3] };\n this.bounds = rectangle;\n width = rectangle.width;\n height = rectangle.height;\n }\n else {\n if (this._dictionary.has('QuadPoints')) {\n var quadPoints = this._dictionary.get('QuadPoints');\n if (this._quadPoints !== null) {\n for (var i = 0; i < (quadPoints.length / 8); i++) {\n if (this._isLoaded) {\n var point = new Array();\n var j = 0;\n for (var k = 0; k < quadPoints.length;) {\n var x1 = quadPoints[Number.parseInt(k.toString(), 10)];\n var y1 = quadPoints[k + 1];\n point[Number.parseInt(j.toString(), 10)] = [x1, y1];\n k = k + 2;\n j++;\n }\n var path = new _PdfPath();\n path._addLines(point);\n var rect = path._getBounds();\n rectangle = { x: rect[0], y: rect[1], width: rect[2], height: rect[3] };\n width = rectangle.width;\n height = rectangle.height;\n }\n else {\n var x = Math.floor(quadPoints[4 + (i * 8)]) - Math.floor(quadPoints[0 + (i * 8)]);\n var y = Math.floor(quadPoints[5 + (i * 8)]) - Math.floor(quadPoints[1 + (i * 8)]);\n height = Math.sqrt((x * x) + (y * y));\n x = Math.floor(quadPoints[6 + (i * 8)]) - Math.floor(quadPoints[4 + (i * 8)]);\n y = Math.floor(quadPoints[7 + (i * 8)]) - Math.floor(quadPoints[5 + (i * 8)]);\n width = Math.sqrt((x * x) + (y * y));\n this.bounds = { x: this.bounds.x, y: this.bounds.y, width: width, height: height };\n }\n }\n }\n }\n }\n var nativeRectangle = [0, 0, width, height];\n var template = new PdfTemplate(nativeRectangle, this._crossReference);\n _setMatrix(template, this._getRotationAngle());\n var graphics = template.graphics;\n if (typeof this.opacity !== 'undefined') {\n graphics.setTransparency(this.opacity, this.opacity, PdfBlendMode.multiply);\n }\n if (this.textMarkUpColor) {\n var pdfPen = new PdfPen(this.textMarkUpColor, this.border.width);\n var brush = new PdfBrush(this.textMarkUpColor);\n var x1 = 0;\n var y1 = 0;\n var w1 = 0;\n var h1 = 0;\n if (this.boundsCollection.length > 1) {\n for (var i = 0; i < this.boundsCollection.length; i++) {\n var bounds = [];\n bounds[0] = this.boundsCollection[Number.parseInt(i.toString(), 10)][0];\n bounds[1] = this.boundsCollection[Number.parseInt(i.toString(), 10)][1];\n bounds[2] = this.boundsCollection[Number.parseInt(i.toString(), 10)][2];\n bounds[3] = this.boundsCollection[Number.parseInt(i.toString(), 10)][3];\n if (this.textMarkupType === PdfTextMarkupAnnotationType.highlight) {\n graphics.drawRectangle(bounds[0] - rectangle.x, bounds[1] - rectangle.y, bounds[2], bounds[3], brush);\n }\n else if (this.textMarkupType === PdfTextMarkupAnnotationType.underline) {\n x1 = bounds[0] - rectangle.x;\n y1 = (bounds[1] - rectangle.y) + (bounds[3] - ((bounds[3] / 2) / 3));\n w1 = bounds[2] + (bounds[0] - rectangle.x);\n h1 = (bounds[1] - rectangle.y) + (bounds[3] - ((bounds[3] / 2) / 3));\n graphics.drawLine(pdfPen, x1, y1, w1, h1);\n }\n else if (this.textMarkupType === PdfTextMarkupAnnotationType.strikeOut) {\n x1 = bounds[0] - rectangle.x;\n y1 = (bounds[1] - rectangle.y) + (bounds[3] - (bounds[3] / 2));\n w1 = bounds[2] + (bounds[0] - rectangle.x);\n h1 = (bounds[1] - rectangle.y) + (bounds[3] - (bounds[3] / 2));\n graphics.drawLine(pdfPen, x1, y1, w1, h1);\n }\n else if (this.textMarkupType === PdfTextMarkupAnnotationType.squiggly) {\n pdfPen._width = bounds[3] * 0.02;\n graphics.save();\n graphics.translateTransform(bounds[0] - rectangle.x, (bounds[1] - rectangle.y));\n graphics.setClip([0, 0, bounds[2], bounds[3]]);\n graphics._drawPath(this._drawSquiggly(bounds[2], bounds[3]), pdfPen);\n graphics.restore();\n }\n }\n }\n else {\n if (this.textMarkupType === PdfTextMarkupAnnotationType.highlight) {\n graphics.drawRectangle(0, 0, width, height, brush);\n }\n else if (this.textMarkupType === PdfTextMarkupAnnotationType.underline) {\n graphics.drawLine(pdfPen, 0, height - ((height / 2) / 3), width, height - ((height / 2) / 3));\n }\n else if (this.textMarkupType === PdfTextMarkupAnnotationType.strikeOut) {\n graphics.drawLine(pdfPen, 0, height / 2, width, height / 2);\n }\n else if (this.textMarkupType === PdfTextMarkupAnnotationType.squiggly) {\n pdfPen._width = height * 0.02;\n graphics._drawPath(this._drawSquiggly(Math.round(width), Math.round(height)), pdfPen);\n }\n if (this._isLoaded) {\n this._dictionary.update('Rect', [rectangle.x, rectangle.y, rectangle.x + rectangle.width, rectangle.y + rectangle.height]);\n }\n }\n }\n return template;\n };\n PdfTextMarkupAnnotation.prototype._drawSquiggly = function (width, height) {\n if (Math.floor(width) % 2 !== 0 || Math.round(width) > width) {\n width = Math.floor(width) + 1;\n }\n var path = new _PdfPath();\n var pathPoints = new Array();\n var pathPointsCount = Math.ceil((width / height) * 16);\n var length = width / (pathPointsCount / 2);\n var location = parseFloat(((length + length) * 0.6).toFixed(2));\n var zigZag = location;\n var x = 0;\n for (var i = 0; i < pathPointsCount; i++) {\n var y = ((height - location) + zigZag) - (height * 0.02);\n var temp = [x, parseFloat(y.toFixed(2))];\n pathPoints.push(temp);\n if (zigZag === 0) {\n zigZag = location;\n }\n else {\n zigZag = 0;\n }\n x = x + length;\n }\n path._addLines(pathPoints);\n return path;\n };\n PdfTextMarkupAnnotation.prototype._setQuadPoints = function (pageSize) {\n var textQuadLocation = [];\n var pageHeight = pageSize[1];\n this._boundsCollection[0] = [this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height];\n var noofRect = this._quadPoints.length / 8;\n for (var i = 0; i < noofRect; i++) {\n var locationX = this._boundsCollection[Number.parseInt(i.toString(), 10)][0];\n var locationY = this._boundsCollection[Number.parseInt(i.toString(), 10)][1];\n textQuadLocation[0 + (i * 8)] = locationX;\n textQuadLocation[1 + (i * 8)] = (pageHeight - locationY);\n textQuadLocation[2 + (i * 8)] = (locationX + this._boundsCollection[Number.parseInt(i.toString(), 10)][2]);\n textQuadLocation[3 + (i * 8)] = (pageHeight - locationY);\n textQuadLocation[4 + (i * 8)] = locationX;\n textQuadLocation[5 + (i * 8)] = (textQuadLocation[1 + (i * 8)] - this._boundsCollection[Number.parseInt(i.toString(), 10)][3]);\n textQuadLocation[6 + (i * 8)] = (locationX + this._boundsCollection[Number.parseInt(i.toString(), 10)][2]);\n textQuadLocation[7 + (i * 8)] = textQuadLocation[5 + (i * 8)];\n }\n this._points = textQuadLocation;\n this._dictionary.set('QuadPoints', this._points);\n };\n return PdfTextMarkupAnnotation;\n}(PdfComment));\nexport { PdfTextMarkupAnnotation };\n/**\n * `PdfWatermarkAnnotation` class represents the watermark annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new water mark annotation\n * const annotation: PdfWatermarkAnnotation = new PdfWatermarkAnnotation('Water Mark', 50, 100, 100, 50);\n * // Set the color of the annotation\n * annotation.color = [0, 0, 0];\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfWatermarkAnnotation = /** @class */ (function (_super) {\n __extends(PdfWatermarkAnnotation, _super);\n function PdfWatermarkAnnotation(text, x, y, width, height) {\n var _this = _super.call(this) || this;\n _this._watermarkText = '';\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Watermark'));\n if (typeof text !== 'undefined') {\n _this._watermarkText = text;\n _this.text = text;\n }\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n }\n _this._type = _PdfAnnotationType.watermarkAnnotation;\n return _this;\n }\n PdfWatermarkAnnotation._load = function (page, dictionary) {\n var annot = new PdfWatermarkAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfWatermarkAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfWatermarkAnnotation.prototype._postProcess = function () {\n if (typeof this.bounds === 'undefined' || this.bounds === null) {\n throw new Error('Bounds cannot be null or undefined');\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dictionary);\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n if (typeof this.color === 'undefined') {\n this.color = [0, 0, 0];\n }\n this._appearanceTemplate = this._createWatermarkAppearance();\n var size = this._page.size;\n var rect = [this.bounds.x,\n size[1] - (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n if (typeof this.opacity !== 'undefined' && this._opacity !== 1.0) {\n this._dictionary.set('CA', this._opacity);\n }\n };\n PdfWatermarkAnnotation.prototype._createWatermarkAppearance = function () {\n var font = this._obtainFont();\n if ((typeof font === 'undefined' || font === null) || (!this._isLoaded && font.size === 1)) {\n font = this._lineCaptionFont;\n this._pdfFont = font;\n }\n this._rotateAngle = this._getRotationAngle();\n if (typeof this.rotationAngle !== 'undefined' && this._rotate !== PdfRotationAngle.angle0 || this._rotateAngle !== PdfRotationAngle.angle0) {\n if (this._rotateAngle === 0) {\n this._rotateAngle = this.rotationAngle * 90;\n }\n this.bounds = this._getRotatedBounds(this.bounds, this._rotateAngle);\n }\n var nativeRectangle = [0, 0, this.bounds.width, this.bounds.height];\n var appearance = new PdfAppearance(this, nativeRectangle);\n appearance.normal = new PdfTemplate(nativeRectangle, this._crossReference);\n var template = appearance.normal;\n _setMatrix(template, this._rotateAngle);\n var graphics = appearance.normal.graphics;\n var width = this.border.width / 2;\n var format = new PdfStringFormat(PdfTextAlignment.left, PdfVerticalAlignment.top);\n var borderPen = new PdfPen(this.color, width);\n var backBrush;\n if (this.innerColor) {\n backBrush = new PdfBrush(this._innerColor);\n }\n if (this._isLoaded) {\n if (this._dictionary.has('Contents')) {\n this._watermarkText = this._dictionary.get('Contents');\n }\n this._dictionary.update('Contents', this._watermarkText);\n }\n else {\n this._dictionary.update('Contents', this._watermarkText);\n }\n if (typeof this._watermarkText !== 'undefined') {\n graphics.drawString(this._watermarkText, font, [0, 0, 0, 0], borderPen, backBrush, format);\n }\n if (this._dictionary.has('AP')) {\n _removeDuplicateReference(this._dictionary.get('AP'), this._crossReference, 'N');\n }\n var dictionary = new _PdfDictionary();\n graphics._template._content.dictionary._updated = true;\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, graphics._template._content);\n graphics._template._content.reference = reference;\n dictionary.set('N', reference);\n dictionary._updated = true;\n this._dictionary.set('AP', dictionary);\n return template;\n };\n PdfWatermarkAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (this._isLoaded) {\n if (!isFlatten) {\n this._appearanceTemplate = this._createWatermarkAppearance();\n }\n if (!this._appearanceTemplate && isFlatten && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n if (appearanceStream) {\n var reference = dictionary.getRaw('N');\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n else {\n this._postProcess();\n if (!this._appearanceTemplate) {\n if (isFlatten) {\n if (!this._dictionary.has('AP')) {\n this._appearanceTemplate = this._createWatermarkAppearance();\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n if (appearanceStream) {\n var reference = dictionary.getRaw('N');\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n }\n if (isFlatten && this._appearanceTemplate) {\n var isNormalMatrix = this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary);\n if (!this._appearanceTemplate._content.dictionary.has('Matrix')) {\n var box = this._appearanceTemplate._content.dictionary.getArray('BBox');\n if (box) {\n this._appearanceTemplate._content.dictionary.update('Matrix', [1, 0, 0, 1, -box[0], -box[1]]);\n }\n }\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n };\n return PdfWatermarkAnnotation;\n}(PdfAnnotation));\nexport { PdfWatermarkAnnotation };\n/**\n * `PdfRubberStampAnnotation` class represents the rubber stamp annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new rubber stamp annotation\n * const annotation: PdfRubberStampAnnotation = new PdfRubberStampAnnotation (50, 100, 100, 50);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfRubberStampAnnotation = /** @class */ (function (_super) {\n __extends(PdfRubberStampAnnotation, _super);\n function PdfRubberStampAnnotation(x, y, width, height) {\n var _this = _super.call(this) || this;\n _this._icon = PdfRubberStampAnnotationIcon.draft;\n _this._stampWidth = 0;\n _this._iconString = '';\n _this.rotateAngle = 0;\n _this._stampAppearanceFont = new PdfStandardFont(PdfFontFamily.helvetica, 20, PdfFontStyle.italic | PdfFontStyle.bold);\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Stamp'));\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n }\n _this._type = _PdfAnnotationType.rubberStampAnnotation;\n return _this;\n }\n Object.defineProperty(PdfRubberStampAnnotation.prototype, \"icon\", {\n /**\n * Gets the icon type of the rubber stamp annotation.\n *\n * @returns {PdfRubberStampAnnotationIcon} Annotation icon.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRubberStampAnnotationIcon = page.annotations.at(0) as PdfRubberStampAnnotationIcon;\n * // Gets the icon type of the rubber stamp annotation.\n * let icon: PdfRubberStampAnnotationIcon = annotation.icon;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('Name')) {\n this._icon = _mapRubberStampIcon(this._dictionary.get('Name').name);\n }\n return this._icon;\n },\n /**\n * Sets the icon type of the rubber stamp annotation.\n *\n * @param {PdfRubberStampAnnotationIcon} value Annotation icon.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRubberStampAnnotationIcon = page.annotations.at(0) as PdfRubberStampAnnotationIcon;\n * // Sets the icon type of the rubber stamp annotation.\n * annotation.icon = PdfRubberStampAnnotationIcon.completed;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined') {\n this._icon = value;\n this._dictionary.update('Name', _PdfName.get('#' + this._obtainIconName(this._icon)));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRubberStampAnnotation.prototype, \"appearance\", {\n /**\n * Get the appearance of the rubber stamp annotation. (Read only)\n *\n * @returns {PdfAppearance} Returns the appearance of the annotation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new rubber stamp annotation\n * const annotation: PdfRubberStampAnnotation = new PdfRubberStampAnnotation(50, 100, 100, 50);\n * // Get the appearance of the annotation\n * let appearance: PdfAppearance = annotation.appearance;\n * // Access the normal template of the appearance\n * let template: PdfTemplate = appearance.normal;\n * // Create new image object by using JPEG image data as Base64 string format\n * let image: PdfImage = new PdfBitmap('/9j/4AAQSkZJRgABAQEAkACQAAD/4....QB//Z');\n * // Draw the image as the custom appearance for the annotation\n * template.graphics.drawImage(image, 0, 0, 100, 50);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._isLoaded) {\n return null;\n }\n if (typeof this._appearance === 'undefined') {\n var nativeRectangle = [0, 0, this.bounds.width, this.bounds.height];\n this._appearance = new PdfAppearance(this, nativeRectangle);\n this._appearance.normal = new PdfTemplate(nativeRectangle, this._crossReference);\n }\n return this._appearance;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRubberStampAnnotation.prototype, \"_innerTemplateBounds\", {\n get: function () {\n var innerBounds;\n if (this._isLoaded) {\n innerBounds = this._obtainInnerBounds();\n innerBounds.x = this.bounds.x;\n innerBounds.y = this.bounds.y;\n }\n return innerBounds;\n },\n enumerable: true,\n configurable: true\n });\n PdfRubberStampAnnotation._load = function (page, dictionary) {\n var annot = new PdfRubberStampAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfRubberStampAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfRubberStampAnnotation.prototype._postProcess = function () {\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dictionary);\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n this._appearanceTemplate = this._createRubberStampAppearance();\n };\n PdfRubberStampAnnotation.prototype._transformBBox = function (bBoxValue, matrix) {\n var xCoordinate = [];\n var yCoordinate = [];\n var point1 = this._transformPoint(bBoxValue.x, bBoxValue.height, matrix);\n xCoordinate[0] = point1[0];\n yCoordinate[0] = point1[1];\n var point2 = this._transformPoint(bBoxValue.width, bBoxValue.y, matrix);\n xCoordinate[1] = point2[0];\n yCoordinate[1] = point2[1];\n var point3 = this._transformPoint(bBoxValue.x, bBoxValue.y, matrix);\n xCoordinate[2] = point3[0];\n yCoordinate[2] = point3[1];\n var point4 = this._transformPoint(bBoxValue.width, bBoxValue.height, matrix);\n xCoordinate[3] = point4[0];\n yCoordinate[3] = point4[1];\n var rect = [this._minValue(xCoordinate), this._minValue(yCoordinate),\n this._maxValue(xCoordinate), this._maxValue(yCoordinate)];\n return rect;\n };\n PdfRubberStampAnnotation.prototype._transformPoint = function (x, y, matrix) {\n var point = [];\n point[0] = x * matrix[0] + y * matrix[2] + matrix[4];\n point[1] = x * matrix[1] + y * matrix[3] + matrix[5];\n return point;\n };\n PdfRubberStampAnnotation.prototype._minValue = function (values) {\n var minimum = values[0];\n for (var i = 1; i < values.length; i++) {\n if (values[Number.parseInt(i.toString(), 10)] < minimum) {\n minimum = values[Number.parseInt(i.toString(), 10)];\n }\n }\n return minimum;\n };\n PdfRubberStampAnnotation.prototype._maxValue = function (values) {\n var maximum = values[0];\n for (var i = 1; i < values.length; i++) {\n if (values[Number.parseInt(i.toString(), 10)] > maximum) {\n maximum = values[Number.parseInt(i.toString(), 10)];\n }\n }\n return maximum;\n };\n PdfRubberStampAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n var isTransformBBox = false;\n if (this._isLoaded && (this._setAppearance || isFlatten || this._isExport)) {\n if ((!isFlatten && !this._isExport) || this._setAppearance) {\n this._appearanceTemplate = this._createRubberStampAppearance();\n }\n if (!this._appearanceTemplate && (this._isExport || isFlatten) && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n if (appearanceStream) {\n var reference = dictionary.getRaw('N');\n if (reference) {\n appearanceStream.reference = reference;\n }\n var isStamp = false;\n if (this._type === _PdfAnnotationType.rubberStampAnnotation) {\n var isRotated = false;\n var size = void 0;\n var rect = void 0;\n if (appearanceStream) {\n isRotated = (this._page.rotation === PdfRotationAngle.angle0 &&\n this.rotateAngle === PdfRotationAngle.angle0);\n if (!isRotated) {\n isRotated = (this._page.rotation !== PdfRotationAngle.angle0 &&\n this.rotateAngle === PdfRotationAngle.angle0);\n }\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n isStamp = true;\n isTransformBBox = isRotated ? true : false;\n if (isTransformBBox) {\n var matrix = appearanceStream.dictionary.getArray('Matrix');\n if (matrix) {\n var mMatrix = [];\n for (var i = 0; i < matrix.length; i++) {\n var value = matrix[Number.parseInt(i.toString(), 10)];\n mMatrix[Number.parseInt(i.toString(), 10)] = value;\n }\n var bounds = appearanceStream.dictionary.getArray('BBox');\n if (bounds && bounds.length > 3) {\n rect = _toRectangle(bounds);\n var rectangle = this._transformBBox(rect, mMatrix);\n size = [rectangle[2], rectangle[3]];\n this._appearanceTemplate._size = size;\n }\n else {\n size = [rect.width, rect.height];\n }\n }\n }\n else {\n size = [rect.width, rect.height];\n }\n }\n if (!isStamp) {\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n else {\n if (!(this._isImported && this._dictionary.has('AP'))) {\n this._postProcess();\n }\n if ((!this._appearanceTemplate) && (isFlatten || this._isImported)) {\n if (!this._dictionary.has('AP')) {\n this._appearanceTemplate = this._createRubberStampAppearance();\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n if (appearanceStream) {\n var reference = dictionary.getRaw('N');\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n if (typeof this.flattenPopups !== 'undefined' && this.flattenPopups) {\n if (this._isLoaded) {\n this._flattenLoadedPopUp();\n }\n else {\n this._flattenPopUp();\n }\n }\n if (isFlatten && this._appearanceTemplate) {\n var isNormalMatrix = this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary);\n if (!this._appearanceTemplate._content.dictionary.has('Matrix')) {\n var box = this._appearanceTemplate._content.dictionary.getArray('BBox');\n if (box) {\n this._appearanceTemplate._content.dictionary.update('Matrix', [1, 0, 0, 1, -box[0], -box[1]]);\n }\n }\n if (isTransformBBox) {\n this._flattenAnnotationTemplate(this._appearanceTemplate, isTransformBBox);\n }\n else {\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n }\n };\n PdfRubberStampAnnotation.prototype._createRubberStampAppearance = function () {\n var nativeRectangle = [0, 0, this.bounds.width, this.bounds.height];\n var appearance;\n if (this._appearance) {\n appearance = this._appearance;\n if (!this._dictionary.has('Name')) {\n this._dictionary.update('Name', _PdfName.get('#23CustomStamp'));\n }\n }\n else {\n this._iconString = this._obtainIconName(this._icon);\n this._dictionary.update('Name', _PdfName.get('#23' + this._iconString));\n appearance = new PdfAppearance(this, nativeRectangle);\n appearance.normal = new PdfTemplate(nativeRectangle, this._crossReference);\n }\n var template = appearance.normal;\n if (typeof this._rotate !== 'undefined' && (this._rotate !== PdfRotationAngle.angle0 || this._getRotationAngle() !== 0)) {\n this.rotateAngle = this._getRotationAngle();\n if (this.rotateAngle === 0) {\n this.rotateAngle = this.rotationAngle * 90;\n }\n this.bounds = this._getRotatedBounds(this.bounds, this.rotateAngle);\n }\n _setMatrix(template, this.rotateAngle);\n if (!this._appearance) {\n this._drawStampAppearance(template);\n }\n if (this._dictionary.has('AP')) {\n _removeDuplicateReference(this._dictionary.get('AP'), this._crossReference, 'N');\n }\n var dictionary = new _PdfDictionary();\n template._content.dictionary._updated = true;\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, template._content);\n template._content.reference = reference;\n dictionary.set('N', reference);\n dictionary._updated = true;\n this._dictionary.set('AP', dictionary);\n this._dictionary.set('Border', [this.border.hRadius, this.border.vRadius, this.border.width]);\n var size = this._page.size;\n var rectangle = [this.bounds.x, this.bounds.y + this.bounds.height, this.bounds.width, this.bounds.height];\n rectangle[1] = size[1] - (this.bounds.y + this.bounds.height);\n this._dictionary.set('Rect', [rectangle[0], rectangle[1], rectangle[0] + rectangle[2], rectangle[1] + rectangle[3]]);\n return template;\n };\n PdfRubberStampAnnotation.prototype._drawStampAppearance = function (template) {\n var stringFormat = new PdfStringFormat();\n stringFormat.alignment = PdfTextAlignment.center;\n stringFormat.lineAlignment = PdfVerticalAlignment.middle;\n var backBrush = new PdfBrush(this._obtainBackGroundColor());\n var borderPen = new PdfPen(this._obtainBorderColor(), this.border.width);\n var graphics = template.graphics;\n graphics.save();\n graphics.scaleTransform(template._size[0] / (this._stampWidth + 4), (template._size[1] / 28));\n var rubberFont = this._stampAppearanceFont;\n this._drawRubberStamp(graphics, borderPen, backBrush, rubberFont, stringFormat);\n graphics.restore();\n };\n PdfRubberStampAnnotation.prototype._obtainIconName = function (icon) {\n switch (icon) {\n case PdfRubberStampAnnotationIcon.approved:\n this._iconString = 'Approved';\n this._stampWidth = 126;\n break;\n case PdfRubberStampAnnotationIcon.asIs:\n this._iconString = 'AsIs';\n this._stampWidth = 75;\n break;\n case PdfRubberStampAnnotationIcon.confidential:\n this._iconString = 'Confidential';\n this._stampWidth = 166;\n break;\n case PdfRubberStampAnnotationIcon.departmental:\n this._iconString = 'Departmental';\n this._stampWidth = 186;\n break;\n case PdfRubberStampAnnotationIcon.draft:\n this._iconString = 'Draft';\n this._stampWidth = 90;\n break;\n case PdfRubberStampAnnotationIcon.experimental:\n this._iconString = 'Experimental';\n this._stampWidth = 176;\n break;\n case PdfRubberStampAnnotationIcon.expired:\n this._iconString = 'Expired';\n this._stampWidth = 116;\n break;\n case PdfRubberStampAnnotationIcon.final:\n this._iconString = 'Final';\n this._stampWidth = 90;\n break;\n case PdfRubberStampAnnotationIcon.forComment:\n this._iconString = 'ForComment';\n this._stampWidth = 166;\n break;\n case PdfRubberStampAnnotationIcon.forPublicRelease:\n this._iconString = 'ForPublicRelease';\n this._stampWidth = 240;\n break;\n case PdfRubberStampAnnotationIcon.notApproved:\n this._iconString = 'NotApproved';\n this._stampWidth = 186;\n break;\n case PdfRubberStampAnnotationIcon.notForPublicRelease:\n this._iconString = 'NotForPublicRelease';\n this._stampWidth = 290;\n break;\n case PdfRubberStampAnnotationIcon.sold:\n this._iconString = 'Sold';\n this._stampWidth = 75;\n break;\n case PdfRubberStampAnnotationIcon.topSecret:\n this._iconString = 'TopSecret';\n this._stampWidth = 146;\n break;\n case PdfRubberStampAnnotationIcon.completed:\n this._iconString = 'Completed';\n this._stampWidth = 136;\n break;\n case PdfRubberStampAnnotationIcon.void:\n this._iconString = 'Void';\n this._stampWidth = 75;\n break;\n case PdfRubberStampAnnotationIcon.informationOnly:\n this._iconString = 'InformationOnly';\n this._stampWidth = 230;\n break;\n case PdfRubberStampAnnotationIcon.preliminaryResults:\n this._iconString = 'PreliminaryResults';\n this._stampWidth = 260;\n break;\n }\n return this._iconString;\n };\n PdfRubberStampAnnotation.prototype._obtainBackGroundColor = function () {\n var color = [];\n var red;\n var green;\n var blue;\n if (this._icon === PdfRubberStampAnnotationIcon.notApproved ||\n this._icon === PdfRubberStampAnnotationIcon.void) {\n red = 251;\n green = 222;\n blue = 221;\n color = [red, green, blue];\n }\n else if (this._icon === PdfRubberStampAnnotationIcon.approved ||\n this._icon === PdfRubberStampAnnotationIcon.final ||\n this._icon === PdfRubberStampAnnotationIcon.completed) {\n red = 229;\n green = 238;\n blue = 222;\n color = [red, green, blue];\n }\n else {\n red = 219;\n green = 227;\n blue = 240;\n color = [red, green, blue];\n }\n return color;\n };\n PdfRubberStampAnnotation.prototype._obtainBorderColor = function () {\n var color = [];\n var red;\n var green;\n var blue;\n if (this._icon === PdfRubberStampAnnotationIcon.notApproved ||\n this._icon === PdfRubberStampAnnotationIcon.void) {\n red = 151;\n green = 23;\n blue = 15;\n color = [red, green, blue];\n }\n else if (this._icon === PdfRubberStampAnnotationIcon.approved ||\n this._icon === PdfRubberStampAnnotationIcon.final ||\n this._icon === PdfRubberStampAnnotationIcon.completed) {\n red = 73;\n green = 110;\n blue = 38;\n color = [red, green, blue];\n }\n else {\n red = 24;\n green = 37;\n blue = 100;\n color = [red, green, blue];\n }\n return color;\n };\n PdfRubberStampAnnotation.prototype._drawRubberStamp = function (graphics, pen, brush, font, format) {\n graphics.drawRoundedRectangle(2, 1, this._stampWidth, 26, 3, pen, brush);\n var pdfBrush = new PdfBrush(this._obtainBorderColor());\n graphics.drawString(this._iconString.toUpperCase(), font, [(this._stampWidth / 2) + 1, 15, 0, 0], null, pdfBrush, format);\n };\n PdfRubberStampAnnotation.prototype._obtainInnerBounds = function () {\n var bounds = { x: 0, y: 0, width: 0, height: 0 };\n if (this._dictionary && this._dictionary.has('AP')) {\n var appearanceDictionary = this._dictionary.get('AP');\n if (appearanceDictionary && appearanceDictionary.has('N')) {\n var normalAppearance = appearanceDictionary.get('N');\n if (normalAppearance && typeof normalAppearance.dictionary !== 'undefined') {\n var normalAppearanceDictionary = normalAppearance.dictionary;\n if (normalAppearanceDictionary.has('BBox')) {\n var values = normalAppearanceDictionary.getArray('BBox');\n if (values && values.length === 4) {\n bounds = _toRectangle(values);\n }\n }\n }\n }\n }\n return bounds;\n };\n return PdfRubberStampAnnotation;\n}(PdfComment));\nexport { PdfRubberStampAnnotation };\n/**\n * `PdfSoundAnnotation` class represents the sound annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfSoundAnnotation = page.annotations.at(0) as PdfSoundAnnotation;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfSoundAnnotation = /** @class */ (function (_super) {\n __extends(PdfSoundAnnotation, _super);\n /**\n * Initializes a new instance of the `PdfSoundAnnotation` class.\n *\n * @private\n */\n function PdfSoundAnnotation() {\n var _this = _super.call(this) || this;\n _this._type = _PdfAnnotationType.soundAnnotation;\n return _this;\n }\n PdfSoundAnnotation._load = function (page, dictionary) {\n var annot = new PdfSoundAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfSoundAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfSoundAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (isFlatten) {\n var appearanceStream = void 0;\n if (this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (reference && appearanceStream) {\n appearanceStream.reference = reference;\n }\n }\n }\n if (appearanceStream) {\n var template = new PdfTemplate(appearanceStream, this._crossReference);\n var isNormalMatrix = this._validateTemplateMatrix(template._content.dictionary);\n this._flattenAnnotationTemplate(template, isNormalMatrix);\n }\n else {\n this._removeAnnotation(this._page, this);\n }\n }\n };\n return PdfSoundAnnotation;\n}(PdfComment));\nexport { PdfSoundAnnotation };\n/**\n * `PdfFreeTextAnnotation` class represents the free text annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new free text annotation\n * const annotation: PdfFreeTextAnnotation = new PdfFreeTextAnnotation(50, 100, 100, 50);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfFreeTextAnnotation = /** @class */ (function (_super) {\n __extends(PdfFreeTextAnnotation, _super);\n function PdfFreeTextAnnotation(x, y, width, height) {\n var _this = _super.call(this) || this;\n _this._intentString = '';\n _this._markUpFont = new PdfStandardFont(PdfFontFamily.helvetica, 7, PdfFontStyle.regular);\n _this._textAlignment = PdfTextAlignment.left;\n _this._cropBoxValueX = 0;\n _this._cropBoxValueY = 0;\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('FreeText'));\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n }\n _this._type = _PdfAnnotationType.freeTextAnnotation;\n return _this;\n }\n Object.defineProperty(PdfFreeTextAnnotation.prototype, \"calloutLines\", {\n /**\n * Gets the callout lines of the free text annotation.\n *\n * @returns {Array} Callout lines.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFreeTextAnnotation= page.annotations.at(0) as PdfFreeTextAnnotation;\n * // Gets the callout lines of the free text annotation.\n * let calloutLines: Array = annotation.calloutLines;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._calloutLines === 'undefined') {\n this._calloutLines = this._getCalloutLinePoints();\n }\n return this._calloutLines;\n },\n /**\n * Sets the callout lines of the free text annotation.\n *\n * @param {Array} value Callout lines.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFreeTextAnnotation = page.annotations.at(0) as PdfFreeTextAnnotation;\n * // Sets the callout lines of the free text annotation.\n * annotation.calloutLines = [[100, 450], [100, 200], [100, 150]];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (!this._isLoaded) {\n this._calloutLines = value;\n }\n var isChanged = false;\n if (this._isLoaded && value.length >= 2) {\n if (this._calloutLines.length === value.length) {\n for (var i = 0; i < value.length; i++) {\n var values = value[Number.parseInt(i.toString(), 10)];\n for (var j = 0; j < values.length; j++) {\n if (value[Number.parseInt(i.toString(), 10)][Number.parseInt(j.toString(), 10)] !==\n this._calloutLines[Number.parseInt(i.toString(), 10)][Number.parseInt(j.toString(), 10)]) {\n isChanged = true;\n break;\n }\n }\n }\n }\n else {\n isChanged = true;\n }\n }\n if (isChanged) {\n var pageHeight = this._page.size[1];\n var lines = [];\n for (var i = 0; i < value.length; i++) {\n if (i < value.length) {\n lines.push(value[Number.parseInt(i.toString(), 10)][0] + this._cropBoxValueX);\n lines.push((pageHeight + this._cropBoxValueY) - value[Number.parseInt(i.toString(), 10)][1]);\n }\n else {\n break;\n }\n }\n this._calloutLines = value;\n this._dictionary.update('CL', lines);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFreeTextAnnotation.prototype, \"lineEndingStyle\", {\n /**\n * Gets the line ending style of the annotation.\n *\n * @returns {PdfLineEndingStyle} Line ending style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFreeTextAnnotation = page.annotations.at(0) as PdfFreeTextAnnotation;\n * // Gets the Line ending style of the annotation.\n * let lineEndingStyle: PdfLineEndingStyle = annotation.lineEndingStyle;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n this._lineEndingStyle = this._obtainLineEndingStyle();\n return this._lineEndingStyle;\n },\n /**\n * Sets the line ending style of the line annotation.\n *\n * @param {PdfLineEndingStyle} value Line ending style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFreeTextAnnotation = page.annotations.at(0) as PdfFreeTextAnnotation;\n * // Sets the line ending style of the line annotation.\n * annotation.lineEndingStyle = PdfLineEndingStyle.closedArrow;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined') {\n this._dictionary.update('LE', _PdfName.get(_reverseMapEndingStyle(value)));\n }\n this._lineEndingStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFreeTextAnnotation.prototype, \"textMarkUpColor\", {\n /**\n * Gets the text markup color of the annotation.\n *\n * @returns {number[]} Text markup color as R, G, B color array in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFreeTextAnnotation = page.annotations.at(0) as PdfFreeTextAnnotation;\n * // Gets the text markup color of the annotation.\n * let textMarkUpColor: number[] = annotation.textMarkUpColor;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._textMarkUpColor === 'undefined') {\n var color = void 0;\n if (this._dictionary.has('TextColor')) {\n this._textMarkUpColor = _parseColor(this._dictionary.getArray('TextColor'));\n return this._textMarkUpColor;\n }\n if (this._dictionary.has('DS')) {\n var collections = this._dictionary.get('DS').split(';');\n for (var i = 0; i < collections.length; i++) {\n if (collections[Number.parseInt(i.toString(), 10)].indexOf('color') !== -1) {\n color = collections[Number.parseInt(i.toString(), 10)].split(':')[1];\n if (color.startsWith('#')) {\n color = color.substring(1);\n }\n this._textMarkUpColor = _convertToColor(color);\n return this._textMarkUpColor;\n }\n }\n }\n if (!this._textMarkUpColor && this._dictionary.has('RC')) {\n //Need to code\n }\n }\n return this._textMarkUpColor;\n },\n /**\n * Sets the text markup color of the annotation.\n *\n * @param {number[]} value R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFreeTextAnnotation = page.annotations.at(0) as PdfFreeTextAnnotation;\n * // Sets the text markup color of the annotation.\n * annotation.textMarkUpColor = [200, 200, 200];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined' && value.length === 3) {\n this._textMarkUpColor = value;\n var ds = 'font:' +\n this.font._metrics._postScriptName +\n ' ' +\n this.font._size +\n 'pt;style:' + _reverseMapPdfFontStyle(this.font._style) +\n ';color:' +\n this._colorToHex(value);\n this._dictionary.update('DS', ds);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFreeTextAnnotation.prototype, \"textAlignment\", {\n /**\n * Gets the text alignment of the annotation.\n *\n * @returns {PdfTextAlignment} Text alignment.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFreeTextAnnotation = page.annotations.at(0) as PdfFreeTextAnnotation;\n * // Gets the text alignment of the annotation.\n * let textAlignment: PdfTextAlignment = annotation.textAlignment;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('Q')) {\n this._textAlignment = this._dictionary.get('Q');\n }\n return this._textAlignment;\n },\n /**\n * Sets the text alignment of the annotation.\n *\n * @param {PdfTextAlignment} value Text alignment.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFreeTextAnnotation = page.annotations.at(0) as PdfFreeTextAnnotation;\n * // Sets the text alignment of the annotation.\n * annotation.textAlignment = PdfTextAlignment.justify;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._textAlignment !== value) {\n this._dictionary.update('Q', value);\n }\n this._textAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFreeTextAnnotation.prototype, \"font\", {\n /**\n * Gets the font of the annotation.\n *\n * @returns {PdfFont} font.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFreeTextAnnotation = page.annotations.at(0) as PdfFreeTextAnnotation;\n * // Gets the font of the annotation.\n * let font: PdfFont = annotation.font;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (!this._font) {\n this._font = this._obtainFont();\n if ((this._font === null || typeof this._font === 'undefined') || (!this._isLoaded && this._font.size === 1)) {\n this._font = this._markUpFont;\n }\n }\n return this._font;\n },\n /**\n * Sets the font of the annotation.\n *\n * @param {PdfFont} value font.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFreeTextAnnotation = page.annotations.at(0) as PdfFreeTextAnnotation;\n * // Sets the font of the annotation.\n * annotation.font = new PdfStandardFont(PdfFontFamily.helvetica, 10, PdfFontStyle.regular);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._font = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFreeTextAnnotation.prototype, \"borderColor\", {\n /**\n * Gets the border color of the annotation.\n *\n * @returns {number[]} R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFreeTextAnnotation = page.annotations.at(0) as PdfFreeTextAnnotation;\n * // Gets the border color of the annotation.\n * let borderColor: number[] = annotation.borderColor;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._borderColor === 'undefined' && this._dictionary.has('DA')) {\n this._borderColor = this._obtainColor();\n }\n return this._borderColor;\n },\n /**\n * Sets the border color of the annotation.\n *\n * @param {number[]} value R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFreeTextAnnotation = page.annotations.at(0) as PdfFreeTextAnnotation;\n * // Sets the border color of the annotation.\n * annotation.borderColor = [150, 150, 150];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined' && value.length === 3) {\n this._borderColor = value;\n this._dictionary.update('DA', this._getBorderColorString(this.borderColor));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFreeTextAnnotation.prototype, \"annotationIntent\", {\n /**\n * Gets the intent of the annotation.\n *\n * @returns {PdfAnnotationIntent} Annotation intent.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFreeTextAnnotation = page.annotations.at(0) as PdfFreeTextAnnotation;\n * // Gets the intent of the annotation.\n * let annotationIntent: PdfAnnotationIntent = annotation.annotationIntent;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('IT')) {\n this._annotationIntent = _mapAnnotationIntent(this._dictionary.get('IT').name);\n }\n else {\n this._annotationIntent = PdfAnnotationIntent.none;\n }\n return this._annotationIntent;\n },\n /**\n * Sets the intent of the annotation.\n *\n * @param {PdfAnnotationIntent} value Annotation intent.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfFreeTextAnnotation = page.annotations.at(0) as PdfFreeTextAnnotation;\n * // Sets the intent of the annotation.\n * annotation.annotationIntent = PdfAnnotationIntent.freeTextTypeWriter;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined') {\n this._annotationIntent = value;\n if (value === PdfAnnotationIntent.none) {\n this._dictionary.update('Subj', 'Text Box');\n }\n else {\n this._dictionary.update('IT', _PdfName.get(this._obtainAnnotationIntent(this._annotationIntent)));\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFreeTextAnnotation.prototype, \"_mkDictionary\", {\n get: function () {\n var value;\n if (this._dictionary.has('MK')) {\n value = this._dictionary.get('MK');\n }\n return value;\n },\n enumerable: true,\n configurable: true\n });\n PdfFreeTextAnnotation._load = function (page, dictionary) {\n var annot = new PdfFreeTextAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfFreeTextAnnotation.prototype._setPaddings = function (paddings) {\n this._paddings = paddings;\n };\n PdfFreeTextAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfFreeTextAnnotation.prototype._postProcess = function (isFlatten) {\n if (typeof this.bounds === 'undefined' || this.bounds === null) {\n throw new Error('Bounds cannot be null or undefined');\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dictionary);\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n this._updateCropBoxValues();\n if (isFlatten || this._setAppearance) {\n this._appearanceTemplate = this._createAppearance();\n }\n if (!isFlatten) {\n var size = this._page.size;\n var rect = [this.bounds.x,\n size[1] - (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n this._saveFreeTextDictionary();\n }\n };\n PdfFreeTextAnnotation.prototype._updateCropBoxValues = function () {\n if (this._page) {\n var cropOrMediaBox = void 0;\n if (this._page._pageDictionary.has('CropBox')) {\n cropOrMediaBox = this._page._pageDictionary.getArray('CropBox');\n }\n else if (this._page._pageDictionary.has('MediaBox')) {\n cropOrMediaBox = this._page._pageDictionary.getArray('MediaBox');\n }\n if (cropOrMediaBox) {\n this._cropBoxValueX = cropOrMediaBox[0];\n this._cropBoxValueY = cropOrMediaBox[1];\n }\n }\n };\n PdfFreeTextAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (this._isLoaded) {\n if (this._setAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n this._appearanceTemplate = this._createAppearance();\n }\n if (!this._appearanceTemplate && isFlatten && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n if (appearanceStream) {\n var reference = dictionary.getRaw('N');\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n else {\n this._postProcess(isFlatten);\n if (!this._appearanceTemplate && isFlatten) {\n if (!this._dictionary.has('AP')) {\n this._appearanceTemplate = this._createAppearance();\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n if (appearanceStream) {\n var reference = dictionary.getRaw('N');\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n if (typeof this.flattenPopups !== 'undefined' && this.flattenPopups) {\n if (this._isLoaded) {\n this._flattenLoadedPopUp();\n }\n else {\n this._flattenPopUp();\n }\n }\n if (isFlatten && this._appearanceTemplate) {\n var isNormalMatrix = this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary);\n if (!this._appearanceTemplate._content.dictionary.has('Matrix') && !this._isLoaded) {\n var box = this._appearanceTemplate._content.dictionary.getArray('BBox');\n if (box) {\n this._appearanceTemplate._content.dictionary.update('Matrix', [1, 0, 0, 1, -box[0], -box[1]]);\n }\n }\n if (isNormalMatrix && typeof this._page.rotation !== 'undefined' && this._page.rotation !== PdfRotationAngle.angle0) {\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n else if (this._appearanceTemplate && !this._dictionary.has('AP')) {\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n else if (this._dictionary.has('AP')) {\n if (this._isValidTemplateMatrix(this._appearanceTemplate._content.dictionary, this.bounds, this._appearanceTemplate)) {\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n }\n }\n if (!isFlatten && this._setAppearance) {\n var appearance = void 0;\n if (this._dictionary.has('AP')) {\n appearance = this._dictionary.get('AP');\n }\n else {\n var reference_8 = this._crossReference._getNextReference();\n appearance = new _PdfDictionary(this._crossReference);\n this._crossReference._cacheMap.set(reference_8, appearance);\n this._dictionary.update('AP', reference_8);\n }\n _removeDuplicateReference(appearance, this._crossReference, 'N');\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._appearanceTemplate._content);\n appearance.update('N', reference);\n }\n };\n PdfFreeTextAnnotation.prototype._isValidTemplateMatrix = function (dictionary, bounds, appearanceTemplate) {\n var isValidMatrix = true;\n var pointF = bounds;\n if (dictionary && dictionary.has('Matrix')) {\n var box = dictionary.getArray('BBox');\n var matrix = dictionary.getArray('Matrix');\n if (matrix && box && matrix.length > 3 && box.length > 2) {\n if (typeof matrix[0] !== 'undefined' &&\n typeof matrix[1] !== 'undefined' &&\n typeof matrix[2] !== 'undefined' &&\n typeof matrix[3] !== 'undefined') {\n if (matrix[0] === 1 && matrix[1] === 0 && matrix[2] === 0 && matrix[3] === 1) {\n if (typeof box[0] !== 'undefined' &&\n typeof box[1] !== 'undefined' &&\n typeof box[2] !== 'undefined' &&\n typeof box[3] !== 'undefined') {\n if (Math.round(box[0]) !== Math.round(-(matrix[4])) && Math.round(box[1]) !== Math.round(-(matrix[5])) ||\n box[0] === 0 && Math.round(-(matrix[4])) === 0) {\n var graphics = this._page.graphics;\n var state = graphics.save();\n if (typeof this.opacity !== 'undefined' && this._opacity < 1) {\n graphics.setTransparency(this._opacity);\n }\n pointF.x -= box[0];\n pointF.y += box[1];\n graphics._drawTemplate(appearanceTemplate, pointF);\n graphics.restore(state);\n this._removeAnnotationFromPage(this._page, this);\n isValidMatrix = false;\n }\n }\n }\n }\n }\n }\n return isValidMatrix;\n };\n PdfFreeTextAnnotation.prototype._createAppearance = function () {\n var template;\n var borderWidth = this.border.width / 2;\n var nativeRectangle = this._obtainAppearanceBounds();\n var rotationAngle = this.rotate;\n if (rotationAngle === 0 || rotationAngle === 90 || rotationAngle === 180 || rotationAngle === 270) {\n this._isAllRotation = false;\n }\n if (rotationAngle > 0 && this._isAllRotation) {\n template = new PdfTemplate([0, 0, nativeRectangle[2], nativeRectangle[3]], this._crossReference);\n }\n else {\n template = new PdfTemplate(nativeRectangle, this._crossReference);\n }\n _setMatrix(template, this._getRotationAngle());\n var parameter = new _PaintParameter();\n var text = this._obtainText();\n template._writeTransformation = false;\n var graphics = template.graphics;\n var alignment = this._obtainTextAlignment();\n var borderColor = this._obtainColor();\n var borderPen = new PdfPen(borderColor, this.border.width);\n if (this.border.width > 0) {\n parameter.borderPen = borderPen;\n }\n var rectangle = this._obtainStyle(borderPen, nativeRectangle, borderWidth, parameter);\n if (this.color) {\n parameter.foreBrush = new PdfBrush(this._color);\n }\n if (this.textMarkUpColor) {\n parameter.backBrush = new PdfBrush(this._textMarkUpColor);\n }\n parameter.borderWidth = this.border.width;\n if (this.calloutLines && this._calloutLines.length >= 2) {\n this._drawCallOuts(graphics, borderPen);\n if (this._isLoaded && typeof this._lineEndingStyle === 'undefined') {\n this._lineEndingStyle = this.lineEndingStyle;\n }\n if (this._lineEndingStyle !== PdfLineEndingStyle.none) {\n var linePoints = this._obtainLinePoints();\n var angle = this._getAngle(linePoints);\n var endPoint = this._getAxisValue([linePoints[2], linePoints[3]], 90, 0);\n this._drawLineEndStyle(endPoint, graphics, angle, borderPen, parameter.foreBrush, this.lineEndingStyle, this.border.width, false);\n }\n if (!this._dictionary.has('RD')) {\n rectangle = [this.bounds.x,\n -((this._page.size[1] - (this.bounds.y + this.bounds.height))),\n this.bounds.width,\n -this.bounds.height];\n }\n else {\n rectangle = [rectangle[0], -rectangle[1], rectangle[2], -rectangle[3]];\n }\n rectangle[0] = rectangle[0] + this._cropBoxValueX;\n rectangle[1] = rectangle[1] - this._cropBoxValueY;\n this._calculateRectangle(rectangle);\n parameter.bounds = rectangle;\n }\n else {\n rectangle = [rectangle[0], -rectangle[1], rectangle[2], -rectangle[3]];\n parameter.bounds = rectangle;\n }\n var outerRectangle = this._obtainAppearanceBounds();\n var value = [rectangle[0] - outerRectangle[0], (-(rectangle[1])) - outerRectangle[1], rectangle[2] - outerRectangle[2],\n (((-rectangle[1]) - outerRectangle[1]) + (-rectangle[3])) - outerRectangle[3]];\n for (var i = 0; i < value.length; i++) {\n if (value[Number.parseInt(i.toString(), 10)] < 0) {\n value[Number.parseInt(i.toString(), 10)] = -value[Number.parseInt(i.toString(), 10)];\n }\n }\n this._dictionary.update('RD', value);\n if (this.opacity && this._opacity < 1) {\n graphics.save();\n graphics.setTransparency(this._opacity);\n }\n if (this.rotationAngle && this._rotate !== PdfRotationAngle.angle0) {\n graphics.save();\n }\n this._drawFreeTextRectangle(graphics, parameter, rectangle, alignment);\n this._drawFreeMarkUpText(graphics, parameter, rectangle, text, alignment);\n if (this.opacity && this._opacity < 1) {\n graphics.restore();\n }\n if (this.rotationAngle && this._rotate !== PdfRotationAngle.angle0) {\n graphics.restore();\n }\n var bounds = this._obtainAppearanceBounds();\n this._dictionary.set('Rect', [bounds[0], bounds[1], bounds[0] + bounds[2], bounds[1] + bounds[3]]);\n return template;\n };\n PdfFreeTextAnnotation.prototype._calculateRectangle = function (innerRectangle) {\n var outerRectangle = this._obtainAppearanceBounds();\n var value = [innerRectangle[0] - outerRectangle[0],\n (-(innerRectangle[1])) - outerRectangle[1], innerRectangle[2] - outerRectangle[2],\n (((-innerRectangle[1]) - outerRectangle[1]) + (-innerRectangle[3])) - outerRectangle[3]];\n for (var i = 0; i < 4; i++) {\n if (value[Number.parseInt(i.toString(), 10)] < 0) {\n value[Number.parseInt(i.toString(), 10)] = -value[Number.parseInt(i.toString(), 10)];\n }\n }\n this._dictionary.set('RD', value);\n };\n PdfFreeTextAnnotation.prototype._obtainAnnotationIntent = function (_annotationIntent) {\n switch (_annotationIntent) {\n case PdfAnnotationIntent.freeTextCallout:\n this._intentString = 'FreeTextCallout';\n break;\n case PdfAnnotationIntent.freeTextTypeWriter:\n this._intentString = 'FreeTextTypeWriter';\n break;\n }\n return this._intentString;\n };\n PdfFreeTextAnnotation.prototype._obtainFont = function () {\n var fontData = this._obtainFontDetails();\n if (!fontData.size && this._dictionary.has('RC')) {\n //Parse XML data\n }\n return _mapFont(fontData.name, fontData.size, fontData.style, this);\n };\n PdfFreeTextAnnotation.prototype._drawFreeMarkUpText = function (graphics, parameter, rectangle, text, alignment) {\n var isRotation = false;\n var angle = this.rotate;\n if (this.rotationAngle === PdfRotationAngle.angle90 && !this._isAllRotation) {\n rectangle = [-rectangle[1], rectangle[0], -rectangle[3], rectangle[2]];\n }\n else if (this.rotationAngle === PdfRotationAngle.angle180 && !this._isAllRotation) {\n rectangle = [-(rectangle[0] + rectangle[2]), -rectangle[3], rectangle[2], -rectangle[3]];\n }\n else if (this.rotationAngle === PdfRotationAngle.angle270 && !this._isAllRotation) {\n rectangle = [(rectangle[1] + rectangle[3]), -(rectangle[0] + rectangle[2]), -rectangle[3], rectangle[2]];\n }\n else if (angle === 0 && !this._isAllRotation) {\n rectangle = [rectangle[0], (rectangle[1] + rectangle[3]), rectangle[2], rectangle[3]];\n }\n if ((typeof this._font === 'undefined' || this._font === null) || (!this._isLoaded && this._font.size === 1)) {\n this._font = this._markUpFont;\n }\n if (angle > 0 && this._isAllRotation) {\n isRotation = true;\n var bounds_1 = this.bounds;\n var format = new PdfStringFormat(PdfTextAlignment.center, PdfVerticalAlignment.middle);\n var textSize = this._font.measureString(text, [0, 0], format, 0, 0);\n if (angle > 0 && angle <= 91) {\n graphics.translateTransform(textSize[1], -bounds_1.height);\n }\n else if (angle > 91 && angle <= 181) {\n graphics.translateTransform(bounds_1.width - textSize[1], -(bounds_1.height - textSize[1]));\n }\n else if (angle > 181 && angle <= 271) {\n graphics.translateTransform(bounds_1.width - textSize[1], -textSize[1]);\n }\n else if (angle > 271 && angle < 360) {\n graphics.translateTransform(textSize[1], -textSize[1]);\n }\n graphics.rotateTransform(angle);\n parameter.bounds = [0, 0, parameter.bounds[2], parameter.bounds[3]];\n }\n var bounds = [rectangle[0], rectangle[1], rectangle[2], rectangle[3]];\n if (this._paddings && !this._isLoaded) {\n var left = this._paddings._left;\n var top_8 = this._paddings._top;\n var right = this._paddings._right + this._paddings._left;\n var bottom = this._paddings._top + this._paddings._bottom;\n if (parameter.borderWidth > 0) {\n var first_1 = rectangle[0] + (parameter.borderWidth + left);\n var second_1 = rectangle[1] + (parameter.borderWidth + top_8);\n var third = rectangle[2] - ((parameter.borderWidth * 2) + right);\n var forth = void 0;\n if (rectangle[3] > 0) {\n forth = rectangle[3] - ((parameter.borderWidth * 2) + bottom);\n }\n else {\n forth = -rectangle[3] - ((parameter.borderWidth * 2) + bottom);\n }\n rectangle = [first_1, second_1, third, forth];\n }\n else {\n var first_2 = rectangle[0] + left;\n var second_2 = rectangle[1] + top_8;\n var third = rectangle[2] - right;\n var forth = void 0;\n if (rectangle[3] > 0) {\n forth = rectangle[3] - bottom;\n }\n else {\n forth = -rectangle[3] - bottom;\n }\n rectangle = [first_2, second_2, third, forth];\n }\n }\n else if (parameter.borderWidth > 0) {\n rectangle = [rectangle[0] + (parameter.borderWidth * 1.5),\n rectangle[1] + (parameter.borderWidth * 1.5),\n rectangle[2] - (parameter.borderWidth * 3),\n (rectangle[3] > 0) ? (rectangle[3] - (parameter.borderWidth * 3)) : (-rectangle[3] - (parameter.borderWidth * 3))];\n }\n var first = this._font._metrics._getHeight() > ((rectangle[3] > 0) ? rectangle[3] : -rectangle[3]);\n var second = this._font._metrics._getHeight() <= ((bounds[3] > 0) ? bounds[3] : -bounds[3]);\n var checkPaddingWithFontHeight = first && second;\n this._drawFreeTextAnnotation(graphics, parameter, text, this._font, checkPaddingWithFontHeight ? bounds : rectangle, true, alignment, isRotation);\n };\n PdfFreeTextAnnotation.prototype._drawFreeTextRectangle = function (graphics, parameter, rectangle, alignment) {\n var isRotation = false;\n if (this._dictionary.has('BE')) {\n for (var i = 0; i < rectangle.length; i++) {\n if (rectangle[Number.parseInt(i.toString(), 10)] < 0) {\n rectangle[Number.parseInt(i.toString(), 10)] = -rectangle[Number.parseInt(i.toString(), 10)];\n }\n }\n this._drawAppearance(graphics, parameter, rectangle);\n if (this.rotationAngle === PdfRotationAngle.angle90 && !this._isAllRotation) {\n graphics.rotateTransform(-90);\n }\n else if (this.rotationAngle === PdfRotationAngle.angle180 && !this._isAllRotation) {\n graphics.rotateTransform(-180);\n }\n else if (this.rotationAngle === PdfRotationAngle.angle270 && !this._isAllRotation) {\n graphics.rotateTransform(-270);\n }\n }\n else {\n if (this.rotationAngle === PdfRotationAngle.angle90 && !this._isAllRotation) {\n graphics.rotateTransform(-90);\n parameter.bounds = [-rectangle[1], rectangle[2] + rectangle[0] - rectangle[3], -rectangle[2]];\n }\n else if (this.rotationAngle === PdfRotationAngle.angle180 && !this._isAllRotation) {\n graphics.rotateTransform(-180);\n parameter.bounds = [-(rectangle[2] + rectangle[0]), -(rectangle[3] + rectangle[1]), rectangle[2], rectangle[3]];\n }\n else if (this.rotationAngle === PdfRotationAngle.angle270 && !this._isAllRotation) {\n graphics.rotateTransform(-270);\n parameter.bounds = [rectangle[1] + rectangle[3], -rectangle[0], -rectangle[3], -rectangle[2]];\n }\n this._drawFreeTextAnnotation(graphics, parameter, '', this._font, parameter.bounds, false, alignment, isRotation);\n }\n };\n PdfFreeTextAnnotation.prototype._drawAppearance = function (graphics, parameter, rectangle) {\n var graphicsPath = new _PdfPath();\n graphicsPath._addRectangle(rectangle[0], rectangle[1], rectangle[2], rectangle[3]);\n if (this._dictionary.has('BE')) {\n var dictionary = this._dictionary.get('BE');\n if (dictionary && dictionary.has('I')) {\n var value = dictionary.get('I');\n var radius = value === 1 ? 4 : 9;\n this._drawCloudStyle(graphics, parameter.foreBrush, parameter.borderPen, radius, 0.833, graphicsPath._points, true);\n }\n }\n };\n PdfFreeTextAnnotation.prototype._drawFreeTextAnnotation = function (g, parameter, text, font, rectangle, isSkipDrawRectangle, alignment, isRotation) {\n if (!isSkipDrawRectangle) {\n g.drawRectangle(rectangle[0], rectangle[1], rectangle[2], rectangle[3], parameter.borderPen, parameter.foreBrush);\n }\n else {\n var format = new PdfStringFormat();\n format.lineAlignment = PdfVerticalAlignment.top;\n format.alignment = alignment;\n format.lineSpacing = 0;\n if (isRotation) {\n g.drawString(text, font, parameter.bounds, null, parameter.backBrush, format);\n }\n else {\n g.drawString(text, font, rectangle, null, parameter.backBrush, format);\n }\n }\n };\n PdfFreeTextAnnotation.prototype._getCalloutLinePoints = function () {\n if (this._dictionary.has('CL')) {\n var calloutLinepoints = this._dictionary.getArray('CL');\n if (calloutLinepoints) {\n this._calloutLines = [];\n for (var i = 0; i < calloutLinepoints.length; i = i + 2) {\n var points = [calloutLinepoints[Number.parseInt(i.toString(), 10)],\n this._page.size[1] - calloutLinepoints[i + 1]];\n this._calloutLines.push(points);\n }\n }\n }\n return this._calloutLines;\n };\n PdfFreeTextAnnotation.prototype._obtainAppearanceBounds = function () {\n var bounds = [0, 0, 0, 0];\n if (this.calloutLines && this._calloutLines.length > 0) {\n var path = new _PdfPath();\n var pointArray = [];\n var length_2 = this._calloutLines.length === 2 ? 2 : 3;\n for (var i = 0; i < length_2; i++) {\n pointArray.push([0, 0]);\n }\n if (this._calloutLines.length >= 2) {\n this._obtainCallOutsNative();\n for (var i = 0; i < this._calloutLines.length; i++) {\n if (i < 3) {\n pointArray[Number.parseInt(i.toString(), 10)] = [this._calloutsClone[Number.parseInt(i.toString(), 10)][0],\n this._calloutsClone[Number.parseInt(i.toString(), 10)][1]];\n }\n else {\n break;\n }\n }\n }\n if (pointArray.length > 0) {\n if (this.lineEndingStyle !== PdfLineEndingStyle.none) {\n this._expandAppearance(pointArray);\n }\n path._addLines(pointArray);\n }\n path._addRectangle(this.bounds.x - 2, (this._page.size[1] - (this.bounds.y + this.bounds.height)) - 2, this.bounds.width + (2 * 2), this.bounds.height + (2 * 2));\n bounds = path._getBounds();\n }\n else {\n bounds = [this.bounds.x, (this._page.size[1] - (this.bounds.y + this.bounds.height)), this.bounds.width, this.bounds.height];\n }\n return bounds;\n };\n PdfFreeTextAnnotation.prototype._obtainCallOutsNative = function () {\n if (this.calloutLines && this._calloutLines.length > 0) {\n var size = this._page.size;\n this._calloutsClone = [];\n for (var i = 0; i < this._calloutLines.length; i++) {\n this._calloutsClone.push([this._calloutLines[Number.parseInt(i.toString(), 10)][0],\n size[1] - this._calloutLines[Number.parseInt(i.toString(), 10)][1]]);\n }\n }\n };\n PdfFreeTextAnnotation.prototype._obtainLinePoints = function () {\n var pageHeight = this._page.size[1];\n return [this.calloutLines[1][0],\n pageHeight - this.calloutLines[1][1],\n this.calloutLines[0][0],\n pageHeight - this.calloutLines[0][1]];\n };\n PdfFreeTextAnnotation.prototype._obtainLineEndingStyle = function () {\n var lineEndingStyle = PdfLineEndingStyle.square;\n if (this._dictionary.has('LE')) {\n lineEndingStyle = _mapLineEndingStyle(this._dictionary.get('LE').name, lineEndingStyle);\n }\n return lineEndingStyle;\n };\n PdfFreeTextAnnotation.prototype._obtainText = function () {\n var text = '';\n if (this._dictionary.has('Contents')) {\n var markUpText = this._dictionary.get('Contents');\n if (markUpText) {\n text = markUpText;\n }\n if (text && text !== '') {\n this._text = text;\n }\n return text;\n }\n else if (this._dictionary.has('RC')) {\n //this._parseXMLData();\n text = this._rcText;\n return text;\n }\n return text;\n };\n PdfFreeTextAnnotation.prototype._obtainTextAlignment = function () {\n var textAlignment = PdfTextAlignment.left;\n var hasAlignment;\n if (this._dictionary.has('Q')) {\n var value = this._dictionary.get('Q');\n if (typeof value !== 'undefined') {\n textAlignment = value;\n hasAlignment = true;\n }\n }\n else if (this._dictionary.has('RC')) {\n //Need to add\n }\n if (!hasAlignment && this._dictionary.has('DS')) {\n var value = this._dictionary.get('DS');\n var collections = value.split(';');\n for (var i = 0; i < collections.length; i++) {\n if (collections[Number.parseInt(i.toString(), 10)].indexOf('text-align') !== -1) {\n switch (collections[Number.parseInt(i.toString(), 10)]) {\n case 'left':\n textAlignment = PdfTextAlignment.left;\n break;\n case 'right':\n textAlignment = PdfTextAlignment.right;\n break;\n case 'center':\n textAlignment = PdfTextAlignment.center;\n break;\n case 'justify':\n textAlignment = PdfTextAlignment.justify;\n break;\n }\n }\n }\n }\n return textAlignment;\n };\n PdfFreeTextAnnotation.prototype._obtainColor = function () {\n var color;\n if (this._isLoaded) {\n if (this._dictionary.has('DA')) {\n var entry = this._dictionary.get('DA');\n if (Array.isArray(entry) && entry.length > 0) {\n color = [entry[0], entry[1], entry[2]];\n }\n else if (typeof entry === 'string') {\n this._da = new _PdfDefaultAppearance(entry);\n color = this._da.color;\n }\n }\n else if (this._dictionary.has('MK')) {\n var mkDict = this._mkDictionary;\n if (mkDict && mkDict.has('BC')) {\n color = _parseColor(mkDict.getArray('BC'));\n }\n }\n else {\n color = [0, 0, 0];\n }\n }\n else {\n color = this._borderColor ? this._borderColor : [0, 0, 0];\n }\n return color;\n };\n PdfFreeTextAnnotation.prototype._expandAppearance = function (pointArray) {\n var pointY = pointArray[0][1];\n var pointX = pointArray[0][0];\n if (pointY > this.bounds.y) {\n if (this.lineEndingStyle !== PdfLineEndingStyle.openArrow) {\n pointArray[0][1] -= (this.border.width * 11);\n }\n }\n else {\n pointArray[0][1] += (this.border.width * 11);\n }\n if (pointX <= this.bounds.x) {\n pointArray[0][0] -= (this.border.width * 11);\n }\n else {\n pointArray[0][0] += (this.border.width * 11);\n }\n };\n PdfFreeTextAnnotation.prototype._drawCallOuts = function (graphics, borderPen) {\n var path = new _PdfPath();\n var pointArray = [];\n var length = this._calloutLines.length === 2 ? 2 : 3;\n for (var i = 0; i < length; i++) {\n pointArray.push([0, 0]);\n }\n if (this._calloutLines.length >= 2) {\n this._obtainCallOutsNative();\n for (var i = 0; i < this._calloutLines.length && i < 3; i++) {\n pointArray[Number.parseInt(i.toString(), 10)] = [this._calloutsClone[Number.parseInt(i.toString(), 10)][0],\n -this._calloutsClone[Number.parseInt(i.toString(), 10)][1]];\n }\n }\n if (pointArray.length > 0) {\n path._addLines(pointArray);\n }\n graphics._drawPath(path, borderPen);\n };\n PdfFreeTextAnnotation.prototype._saveFreeTextDictionary = function () {\n if ((typeof this.font === 'undefined' || this.font === null) || (!this._isLoaded && this.font.size === 1)) {\n this.font = this._markUpFont;\n }\n this._dictionary.update('Contents', this.text);\n if (this._isLoaded) {\n this._textAlignment = this.textAlignment;\n }\n this._dictionary.update('Q', this._textAlignment);\n if (this.annotationIntent === PdfAnnotationIntent.none) {\n this._dictionary.update('Subj', 'Text Box');\n }\n else {\n this._dictionary.update('IT', _PdfName.get(this._obtainAnnotationIntent(this._annotationIntent)));\n }\n var ds = 'font:' +\n this.font._metrics._postScriptName +\n ' ' +\n this.font._size +\n 'pt;style:' + _reverseMapPdfFontStyle(this.font._style) +\n ';color:' +\n this._colorToHex(this.textMarkUpColor);\n this._dictionary.update('DS', ds);\n this._dictionary.update('DA', this._getBorderColorString(this.borderColor ? this._borderColor : [0, 0, 0]));\n var body = '

';\n this._dictionary.update('RC', body + (this.text ? this._getXmlFormattedString(this.text) : '') + '

');\n if (this._calloutLines && this._calloutLines.length >= 2) {\n var pageHeight = this._page.size[1];\n var lines = [];\n for (var i = 0; i < this._calloutLines.length && i < 3; i++) {\n lines.push(this._calloutLines[Number.parseInt(i.toString(), 10)][0] + this._cropBoxValueX);\n lines.push((pageHeight + this._cropBoxValueY) - this._calloutLines[Number.parseInt(i.toString(), 10)][1]);\n }\n this._dictionary.update('CL', lines);\n }\n if (this._setAppearance) {\n var rect = this._obtainAppearanceBounds();\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n }\n };\n PdfFreeTextAnnotation.prototype._getXmlFormattedString = function (markupText) {\n markupText = markupText.replace('&', '&');\n markupText = markupText.replace('<', '<');\n markupText = markupText.replace('>', '>');\n return markupText;\n };\n return PdfFreeTextAnnotation;\n}(PdfComment));\nexport { PdfFreeTextAnnotation };\n/**\n * `PdfRedactionAnnotation` class represents the redaction annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Create a new redaction annotation\n * const annotation: PdfRedactionAnnotation = new PdfRedactionAnnotation (50, 100, 100, 50);\n * // Add annotation to the page\n * page.annotations.add(annotation);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfRedactionAnnotation = /** @class */ (function (_super) {\n __extends(PdfRedactionAnnotation, _super);\n function PdfRedactionAnnotation(x, y, width, height) {\n var _this = _super.call(this) || this;\n _this._textAlignment = PdfTextAlignment.left;\n _this._dictionary = new _PdfDictionary();\n _this._dictionary.update('Type', _PdfName.get('Annot'));\n _this._dictionary.update('Subtype', _PdfName.get('Redact'));\n if (typeof x !== 'undefined' && typeof y !== 'undefined' && typeof width !== 'undefined' && typeof height !== 'undefined') {\n _this.bounds = { x: x, y: y, width: width, height: height };\n }\n _this._type = _PdfAnnotationType.redactionAnnotation;\n return _this;\n }\n Object.defineProperty(PdfRedactionAnnotation.prototype, \"repeatText\", {\n /**\n * Gets the boolean flag indicating whether annotation has repeat text or not.\n *\n * @returns {boolean} repeat text.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRedactionAnnotation = page.annotations.at(0) as PdfRedactionAnnotation;\n * // Gets the boolean flag indicating whether annotation has repeat text or not.\n * let repeatText: boolean = annotation. repeatText;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._repeat === 'undefined' && this._dictionary.has('Repeat')) {\n this._repeat = this._dictionary.get('Repeat');\n }\n return this._repeat;\n },\n /**\n * Sets the boolean flag indicating whether annotation has repeat text or not.\n *\n * @param {boolean} value repeat text.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRedactionAnnotation = page.annotations.at(0) as PdfRedactionAnnotation;\n * // Sets the boolean flag indicating whether annotation has repeat text or not.\n * annotation.repeatText = false;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._repeat) {\n this._repeat = value;\n if (this._dictionary) {\n this._dictionary.update('Repeat', value);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRedactionAnnotation.prototype, \"textAlignment\", {\n /**\n * Gets the text alignment of the annotation.\n *\n * @returns {PdfTextAlignment} Text alignment.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRedactionAnnotation = page.annotations.at(0) as PdfRedactionAnnotation;\n * // Gets the text alignment of the annotation.\n * let textAlignment: PdfTextAlignment = annotation.textAlignment;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('Q')) {\n this._textAlignment = this._dictionary.get('Q');\n }\n return this._textAlignment;\n },\n /**\n * Sets the text alignment of the annotation.\n *\n * @param {PdfTextAlignment} value Text alignment.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRedactionAnnotation = page.annotations.at(0) as PdfRedactionAnnotation;\n * // Sets the text alignment of the annotation.\n * annotation.textAlignment = PdfTextAlignment.justify;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._textAlignment !== value) {\n this._dictionary.update('Q', value);\n }\n this._textAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRedactionAnnotation.prototype, \"textColor\", {\n /**\n * Gets the text color of the annotation.\n *\n * @returns {number[]} R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRedactionAnnotation = page.annotations.at(0) as PdfRedactionAnnotation;\n * // Gets the text color of the annotation.\n * let textColor : number[] = annotation.textColor;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._textColor === 'undefined' && this._dictionary.has('C')) {\n this._textColor = _parseColor(this._dictionary.getArray('C'));\n }\n return this._textColor;\n },\n /**\n * Sets the text color of the annotation.\n *\n * @param {number[]} value R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRedactionAnnotation = page.annotations.at(0) as PdfRedactionAnnotation;\n * // Sets the text color of the annotation.\n * annotation.textColor = [255, 255, 255];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined' && value.length === 3) {\n var extColor = this.textColor;\n if (!this._isLoaded || typeof extColor === 'undefined' || (extColor[0] !== value[0] || extColor[1] !== value[1] || extColor[2] !== value[2])) {\n this._textColor = value;\n this._dictionary.update('C', [Number.parseFloat((value[0] / 255).toFixed(3)),\n Number.parseFloat((value[1] / 255).toFixed(3)),\n Number.parseFloat((value[2] / 255).toFixed(3))]);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRedactionAnnotation.prototype, \"borderColor\", {\n /**\n * Gets the border color of the annotation.\n *\n * @returns {number[]} R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRedactionAnnotation = page.annotations.at(0) as PdfRedactionAnnotation;\n * // Gets the border color of the annotation.\n * let borderColor: number[] = annotation.borderColor;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._borderColor === 'undefined' && this._dictionary.has('OC')) {\n this._borderColor = _parseColor(this._dictionary.getArray('OC'));\n }\n return this._borderColor;\n },\n /**\n * Sets the border color of the annotation.\n *\n * @param {number[]} value R, G, B color values in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRedactionAnnotation = page.annotations.at(0) as PdfRedactionAnnotation;\n * // Sets the border color of the annotation.\n * annotation.borderColor = [255, 255, 255];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value !== 'undefined' && value.length === 3) {\n var extColor = this.borderColor;\n if (!this._isLoaded || typeof extColor === 'undefined' || (extColor[0] !== value[0] || extColor[1] !== value[1] || extColor[2] !== value[2])) {\n this._borderColor = value;\n this._dictionary.update('OC', [Number.parseFloat((value[0] / 255).toFixed(3)),\n Number.parseFloat((value[1] / 255).toFixed(3)),\n Number.parseFloat((value[2] / 255).toFixed(3))]);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRedactionAnnotation.prototype, \"overlayText\", {\n /**\n * Gets the overlay text of the annotation.\n *\n * @returns {string} overlay text.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRedactionAnnotation = page.annotations.at(0) as PdfRedactionAnnotation;\n * // Gets the overlay text of the annotation.\n * let overlayText: string =annotation.overlayText;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._overlayText === 'undefined' && this._dictionary.has('OverlayText')) {\n this._overlayText = this._dictionary.get('OverlayText');\n }\n return this._overlayText;\n },\n /**\n * Sets the overlay text of the annotation.\n *\n * @param {string} value overlay text.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRedactionAnnotation = page.annotations.at(0) as PdfRedactionAnnotation;\n * // Sets the overlay text of the annotation.\n * annotation.overlayText = ‘syncfusion’;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value === 'string') {\n this._dictionary.update('OverlayText', value);\n this._overlayText = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRedactionAnnotation.prototype, \"font\", {\n /**\n * Gets the font of the annotation.\n *\n * @returns {PdfFont} font.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRedactionAnnotation = page.annotations.at(0) as PdfRedactionAnnotation;\n * // Gets the font of the annotation.\n * let font: PdfFont = annotation.font;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._font;\n },\n /**\n * Sets the font of the annotation.\n *\n * @param {PdfFont} value font.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfRedactionAnnotation = page.annotations.at(0) as PdfRedactionAnnotation;\n * // Sets the font of the annotation.\n * annotation.font = new PdfStandardFont(PdfFontFamily.helvetica, 10, PdfFontStyle.regular);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._font = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfRedactionAnnotation._load = function (page, dictionary) {\n var annot = new PdfRedactionAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfRedactionAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfRedactionAnnotation.prototype._postProcess = function (isFlatten) {\n if (typeof this.bounds === 'undefined' || this.bounds === null) {\n throw new Error('Bounds cannot be null or undefined');\n }\n var borderWidth;\n if (this._dictionary.has('BS')) {\n borderWidth = this.border.width;\n }\n else {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.set('Type', _PdfName.get('Border'));\n this._dictionary.set('BS', dictionary);\n }\n if (typeof borderWidth === 'undefined') {\n borderWidth = 1;\n }\n if (this._setAppearance) {\n this._appearanceTemplate = this._createRedactionAppearance(isFlatten);\n }\n var size = this._page.size;\n var rect = [this.bounds.x,\n size[1] - (this.bounds.y + this.bounds.height),\n this.bounds.width,\n this.bounds.height];\n this._dictionary.update('Rect', [rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]]);\n };\n PdfRedactionAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (!this._isImported) {\n if (this._isLoaded) {\n this._appearanceTemplate = this._createRedactionAppearance(isFlatten);\n }\n else {\n this._postProcess(isFlatten);\n if (!this._appearanceTemplate) {\n if (isFlatten) {\n if (!this._dictionary.has('AP')) {\n this._appearanceTemplate = this._createRedactionAppearance(isFlatten);\n }\n else {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n var appearanceStream = dictionary.get('N');\n if (appearanceStream) {\n var reference = dictionary.getRaw('N');\n if (reference) {\n appearanceStream.reference = reference;\n }\n this._appearanceTemplate = new PdfTemplate(appearanceStream, this._crossReference);\n }\n }\n }\n }\n }\n }\n if (isFlatten && this._appearanceTemplate) {\n var isNormalMatrix = this._validateTemplateMatrix(this._appearanceTemplate._content.dictionary);\n if (!this._appearanceTemplate._content.dictionary.has('Matrix')) {\n var box = this._appearanceTemplate._content.dictionary.getArray('BBox');\n if (box) {\n this._appearanceTemplate._content.dictionary.update('Matrix', [1, 0, 0, 1, -box[0], -box[1]]);\n }\n }\n this._flattenAnnotationTemplate(this._appearanceTemplate, isNormalMatrix);\n }\n }\n };\n PdfRedactionAnnotation.prototype._createRedactionAppearance = function (isFlatten) {\n var normalTemplate = this._createNormalAppearance();\n if (isFlatten) {\n if (this._isLoaded && this._page !== null) {\n this._removeAnnotationFromPage(this._page, this);\n }\n }\n else {\n var borderTemplate = this._createBorderAppearance();\n if (this._dictionary.has('AP')) {\n var appearance = this._dictionary.get('AP');\n _removeDuplicateReference(appearance, this._crossReference, 'N');\n _removeDuplicateReference(appearance, this._crossReference, 'R');\n }\n var dictionary = new _PdfDictionary(this._crossReference);\n borderTemplate._content.dictionary._updated = true;\n var reference1 = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference1, borderTemplate._content);\n borderTemplate._content.reference = reference1;\n dictionary.set('N', reference1);\n normalTemplate._content.dictionary._updated = true;\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, normalTemplate._content);\n normalTemplate._content.reference = reference;\n dictionary.set('R', reference);\n dictionary._updated = true;\n this._dictionary.set('AP', dictionary);\n }\n return normalTemplate;\n };\n PdfRedactionAnnotation.prototype._createBorderAppearance = function () {\n var nativeRectangle = [0, 0, this.bounds.width, this.bounds.height];\n var template = new PdfTemplate(nativeRectangle, this._crossReference);\n var width = this.border.width / 2;\n var graphics = template.graphics;\n var actualWidth = this.border.width;\n var pen;\n if (this.border.width > 0 && this.borderColor) {\n pen = new PdfPen(this.borderColor, actualWidth);\n }\n var rect = [nativeRectangle[0], nativeRectangle[1], nativeRectangle[2], nativeRectangle[3]];\n if (this.opacity < 1) {\n var state = graphics.save();\n graphics.setTransparency(this.opacity);\n graphics.drawRectangle(rect[0] + width, rect[1] + width, rect[2] - actualWidth, rect[3] - actualWidth, pen, null);\n graphics.restore(state);\n }\n else {\n graphics.drawRectangle(rect[0] + width, rect[1] + width, rect[2] - actualWidth, rect[3] - actualWidth, pen, null);\n }\n return template;\n };\n PdfRedactionAnnotation.prototype._createNormalAppearance = function () {\n var nativeRectangle = [0, 0, this.bounds.width, this.bounds.height];\n var template = new PdfTemplate(nativeRectangle, this._crossReference);\n _setMatrix(template, this._getRotationAngle());\n var width = this.border.width / 2;\n var graphics = template.graphics;\n var parameter = new _PaintParameter();\n var borderPen;\n if (this.textColor && this.border.width > 0) {\n borderPen = new PdfPen(this.textColor, this.border.width);\n }\n var backBrush;\n var textcolor;\n if (this.innerColor) {\n backBrush = new PdfBrush(this.innerColor);\n }\n if (this.textColor) {\n textcolor = new PdfBrush(this.textColor);\n }\n else {\n textcolor = new PdfBrush([128, 128, 128]);\n }\n parameter.backBrush = backBrush;\n parameter.borderWidth = width;\n var widths = this.border.width;\n var rect = [nativeRectangle[0], nativeRectangle[1], nativeRectangle[2], nativeRectangle[3]];\n if (this.opacity < 1) {\n var state = graphics.save();\n graphics.setTransparency(this.opacity);\n graphics.drawRectangle(rect[0] + width, rect[1] + width, rect[2] - widths, rect[3] - widths, borderPen, backBrush);\n graphics.restore(state);\n }\n else {\n graphics.drawRectangle(rect[0] + width, rect[1] + width, rect[2] - widths, rect[3] - widths, borderPen, backBrush);\n }\n graphics.restore();\n if (this.overlayText && this._overlayText !== '') {\n var col = 0;\n var row = 0;\n if (typeof this.font === 'undefined' || this.font === null) {\n this.font = this._lineCaptionFont;\n }\n var y = 0;\n var x = 0;\n var diff = 0;\n var rectangle = void 0;\n if (this._isLoaded) {\n this._textAlignment = this.textAlignment;\n }\n var format = new PdfStringFormat(this._textAlignment, PdfVerticalAlignment.middle);\n var textsize = this.font.measureString(this.overlayText, [0, 0], format, 0, 0);\n if (this._isLoaded && typeof this._repeat === 'undefined') {\n this._repeat = this.repeatText;\n }\n if (this._repeat) {\n if (textsize[0] <= 0) {\n textsize[0] = 1;\n }\n col = this.bounds.width / textsize[0];\n row = Math.floor(this.bounds.height / this.font._size);\n diff = Math.abs(this.bounds.width - (Math.floor(col) * textsize[0]));\n if (this._textAlignment === PdfTextAlignment.center) {\n x = diff / 2;\n }\n if (this._textAlignment === PdfTextAlignment.right) {\n x = diff;\n }\n for (var i = 1; i < col; i++) {\n for (var j = 0; j < row; j++) {\n rectangle = [x, y, 0, 0];\n graphics.drawString(this.overlayText, this.font, rectangle, null, textcolor, null);\n y = y + this.font._size;\n }\n x = x + textsize[0];\n y = 0;\n }\n }\n else {\n diff = Math.abs(this.bounds.width - textsize[0]);\n if (this._textAlignment === PdfTextAlignment.center) {\n x = diff / 2;\n }\n if (this._textAlignment === PdfTextAlignment.right) {\n x = diff;\n }\n rectangle = [x, 0, 0, 0];\n graphics.drawString(this.overlayText, this.font, rectangle, null, textcolor, null);\n }\n }\n return template;\n };\n return PdfRedactionAnnotation;\n}(PdfAnnotation));\nexport { PdfRedactionAnnotation };\n/**\n * `PdfRichMediaAnnotation` class represents the rich media annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfRichMediaAnnotation = page.annotations.at(0) as PdfRichMediaAnnotation;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfRichMediaAnnotation = /** @class */ (function (_super) {\n __extends(PdfRichMediaAnnotation, _super);\n /**\n * Initializes a new instance of the `PdfRichMediaAnnotation` class.\n *\n * @private\n */\n function PdfRichMediaAnnotation() {\n var _this = _super.call(this) || this;\n _this._type = _PdfAnnotationType.richMediaAnnotation;\n return _this;\n }\n PdfRichMediaAnnotation._load = function (page, dictionary) {\n var annot = new PdfRichMediaAnnotation();\n annot._isLoaded = true;\n annot._initialize(page, dictionary);\n return annot;\n };\n PdfRichMediaAnnotation.prototype._initialize = function (page, dictionary) {\n _super.prototype._initialize.call(this, page, dictionary);\n };\n PdfRichMediaAnnotation.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (typeof this.flattenPopups !== 'undefined' && this.flattenPopups) {\n this._flattenPopUp();\n }\n if (isFlatten) {\n var appearanceStream = void 0;\n if (this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (reference && appearanceStream) {\n appearanceStream.reference = reference;\n }\n }\n }\n if (appearanceStream) {\n var template = new PdfTemplate(appearanceStream, this._crossReference);\n var isNormalMatrix = this._validateTemplateMatrix(template._content.dictionary);\n this._flattenAnnotationTemplate(template, isNormalMatrix);\n }\n else {\n this._removeAnnotation(this._page, this);\n }\n }\n };\n return PdfRichMediaAnnotation;\n}(PdfAnnotation));\nexport { PdfRichMediaAnnotation };\n/**\n * `PdfWidgetAnnotation` class represents the widget annotation objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Access the annotation at index 0\n * let annotation: PdfWidgetAnnotation = page.annotations.at(0) as PdfWidgetAnnotation;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfWidgetAnnotation = /** @class */ (function (_super) {\n __extends(PdfWidgetAnnotation, _super);\n /**\n * Initializes a new instance of the `PdfWidgetAnnotation` class.\n *\n * @private\n */\n function PdfWidgetAnnotation() {\n var _this = _super.call(this) || this;\n _this._isAutoResize = false;\n _this._visibility = PdfFormFieldVisibility.visible;\n _this._isFont = false;\n _this._isTransparentBackColor = false;\n _this._isWidget = true;\n _this._type = _PdfAnnotationType.widgetAnnotation;\n return _this;\n }\n /**\n * Parse an existing widget annotation.\n *\n * @private\n * @param {_PdfDictionary} dictionary Widget dictionary.\n * @param {_PdfCrossReference} crossReference PDF cross reference.\n * @returns {PdfWidgetAnnotation} Widget.\n */\n PdfWidgetAnnotation._load = function (dictionary, crossReference) {\n var widget = new PdfWidgetAnnotation();\n widget._isLoaded = true;\n widget._dictionary = dictionary;\n widget._crossReference = crossReference;\n return widget;\n };\n Object.defineProperty(PdfWidgetAnnotation.prototype, \"page\", {\n /**\n * Gets the page object (Read only).\n *\n * @returns {PdfPage} page object.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access check box field\n * let field: PdfCheckBoxField = document.form.fieldAt(0) as PdfCheckBoxField;\n * // Access first item of check box field\n * let item: PdfWidgetAnnotation = field.itemAt(0);\n * // Gets the page object.\n * let page: PdfPage = item.page;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._getPage();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWidgetAnnotation.prototype, \"color\", {\n /**\n * Gets the fore color of the annotation.\n *\n * @returns {number[]} Color as R, G, B color array in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfWidgetAnnotation = page.annotations.at(0) as PdfWidgetAnnotation;\n * // Gets the fore color of the annotation.\n * let color: number[] = annotation.color;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._color === 'undefined' && this._defaultAppearance) {\n this._color = this._da.color;\n }\n return this._color;\n },\n /**\n * Sets the fore color of the annotation.\n *\n * @param {number[]} value Color as R, G, B color array in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfWidgetAnnotation = page.annotations.at(0) as PdfWidgetAnnotation;\n * // Sets the fore color of the annotation.\n * annotation.color = [255,255,255];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof this.color === 'undefined' || this._color !== value) {\n this._color = value;\n }\n var isNew = false;\n if (!this._defaultAppearance) {\n this._da = new _PdfDefaultAppearance('');\n isNew = true;\n }\n if (isNew || this._da.color !== value) {\n this._da.color = value;\n this._dictionary.update('DA', this._da.toString());\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWidgetAnnotation.prototype, \"backColor\", {\n /**\n * Gets the back color of the annotation.\n *\n * @returns {number[]} Color as R, G, B color array in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the text box field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the back color of the annotation\n * let backColor: number[] = field.itemAt(0).backColor;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._parseBackColor();\n },\n /**\n * Sets the back color of the annotation.\n *\n * @param {number[]} value Array with R, G, B, A color values in between 0 to 255. For optional A (0-254), it signifies transparency.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the text box field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets the background color of the field item\n * field.itemAt(0).backColor = [255, 0, 0];\n * // Sets the background color of the field item to transparent\n * field.itemAt(1).backColor = [0, 0, 0, 0];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._updateBackColor(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWidgetAnnotation.prototype, \"_hasBackColor\", {\n get: function () {\n if (this._isLoaded) {\n var mkDictionary = this._mkDictionary;\n return (mkDictionary && mkDictionary.has('BG'));\n }\n else {\n return !this._isTransparentBackColor;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWidgetAnnotation.prototype, \"borderColor\", {\n /**\n * Gets the border color of the annotation.\n *\n * @returns {number[]} Color as R, G, B color array in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfWidgetAnnotation = page.annotations.at(0) as PdfWidgetAnnotation;\n * // Gets the border color of the annotation.\n * let borderColor: number[] = annotation.borderColor;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._borderColor === 'undefined') {\n var mkDict = this._mkDictionary;\n if (mkDict && mkDict.has('BC')) {\n var bcArray = mkDict.getArray('BC');\n if (bcArray) {\n this._borderColor = _parseColor(bcArray);\n }\n }\n }\n if (typeof this._borderColor === 'undefined' || this._borderColor === null) {\n this._borderColor = [0, 0, 0];\n }\n return this._borderColor;\n },\n /**\n * Sets the border color of the annotation.\n *\n * @param {number[]} value Color as R, G, B color array in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfWidgetAnnotation = page.annotations.at(0) as PdfWidgetAnnotation;\n * // Sets the border color of the annotation.\n * annotation.borderColor = [255,255,255];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof this.borderColor === 'undefined' || this.borderColor !== value) {\n if (typeof this._mkDictionary === 'undefined') {\n this._dictionary.update('MK', new _PdfDictionary(this._crossReference));\n }\n this._mkDictionary.update('BC', [Number.parseFloat((value[0] / 255).toFixed(3)),\n Number.parseFloat((value[1] / 255).toFixed(3)),\n Number.parseFloat((value[2] / 255).toFixed(3))]);\n this._borderColor = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWidgetAnnotation.prototype, \"rotate\", {\n /**\n * Gets the rotation angle of the annotation.\n *\n * @returns {number} Rotation angle as number.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfWidgetAnnotation = page.annotations.at(0) as PdfWidgetAnnotation;\n * // Gets the rotation angle of the annotation.\n * let rotate: number = annotation.rotate;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._rotationAngle === 'undefined') {\n if (this._mkDictionary && this._mkDictionary.has('R')) {\n this._rotationAngle = this._mkDictionary.get('R');\n }\n else if (this._dictionary.has('R')) {\n this._rotationAngle = this._dictionary.get('R');\n }\n }\n return this._rotationAngle;\n },\n /**\n * Sets the rotation angle of the annotation.\n *\n * @param {number} value Rotation angle as number.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfWidgetAnnotation = page.annotations.at(0) as PdfWidgetAnnotation;\n * // Sets the rotation angle of the annotation.\n * annotation.rotate = 90;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof this.rotate === 'undefined' || this._rotationAngle !== value) {\n if (typeof this._mkDictionary === 'undefined') {\n this._dictionary.update('MK', new _PdfDictionary(this._crossReference));\n }\n this._mkDictionary.update('R', value);\n this._rotationAngle = value;\n this._dictionary._updated = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWidgetAnnotation.prototype, \"highlightMode\", {\n /**\n * Gets the highlight mode of the annotation.\n *\n * @returns {PdfHighlightMode} Highlight mode.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfWidgetAnnotation = page.annotations.at(0) as PdfWidgetAnnotation;\n * // Gets the highlight mode of the annotation.\n * let highlightMode: PdfHighlightMode = annotation.highlightMode;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._highlightMode === 'undefined' && this._dictionary.has('H')) {\n var mode = this._dictionary.get('H');\n this._highlightMode = _mapHighlightMode(mode.name);\n }\n return this._highlightMode;\n },\n /**\n * Sets the highlight mode of the annotation.\n *\n * @param {PdfHighlightMode} value Highlight mode.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfWidgetAnnotation = page.annotations.at(0) as PdfWidgetAnnotation;\n * // Sets the highlight mode of the annotation.\n * annotation.highlightMode = PdfHighlightMode.noHighlighting;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._highlightMode !== value) {\n this._dictionary.update('H', _reverseMapHighlightMode(value));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWidgetAnnotation.prototype, \"bounds\", {\n /**\n * Gets the bounds of the annotation.\n *\n * @returns {{x: number, y: number, width: number, height: number}} Bounds.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfWidgetAnnotation = page.annotations.at(0) as PdfWidgetAnnotation;\n * // Gets the bounds of the annotation.\n * let bounds : {x: number, y: number, width: number, height: number} = annotation.bounds;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._isLoaded && typeof this._bounds === 'undefined') {\n this._bounds = _calculateBounds(this._dictionary, this._getPage());\n }\n if (typeof this._bounds === 'undefined' || this._bounds === null) {\n this._bounds = { x: 0, y: 0, width: 0, height: 0 };\n }\n return this._bounds;\n },\n /**\n * Sets the bounds of the annotation.\n *\n * @param {{x: number, y: number, width: number, height: number}} value Bounds\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfWidgetAnnotation = page.annotations.at(0) as PdfWidgetAnnotation;\n * // Sets the bounds of the annotation.\n * annotation.bounds = {0, 0, 50, 50};\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value.x === 0 && value.y === 0 && value.width === 0 && value.height === 0) {\n throw new Error('Cannot set empty bounds');\n }\n this._bounds = value;\n this._dictionary.update('Rect', _getUpdatedBounds([value.x, value.y, value.width, value.height], this._getPage()));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWidgetAnnotation.prototype, \"textAlignment\", {\n /**\n * Gets the text alignment of the annotation.\n *\n * @returns {PdfTextAlignment} Text alignment.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfWidgetAnnotation = page.annotations.at(0) as PdfWidgetAnnotation;\n * // Gets the text alignment of the annotation.\n * let textAlignment: PdfTextAlignment = annotation.textAlignment;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._textAlignment === 'undefined' && this._dictionary.has('Q')) {\n this._textAlignment = this._dictionary.get('Q');\n }\n return this._textAlignment;\n },\n /**\n * Sets the text alignment of the annotation.\n *\n * @param {PdfTextAlignment} value Text alignment.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfWidgetAnnotation = page.annotations.at(0) as PdfWidgetAnnotation;\n * // Sets the text alignment of the annotation.\n * annotation.textAlignment = PdfTextAlignment.left;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof this._textAlignment === 'undefined' || this._textAlignment !== value) {\n this._dictionary.update('Q', value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWidgetAnnotation.prototype, \"visibility\", {\n /**\n * Gets the visibility.\n *\n * @returns {PdfFormFieldVisibility} Field visibility option.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the visibility.\n * let visibility: PdfFormFieldVisibility = field.itemAt(0).visibility;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var value;\n if (this._isLoaded) {\n value = PdfFormFieldVisibility.visible;\n var flag = PdfAnnotationFlag.default;\n if (this._hasFlags) {\n flag = this.flags;\n var flagValue = 3;\n if ((flag & PdfAnnotationFlag.hidden) === PdfAnnotationFlag.hidden) {\n flagValue = 0;\n }\n if ((flag & PdfAnnotationFlag.noView) === PdfAnnotationFlag.noView) {\n flagValue = 1;\n }\n if ((flag & PdfAnnotationFlag.print) !== PdfAnnotationFlag.print) {\n flagValue &= 2;\n }\n switch (flagValue) {\n case 0:\n value = PdfFormFieldVisibility.hidden;\n break;\n case 1:\n value = PdfFormFieldVisibility.hiddenPrintable;\n break;\n case 2:\n value = PdfFormFieldVisibility.visibleNotPrintable;\n break;\n case 3:\n value = PdfFormFieldVisibility.visible;\n break;\n }\n }\n else {\n value = PdfFormFieldVisibility.visibleNotPrintable;\n }\n }\n else {\n return this._visibility;\n }\n return value;\n },\n /**\n * Sets the visibility.\n *\n * @param {PdfFormFieldVisibility} value Visibility option.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form field at index 0\n * let field: PdfField = document.form.fieldAt(0);\n * // Sets the visibility.\n * let field.itemAt(0).visibility = PdfFormFieldVisibility.hiddenPrintable;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this._isLoaded) {\n _updateVisibility(this._dictionary, value);\n this._dictionary._updated = true;\n }\n else {\n switch (value) {\n case PdfFormFieldVisibility.hidden:\n this.flags = PdfAnnotationFlag.hidden;\n break;\n case PdfFormFieldVisibility.hiddenPrintable:\n this.flags = PdfAnnotationFlag.noView | PdfAnnotationFlag.print;\n break;\n case PdfFormFieldVisibility.visible:\n this.flags = PdfAnnotationFlag.print;\n break;\n case PdfFormFieldVisibility.visibleNotPrintable:\n this.flags = PdfAnnotationFlag.default;\n break;\n }\n this._visibility = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWidgetAnnotation.prototype, \"font\", {\n /**\n * Gets the font of the item.\n *\n * @returns {PdfFont} font.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Access the form field at index 0\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Get the first item of the field\n * let item: PdfWidgetAnnotation = field.itemAt(0);\n * // Gets the font of the item.\n * let font: PdfFont = item.font;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (!this._pdfFont) {\n var fontName = void 0;\n if (this._crossReference) {\n var form = this._crossReference._document.form;\n var fontData = this._obtainFontDetails();\n if (form && form._dictionary.has('DR')) {\n var resources = form._dictionary.get('DR');\n if (resources.has('Font')) {\n var fonts = resources.get('Font');\n if (fonts.has(fontData.name)) {\n var fontDictionary = fonts.get(fontData.name);\n if (fontDictionary && fontData.name && fontDictionary.has('BaseFont')) {\n var baseFont = fontDictionary.get('BaseFont');\n var textFontStyle = PdfFontStyle.regular;\n if (baseFont) {\n fontName = baseFont.name;\n textFontStyle = _getFontStyle(baseFont.name);\n if (fontName.includes('-')) {\n fontName = fontName.substring(0, fontName.indexOf('-'));\n }\n this._pdfFont = _mapFont(fontName, fontData.size, textFontStyle, this);\n }\n }\n }\n }\n }\n }\n }\n if ((this._pdfFont === null || typeof this._pdfFont === 'undefined') || (!this._isLoaded && this._pdfFont.size === 1)) {\n this._pdfFont = this._circleCaptionFont;\n }\n return this._pdfFont;\n },\n /**\n * Sets the font of the item.\n *\n * @param {PdfFont} value font.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Access the form field at index 0\n * let field: PdfTextBoxField = document.form.fieldAt(0) as PdfTextBoxField;\n * // Get the first item of the field\n * let item: PdfWidgetAnnotation = field.itemAt(0);\n * // Set the font of the item.\n * item.font = new PdfStandardFont(PdfFontFamily.helvetica, 12, PdfFontStyle.bold);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value && value instanceof PdfFont) {\n this._pdfFont = value;\n this._initializeFont(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWidgetAnnotation.prototype, \"_defaultAppearance\", {\n get: function () {\n if (typeof this._da === 'undefined' && this._dictionary.has('DA')) {\n var da = this._dictionary.get('DA');\n if (da && da !== '') {\n this._da = new _PdfDefaultAppearance(da);\n }\n }\n return this._da;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWidgetAnnotation.prototype, \"_mkDictionary\", {\n get: function () {\n var value;\n if (this._dictionary.has('MK')) {\n value = this._dictionary.get('MK');\n }\n return value;\n },\n enumerable: true,\n configurable: true\n });\n PdfWidgetAnnotation.prototype._create = function (page, bounds, field) {\n this._page = page;\n this._crossReference = page._crossReference;\n this._ref = this._crossReference._getNextReference();\n this._dictionary = new _PdfDictionary(this._crossReference);\n this._crossReference._cacheMap.set(this._ref, this._dictionary);\n this._dictionary._currentObj = this;\n this._dictionary.objId = this._ref.toString();\n this._dictionary.update('Type', _PdfName.get('Annot'));\n this._dictionary.update('Subtype', _PdfName.get('Widget'));\n this.flags |= PdfAnnotationFlag.print;\n this._dictionary.update('P', page._ref);\n page._addWidget(this._ref);\n this.border = new PdfAnnotationBorder();\n this.bounds = bounds;\n if (field) {\n this._field = field;\n this._dictionary.update('Parent', this._field._ref);\n }\n return this._dictionary;\n };\n PdfWidgetAnnotation.prototype._doPostProcess = function (isFlatten, recreateAppearance) {\n if (isFlatten === void 0) { isFlatten = false; }\n if (recreateAppearance === void 0) { recreateAppearance = false; }\n if (isFlatten || recreateAppearance) {\n var appearanceStream = void 0;\n if (recreateAppearance || (isFlatten && !this._dictionary.has('AP'))) {\n //appearanceStream = this._createAppearance();\n }\n if (!appearanceStream && this._dictionary.has('AP')) {\n var dictionary = this._dictionary.get('AP');\n if (dictionary && dictionary.has('N')) {\n appearanceStream = dictionary.get('N');\n var reference = dictionary.getRaw('N');\n if (reference && appearanceStream) {\n appearanceStream.reference = reference;\n }\n }\n }\n if (appearanceStream) {\n var bounds = void 0;\n if (isFlatten) {\n var template = new PdfTemplate(appearanceStream, this._crossReference);\n var page = this._getPage();\n if (page) {\n var graphics = page.graphics;\n graphics.save();\n if (page.rotation === PdfRotationAngle.angle90) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(90);\n }\n else if (page.rotation === PdfRotationAngle.angle180) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(-180);\n }\n else if (page.rotation === PdfRotationAngle.angle270) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(270);\n }\n bounds = { x: this.bounds.x, y: this.bounds.y, width: template._size[0], height: template._size[1] };\n graphics._drawTemplate(template, bounds);\n graphics.restore();\n }\n }\n else {\n var appearance = void 0;\n if (this._dictionary.has('AP')) {\n appearance = this._dictionary.get('AP');\n }\n else {\n var reference_9 = this._crossReference._getNextReference();\n appearance = new _PdfDictionary(this._crossReference);\n this._crossReference._cacheMap.set(reference_9, appearance);\n this._dictionary.update('AP', reference_9);\n }\n _removeDuplicateReference(appearance, this._crossReference, 'N');\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, appearanceStream);\n appearance.update('N', reference);\n }\n }\n this._dictionary._updated = false;\n }\n };\n PdfWidgetAnnotation.prototype._initializeFont = function (font) {\n this._pdfFont = font;\n var document;\n if (this._crossReference) {\n document = this._crossReference._document;\n var resource = void 0;\n if (document) {\n if (document.form._dictionary.has('DR')) {\n resource = document.form._dictionary.get('DR');\n }\n else {\n resource = new _PdfDictionary(this._crossReference);\n }\n }\n var fontDict = void 0;\n var isReference = false;\n if (resource.has('Font')) {\n var obj = resource.getRaw('Font'); // eslint-disable-line\n if (obj && obj instanceof _PdfReference) {\n isReference = true;\n fontDict = this._crossReference._fetch(obj);\n }\n else if (obj instanceof _PdfDictionary) {\n fontDict = obj;\n }\n }\n if (!fontDict) {\n fontDict = new _PdfDictionary(this._crossReference);\n resource.update('Font', fontDict);\n }\n var keyName = _PdfName.get(_getNewGuidString());\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, this._pdfFont._dictionary);\n if (font instanceof PdfTrueTypeFont) {\n if (this._pdfFont._pdfFontInternals) {\n this._crossReference._cacheMap.set(reference, this._pdfFont._pdfFontInternals);\n }\n }\n else if (this._pdfFont._dictionary) {\n this._crossReference._cacheMap.set(reference, this._pdfFont._dictionary);\n }\n fontDict.update(keyName.name, reference);\n resource._updated = true;\n document.form._dictionary.update('DR', resource);\n document.form._dictionary._updated = true;\n this._fontName = keyName.name;\n var defaultAppearance = new _PdfDefaultAppearance();\n defaultAppearance.fontName = this._fontName;\n defaultAppearance.fontSize = this._pdfFont._size;\n defaultAppearance.color = this.color ? this.color : [0, 0, 0];\n this._dictionary.update('DA', defaultAppearance.toString());\n if (isReference) {\n resource._updated = true;\n }\n this._isFont = true;\n }\n };\n PdfWidgetAnnotation.prototype._getPage = function () {\n if (!this._page) {\n var document_2;\n if (this._crossReference) {\n document_2 = this._crossReference._document;\n }\n var page = void 0;\n if (this._dictionary.has('P')) {\n var ref = this._dictionary.getRaw('P');\n if (ref && document_2) {\n for (var i = 0; i < document_2.pageCount; i++) {\n var entry = document_2.getPage(i);\n if (entry && entry._ref === ref) {\n page = entry;\n break;\n }\n }\n }\n }\n if (!page && document_2 && this._ref) {\n page = _findPage(document_2, this._ref);\n }\n this._page = page;\n }\n return this._page;\n };\n PdfWidgetAnnotation.prototype._beginSave = function () {\n if (!this._isLoaded) {\n var value = this._bounds;\n this._dictionary.update('Rect', _getUpdatedBounds([value.x, value.y, value.width, value.height], this._page));\n }\n };\n PdfWidgetAnnotation.prototype._parseBackColor = function () {\n var value;\n if ((this._isLoaded && this._hasBackColor) || (!this._isLoaded && !this._isTransparentBackColor)) {\n if (typeof this._backColor === 'undefined') {\n var dictionary = this._mkDictionary;\n if (dictionary && dictionary.has('BG')) {\n var colorArray = dictionary.getArray('BG');\n if (colorArray) {\n this._backColor = _parseColor(colorArray);\n }\n }\n }\n if (typeof this._backColor === 'undefined' || this._backColor === null) {\n this._backColor = [255, 255, 255];\n }\n value = this._backColor;\n }\n return value;\n };\n PdfWidgetAnnotation.prototype._updateBackColor = function (value, setAppearance) {\n if (setAppearance === void 0) { setAppearance = false; }\n var isChanged = false;\n if (value.length === 4 && value[3] !== 255) {\n this._isTransparentBackColor = true;\n if (this._dictionary.has('BG')) {\n delete this._dictionary._map.BG;\n isChanged = true;\n }\n var mkDictionary = this._mkDictionary;\n if (mkDictionary && mkDictionary.has('BG')) {\n delete mkDictionary._map.BG;\n this._dictionary._updated = true;\n isChanged = true;\n }\n }\n else {\n this._isTransparentBackColor = false;\n if (typeof this.backColor === 'undefined' || this._backColor !== value) {\n if (typeof this._mkDictionary === 'undefined') {\n this._dictionary.update('MK', new _PdfDictionary(this._crossReference));\n }\n this._mkDictionary.update('BG', [Number.parseFloat((value[0] / 255).toFixed(3)),\n Number.parseFloat((value[1] / 255).toFixed(3)),\n Number.parseFloat((value[2] / 255).toFixed(3))]);\n this._backColor = [value[0], value[1], value[2]];\n this._dictionary._updated = true;\n isChanged = true;\n }\n }\n if (setAppearance && isChanged && this._field) {\n this._field._setAppearance = true;\n }\n };\n return PdfWidgetAnnotation;\n}(PdfAnnotation));\nexport { PdfWidgetAnnotation };\n/**\n * `PdfStateItem` class represents the check box field item objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access check box field\n * let field: PdfCheckBoxField = document.form.fieldAt(0) as PdfCheckBoxField;\n * // Access first item of check box field\n * let item: PdfStateItem = field.itemAt(0) as PdfStateItem;\n * // Sets the check box style as check\n * item.style = PdfCheckBoxStyle.check;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStateItem = /** @class */ (function (_super) {\n __extends(PdfStateItem, _super);\n /**\n * Initializes a new instance of the `PdfStateItem` class.\n *\n * @private\n */\n function PdfStateItem() {\n return _super.call(this) || this;\n }\n /**\n * Parse an existing item of the field.\n *\n * @private\n * @param {_PdfDictionary} dictionary Widget dictionary.\n * @param {_PdfCrossReference} crossReference PDF cross reference.\n * @param {PdfField} field Field object.\n * @returns {PdfStateItem} Widget.\n */\n PdfStateItem._load = function (dictionary, crossReference, field) {\n var widget = new PdfStateItem();\n widget._isLoaded = true;\n widget._dictionary = dictionary;\n widget._crossReference = crossReference;\n widget._field = field;\n return widget;\n };\n Object.defineProperty(PdfStateItem.prototype, \"checked\", {\n /**\n * Gets the flag to indicate whether the field item is checked or not.\n *\n * @returns {boolean} Checked or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access check box field\n * let field: PdfCheckBoxField = document.form.fieldAt(0) as PdfCheckBoxField;\n * // Access first item of check box field\n * let item: PdfStateItem = field.itemAt(0) as PdfStateItem;\n * // Gets the flag to indicate whether the field item is checked or not.\n * let checked: boolean = item.checked;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return _checkField(this._dictionary);\n },\n /**\n * Sets the flag to indicate whether the field item is checked or not.\n *\n * @param {boolean} value Checked or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access check box field\n * let field: PdfCheckBoxField = document.form.fieldAt(0) as PdfCheckBoxField;\n * // Access first item of check box field\n * let item: PdfStateItem = field.itemAt(0) as PdfStateItem;\n * // Sets the style of the annotation\n * item.checked = true;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this.checked !== value) {\n this._dictionary.update('AS', _PdfName.get(value ? 'Yes' : 'Off'));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStateItem.prototype, \"style\", {\n /**\n * Gets the style of annotation.\n *\n * @returns {PdfCheckBoxStyle} Style of annotation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access check box field\n * let field: PdfCheckBoxField = document.form.fieldAt(0) as PdfCheckBoxField;\n * // Access first item of check box field\n * let item: PdfStateItem = field.itemAt(0) as PdfStateItem;\n * // Gets the style of the annotation\n * let style: PdfCheckBoxStyle = item.style;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._isLoaded) {\n var dictionary = this._mkDictionary;\n if (dictionary && dictionary.has('CA')) {\n this._style = _stringToStyle(dictionary.get('CA'));\n }\n else {\n this._style = PdfCheckBoxStyle.check;\n }\n }\n return this._style;\n },\n /**\n * Sets the style of annotation.\n *\n * @param {PdfCheckBoxStyle} value Style of annotation.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access check box field\n * let field: PdfCheckBoxField = document.form.fieldAt(0) as PdfCheckBoxField;\n * // Access first item of check box field\n * let item: PdfStateItem = field.itemAt(0) as PdfStateItem;\n * // Sets the style of the annotation\n * item.style = PdfCheckBoxStyle.check;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (this.style !== value) {\n this._style = value;\n var dictionary = this._mkDictionary;\n if (!dictionary) {\n dictionary = new _PdfDictionary(this._crossReference);\n this._dictionary.update('MK', dictionary);\n }\n dictionary.update('CA', _styleToString(value));\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfStateItem.prototype._doPostProcess = function () {\n var style = this.checked ? _PdfCheckFieldState.checked : _PdfCheckFieldState.unchecked;\n var template = _getStateTemplate(style, this);\n if (template) {\n var page = this._getPage();\n if (page) {\n var graphics = page.graphics;\n graphics.save();\n if (page.rotation === PdfRotationAngle.angle90) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(90);\n }\n else if (page.rotation === PdfRotationAngle.angle180) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(-180);\n }\n else if (page.rotation === PdfRotationAngle.angle270) {\n graphics.translateTransform(graphics._size[0], graphics._size[1]);\n graphics.rotateTransform(270);\n }\n graphics._sw._setTextRenderingMode(_TextRenderingMode.fill);\n graphics._drawTemplate(template, this.bounds);\n graphics.restore();\n }\n }\n this._dictionary._updated = false;\n };\n PdfStateItem.prototype._postProcess = function (value) {\n var field = this._field;\n if (!value) {\n value = (field && field.checked) ? 'Yes' : 'Off';\n }\n this._dictionary.update('AS', _PdfName.get(value));\n };\n PdfStateItem.prototype._setField = function (field) {\n this._field = field;\n this._field._stringFormat = new PdfStringFormat(this.textAlignment, PdfVerticalAlignment.middle);\n this._field._addToKid(this);\n };\n return PdfStateItem;\n}(PdfWidgetAnnotation));\nexport { PdfStateItem };\n/**\n * `PdfRadioButtonListItem` class represents the radio button field item objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new radio button list field\n * let field: PdfRadioButtonListField = new PdfRadioButtonListField(page, 'Age');\n * // Create and add first item\n * let first: PdfRadioButtonListItem = field.add('1-9', {x: 100, y: 140, width: 20, height: 20});\n * // Create and add second item\n * let second: PdfRadioButtonListItem = new PdfRadioButtonListItem('10-49', {x: 100, y: 170, width: 20, height: 20}, page);\n * field.add(second);\n * // Create and add third item\n * let third: PdfRadioButtonListItem = new PdfRadioButtonListItem('50-59', {x: 100, y: 200, width: 20, height: 20}, field);\n * field.add(third);\n * // Sets selected index of the radio button list field\n * field.selectedIndex = 0;\n * // Add the field into PDF form\n * form.add(field);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfRadioButtonListItem = /** @class */ (function (_super) {\n __extends(PdfRadioButtonListItem, _super);\n function PdfRadioButtonListItem(value, bounds, item) {\n var _this = _super.call(this) || this;\n if (item && value && bounds) {\n if (item instanceof PdfField) {\n _this._initializeItem(value, bounds, item.page, item);\n }\n else {\n _this._initializeItem(value, bounds, item);\n }\n }\n return _this;\n }\n /**\n * Parse an existing item of the field.\n *\n * @private\n * @param {_PdfDictionary} dictionary Widget dictionary.\n * @param {_PdfCrossReference} crossReference PDF cross reference.\n * @param {PdfField} field Field object.\n * @returns {PdfRadioButtonListItem} Widget.\n */\n PdfRadioButtonListItem._load = function (dictionary, crossReference, field) {\n var widget = new PdfRadioButtonListItem();\n widget._isLoaded = true;\n widget._dictionary = dictionary;\n widget._crossReference = crossReference;\n widget._field = field;\n return widget;\n };\n Object.defineProperty(PdfRadioButtonListItem.prototype, \"selected\", {\n /**\n * Gets the flag to indicate whether the field item is selected or not.\n *\n * @returns {boolean} Selected or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new radio button list field\n * let field: PdfRadioButtonListField = new PdfRadioButtonListField(page, 'Age');\n * // Access first list field item\n * let item: PdfRadioButtonListItem = field.itemAt(0);\n * // Gets the flag to indicate whether the field item is selected or not.\n * let selected: boolean = item.selected;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._index === this._field.selectedIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadioButtonListItem.prototype, \"value\", {\n /**\n * Gets the value of the radio button list field item\n *\n * @returns {string} Value of the radio button list field item.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new radio button list field\n * let field: PdfRadioButtonListField = new PdfRadioButtonListField(page, 'Age');\n * // Access first list field item\n * let item: PdfRadioButtonListItem = field.itemAt(0);\n * // Gets the value of the radio button list field item\n * let value: string = item.value;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._isLoaded && !this._optionValue) {\n this._optionValue = _getItemValue(this._dictionary);\n }\n return this._optionValue;\n },\n /**\n * Sets the value of the radio button list field item\n *\n * @param {string} option Value of the radio button list field item.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new radio button list field\n * let field: PdfRadioButtonListField = new PdfRadioButtonListField(page, 'Age');\n * // Access first list field item\n * let item: PdfRadioButtonListItem = field.itemAt(0);\n * // Sets the value of the radio button list field item\n * item.value = '1-9';\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (option) {\n this._optionValue = option;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadioButtonListItem.prototype, \"backColor\", {\n /**\n * Gets the back color of the annotation.\n *\n * @returns {number[]} Color as R, G, B color array in between 0 to 255.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfWidgetAnnotation = page.annotations.at(0) as PdfWidgetAnnotation;\n * // Gets the back color of the annotation\n * let backColor: number[] = annotation.backColor;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._parseBackColor();\n },\n /**\n * Sets the back color of the annotation.\n *\n * @param {number[]} value Array with R, G, B, A color values in between 0 to 255. For optional A (0-254), it signifies transparency.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0);\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Access the radio button list field\n * let field: PdfRadioButtonListField = form.fieldAt(0) as PdfRadioButtonListField;\n * // Sets the back color of the radio button list item\n * field.itemAt(0).backColor = [255, 255, 255];\n * // Sets the background color of the field item to transparent\n * field.itemAt(1).backColor = [0, 0, 0, 0];\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._updateBackColor(value, true);\n },\n enumerable: true,\n configurable: true\n });\n PdfRadioButtonListItem.prototype._initializeItem = function (value, bounds, page, field) {\n this._optionValue = value;\n this._page = page;\n this._create(this._page, bounds, this._field);\n this.textAlignment = PdfTextAlignment.left;\n this._dictionary.update('MK', new _PdfDictionary(this._crossReference));\n this._mkDictionary.update('BC', [0, 0, 0]);\n this._mkDictionary.update('BG', [1, 1, 1]);\n this.style = PdfCheckBoxStyle.circle;\n this._dictionary.update('DA', '/TiRo 0 Tf 0 0 0 rg');\n if (field) {\n this._setField(field);\n this._dictionary.update('Parent', field._ref);\n }\n };\n PdfRadioButtonListItem.prototype._postProcess = function (value) {\n var field = this._field;\n if (!value && field && field.selectedIndex !== -1) {\n value = field.itemAt(field.selectedIndex).value;\n }\n if (this.value === value) {\n this._dictionary.update('AS', _PdfName.get(this.value));\n }\n else {\n this._dictionary.update('AS', _PdfName.get('Off'));\n }\n };\n return PdfRadioButtonListItem;\n}(PdfStateItem));\nexport { PdfRadioButtonListItem };\n/**\n * `PdfListBoxItem` class represents the list and combo box field item objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new list box field\n * let field: PdfListBoxField = new PdfListBoxField(page, 'list1', {x: 100, y: 60, width: 100, height: 50});\n * // Add list items to the field.\n * field.addItem(new PdfListFieldItem('English', 'English'));\n * field.addItem(new PdfListFieldItem('French', 'French'));\n * field.addItem(new PdfListFieldItem('German', 'German'));\n * // Sets the selected index\n * field.selectedIndex = 2;\n * // Sets the flag indicates whether the list box allows multiple selections.\n * field.multiSelect = true;\n * // Add the field into PDF form\n * form.add(field);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfListFieldItem = /** @class */ (function (_super) {\n __extends(PdfListFieldItem, _super);\n function PdfListFieldItem(text, value, field) {\n var _this = _super.call(this) || this;\n if (text && value) {\n _this._initializeItem(text, value, field);\n }\n return _this;\n }\n /**\n * Parse an existing item of the field.\n *\n * @private\n * @param {_PdfDictionary} dictionary Widget dictionary.\n * @param {_PdfCrossReference} crossReference PDF cross reference.\n * @param {PdfField} field Field object.\n * @returns {PdfListFieldItem} Widget.\n */\n PdfListFieldItem._load = function (dictionary, crossReference, field) {\n var widget = new PdfListFieldItem();\n widget._isLoaded = true;\n widget._dictionary = dictionary;\n widget._crossReference = crossReference;\n widget._field = field;\n return widget;\n };\n Object.defineProperty(PdfListFieldItem.prototype, \"text\", {\n /**\n * Gets the text of the annotation.\n *\n * @returns {string} Text.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new radio button list field\n * let field: PdfListBoxField = form.fieldAt(0) as PdfListBoxField;\n * // Access first list field item\n * let item: PdfListFieldItem = field.itemAt(0);\n * // Gets the text of the list field item\n * let text: string = item.text;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._text === 'undefined' &&\n typeof this._field !== 'undefined' &&\n (this._field instanceof PdfListBoxField || this._field instanceof PdfComboBoxField)) {\n this._text = this._field._options[Number.parseInt(this._index.toString(), 10)][1];\n }\n return this._text;\n },\n /**\n * Sets the text of the annotation.\n *\n * @param {string} value Text.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new radio button list field\n * let field: PdfListBoxField = form.fieldAt(0) as PdfListBoxField;\n * // Access first list field item\n * let item: PdfListFieldItem = field.itemAt(0);\n * // Sets the text of the list field item\n * item.text = '1-9';\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof value === 'string' &&\n typeof this._field !== 'undefined' &&\n (this._field instanceof PdfListBoxField || this._field instanceof PdfComboBoxField)) {\n if (value !== this._field._options[Number.parseInt(this._index.toString(), 10)][1]) {\n this._field._options[Number.parseInt(this._index.toString(), 10)][1] = value;\n this._text = value;\n this._field._dictionary._updated = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfListFieldItem.prototype, \"selected\", {\n /**\n * Gets the flag to indicate whether the field item is selected or not (Read only).\n *\n * @returns {boolean} Selected or not.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Gets the first page of the document\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Access the PDF form\n * let form: PdfForm = document.form;\n * // Create a new radio button list field\n * let field: PdfListBoxField = form.fieldAt(0) as PdfListBoxField;\n * // Access first list field item\n * let item: PdfListFieldItem = field.itemAt(0);\n * // Gets the flag to indicate whether the field item is selected or not.\n * let selected: boolean = item.selected;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._index === this._field.selectedIndex;\n },\n enumerable: true,\n configurable: true\n });\n PdfListFieldItem.prototype._initializeItem = function (text, value, field) {\n this._text = text;\n this._value = value;\n if (field && field instanceof PdfListBoxField) {\n field._addToOptions(this, field);\n }\n };\n return PdfListFieldItem;\n}(PdfStateItem));\nexport { PdfListFieldItem };\n/**\n * `PdfAnnotationCaption` class represents the caption text and properties of annotations.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Create and set annotation caption values\n * annotation.caption = new PdfAnnotationCaption(true, PdfLineCaptionType.inline, [10, 10]);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfAnnotationCaption = /** @class */ (function () {\n function PdfAnnotationCaption(cap, type, offset) {\n this._cap = typeof cap !== 'undefined' ? cap : false;\n this._type = typeof type !== 'undefined' ? type : PdfLineCaptionType.inline;\n this._offset = typeof offset !== 'undefined' ? offset : [0, 0];\n }\n Object.defineProperty(PdfAnnotationCaption.prototype, \"cap\", {\n /**\n * Gets the boolean flag indicating whether annotation has caption or not.\n *\n * @returns {boolean} Caption.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the boolean flag indicating whether annotation has caption or not.\n * let cap: boolean = annotation.caption.cap;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._cap;\n },\n /**\n * Sets the boolean flag indicating whether annotation has caption or not.\n *\n * @param {boolean} value Caption.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the boolean flag indicating whether annotation has caption or not.\n * annotation.caption.cap = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._cap) {\n this._cap = value;\n if (this._dictionary) {\n this._dictionary.update('Cap', value);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotationCaption.prototype, \"type\", {\n /**\n * Gets the caption type of the annotation.\n *\n * @returns {PdfLineCaptionType} Caption type.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the caption type of the annotation.\n * let type: PdfLineCaptionType = annotation.caption.type;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._type;\n },\n /**\n * Sets the caption type of the annotation.\n *\n * @param {PdfLineCaptionType} value Caption type.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the caption type of the annotation.\n * annotation.caption.type = PdfLineCaptionType.inline;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._type) {\n this._type = value;\n if (this._dictionary) {\n this._dictionary.update('CP', _PdfName.get(value === PdfLineCaptionType.top ? 'Top' : 'Inline'));\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotationCaption.prototype, \"offset\", {\n /**\n * Gets the offset position of the annotation.\n *\n * @returns {Array} Caption offset.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the offset position of the annotation.\n * let offset: Array = annotation.caption.offset;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._offset;\n },\n /**\n * Sets the offset position of the annotation.\n *\n * @param {Array} value Caption offset.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Sets the offset position of the annotation.\n * annotation.caption.offset = [10, 10];\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (_areNotEqual(value, this._offset)) {\n this._offset = value;\n if (this._dictionary) {\n this._dictionary.update('CO', value);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotationCaption;\n}());\nexport { PdfAnnotationCaption };\n/**\n * `PdfAnnotationLineEndingStyle` class represents the line ending styles of annotations.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Initializes a new instance of the `PdfAnnotationLineEndingStyle` class.\n * annotation.lineEndingStyle = new PdfAnnotationLineEndingStyle(PdfLineEndingStyle.openArrow, PdfLineEndingStyle.closeArrow);\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfAnnotationLineEndingStyle = /** @class */ (function () {\n function PdfAnnotationLineEndingStyle(begin, end) {\n this._begin = typeof begin !== 'undefined' ? begin : PdfLineEndingStyle.none;\n this._end = typeof end !== 'undefined' ? end : PdfLineEndingStyle.none;\n }\n Object.defineProperty(PdfAnnotationLineEndingStyle.prototype, \"begin\", {\n /**\n * Gets the begin line ending style of the annotation.\n *\n * @returns {PdfLineEndingStyle} Begin line ending style.\n * `PdfAnnotationLineEndingStyle` class represents the line ending styles of annotations.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the begin line ending style of the annotation.\n * let begin: PdfLineEndingStyle = annotation.lineEndingStyle.begin;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._begin;\n },\n /**\n * Sets the begin line ending style of the annotation.\n *\n * @param {PdfLineEndingStyle} value Begin line ending style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Initializes a new instance of the `PdfAnnotationLineEndingStyle` class.\n * let lineEndingStyle = new PdfAnnotationLineEndingStyle();\n * // Sets the begin line ending style of the annotation.\n * lineEndingStyle.begin = PdfLineEndingStyle.openArrow;\n * // Sets the end line ending style of the annotation.\n * lineEndingStyle.end = PdfLineEndingStyle.closeArrow;\n * // Sets the line ending style to the annotation\n * annotation.lineEndingStyle = lineEndingStyle;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._begin) {\n this._begin = value;\n if (this._dictionary) {\n this._dictionary.update('LE', [_PdfName.get(_reverseMapEndingStyle(value)), _PdfName.get(_reverseMapEndingStyle(this._end))]);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotationLineEndingStyle.prototype, \"end\", {\n /**\n * Gets the begin line ending style of the annotation.\n *\n * @returns {PdfLineEndingStyle} End line ending style.\n * `PdfAnnotationLineEndingStyle` class represents the line ending styles of annotations.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the end line ending style of the annotation.\n * let end: PdfLineEndingStyle = annotation.lineEndingStyle.end;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._end;\n },\n /**\n * Sets the begin line ending style of the annotation.\n *\n * @param {PdfLineEndingStyle} value End line ending style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Initializes a new instance of the `PdfAnnotationLineEndingStyle` class.\n * let lineEndingStyle = new PdfAnnotationLineEndingStyle();\n * // Sets the begin line ending style of the annotation.\n * lineEndingStyle.begin = PdfLineEndingStyle.openArrow;\n * // Sets the end line ending style of the annotation.\n * lineEndingStyle.end = PdfLineEndingStyle.closeArrow;\n * // Sets the line ending style to the annotation\n * annotation.lineEndingStyle = lineEndingStyle;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._end) {\n this._end = value;\n if (this._dictionary) {\n this._dictionary.update('LE', [_PdfName.get(_reverseMapEndingStyle(this._begin)), _PdfName.get(_reverseMapEndingStyle(value))]);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotationLineEndingStyle;\n}());\nexport { PdfAnnotationLineEndingStyle };\n/**\n * `PdfInteractiveBorder` class represents the border of the field.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the PDF form field\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the width of the field border.\n * let width: number = field.border.width;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfInteractiveBorder = /** @class */ (function () {\n function PdfInteractiveBorder(width, style, dash) {\n this._width = typeof width !== 'undefined' ? width : 1;\n this._style = typeof style !== 'undefined' ? style : PdfBorderStyle.solid;\n if (typeof dash !== 'undefined' && Array.isArray(dash)) {\n this._dash = dash;\n }\n }\n Object.defineProperty(PdfInteractiveBorder.prototype, \"width\", {\n /**\n * Gets the width of the field border.\n *\n * @returns {number} border width.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the PDF form field\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the width of the annotation border.\n * let width: number = field.border.width;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._width;\n },\n /**\n * Sets the width of the field border.\n *\n * @param {number} value width.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the PDF form field\n * let field: PdfField = document.form.fieldAt(0);\n * // Initializes a new instance of the `PdfInteractiveBorder` class.\n * let border: PdfInteractiveBorder = new PdfInteractiveBorder();\n * //Sets the width of the annotation border.\n * border.width = 10;\n * //Sets the style of the annotation border.\n * border.style = PdfBorderStyle.dashed;\n * //Sets the dash pattern of the annotation border.\n * border.dash = [1, 2, 1];\n * // Sets the border to the PDF form field\n * field.border = border;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._width) {\n this._width = value;\n if (this._dictionary) {\n var bs = this._dictionary.has('BS') ? this._dictionary.get('BS') : new _PdfDictionary(this._crossReference);\n bs.update('Type', _PdfName.get('Border'));\n bs.update('W', this._width);\n bs.update('S', _mapBorderStyle(this._style));\n if (this._dash) {\n bs.update('D', this._dash);\n }\n this._dictionary.update('BS', bs);\n this._dictionary._updated = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfInteractiveBorder.prototype, \"style\", {\n /**\n * Gets the border line style of the field border.\n *\n * @returns {PdfBorderStyle} Border style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the PDF form field\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the border line style of the annotation border.\n * let style: PdfBorderStyle = field.border.style;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._style;\n },\n /**\n * Sets the border line style of the field border.\n *\n * @param {PdfBorderStyle} value Border style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the PDF form field\n * let field: PdfField = document.form.fieldAt(0);\n * // Initializes a new instance of the `PdfInteractiveBorder` class.\n * let border: PdfInteractiveBorder = new PdfInteractiveBorder();\n * //Sets the width of the annotation border.\n * border.width = 10;\n * //Sets the style of the annotation border.\n * border.style = PdfBorderStyle.dashed;\n * //Sets the dash pattern of the annotation border.\n * border.dash = [1, 2, 1];\n * // Sets the border to the PDF form field\n * field.border = border;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._style) {\n this._style = value;\n if (this._dictionary) {\n var bs = this._dictionary.has('BS') ? this._dictionary.get('BS') : new _PdfDictionary(this._crossReference);\n bs.update('Type', _PdfName.get('Border'));\n bs.update('W', this._width);\n bs.update('S', _mapBorderStyle(this._style));\n if (this._dash) {\n bs.update('D', this._dash);\n }\n this._dictionary.update('BS', bs);\n this._dictionary._updated = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfInteractiveBorder.prototype, \"dash\", {\n /**\n * Gets the dash pattern of the field border.\n *\n * @returns {Array} Dash pattern.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the PDF form field\n * let field: PdfField = document.form.fieldAt(0);\n * // Gets the dash pattern of the field border.\n * let dash: Array = field.border.dash;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._dash;\n },\n /**\n * Sets the dash pattern of the field border.\n *\n * @param {Array} value Dash pattern.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the PDF form field\n * let field: PdfField = document.form.fieldAt(0);\n * // Initializes a new instance of the `PdfInteractiveBorder` class.\n * let border: PdfInteractiveBorder = new PdfInteractiveBorder();\n * //Sets the width of the annotation border.\n * border.width = 10;\n * //Sets the style of the annotation border.\n * border.style = PdfBorderStyle.dashed;\n * //Sets the dash pattern of the annotation border.\n * border.dash = [1, 2, 1];\n * // Sets the border to the PDF form field\n * field.border = border;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (typeof this._dash === 'undefined' || _areNotEqual(value, this._dash)) {\n this._dash = value;\n if (this._dictionary) {\n var bs = this._dictionary.has('BS') ? this._dictionary.get('BS') : new _PdfDictionary(this._crossReference);\n bs.update('Type', _PdfName.get('Border'));\n bs.update('W', this._width);\n bs.update('S', _mapBorderStyle(this._style));\n bs.update('D', this._dash);\n this._dictionary.update('BS', bs);\n this._dictionary._updated = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n return PdfInteractiveBorder;\n}());\nexport { PdfInteractiveBorder };\n/**\n * `PdfAnnotationBorder` class represents the border properties of annotations.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Initializes a new instance of the ` PdfAnnotationBorder ` class.\n * let border: PdfAnnotationBorder = new PdfAnnotationBorder ();\n * //Sets the width of the annotation border.\n * border.width = 10;\n * //Sets the style of the annotation border.\n * border.style = PdfBorderStyle.dashed;\n * //Sets the dash pattern of the annotation border.\n * border.dash = [1, 2, 1];\n * // Sets the border to the PDF form field\n * annotation.border = border;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfAnnotationBorder = /** @class */ (function (_super) {\n __extends(PdfAnnotationBorder, _super);\n function PdfAnnotationBorder(width, hRadius, vRadius, style, dash) {\n var _this = _super.call(this, width, style, dash) || this;\n _this._hRadius = typeof hRadius !== 'undefined' ? hRadius : 0;\n _this._vRadius = typeof vRadius !== 'undefined' ? vRadius : 0;\n return _this;\n }\n Object.defineProperty(PdfAnnotationBorder.prototype, \"width\", {\n /**\n * Gets the width of the annotation border.\n *\n * @returns {number} border width.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the width of the annotation border.\n * let width: number = annotation.border.width;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._width;\n },\n /**\n * Sets the width of the annotation border.\n *\n * @param {number} value width.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Initializes a new instance of the ` PdfAnnotationBorder ` class.\n * let border: PdfAnnotationBorder = new PdfAnnotationBorder ();\n * //Sets the width of the annotation border.\n * border.width = 10;\n * //Sets the style of the annotation border.\n * border.style = PdfBorderStyle.dashed;\n * //Sets the dash pattern of the annotation border.\n * border.dash = [1, 2, 1];\n * // Sets the border to the PDF form field\n * annotation.border = border;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._width) {\n this._width = value;\n if (this._dictionary) {\n this._dictionary.update('Border', [this._hRadius, this._vRadius, this._width]);\n var bs = this._dictionary.has('BS') ? this._dictionary.get('BS') : new _PdfDictionary(this._crossReference);\n bs.update('Type', _PdfName.get('Border'));\n bs.update('W', this._width);\n bs.update('S', _mapBorderStyle(this._style));\n if (this._dash) {\n bs.update('D', this._dash);\n }\n this._dictionary.update('BS', bs);\n this._dictionary._updated = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotationBorder.prototype, \"hRadius\", {\n /**\n * Gets the horizontal radius of the annotation border.\n *\n * @returns {number} horizontal radius.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the horizontal radius of the annotation border.\n * let hRadius: number = annotation.border.hRadius;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hRadius;\n },\n /**\n * Sets the horizontal radius of the annotation border.\n *\n * @param {number} value horizontal radius.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Initializes a new instance of the ` PdfAnnotationBorder ` class.\n * let border: PdfAnnotationBorder = new PdfAnnotationBorder ();\n * //Sets the width of the annotation border.\n * border.width = 10;\n * // Sets the horizontal radius of the annotation border.\n * border.hRadius = 2;\n * //Sets the style of the annotation border.\n * border.style = PdfBorderStyle.dashed;\n * //Sets the dash pattern of the annotation border.\n * border.dash = [1, 2, 1];\n * // Sets the border to the PDF form field\n * annotation.border = border;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._hRadius) {\n this._hRadius = value;\n if (this._dictionary) {\n this._dictionary.update('Border', [this._hRadius, this._vRadius, this._width]);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotationBorder.prototype, \"vRadius\", {\n /**\n * Gets the vertical radius of the annotation border.\n *\n * @returns {number} vertical radius.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Gets the vertical radius of the annotation border.\n * let vRadius: number = annotation.border.vRadius;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._vRadius;\n },\n /**\n * Sets the vertical radius of the annotation border.\n *\n * @param {number} value vertical radius.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfLineAnnotation = page.annotations.at(0) as PdfLineAnnotation;\n * // Initializes a new instance of the ` PdfAnnotationBorder ` class.\n * let border: PdfAnnotationBorder = new PdfAnnotationBorder ();\n * //Sets the width of the annotation border.\n * border.width = 10;\n * // Sets the vertical radius of the annotation border.\n * border.vRadius = 2;\n * //Sets the style of the annotation border.\n * border.style = PdfBorderStyle.dashed;\n * //Sets the dash pattern of the annotation border.\n * border.dash = [1, 2, 1];\n * // Sets the border to the PDF form field\n * annotation.border = border;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._vRadius) {\n this._vRadius = value;\n if (this._dictionary) {\n this._dictionary.update('Border', [this._hRadius, this._vRadius, this._width]);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotationBorder;\n}(PdfInteractiveBorder));\nexport { PdfAnnotationBorder };\n/**\n * `PdfBorderEffect` class represents the border effects of annotations.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfSquareAnnotation = page.annotations.at(0) as PdfSquareAnnotation;\n * // Initializes a new instance of the `PdfBorderEffect` class.\n * let borderEffect: PdfBorderEffect = new PdfBorderEffect();\n * // Sets the intensity of the annotation border.\n * borderEffect.intensity = 2;\n * // Sets the effect style of the annotation border.\n * borderEffect.style = PdfBorderEffectStyle.cloudy;\n * // Sets border effect to the annotation.\n * annotation.borderEffect = borderEffect;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBorderEffect = /** @class */ (function () {\n function PdfBorderEffect(dictionary) {\n this._intensity = 0;\n if (typeof dictionary !== 'undefined' && dictionary !== null) {\n if (dictionary.has('BE')) {\n var borderEffect = this._dictionary.get('BE');\n if (borderEffect) {\n if (borderEffect.has('I')) {\n this._intensity = borderEffect.get('I');\n }\n if (borderEffect.has('S')) {\n this._style = this._getBorderEffect(borderEffect.get('S'));\n }\n }\n }\n }\n else {\n this._dictionary = new _PdfDictionary();\n this._dictionary.set('I', this._intensity);\n this._dictionary.set('S', this._styleToEffect(this._style));\n }\n }\n Object.defineProperty(PdfBorderEffect.prototype, \"intensity\", {\n /**\n * Gets the intensity of the annotation border.\n *\n * @returns {number} intensity.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfSquareAnnotation = page.annotations.at(0) as PdfSquareAnnotation;\n * // Gets the intensity of the annotation border.\n * let intensity: number = annotation.borderEffect.intensity;\n * // Gets the effect style of the annotation border.\n * let style: PdfBorderEffectStyle = annotation.borderEffect.style;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._intensity;\n },\n /**\n * Sets the intensity of the annotation border.\n *\n * @param {number} value intensity.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfSquareAnnotation = page.annotations.at(0) as PdfSquareAnnotation;\n * // Initializes a new instance of the `PdfBorderEffect` class.\n * let borderEffect: PdfBorderEffect = new PdfBorderEffect();\n * // Sets the intensity of the annotation border.\n * borderEffect.intensity = 2;\n * // Sets the effect style of the annotation border.\n * borderEffect.style = PdfBorderEffectStyle.cloudy;\n * // Sets border effect to the annotation.\n * annotation.borderEffect = borderEffect;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._intensity) {\n this._intensity = value;\n if (this._dictionary) {\n var bs = this._dictionary.has('BE') ? this._dictionary.get('BE') : new _PdfDictionary(this._crossReference);\n bs.update('I', this._intensity);\n bs.update('S', this._styleToEffect(this._style));\n this._dictionary.update('BE', bs);\n this._dictionary._updated = true;\n }\n this._dictionary._updated = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorderEffect.prototype, \"style\", {\n /**\n * Gets the effect style of the annotation border.\n *\n * @returns {PdfBorderEffectStyle} effect style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfSquareAnnotation = page.annotations.at(0) as PdfSquareAnnotation;\n * // Gets the intensity of the annotation border.\n * let intensity: number = annotation.borderEffect.intensity;\n * // Gets the effect style of the annotation border.\n * let style: PdfBorderEffectStyle = annotation.borderEffect.style;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._style;\n },\n /**\n * Sets the effect style of the annotation border.\n *\n * @param {PdfBorderEffectStyle} value effect style.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the first page\n * let page: PdfPage = document.getPage(0) as PdfPage;\n * // Get the first annotation of the page\n * let annotation: PdfSquareAnnotation = page.annotations.at(0) as PdfSquareAnnotation;\n * // Initializes a new instance of the `PdfBorderEffect` class.\n * let borderEffect: PdfBorderEffect = new PdfBorderEffect();\n * // Sets the intensity of the annotation border.\n * borderEffect.intensity = 2;\n * // Sets the effect style of the annotation border.\n * borderEffect.style = PdfBorderEffectStyle.cloudy;\n * // Sets border effect to the annotation.\n * annotation.borderEffect = borderEffect;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._style) {\n this._style = value;\n if (this._dictionary) {\n var bs = this._dictionary.has('BE') ?\n this._dictionary.get('BE') :\n new _PdfDictionary(this._crossReference);\n bs.update('I', this._intensity);\n bs.update('S', this._styleToEffect(this._style));\n this._dictionary.update('BE', bs);\n this._dictionary._updated = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n PdfBorderEffect.prototype._getBorderEffect = function (value) {\n if (value === '/C') {\n return PdfBorderEffectStyle.cloudy;\n }\n else {\n return PdfBorderEffectStyle.solid;\n }\n };\n PdfBorderEffect.prototype._styleToEffect = function (value) {\n if (value === PdfBorderEffectStyle.cloudy) {\n return 'C';\n }\n else {\n return 'S';\n }\n };\n return PdfBorderEffect;\n}());\nexport { PdfBorderEffect };\nvar _PaintParameter = /** @class */ (function () {\n function _PaintParameter() {\n this.borderWidth = 1;\n }\n return _PaintParameter;\n}());\nexport { _PaintParameter };\nvar _CloudStyleArc = /** @class */ (function () {\n function _CloudStyleArc() {\n this.startAngle = 0;\n this.endAngle = 0;\n }\n return _CloudStyleArc;\n}());\n","import { _PdfStream } from './../../base-stream';\nimport { _PdfDictionary, _PdfName } from './../../pdf-primitives';\nimport { _ImageFormat } from './../../enumerator';\nvar _ImageDecoder = /** @class */ (function () {\n /**\n * Initializes a new instance of the `_ImageDecoder` class.\n *\n * @private\n * @param {Uint8Array} stream byte array.\n */\n function _ImageDecoder(stream) {\n this._format = _ImageFormat.unknown;\n this._height = 0;\n this._width = 0;\n this._bitsPerComponent = 8;\n this._position = 0;\n this._noOfComponents = -1;\n this._stream = stream;\n this._initialize();\n }\n Object.defineProperty(_ImageDecoder.prototype, \"_imageDataAsNumberArray\", {\n get: function () {\n return this._imageData;\n },\n enumerable: true,\n configurable: true\n });\n _ImageDecoder.prototype._initialize = function () {\n if (this._format === _ImageFormat.unknown && this._checkIfJpeg()) {\n this._format = _ImageFormat.jpeg;\n this._parseJpegImage();\n }\n else {\n throw new TypeError('Only the JPEG format is supported');\n }\n this._reset();\n this._imageData = new Uint8Array(this._stream.byteLength);\n this._read(this._imageData, 0, this._imageData.byteLength);\n };\n _ImageDecoder.prototype._reset = function () {\n this._position = 0;\n };\n _ImageDecoder.prototype._parseJpegImage = function () {\n this._reset();\n var imgData = new Uint8Array(this._stream.byteLength);\n this._read(imgData, 0, imgData.byteLength);\n var i = 4;\n var length = this._getBuffer(i) * 256 + this._getBuffer(i + 1);\n var isLengthExceed = false;\n while (i < imgData.byteLength) {\n i += length;\n if (i < imgData.byteLength) {\n if (this._getBuffer(i + 1) === 192) {\n this._height = this._getBuffer(i + 5) * 256 + this._getBuffer(i + 6);\n this._width = this._getBuffer(i + 7) * 256 + this._getBuffer(i + 8);\n this._noOfComponents = this._getBuffer(i + 9);\n if (this._width !== 0 && this._height !== 0) {\n return;\n }\n }\n else {\n i += 2;\n length = this._getBuffer(i) * 256 + this._getBuffer(i + 1);\n }\n }\n else {\n isLengthExceed = true;\n break;\n }\n }\n if (isLengthExceed) {\n this._reset();\n this._seek(2);\n this._readExceededJpegImage();\n }\n };\n _ImageDecoder.prototype._checkIfJpeg = function () {\n this._reset();\n for (var i = 0; i < _ImageDecoder._jpegHeader.length; i++) {\n if (_ImageDecoder._jpegHeader[Number.parseInt(i.toString(), 10)] !== this._getBuffer(i)) {\n return false;\n }\n this._position++;\n }\n return true;\n };\n _ImageDecoder.prototype._read = function (buffer, offset, count) {\n for (var index = offset; index < count; index++) {\n var position = this._position;\n buffer[Number.parseInt(index.toString(), 10)] = this._getBuffer(position);\n this._position++;\n }\n };\n _ImageDecoder.prototype._getBuffer = function (index) {\n return this._stream[Number.parseInt(index.toString(), 10)];\n };\n _ImageDecoder.prototype._getImageDictionary = function () {\n var data = []; // eslint-disable-line\n this._imageStream = new _PdfStream(data, new _PdfDictionary());\n this._imageStream.isImageStream = true;\n var tempString = '';\n var decodedString = '';\n for (var i = 0; i < this._imageDataAsNumberArray.byteLength; i++) {\n tempString += ' ' + String.fromCharCode(this._getBuffer(i));\n }\n for (var i = 0; i < tempString.length; i++) {\n if (i % 2 !== 0) {\n decodedString += tempString[Number.parseInt(i.toString(), 10)];\n }\n }\n this._imageStream.data = [decodedString];\n this._imageStream._isCompress = false;\n var dictionary = new _PdfDictionary();\n dictionary.set('Type', new _PdfName('XObject'));\n dictionary.set('Subtype', new _PdfName('Image'));\n dictionary.set('Width', this._width);\n dictionary.set('Height', this._height);\n dictionary.set('BitsPerComponent', this._bitsPerComponent);\n dictionary.set('Filter', new _PdfName('DCTDecode'));\n dictionary.set('ColorSpace', new _PdfName(this._getColorSpace()));\n dictionary.set('DecodeParms', this._getDecodeParams());\n this._imageStream.dictionary = dictionary;\n this._imageStream.bytes = new Uint8Array(this._imageStream.data[0].length);\n for (var i = 0; i < this._imageStream.data[0].length; i++) {\n this._imageStream.bytes[Number.parseInt(i.toString(), 10)] = this._imageStream.data[0].charCodeAt(i);\n }\n this._imageStream.end = this._imageStream.bytes.length;\n this._imageStream.dictionary._updated = true;\n return this._imageStream;\n };\n _ImageDecoder.prototype._getColorSpace = function () {\n if (this._noOfComponents === 1) {\n return 'DeviceGray';\n }\n else if (this._noOfComponents === 4) {\n return 'DeviceCMYK';\n }\n return 'DeviceRGB';\n };\n _ImageDecoder.prototype._getDecodeParams = function () {\n var decodeParams = new _PdfDictionary();\n decodeParams.set('Columns', this._width);\n decodeParams.set('BlackIs1', true);\n decodeParams.set('K', -1);\n decodeParams.set('Predictor', 15);\n decodeParams.set('BitsPerComponent', this._bitsPerComponent);\n return decodeParams;\n };\n _ImageDecoder.prototype._seek = function (length) {\n this._position += length;\n };\n _ImageDecoder.prototype._readByte = function () {\n if (this._position < this._stream.byteLength) {\n var value = this._getBuffer(this._position);\n this._position += 1;\n return value;\n }\n else {\n throw new Error('Error decoding JPEG image. Invalid offset.');\n }\n };\n _ImageDecoder.prototype._skipStream = function () {\n var length = this._getBuffer(this._position) << 8 | this._getBuffer(this._position + 1);\n this._seek(2);\n if (length < 2) {\n throw new Error('Error decoding JPEG image');\n }\n else if (length > 0) {\n this._seek(length - 2);\n }\n };\n _ImageDecoder.prototype._readExceededJpegImage = function () {\n var isContinueReading = true;\n while (isContinueReading) {\n var marker = this._getMarker();\n switch (marker) {\n case 0x00C0:\n case 0x00C1:\n case 0x00C2:\n case 0x00C3:\n case 0x00C5:\n case 0x00C6:\n case 0x00C7:\n case 0x00C9:\n case 0x00CA:\n case 0x00CB:\n case 0x00CD:\n case 0x00CE:\n case 0x00CF:\n this._seek(3);\n this._height = this._getBuffer(this._position) << 8 | this._getBuffer(this._position + 1);\n this._seek(2);\n this._width = this._getBuffer(this._position) << 8 | this._getBuffer(this._position + 1);\n this._seek(2);\n this._noOfComponents = this._getBuffer(this._position);\n this._seek(1);\n isContinueReading = false;\n break;\n default:\n this._skipStream();\n break;\n }\n }\n };\n _ImageDecoder.prototype._toUnsigned16 = function (value) {\n value = value & 0xFFFF;\n return value < 0 ? (value + 0x10000) : value;\n };\n _ImageDecoder.prototype._getMarker = function () {\n var skippedByte = 0;\n var marker = this._readByte();\n while (marker !== 255) {\n skippedByte++;\n marker = this._readByte();\n }\n do {\n marker = this._readByte();\n } while (marker === 255);\n if (skippedByte !== 0) {\n throw new Error('Error decoding JPEG image');\n }\n return this._toUnsigned16(marker);\n };\n _ImageDecoder._jpegHeader = [255, 216];\n return _ImageDecoder;\n}());\nexport { _ImageDecoder };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _ImageDecoder } from './../../graphics/images/image-decoder';\nimport { PdfImage } from './pdf-image';\nimport { _decode } from './../../utils';\n/**\n * The 'PdfBitmap' contains methods and properties to handle the Bitmap images.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Gets the graphics of the PDF page\n * let graphics: PdfGraphics = page.graphics;\n * // Create new image object by using JPEG image data as Base64 string format\n * let image: PdfImage = new PdfBitmap('/9j/4AAQSkZJRgABAQEAkACQAAD/4....QB//Z');\n * //Draw the image.\n * graphics.drawImage(image, 10, 20, 400, 400);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBitmap = /** @class */ (function (_super) {\n __extends(PdfBitmap, _super);\n function PdfBitmap(encodedString) {\n var _this = _super.call(this) || this;\n _this._imageStatus = true;\n if (encodedString !== null && typeof encodedString !== 'undefined' && typeof encodedString === 'string') {\n _this._initializeAsync(encodedString);\n }\n else {\n _this._initializeAsync(encodedString);\n }\n return _this;\n }\n PdfBitmap.prototype._initializeAsync = function (encodedString) {\n var byteArray = new Uint8Array(encodedString.length);\n if (encodedString !== null && typeof encodedString !== 'undefined' && typeof encodedString === 'string') {\n byteArray = _decode(encodedString, false);\n }\n else if (encodedString instanceof Uint8Array) {\n byteArray = encodedString;\n }\n this._decoder = new _ImageDecoder(byteArray);\n this.height = this._decoder._height;\n this.width = this._decoder._width;\n this._bitsPerComponent = this._decoder._bitsPerComponent;\n };\n PdfBitmap.prototype._save = function () {\n this._imageStatus = true;\n this._imageStream = this._decoder._getImageDictionary();\n };\n return PdfBitmap;\n}(PdfImage));\nexport { PdfBitmap };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Matrix, Rect, Size } from '@syncfusion/ej2-drawings';\nimport { PdfAnnotationBorder, PdfRotationAngle, PdfSquareAnnotation, PdfAnnotationFlag, _PdfDictionary, _PdfName, PdfBorderEffectStyle, PdfBorderEffect, PdfAnnotationState, PdfAnnotationStateModel, PdfCircleAnnotation, PdfPopupAnnotation, PdfLineAnnotation, PdfLineEndingStyle, PdfFontStyle, PdfFontFamily, PdfStandardFont, PdfStringFormat, PdfTextAlignment, PdfRubberStampAnnotation, PdfPen, PdfBrush, PdfVerticalAlignment, _PdfPath, PdfRubberStampAnnotationIcon, PdfBitmap, PdfPolyLineAnnotation, PdfCircleMeasurementType, PdfPopupIcon, PdfFreeTextAnnotation, PdfBorderStyle, PdfRectangleAnnotation, PdfPolygonAnnotation, PdfEllipseAnnotation, PdfTextMarkupAnnotation, PdfInkAnnotation, PdfLineIntent, PdfTemplate, PdfTextMarkupAnnotationType, PdfLineCaptionType, PdfMeasurementUnit, PdfAnnotationIntent, PdfTrueTypeFont, _decode } from '@syncfusion/ej2-pdf';\nimport { SizeBase, PageRenderer } from '../index';\n/**\n * AnnotationRenderer\n *\n * @hidden\n */\nvar AnnotationRenderer = /** @class */ (function () {\n /**\n * @param {PdfViewer} pdfViewer - The PdfViewer.\n * @param {PdfViewerBase} pdfViewerBase - The PdfViewerBase.\n * @private\n */\n function AnnotationRenderer(pdfViewer, pdfViewerBase) {\n this.formats = ['M/d/yyyy h:mm:ss tt', 'M/d/yyyy, h:mm:ss tt', 'M/d/yyyy h:mm tt',\n 'MM/dd/yyyy hh:mm:ss', 'M/d/yyyy h:mm:ss',\n 'M/d/yyyy hh:mm tt', 'M/d/yyyy hh tt',\n 'M/d/yyyy h:mm', 'M/d/yyyy h:mm',\n 'MM/dd/yyyy hh:mm', 'M/dd/yyyy hh:mm', 'dd/M/yyyy h:mm:ss tt', 'dd/M/yyyy, h:mm:ss tt',\n 'M/d/yy, h:mm:ss tt', 'yyyy/MM/dd, h:mm:ss tt', 'dd/MMM/yy, h:mm:ss tt',\n 'yyyy-MM-dd, h:mm:ss tt', 'dd-MMM-yy, h:mm:ss tt', 'MM-dd-yy, h:mm:ss tt', 'YYYY-MM-DDTHH:mm:ss.sssZ', '±YYYYYY-MM-DDTHH:mm:ss.sssZ', 'yyyy-MM-ddTHH:mm:ss.fffZ'];\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param details\n * @param page\n *\n * @private\n */\n AnnotationRenderer.prototype.addShape = function (details, page) {\n var shapeAnnotation = details;\n var isLock = this.checkAnnotationLock(shapeAnnotation);\n if (!isNullOrUndefined(shapeAnnotation.author)) {\n shapeAnnotation.author = 'Guest';\n }\n if (!isNullOrUndefined(shapeAnnotation.shapeAnnotationType) && shapeAnnotation.shapeAnnotationType === 'Line') {\n var points = JSON.parse(shapeAnnotation.vertexPoints);\n var linePoints = this.getSaveVertexPoints(points, page);\n var lineAnnotation = new PdfLineAnnotation(linePoints);\n if (!isNullOrUndefined(shapeAnnotation.note)) {\n lineAnnotation.text = shapeAnnotation.note.toString();\n }\n lineAnnotation.author = !isNullOrUndefined(shapeAnnotation.author) && shapeAnnotation.author.toString() !== \"\" ? shapeAnnotation.author.toString() : 'Guest';\n lineAnnotation._dictionary.set('NM', shapeAnnotation.annotName.toString());\n if (!isNullOrUndefined(shapeAnnotation.subject)) {\n lineAnnotation.subject = shapeAnnotation.subject.toString();\n }\n if (!isNullOrUndefined(shapeAnnotation.strokeColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var strokeColor = JSON.parse(shapeAnnotation.strokeColor);\n // eslint-disable-next-line max-len\n var color = [strokeColor.r, strokeColor.g, strokeColor.b];\n lineAnnotation.color = color;\n }\n if (!isNullOrUndefined(shapeAnnotation.fillColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fillColor = JSON.parse(shapeAnnotation.fillColor);\n var innerColor = [fillColor.r, fillColor.g, fillColor.b];\n lineAnnotation.innerColor = innerColor;\n if (fillColor.a < 1 && fillColor.a > 0) {\n lineAnnotation._dictionary.update('FillOpacity', fillColor.a);\n fillColor.a = 1;\n }\n else {\n lineAnnotation._dictionary.update('FillOpacity', fillColor.a);\n }\n }\n if (!isNullOrUndefined(shapeAnnotation.opacity)) {\n lineAnnotation.opacity = shapeAnnotation.opacity;\n }\n var lineBorder = new PdfAnnotationBorder();\n lineBorder.width = shapeAnnotation.thickness;\n lineBorder.style = shapeAnnotation.borderStyle;\n lineBorder.dash = shapeAnnotation.borderDashArray;\n lineAnnotation.border = lineBorder;\n lineAnnotation.rotationAngle = this.getRotateAngle(shapeAnnotation.rotateAngle);\n lineAnnotation.lineEndingStyle.begin = this.getLineEndingStyle(shapeAnnotation.lineHeadStart);\n lineAnnotation.lineEndingStyle.end = this.getLineEndingStyle(shapeAnnotation.lineHeadEnd);\n var dateValue = void 0;\n if (!isNullOrUndefined(shapeAnnotation.modifiedDate) && !isNaN(Date.parse(shapeAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(shapeAnnotation.modifiedDate));\n lineAnnotation.modifiedDate = dateValue;\n }\n var commentsDetails = shapeAnnotation.comments;\n var bounds = JSON.parse(shapeAnnotation.bounds);\n lineAnnotation.bounds = bounds;\n lineAnnotation.bounds.x = bounds.left;\n lineAnnotation.bounds.y = bounds.top;\n if (commentsDetails.length > 0) {\n for (var i = 0; i < commentsDetails.length; i++) {\n // eslint-disable-next-line max-len\n lineAnnotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i.toString(), 10)], lineAnnotation.bounds));\n }\n }\n var reviewDetails = shapeAnnotation.review;\n lineAnnotation.reviewHistory.add(this.addReviewCollections(reviewDetails, lineAnnotation.bounds));\n if (!isNullOrUndefined(shapeAnnotation.isLocked && shapeAnnotation.isLocked)) {\n lineAnnotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n var isPrint = false;\n var isCommentLock = false;\n if (shapeAnnotation.isCommentLock && shapeAnnotation['isCommentLock'] !== null) {\n isCommentLock = Boolean(shapeAnnotation['isCommentLock'].toString());\n }\n if (shapeAnnotation.isPrint && shapeAnnotation['isPrint'] !== null) {\n isPrint = Boolean(shapeAnnotation['isPrint'].toString());\n }\n if (isCommentLock && isPrint) {\n lineAnnotation._annotFlags = PdfAnnotationFlag.print | PdfAnnotationFlag.readOnly;\n }\n else if (isPrint) {\n lineAnnotation._annotFlags = PdfAnnotationFlag.print;\n }\n else if (isCommentLock) {\n lineAnnotation._annotFlags = PdfAnnotationFlag.readOnly;\n }\n if (!isNullOrUndefined(shapeAnnotation.customData)) {\n lineAnnotation.setValues('CustomData', shapeAnnotation.customData);\n }\n if (shapeAnnotation.allowedInteractions && shapeAnnotation['allowedInteractions'] != null) {\n lineAnnotation.setValues('AllowedInteractions', JSON.stringify(shapeAnnotation['allowedInteractions']));\n }\n lineAnnotation.setAppearance(true);\n page.annotations.add(lineAnnotation);\n }\n else if (!isNullOrUndefined(shapeAnnotation.shapeAnnotationType) && shapeAnnotation.shapeAnnotationType === 'Square') {\n var bounds = JSON.parse(shapeAnnotation.bounds);\n if (isNullOrUndefined(bounds.left)) {\n shapeAnnotation.bounds.left = 0;\n }\n if (isNullOrUndefined(bounds.top)) {\n shapeAnnotation.bounds.top = 0;\n }\n var cropValues = this.getCropBoxValue(page, false);\n var left = this.convertPixelToPoint(bounds.left);\n var top_1 = this.convertPixelToPoint(bounds.top);\n var width = this.convertPixelToPoint(bounds.width);\n var height = this.convertPixelToPoint(bounds.height);\n var cropX = 0;\n var cropY = 0;\n if (cropValues.x != 0 && cropValues.y != 0 && cropValues.x == left) {\n cropX = cropValues.x;\n cropY = cropValues.y;\n }\n else if (cropValues.x == 0 && page.cropBox[2] == page.size[0] && cropValues.y == page.size[1]) {\n cropX = cropValues.x;\n cropY = cropValues.y;\n }\n // eslint-disable-next-line max-len\n var squareAnnotation = new PdfSquareAnnotation(cropX + left, cropY + top_1, width, height);\n if (!isNullOrUndefined(shapeAnnotation.note)) {\n squareAnnotation.text = shapeAnnotation.note.toString();\n }\n squareAnnotation.author = !isNullOrUndefined(shapeAnnotation.author) && shapeAnnotation.author.toString() !== \"\" ? shapeAnnotation.author.toString() : 'Guest';\n squareAnnotation._dictionary.set('NM', shapeAnnotation.annotName.toString());\n if (!isNullOrUndefined(shapeAnnotation.subject)) {\n squareAnnotation.subject = shapeAnnotation.subject.toString();\n }\n if (!isNullOrUndefined(shapeAnnotation.strokeColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var strokeColor = JSON.parse(shapeAnnotation.strokeColor);\n // eslint-disable-next-line max-len\n var color = [strokeColor.r, strokeColor.g, strokeColor.b];\n squareAnnotation.color = color;\n }\n if (!isNullOrUndefined(shapeAnnotation.fillColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fillColor = JSON.parse(shapeAnnotation.fillColor);\n // eslint-disable-next-line max-len\n if (!this.isTransparentColor(fillColor)) {\n var innerColor = [fillColor.r, fillColor.g, fillColor.b];\n squareAnnotation.innerColor = innerColor;\n }\n if (fillColor.a < 1 && fillColor.a > 0) {\n squareAnnotation._dictionary.update('FillOpacity', fillColor.a);\n fillColor.a = 1;\n }\n else {\n squareAnnotation._dictionary.update('FillOpacity', fillColor.a);\n }\n }\n if (!isNullOrUndefined(shapeAnnotation.opacity)) {\n squareAnnotation.opacity = shapeAnnotation.opacity;\n }\n var lineBorder = new PdfAnnotationBorder();\n lineBorder.width = shapeAnnotation.thickness;\n lineBorder.style = shapeAnnotation.borderStyle;\n lineBorder.dash = shapeAnnotation.borderDashArray;\n squareAnnotation.border = lineBorder;\n squareAnnotation.rotationAngle = this.getRotateAngle(shapeAnnotation.rotateAngle);\n var dateValue = void 0;\n if (!isNullOrUndefined(shapeAnnotation.modifiedDate) && !isNaN(Date.parse(shapeAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(shapeAnnotation.modifiedDate));\n squareAnnotation.modifiedDate = dateValue;\n }\n var commentsDetails = shapeAnnotation.comments;\n if (commentsDetails.length > 0) {\n for (var i = 0; i < commentsDetails.length; i++) {\n // eslint-disable-next-line max-len\n squareAnnotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i.toString(), 10)], squareAnnotation.bounds));\n }\n }\n var reviewDetails = shapeAnnotation.review;\n squareAnnotation.reviewHistory.add(this.addReviewCollections(reviewDetails, squareAnnotation.bounds));\n if (!isNullOrUndefined(shapeAnnotation.isCloudShape) && shapeAnnotation.isCloudShape) {\n var borderEffect = new PdfBorderEffect();\n borderEffect.style = PdfBorderEffectStyle.cloudy;\n borderEffect.intensity = shapeAnnotation.cloudIntensity;\n squareAnnotation.borderEffect = borderEffect;\n var rectDifferences = JSON.parse(shapeAnnotation.rectangleDifference);\n if (rectDifferences.length > 0) {\n var rd = this.getRDValues(rectDifferences);\n squareAnnotation._dictionary.update('RD', rd);\n }\n }\n if (!isNullOrUndefined(shapeAnnotation.isLocked) && shapeAnnotation.isLocked) {\n squareAnnotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n var isPrint = false;\n var isCommentLock = false;\n if (shapeAnnotation.isCommentLock && shapeAnnotation['isCommentLock'] !== null) {\n isCommentLock = Boolean(shapeAnnotation['isCommentLock'].toString());\n }\n if (shapeAnnotation.isPrint && shapeAnnotation['isPrint'] !== null) {\n isPrint = Boolean(shapeAnnotation['isPrint'].toString());\n }\n if (isCommentLock && isPrint) {\n squareAnnotation._annotFlags = PdfAnnotationFlag.print | PdfAnnotationFlag.readOnly;\n }\n else if (isPrint) {\n squareAnnotation._annotFlags = PdfAnnotationFlag.print;\n }\n else if (isCommentLock) {\n squareAnnotation._annotFlags = PdfAnnotationFlag.readOnly;\n }\n if (!isNullOrUndefined(shapeAnnotation.customData)) {\n squareAnnotation.setValues('CustomData', shapeAnnotation.customData);\n }\n if (shapeAnnotation.allowedInteractions && shapeAnnotation['allowedInteractions'] != null) {\n squareAnnotation.setValues('AllowedInteractions', JSON.stringify(shapeAnnotation['allowedInteractions']));\n }\n squareAnnotation.setAppearance(true);\n page.annotations.add(squareAnnotation);\n }\n else if (!isNullOrUndefined(shapeAnnotation.shapeAnnotationType) && shapeAnnotation.shapeAnnotationType === 'Circle') {\n var bounds = JSON.parse(shapeAnnotation.bounds);\n var left = this.convertPixelToPoint(bounds.left);\n var top_2 = this.convertPixelToPoint(bounds.top);\n var width = this.convertPixelToPoint(bounds.width);\n var height = this.convertPixelToPoint(bounds.height);\n if (isNullOrUndefined(bounds.left)) {\n shapeAnnotation.bounds.left = 0;\n }\n if (isNullOrUndefined(bounds.top)) {\n shapeAnnotation.bounds.top = 0;\n }\n var cropValues = this.getCropBoxValue(page, false);\n var cropX = 0;\n var cropY = 0;\n if (cropValues.x != 0 && cropValues.y != 0 && cropValues.x == left) {\n cropX = cropValues.x;\n cropY = cropValues.y;\n }\n else if (cropValues.x == 0 && page.cropBox[2] == page.size[0] && cropValues.y == page.size[1]) {\n cropX = cropValues.x;\n cropY = cropValues.y;\n }\n // eslint-disable-next-line max-len\n var circleAnnotation = new PdfCircleAnnotation(cropX + left, cropY + top_2, width, height);\n if (!isNullOrUndefined(shapeAnnotation.note)) {\n circleAnnotation.text = shapeAnnotation.note.toString();\n }\n circleAnnotation.author = !isNullOrUndefined(shapeAnnotation.author) && shapeAnnotation.author.toString() !== \"\" ? shapeAnnotation.author.toString() : 'Guest';\n circleAnnotation._dictionary.set('NM', shapeAnnotation.annotName.toString());\n if (!isNullOrUndefined(shapeAnnotation.subject)) {\n circleAnnotation.subject = shapeAnnotation.subject.toString();\n }\n if (!isNullOrUndefined(shapeAnnotation.strokeColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var strokeColor = JSON.parse(shapeAnnotation.strokeColor);\n // eslint-disable-next-line max-len\n var color = [strokeColor.r, strokeColor.g, strokeColor.b];\n circleAnnotation.color = color;\n }\n if (!isNullOrUndefined(shapeAnnotation.fillColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fillColor = JSON.parse(shapeAnnotation.fillColor);\n if (!this.isTransparentColor(fillColor)) {\n var innerColor = [fillColor.r, fillColor.g, fillColor.b];\n circleAnnotation.innerColor = innerColor;\n }\n if (fillColor.a < 1 && fillColor.a > 0) {\n circleAnnotation._dictionary.update('FillOpacity', fillColor.a);\n fillColor.a = 1;\n }\n else {\n circleAnnotation._dictionary.update('FillOpacity', fillColor.a);\n }\n }\n if (!isNullOrUndefined(shapeAnnotation.opacity)) {\n circleAnnotation.opacity = shapeAnnotation.opacity;\n }\n var lineBorder = new PdfAnnotationBorder();\n lineBorder.width = shapeAnnotation.thickness;\n lineBorder.style = shapeAnnotation.borderStyle;\n lineBorder.dash = shapeAnnotation.borderDashArray;\n circleAnnotation.border = lineBorder;\n circleAnnotation.rotationAngle = this.getRotateAngle(shapeAnnotation.rotateAngle);\n var dateValue = void 0;\n if (!isNullOrUndefined(shapeAnnotation.modifiedDate) && !isNaN(Date.parse(shapeAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(shapeAnnotation.modifiedDate));\n circleAnnotation.modifiedDate = dateValue;\n }\n var commentsDetails = shapeAnnotation.comments;\n if (commentsDetails.length > 0) {\n for (var i = 0; i < commentsDetails.length; i++) {\n // eslint-disable-next-line max-len\n circleAnnotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i.toString(), 10)], circleAnnotation.bounds));\n }\n }\n var reviewDetails = shapeAnnotation.review;\n circleAnnotation.reviewHistory.add(this.addReviewCollections(reviewDetails, circleAnnotation.bounds));\n if (!isNullOrUndefined(shapeAnnotation.isCloudShape) && shapeAnnotation.isCloudShape) {\n var borderEffect = new PdfBorderEffect();\n borderEffect.style = PdfBorderEffectStyle.cloudy;\n borderEffect.intensity = shapeAnnotation.cloudIntensity;\n circleAnnotation._borderEffect = borderEffect;\n var rectDifferences = JSON.parse(shapeAnnotation.rectangleDifference);\n if (rectDifferences.length > 0) {\n var rd = this.getRDValues(rectDifferences);\n circleAnnotation._dictionary.update('RD', rd);\n }\n }\n if (!isNullOrUndefined(shapeAnnotation.isLocked && shapeAnnotation.isLocked)) {\n circleAnnotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n var isPrint = false;\n var isCommentLock = false;\n if (shapeAnnotation.isCommentLock && shapeAnnotation['isCommentLock'] !== null) {\n isCommentLock = Boolean(shapeAnnotation['isCommentLock'].toString());\n }\n if (shapeAnnotation.isPrint && shapeAnnotation['isPrint'] !== null) {\n isPrint = Boolean(shapeAnnotation['isPrint'].toString());\n }\n if (isCommentLock && isPrint) {\n circleAnnotation._annotFlags = PdfAnnotationFlag.print | PdfAnnotationFlag.readOnly;\n }\n else if (isPrint) {\n circleAnnotation._annotFlags = PdfAnnotationFlag.print;\n }\n else if (isCommentLock) {\n circleAnnotation._annotFlags = PdfAnnotationFlag.readOnly;\n }\n if (!isNullOrUndefined(shapeAnnotation.customData)) {\n circleAnnotation.setValues('CustomData', shapeAnnotation.customData);\n }\n if (shapeAnnotation.allowedInteractions && shapeAnnotation['allowedInteractions'] != null) {\n circleAnnotation.setValues('AllowedInteractions', JSON.stringify(shapeAnnotation['allowedInteractions']));\n }\n circleAnnotation.setAppearance(true);\n page.annotations.add(circleAnnotation);\n }\n else if (!isNullOrUndefined(shapeAnnotation.shapeAnnotationType) && shapeAnnotation.shapeAnnotationType === 'Polygon') {\n var points = JSON.parse(shapeAnnotation.vertexPoints);\n var linePoints = this.getSaveVertexPoints(points, page);\n var bounds = JSON.parse(shapeAnnotation.bounds);\n if (isNullOrUndefined(bounds.left)) {\n shapeAnnotation.bounds.left = 0;\n }\n if (isNullOrUndefined(bounds.top)) {\n shapeAnnotation.bounds.top = 0;\n }\n var left = this.convertPixelToPoint(bounds.left);\n var top_3 = this.convertPixelToPoint(bounds.top);\n var width = this.convertPixelToPoint(bounds.width);\n var height = this.convertPixelToPoint(bounds.height);\n var polygonAnnotation = new PdfPolygonAnnotation(linePoints);\n polygonAnnotation.bounds = new Rect(left, top_3, width, height);\n if (!isNullOrUndefined(shapeAnnotation.note)) {\n polygonAnnotation.text = shapeAnnotation.note.toString();\n }\n polygonAnnotation.author = !isNullOrUndefined(shapeAnnotation.author) && shapeAnnotation.author.toString() !== \"\" ? shapeAnnotation.author.toString() : 'Guest';\n if (!isNullOrUndefined(shapeAnnotation.subject)) {\n polygonAnnotation.subject = shapeAnnotation.subject.toString();\n }\n polygonAnnotation._dictionary.set('NM', shapeAnnotation.annotName.toString());\n if (!isNullOrUndefined(shapeAnnotation.strokeColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var strokeColor = JSON.parse(shapeAnnotation.strokeColor);\n // eslint-disable-next-line max-len\n var color = [strokeColor.r, strokeColor.g, strokeColor.b];\n polygonAnnotation.color = color;\n }\n if (!isNullOrUndefined(shapeAnnotation.fillColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fillColor = JSON.parse(shapeAnnotation.fillColor);\n if (!this.isTransparentColor(fillColor)) {\n var innerColor = [fillColor.r, fillColor.g, fillColor.b];\n polygonAnnotation.innerColor = innerColor;\n }\n if (fillColor.a < 1 && fillColor.a > 0) {\n polygonAnnotation._dictionary.update('FillOpacity', fillColor.a);\n fillColor.a = 1;\n }\n else {\n polygonAnnotation._dictionary.update('FillOpacity', fillColor.a);\n }\n }\n if (!isNullOrUndefined(shapeAnnotation.opacity)) {\n polygonAnnotation.opacity = shapeAnnotation.opacity;\n }\n var lineBorder = new PdfAnnotationBorder();\n lineBorder.width = shapeAnnotation.thickness;\n lineBorder.style = shapeAnnotation.borderStyle;\n lineBorder.dash = shapeAnnotation.borderDashArray;\n polygonAnnotation.border = lineBorder;\n polygonAnnotation.rotationAngle = this.getRotateAngle(shapeAnnotation.rotateAngle);\n var dateValue = void 0;\n if (!isNullOrUndefined(shapeAnnotation.modifiedDate) && !isNaN(Date.parse(shapeAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(shapeAnnotation.modifiedDate));\n polygonAnnotation.modifiedDate = dateValue;\n }\n var commentsDetails = shapeAnnotation.comments;\n if (commentsDetails.length > 0) {\n for (var i = 0; i < commentsDetails.length; i++) {\n // eslint-disable-next-line max-len\n polygonAnnotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i.toString(), 10)], polygonAnnotation.bounds));\n }\n }\n var reviewDetails = shapeAnnotation.review;\n polygonAnnotation.reviewHistory.add(this.addReviewCollections(reviewDetails, polygonAnnotation.bounds));\n if (!isNullOrUndefined(shapeAnnotation.isCloudShape) && shapeAnnotation.isCloudShape) {\n var borderEffect = new PdfBorderEffect();\n borderEffect.style = PdfBorderEffectStyle.cloudy;\n borderEffect.intensity = shapeAnnotation.cloudIntensity;\n polygonAnnotation.borderEffect = borderEffect;\n var rectDifferences = JSON.parse(shapeAnnotation.rectangleDifference);\n if (rectDifferences.length > 0) {\n var rd = this.getRDValues(rectDifferences);\n polygonAnnotation._dictionary.update('RD', rd);\n }\n }\n if (!isNullOrUndefined(shapeAnnotation.isLocked && shapeAnnotation.isLocked)) {\n polygonAnnotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n var isPrint = true;\n var isCommentLock = false;\n if (!isNullOrUndefined(shapeAnnotation.isCommentLock) && shapeAnnotation.isCommentLock) {\n isCommentLock = true;\n }\n if (!isNullOrUndefined(shapeAnnotation.isPrint) && shapeAnnotation.isPrint) {\n isPrint = true;\n }\n if (isCommentLock && isPrint) {\n polygonAnnotation.flags = PdfAnnotationFlag.print | PdfAnnotationFlag.readOnly;\n }\n if (isLock) {\n polygonAnnotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n else if (isCommentLock) {\n polygonAnnotation.flags = PdfAnnotationFlag.readOnly;\n }\n else {\n polygonAnnotation.flags = PdfAnnotationFlag.print;\n }\n if (!isNullOrUndefined(shapeAnnotation.customData)) {\n polygonAnnotation.setValues('CustomData', shapeAnnotation.customData);\n }\n if (!isNullOrUndefined(shapeAnnotation.allowedInteractions)) {\n polygonAnnotation.setValues('AllowedInteractions', JSON.stringify(shapeAnnotation.allowedInteractions));\n }\n polygonAnnotation.setAppearance(true);\n page.annotations.add(polygonAnnotation);\n }\n else if (!isNullOrUndefined(shapeAnnotation.shapeAnnotationType) && shapeAnnotation.shapeAnnotationType === 'Polyline') {\n var points = JSON.parse(shapeAnnotation.vertexPoints);\n var linePoints = this.getSaveVertexPoints(points, page);\n var polylineAnnotation = new PdfPolyLineAnnotation(linePoints);\n if (!isNullOrUndefined(shapeAnnotation.note)) {\n polylineAnnotation.text = shapeAnnotation.note.toString();\n }\n polylineAnnotation.author = !isNullOrUndefined(shapeAnnotation.author) && shapeAnnotation.author.toString() !== \"\" ? shapeAnnotation.author.toString() : 'Guest';\n if (!isNullOrUndefined(shapeAnnotation.subject)) {\n polylineAnnotation.subject = shapeAnnotation.subject.toString();\n }\n polylineAnnotation._dictionary.set('NM', shapeAnnotation.annotName.toString());\n if (!isNullOrUndefined(shapeAnnotation.strokeColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var strokeColor = JSON.parse(shapeAnnotation.strokeColor);\n // eslint-disable-next-line max-len\n var color = [strokeColor.r, strokeColor.g, strokeColor.b];\n polylineAnnotation.color = color;\n }\n if (!isNullOrUndefined(shapeAnnotation.fillColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fillColor = JSON.parse(shapeAnnotation.fillColor);\n if (!this.isTransparentColor(fillColor)) {\n var innerColor = [fillColor.r, fillColor.g, fillColor.b];\n polylineAnnotation.innerColor = innerColor;\n }\n if (fillColor.a < 1 && fillColor.a > 0) {\n polylineAnnotation._dictionary.update('FillOpacity', fillColor.a);\n fillColor.a = 1;\n }\n else {\n polylineAnnotation._dictionary.update('FillOpacity', fillColor.a);\n }\n }\n if (!isNullOrUndefined(shapeAnnotation.opacity)) {\n polylineAnnotation.opacity = shapeAnnotation.opacity;\n }\n var lineBorder = new PdfAnnotationBorder();\n lineBorder.width = shapeAnnotation.thickness;\n lineBorder.style = shapeAnnotation.borderStyle;\n lineBorder.dash = shapeAnnotation.borderDashArray;\n polylineAnnotation.border = lineBorder;\n polylineAnnotation.rotationAngle = this.getRotateAngle(shapeAnnotation.rotateAngle);\n polylineAnnotation.beginLineStyle = this.getLineEndingStyle(shapeAnnotation.lineHeadStart);\n polylineAnnotation.endLineStyle = this.getLineEndingStyle(shapeAnnotation.lineHeadEnd);\n var dateValue = void 0;\n if (!isNullOrUndefined(shapeAnnotation.modifiedDate) && !isNaN(Date.parse(shapeAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(shapeAnnotation.modifiedDate));\n polylineAnnotation.modifiedDate = dateValue;\n }\n var commentsDetails = shapeAnnotation.comments;\n if (commentsDetails.length > 0) {\n for (var i = 0; i < commentsDetails.length; i++) {\n // eslint-disable-next-line max-len\n polylineAnnotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i.toString(), 10)], polylineAnnotation.bounds));\n }\n }\n var reviewDetails = shapeAnnotation.review;\n polylineAnnotation.reviewHistory.add(this.addReviewCollections(reviewDetails, polylineAnnotation.bounds));\n if (!isNullOrUndefined(shapeAnnotation.isCloudShape) && shapeAnnotation.isCloudShape) {\n var dictionary = new _PdfDictionary(page._crossReference);\n dictionary.update('S', _PdfName.get('C'));\n dictionary.update('I', shapeAnnotation.cloudIntensity);\n polylineAnnotation._dictionary.update('BE', dictionary);\n var rectDifferences = JSON.parse(shapeAnnotation.rectangleDifference);\n if (rectDifferences.length > 0) {\n var rd = this.getRDValues(rectDifferences);\n polylineAnnotation._dictionary.update('RD', rd);\n }\n }\n if ((!isNullOrUndefined(shapeAnnotation.isLocked) && shapeAnnotation.isLocked) || isLock) {\n polylineAnnotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n else if (!isNullOrUndefined(shapeAnnotation.isCommentLock) && shapeAnnotation.isCommentLock) {\n polylineAnnotation.flags = PdfAnnotationFlag.readOnly;\n }\n else {\n polylineAnnotation.flags = PdfAnnotationFlag.print;\n }\n polylineAnnotation.setAppearance(true);\n if (!isNullOrUndefined(shapeAnnotation.customData)) {\n polylineAnnotation.setValues('CustomData', shapeAnnotation.customData);\n }\n if (!isNullOrUndefined(shapeAnnotation.allowedInteractions)) {\n polylineAnnotation.setValues('AllowedInteractions', JSON.stringify(shapeAnnotation.allowedInteractions));\n }\n page.annotations.add(polylineAnnotation);\n }\n };\n /**\n * @private\n * @param details\n * @param page\n */\n AnnotationRenderer.prototype.saveInkSignature = function (details, page) {\n var inkSignatureAnnotation = details;\n var bounds = JSON.parse(inkSignatureAnnotation.bounds);\n var stampObjects = JSON.parse(inkSignatureAnnotation.data.toString());\n var rotationAngle = this.getRotateAngle(page.rotation.toString());\n var cropValues = this.getCropBoxValue(page, false);\n var left = cropValues.x + this.convertPixelToPoint(bounds.x);\n var top = this.convertPixelToPoint(bounds.y);\n if (!(cropValues.x === 0 && (page.cropBox[2] === page.size[0] && cropValues.y === page.size[1]))) {\n top -= cropValues.y;\n }\n var width = this.convertPixelToPoint(bounds.width);\n var height = this.convertPixelToPoint(bounds.height);\n var opacity = inkSignatureAnnotation.opacity;\n var thickness = parseInt(inkSignatureAnnotation.thickness.toString(), 10);\n if (!isNullOrUndefined(inkSignatureAnnotation.strokeColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var strokeColor = JSON.parse(inkSignatureAnnotation.strokeColor);\n // eslint-disable-next-line max-len\n var color = [strokeColor.r, strokeColor.g, strokeColor.b];\n inkSignatureAnnotation.color = color;\n }\n var minimumX = -1;\n var minimumY = -1;\n var maximumX = -1;\n var maximumY = -1;\n var drawingPath = new _PdfPath();\n for (var p = 0; p < stampObjects.length; p++) {\n var val = stampObjects[parseInt(p.toString(), 10)];\n drawingPath._addLine(val.x, val.y, 0, 0);\n }\n for (var k = 0; k < drawingPath._points.length; k += 2) {\n var value = drawingPath._points[parseInt(k.toString(), 10)];\n if (minimumX == -1) {\n minimumX = value[0];\n minimumY = value[1];\n maximumX = value[0];\n maximumY = value[1];\n }\n else {\n var point1 = value[0];\n var point2 = value[1];\n if (minimumX >= point1) {\n minimumX = point1;\n }\n if (minimumY >= point2) {\n minimumY = point2;\n }\n if (maximumX <= point1) {\n maximumX = point1;\n }\n if (maximumY <= point2) {\n maximumY = point2;\n }\n }\n }\n var newDifferenceX = (maximumX - minimumX) / width;\n var newDifferenceY = (maximumY - minimumY) / height;\n if (newDifferenceX == 0) {\n newDifferenceX = 1;\n }\n else if (newDifferenceY == 0) {\n newDifferenceY = 1;\n }\n var linePoints = [];\n var isNewValues = 0;\n if (rotationAngle !== 0) {\n for (var j = 0; j < stampObjects.length; j++) {\n var val = stampObjects[parseInt(j.toString(), 10)];\n var path = val[\"command\"].toString();\n if (path === \"M\" && j !== isNewValues) {\n isNewValues = j;\n break;\n }\n linePoints.push((parseFloat(val[\"x\"].toString())));\n linePoints.push((parseFloat(val[\"y\"].toString())));\n }\n var rotatedPoints = this.getRotatedPath(linePoints, rotationAngle);\n linePoints = [];\n for (var z = 0; z < rotatedPoints._points.length; z += 2) {\n linePoints.push((rotatedPoints._points[parseInt(z.toString(), 10)][0] - minimumX) / newDifferenceX + left);\n linePoints.push(page.size[1] - (rotatedPoints._points[z + 1][1] - minimumY) / newDifferenceY - top);\n }\n }\n else {\n for (var j = 0; j < stampObjects.length; j++) {\n var val = stampObjects[parseInt(j.toString(), 10)];\n var path = val[\"command\"].toString();\n if (path === \"M\" && j !== isNewValues) {\n isNewValues = j;\n break;\n }\n linePoints.push(((val.x - minimumX) / newDifferenceX) + left);\n var newX_1 = ((val.y - minimumY) / newDifferenceY);\n linePoints.push(page.size[1] - newX_1 - top);\n }\n }\n var rectangle = new Rect(left, top, width, height);\n var colors = [inkSignatureAnnotation.color[0], inkSignatureAnnotation.color[1], inkSignatureAnnotation.color[2]];\n var inkAnnotation = new PdfInkAnnotation([left, top, width, height], linePoints);\n var bound = new Rect();\n bound = new Rect(inkAnnotation.bounds.x, (page.size[1] - (inkAnnotation.bounds.y + inkAnnotation.bounds.height)), inkAnnotation.bounds.width, inkAnnotation.bounds.height);\n inkAnnotation.bounds = bound;\n inkAnnotation.color = colors;\n linePoints = [];\n if (isNewValues > 0) {\n if (rotationAngle != 0) {\n var pathCollection = [];\n for (var i = isNewValues; i < stampObjects.length; i++) {\n var val = stampObjects[parseInt(i.toString(), 10)];\n var path = val[\"command\"].toString();\n if (path === \"M\" && i !== isNewValues) {\n pathCollection.push(linePoints);\n linePoints = [];\n }\n linePoints.push(val[\"x\"]);\n linePoints.push(val[\"y\"]);\n }\n if (linePoints.length > 0) {\n pathCollection.push(linePoints);\n }\n for (var g = 0; g < pathCollection.length; g++) {\n var graphicsPoints = [];\n var pointsCollections = pathCollection[parseInt(g.toString(), 10)];\n if (pointsCollections.length > 0) {\n var rotatedPoints = this.getRotatedPath(pointsCollections, rotationAngle);\n for (var z = 0; z < rotatedPoints._points.length; z += 2) {\n graphicsPoints.push(rotatedPoints._points[parseInt(g.toString(), 10)][0] / minimumX + left);\n graphicsPoints.push((rotatedPoints._points[z + 1][1] - minimumY / newDifferenceY) - top);\n }\n inkAnnotation.inkPointsCollection.push(graphicsPoints);\n }\n graphicsPoints = [];\n }\n }\n else {\n for (var i = isNewValues; i < stampObjects.length; i++) {\n var val = stampObjects[parseInt(i.toString(), 10)];\n var path = val[\"command\"].toString();\n if (path === \"M\" && i !== isNewValues) {\n inkAnnotation.inkPointsCollection.push(linePoints);\n linePoints = [];\n }\n linePoints.push((val[\"x\"] - minimumX) / newDifferenceX + left);\n var newX = ((val[\"y\"] - minimumY) / newDifferenceY);\n linePoints.push(page.size[1] - newX - top);\n }\n if (linePoints.length > 0) {\n inkAnnotation.inkPointsCollection.push(linePoints);\n }\n }\n }\n var isLock = this.checkAnnotationLock(inkSignatureAnnotation);\n if (isNullOrUndefined(inkSignatureAnnotation.author) || (isNullOrUndefined(inkSignatureAnnotation.author) && inkSignatureAnnotation.author === '')) {\n inkSignatureAnnotation.author = 'Guest';\n }\n else {\n inkAnnotation.author = !isNullOrUndefined(inkSignatureAnnotation.author) ? inkSignatureAnnotation.author.toString() !== '' ? inkSignatureAnnotation.author.toString() : 'Guest' : 'Guest';\n }\n if (!isNullOrUndefined(inkSignatureAnnotation.subject) && inkSignatureAnnotation.subject !== '') {\n inkAnnotation.subject = inkSignatureAnnotation.subject.toString();\n }\n if (!isNullOrUndefined(inkSignatureAnnotation.note)) {\n inkAnnotation.text = inkSignatureAnnotation.note.toString();\n }\n var dateValue;\n if (!isNullOrUndefined(inkSignatureAnnotation.modifiedDate) && !isNaN(Date.parse(inkSignatureAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(inkSignatureAnnotation.modifiedDate));\n inkAnnotation.modifiedDate = dateValue;\n }\n var reviewDetails = inkSignatureAnnotation.review;\n inkAnnotation.reviewHistory.add(this.addReviewCollections(reviewDetails, inkAnnotation.bounds));\n var commentsDetails = inkSignatureAnnotation.comments;\n if (commentsDetails.length > 0) {\n for (var i_1 = 0; i_1 < commentsDetails.length; i_1++) {\n // eslint-disable-next-line max-len\n inkAnnotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i_1.toString(), 10)], inkAnnotation.bounds));\n }\n }\n if (!isNullOrUndefined(inkSignatureAnnotation.isLocked) && inkSignatureAnnotation.isLocked) {\n inkAnnotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n else if (!isNullOrUndefined(inkSignatureAnnotation.isCommentLock) && inkSignatureAnnotation.isCommentLock) {\n inkAnnotation.flags = PdfAnnotationFlag.readOnly;\n }\n else {\n inkAnnotation.flags = PdfAnnotationFlag.print;\n }\n if (!isNullOrUndefined(inkSignatureAnnotation.customData)) {\n inkAnnotation.setValues('CustomData', inkSignatureAnnotation.customData);\n }\n inkAnnotation.border.width = thickness;\n inkAnnotation.opacity = opacity;\n inkAnnotation._dictionary.set('NM', inkSignatureAnnotation.annotName.toString());\n inkAnnotation.rotationAngle = this.getRotateAngle(inkSignatureAnnotation.rotationAngle);\n if (!isNullOrUndefined(inkSignatureAnnotation.customData)) {\n inkAnnotation.setValues('CustomData', inkSignatureAnnotation.customData);\n }\n inkAnnotation.setAppearance(true);\n page.annotations.add(inkAnnotation);\n return inkSignatureAnnotation;\n };\n AnnotationRenderer.prototype.getRotatedPath = function (linePoints, rotationAngle) {\n var graphicsPath = new _PdfPath();\n for (var j = 0; j < linePoints.length; j += 2) {\n graphicsPath._addLine(linePoints[parseInt(j.toString(), 10)], linePoints[j + 1], 0, 0);\n }\n return graphicsPath;\n };\n /**\n * @param details\n * @param loadedDocument\n * @private\n */\n AnnotationRenderer.prototype.addTextMarkup = function (details, loadedDocument) {\n var markupAnnotation = details;\n var pageNo = parseInt(markupAnnotation['pageNumber'].toString(), 10);\n var page = loadedDocument.getPage(pageNo);\n var annotationtypes = new PdfTextMarkupAnnotation();\n switch (markupAnnotation.textMarkupAnnotationType.toString()) {\n case 'Highlight':\n annotationtypes.textMarkupType = PdfTextMarkupAnnotationType.highlight;\n break;\n case 'Strikethrough':\n annotationtypes.textMarkupType = PdfTextMarkupAnnotationType.strikeOut;\n break;\n case 'Underline':\n annotationtypes.textMarkupType = PdfTextMarkupAnnotationType.underline;\n break;\n case 'Squiggly':\n annotationtypes.textMarkupType = PdfTextMarkupAnnotationType.squiggly;\n break;\n }\n var bounds = JSON.parse(markupAnnotation.bounds);\n var boundsCollection = [];\n var _loop_1 = function (i) {\n var bound = bounds[parseInt(i.toString(), 10)];\n var cropValues = this_1.getCropBoxValue(page, true);\n if (!isNullOrUndefined(bound['left'])) {\n boundsCollection.push(new Rect(cropValues.x + this_1.convertPixelToPoint(bound['left']), cropValues.y + this_1.convertPixelToPoint(bound['top']), bound.hasOwnProperty('width') ? this_1.convertPixelToPoint(bound['width']) : 0, bound.hasOwnProperty('height') ? this_1.convertPixelToPoint(bound['height']) : 0));\n }\n // Assuming boundsCollection is an array of RectangleF objects\n var groupedRectangles = new Map();\n // Group rectangles by their Y values\n for (var _i = 0, boundsCollection_1 = boundsCollection; _i < boundsCollection_1.length; _i++) {\n var rect_1 = boundsCollection_1[_i];\n if (!groupedRectangles.has(rect_1.y)) {\n groupedRectangles.set(rect_1.y, []);\n }\n if (groupedRectangles.get(rect_1.y)) {\n groupedRectangles.get(rect_1.y).push(rect_1);\n }\n }\n // Calculate combined rectangles within each group\n var combinedRectangles = [];\n groupedRectangles.forEach(function (group, groupKey) {\n if (group.length > 0) {\n var minX = Math.min.apply(Math, group.map(function (rect) { return rect.x; }));\n var width = group.map(function (rect) { return rect.width; }).reduce(function (sum, width) { return sum + width; }, 0);\n var height = group[0].height;\n combinedRectangles.push(new Rect(minX, groupKey, width, height));\n }\n });\n boundsCollection = combinedRectangles;\n };\n var this_1 = this;\n for (var i = 0; i < bounds.length; i++) {\n _loop_1(i);\n }\n var annotation = new PdfTextMarkupAnnotation(null, 0, 0, 0, 0);\n annotation.textMarkupType = annotationtypes.textMarkupType;\n var isLock = this.checkAnnotationLock(markupAnnotation);\n if (isNullOrUndefined(markupAnnotation.author) || (isNullOrUndefined(markupAnnotation.author) && markupAnnotation.author === '')) {\n markupAnnotation.author = 'Guest';\n }\n else {\n annotation.author = !isNullOrUndefined(markupAnnotation.author) ? markupAnnotation.author.toString() !== '' ? markupAnnotation.author.toString() : 'Guest' : 'Guest';\n }\n if (!isNullOrUndefined(markupAnnotation.subject) && markupAnnotation.subject !== '') {\n annotation.subject = markupAnnotation.subject.toString();\n }\n if (!isNullOrUndefined(markupAnnotation.note)) {\n annotation.text = markupAnnotation.note.toString();\n }\n if (!isNullOrUndefined(markupAnnotation.annotationRotation)) {\n annotation.rotateAngle = this.getRotateAngle(markupAnnotation.annotationRotation);\n }\n var dateValue;\n if (!isNullOrUndefined(markupAnnotation.modifiedDate) && !isNaN(Date.parse(markupAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(markupAnnotation.modifiedDate));\n annotation.modifiedDate = dateValue;\n }\n annotation._dictionary.set('NM', markupAnnotation.annotName.toString());\n if (!isNullOrUndefined(markupAnnotation.color)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var annotColor = JSON.parse(markupAnnotation.color);\n // eslint-disable-next-line max-len\n var color = [annotColor.r, annotColor.g, annotColor.b];\n annotation.color = color;\n }\n if (!isNullOrUndefined(markupAnnotation.opacity)) {\n annotation.opacity = markupAnnotation.opacity;\n }\n var rect = markupAnnotation.rect;\n if (boundsCollection.length > 0) {\n // Don't need to set bounds explicitly for text markup annotation\n var boundArrayCollection = [];\n for (var i = 0; i < boundsCollection.length; i++) {\n var boundArray = [];\n boundArray.push(boundsCollection[parseInt(i.toString(), 10)].x);\n boundArray.push(boundsCollection[parseInt(i.toString(), 10)].y);\n boundArray.push(boundsCollection[parseInt(i.toString(), 10)].width);\n boundArray.push(boundsCollection[parseInt(i.toString(), 10)].height);\n boundArrayCollection.push(boundArray);\n }\n annotation.boundsCollection = boundArrayCollection;\n }\n var commentsDetails = markupAnnotation.comments;\n if (commentsDetails.length > 0) {\n for (var i = 0; i < commentsDetails.length; i++) {\n // eslint-disable-next-line max-len\n annotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i.toString(), 10)], annotation.bounds));\n }\n }\n var reviewDetails = markupAnnotation.review;\n annotation.reviewHistory.add(this.addReviewCollections(reviewDetails, annotation.bounds));\n if (!isNullOrUndefined(markupAnnotation.color)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var annotColor = JSON.parse(markupAnnotation.color);\n // eslint-disable-next-line max-len\n var color = [annotColor.r, annotColor.g, annotColor.b];\n annotation.textMarkUpColor = color;\n }\n var isPrint = true;\n var isCommentLock = false;\n if (!isNullOrUndefined(markupAnnotation.isCommentLock) && markupAnnotation.isCommentLock) {\n isCommentLock = true;\n }\n if (!isNullOrUndefined(markupAnnotation.isPrint) && markupAnnotation.isPrint) {\n isPrint = true;\n }\n if (isCommentLock && isPrint) {\n annotation.flags = PdfAnnotationFlag.print | PdfAnnotationFlag.readOnly;\n }\n if (isLock) {\n annotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n else if (isCommentLock) {\n annotation.flags = PdfAnnotationFlag.readOnly;\n }\n else {\n annotation.flags = PdfAnnotationFlag.print;\n }\n if (!isNullOrUndefined(markupAnnotation.customData)) {\n annotation.setValues('CustomData', markupAnnotation.customData);\n }\n if (!isNullOrUndefined(markupAnnotation.allowedInteractions)) {\n annotation.setValues('AllowedInteractions', JSON.stringify(markupAnnotation.allowedInteractions));\n }\n if (!isNullOrUndefined(markupAnnotation.textMarkupContent)) {\n annotation._dictionary.set('TextMarkupContent', markupAnnotation.textMarkupContent.toString());\n }\n annotation.setAppearance(true);\n page.annotations.add(annotation);\n };\n AnnotationRenderer.prototype.getCropBoxValue = function (page, isPath) {\n var cropBoxX = 0;\n var cropBoxY = 0;\n if (page != null) {\n cropBoxX = !isPath ? page.cropBox[0] : 0;\n cropBoxY = !isPath ? page.cropBox[1] : 0;\n }\n return { x: cropBoxX, y: cropBoxY };\n };\n AnnotationRenderer.prototype.getBothCropBoxValue = function (page) {\n var cropBoxX = page.cropBox[0];\n var cropBoxY = page.cropBox[1];\n return [cropBoxX, cropBoxY];\n };\n /**\n * @private\n * @param details\n * @param page\n */\n AnnotationRenderer.prototype.addCustomStampAnnotation = function (details, page) {\n var stampAnnotation = details;\n var bounds = JSON.parse(stampAnnotation.bounds);\n var pageNo = parseInt(stampAnnotation['pageNumber'].toString(), 10);\n var cropValues = this.getCropBoxValue(page, false);\n var left = 0;\n var top = 0;\n var graphics = page.graphics;\n var pageRotation = page.rotation.toString();\n if (stampAnnotation.hasOwnProperty('wrapperBounds')) {\n var wrapperBounds = stampAnnotation.wrapperBounds;\n var boundsXY = this.calculateBoundsXY(wrapperBounds, bounds, pageNo, page);\n left = boundsXY.x;\n top = boundsXY.y;\n }\n else {\n left = this.convertPixelToPoint(bounds.left);\n top = this.convertPixelToPoint(bounds.top);\n }\n var cropX = 0;\n var cropY = 0;\n if (cropValues.x != 0 && cropValues.y != 0 && cropValues.x == left) {\n cropX = cropValues.x;\n cropY = cropValues.y;\n }\n else if (cropValues.x == 0 && page.cropBox[2] == page.size[0] && cropValues.y == page.size[1]) {\n cropX = cropValues.x;\n cropY = cropValues.y;\n }\n left += cropX;\n top += cropY;\n var width = this.convertPixelToPoint(bounds.width);\n var height = this.convertPixelToPoint(bounds.height);\n if (!isNullOrUndefined(stampAnnotation.stampAnnotationType) && (stampAnnotation.stampAnnotationType === 'image') && (stampAnnotation.stampAnnotationPath !== ' ')) {\n if (pageRotation === 'RotateAngle90' || pageRotation === 'RotateAngle270') {\n width = this.convertPixelToPoint((bounds.height));\n height = this.convertPixelToPoint((bounds.width));\n }\n }\n var opacity = stampAnnotation.opacity;\n var rotateAngle = stampAnnotation.rotateAngle;\n var isLock = false;\n if (stampAnnotation.hasOwnProperty('annotationSettings') && !isNullOrUndefined(stampAnnotation.annotationSettings)) {\n var annotationSettings = stampAnnotation.annotationSettings;\n if (!isNullOrUndefined(annotationSettings.isLock)) {\n isLock = annotationSettings.isLock;\n }\n }\n if (!isNullOrUndefined(stampAnnotation.stampAnnotationType) && (stampAnnotation.stampAnnotationType === 'image') && (stampAnnotation.stampAnnotationPath !== ' ')) {\n var pageRender = new PageRenderer(this.pdfViewer, this.pdfViewerBase);\n var rubberStampAnnotation = new PdfRubberStampAnnotation(left, top, width, height);\n page.annotations.add(rubberStampAnnotation);\n var imageUrl = (stampAnnotation['stampAnnotationPath'].toString()).split(',')[1];\n var bytes = _decode(imageUrl, false);\n var bitmap = void 0;\n if (bytes && bytes.length > 2 && bytes[0] === 255 && bytes[1] === 216) {\n bitmap = new PdfBitmap(bytes);\n var appearance = rubberStampAnnotation.appearance.normal;\n var state = graphics.save();\n appearance.graphics.drawImage(bitmap, 0, 0, width, height);\n appearance.graphics.restore(state);\n }\n else {\n var appearance = rubberStampAnnotation.appearance;\n var filterAnnot = this.pdfViewerBase.pngData.filter(function (nameStamp) { return nameStamp.name === stampAnnotation.annotName; });\n var dictionary = filterAnnot[0]._dictionary.get('AP');\n var pngDictionary = dictionary.get('N');\n appearance.normal = new PdfTemplate(pngDictionary, page._crossReference);\n }\n rubberStampAnnotation.opacity = opacity;\n if (!isNullOrUndefined(stampAnnotation.note)) {\n rubberStampAnnotation.text = stampAnnotation.note.toString();\n }\n rubberStampAnnotation._dictionary.set('NM', stampAnnotation.annotName.toString());\n var dateValue = void 0;\n if (!isNullOrUndefined(stampAnnotation.modifiedDate) && !isNaN(Date.parse(stampAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(stampAnnotation.modifiedDate));\n rubberStampAnnotation.modifiedDate = dateValue;\n }\n var commentsDetails = stampAnnotation.comments;\n if (commentsDetails.length > 0) {\n for (var i = 0; i < commentsDetails.length; i++) {\n // eslint-disable-next-line max-len\n rubberStampAnnotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i.toString(), 10)], rubberStampAnnotation.bounds));\n }\n }\n var reviewDetails = stampAnnotation.review;\n rubberStampAnnotation.reviewHistory.add(this.addReviewCollections(reviewDetails, rubberStampAnnotation.bounds));\n if (!isNullOrUndefined(stampAnnotation.author)) {\n stampAnnotation.author = 'Guest';\n }\n rubberStampAnnotation.author = !isNullOrUndefined(stampAnnotation.author) && stampAnnotation.author.toString() !== \"\" ? stampAnnotation.author.toString() : 'Guest';\n if (!isNullOrUndefined(stampAnnotation.subject) && stampAnnotation.subject) {\n rubberStampAnnotation.subject = stampAnnotation.subject.toString();\n }\n if (!isNullOrUndefined(stampAnnotation.isLocked) && stampAnnotation.isLocked) {\n rubberStampAnnotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n else if (!isNullOrUndefined(stampAnnotation.isCommentLock) && stampAnnotation.isCommentLock) {\n rubberStampAnnotation.flags = PdfAnnotationFlag.readOnly;\n }\n else {\n rubberStampAnnotation.flags = PdfAnnotationFlag.print;\n }\n if (!isNullOrUndefined(stampAnnotation.customData)) {\n rubberStampAnnotation.setValues('CustomData', stampAnnotation.customData);\n }\n if (!isNullOrUndefined(stampAnnotation.icon)) {\n rubberStampAnnotation.setValues('iconName', stampAnnotation.icon);\n }\n }\n else {\n var subject = stampAnnotation.subject.toString();\n var icon = stampAnnotation.icon.toString();\n var stampColor = stampAnnotation.stampFillcolor.toString();\n var fillColor = !isNullOrUndefined(stampAnnotation.fillColor) ? stampAnnotation.fillColor.toString() : '#192760';\n var isDynamic = stampAnnotation.isDynamicStamp.toString();\n var textBrush = new PdfBrush([0, 0, 0]);\n var colors = [];\n var stampWidth = width;\n if (fillColor === '#192760') {\n colors = [25, 39, 96];\n }\n else if (fillColor === '#516c30') {\n colors = [81, 108, 48];\n }\n else if (fillColor === '#8a251a') {\n colors = [138, 37, 26];\n }\n textBrush = new PdfBrush(colors);\n var stampBrush = new PdfBrush([0, 0, 0]);\n var stampcolors = [];\n if (stampColor === '#e6eddf') {\n stampcolors = [230, 237, 223];\n }\n else if (stampColor === '#f6dedd') {\n stampcolors = [246, 222, 221];\n }\n else if (stampColor === '#dce3ef') {\n stampcolors = [220, 227, 239];\n }\n textBrush = new PdfBrush(colors);\n stampBrush = new PdfBrush(stampcolors);\n var pens = new PdfPen(colors, 1);\n var pageRotation_1 = page.rotation.toString();\n var rectangle = new Rect(left, top, width, height);\n if (pageRotation_1 === 'RotateAngle90' || pageRotation_1 === 'RotateAngle270') {\n rectangle = new Rect(left, top, height, width);\n }\n var rubberStampAnnotation = new PdfRubberStampAnnotation;\n rubberStampAnnotation.bounds = rectangle;\n rubberStampAnnotation.subject = stampAnnotation.icon.toString();\n if (!isNullOrUndefined(stampAnnotation.note)) {\n rubberStampAnnotation.text = stampAnnotation.note.toString();\n }\n rubberStampAnnotation._dictionary.set('NM', stampAnnotation.annotName.toString());\n var dateValue = void 0;\n if (!isNullOrUndefined(stampAnnotation.modifiedDate) && !isNaN(Date.parse(stampAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(stampAnnotation.modifiedDate));\n rubberStampAnnotation.modifiedDate = dateValue;\n }\n var commentsDetails = stampAnnotation.comments;\n if (commentsDetails.length > 0) {\n for (var i = 0; i < commentsDetails.length; i++) {\n // eslint-disable-next-line max-len\n rubberStampAnnotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i.toString(), 10)], rubberStampAnnotation.bounds));\n }\n }\n var reviewDetails = stampAnnotation.review;\n rubberStampAnnotation.reviewHistory.add(this.addReviewCollections(reviewDetails, rubberStampAnnotation.bounds));\n var isIconExists = false;\n if (isDynamic !== 'true') {\n isIconExists = this.getIconName(stampAnnotation, icon, rubberStampAnnotation);\n }\n if (icon.trim() === 'Accepted' || icon.trim() === 'Rejected') {\n this.drawStampAsPath(stampAnnotation.stampAnnotationPath, rubberStampAnnotation, textBrush, stampBrush);\n rubberStampAnnotation.rotationAngle = this.getRubberStampRotateAngle(pageRotation_1, rotateAngle);\n }\n else {\n if (page.rotation.toString() === 'RotateAngle90' || page.rotation.toString() === 'RotateAngle270') {\n rubberStampAnnotation.bounds = rectangle;\n }\n rubberStampAnnotation.rotationAngle = this.getRubberStampRotateAngle(pageRotation_1, rotateAngle);\n }\n if (!isNullOrUndefined(stampAnnotation.modifiedDate) && !isNaN(Date.parse(stampAnnotation.modifiedDate))) {\n var dateValue_1;\n if (!isNullOrUndefined(stampAnnotation.modifiedDate) && !isNaN(Date.parse(stampAnnotation.modifiedDate))) {\n dateValue_1 = new Date(Date.parse(stampAnnotation.modifiedDate));\n rubberStampAnnotation.modifiedDate = dateValue_1;\n }\n }\n rubberStampAnnotation.opacity = opacity;\n rubberStampAnnotation.author = !isNullOrUndefined(stampAnnotation.author) && stampAnnotation.author.toString() !== \"\" ? stampAnnotation.author.toString() : 'Guest';\n if (!isNullOrUndefined(stampAnnotation.isLocked) && stampAnnotation.isLocked) {\n rubberStampAnnotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n else if (!isNullOrUndefined(stampAnnotation.isCommentLock) && stampAnnotation.isCommentLock) {\n rubberStampAnnotation.flags = PdfAnnotationFlag.readOnly;\n }\n else {\n rubberStampAnnotation.flags = PdfAnnotationFlag.print;\n }\n if (!isNullOrUndefined(stampAnnotation.customData)) {\n rubberStampAnnotation.setValues('CustomData', stampAnnotation.customData);\n }\n if (!isNullOrUndefined(stampAnnotation.rotateAngle)) {\n rubberStampAnnotation.setValues('rotateAngle', stampAnnotation.rotateAngle.toString());\n }\n if (!isNullOrUndefined(stampAnnotation.icon)) {\n rubberStampAnnotation.setValues('iconName', stampAnnotation.icon.toString());\n }\n page.annotations.add(rubberStampAnnotation);\n if (!isIconExists) {\n var appearance = rubberStampAnnotation.appearance.normal;\n appearance.graphics.drawRoundedRectangle(0, 0, rectangle.width, rectangle.height, 10, pens, stampBrush);\n if (isDynamic === 'true') {\n var text = stampAnnotation.dynamicText.toString();\n var state = appearance.graphics.save();\n appearance.graphics.setTransparency(opacity);\n this.renderDynamicStamp(rubberStampAnnotation, icon, text, textBrush, rectangle, pens, page);\n appearance.graphics.restore(state);\n rubberStampAnnotation._dictionary.set('Name', _PdfName.get('#23D' + icon.toString()));\n }\n else {\n this.retriveDefaultWidth(icon.trim());\n var state = appearance.graphics.save();\n appearance.graphics.setTransparency(opacity);\n this.renderSignHereStamp(rubberStampAnnotation, rectangle, icon, textBrush, page, pens);\n appearance.graphics.restore(state);\n }\n rubberStampAnnotation.rotationAngle = this.getRubberStampRotateAngle(pageRotation_1, rotateAngle);\n }\n }\n };\n /**\n * @param details\n * @param page\n *\n * @private\n */\n AnnotationRenderer.prototype.addMeasure = function (details, page) {\n var measureShapeAnnotation = details;\n if (!isNullOrUndefined(measureShapeAnnotation.author)) {\n measureShapeAnnotation.author = 'Guest';\n }\n if (!isNullOrUndefined(measureShapeAnnotation.shapeAnnotationType) && measureShapeAnnotation.shapeAnnotationType === 'Line') {\n var points = JSON.parse(measureShapeAnnotation.vertexPoints);\n var linePoints = this.getSaveVertexPoints(points, page);\n var lineAnnotation = new PdfLineAnnotation(linePoints);\n if (!isNullOrUndefined(measureShapeAnnotation.note)) {\n lineAnnotation.text = measureShapeAnnotation.note.toString();\n }\n lineAnnotation.author = !isNullOrUndefined(measureShapeAnnotation.author) && measureShapeAnnotation.author.toString() !== \"\" ? measureShapeAnnotation.author.toString() : 'Guest';\n if (!isNullOrUndefined(measureShapeAnnotation.subject)) {\n lineAnnotation.subject = measureShapeAnnotation.subject.toString();\n }\n lineAnnotation.lineIntent = PdfLineIntent.lineDimension;\n if (!isNullOrUndefined(measureShapeAnnotation.annotName)) {\n lineAnnotation.name = measureShapeAnnotation.annotName.toString();\n }\n if (!isNullOrUndefined(measureShapeAnnotation.strokeColor)) {\n var strokeColor = JSON.parse(measureShapeAnnotation.strokeColor);\n lineAnnotation.color = [strokeColor.r, strokeColor.g, strokeColor.b];\n }\n if (!isNullOrUndefined(measureShapeAnnotation.fillColor)) {\n var fillColor = JSON.parse(measureShapeAnnotation.fillColor);\n if (!this.isTransparentColor(fillColor)) {\n var innerColor = [fillColor.r, fillColor.g, fillColor.b];\n lineAnnotation.innerColor = innerColor;\n }\n if (fillColor.a < 1 && fillColor.a > 0) {\n lineAnnotation._dictionary.update('FillOpacity', fillColor.a);\n fillColor.a = 1;\n }\n else {\n lineAnnotation._dictionary.update('FillOpacity', fillColor.a);\n }\n }\n if (!isNullOrUndefined(measureShapeAnnotation.opacity)) {\n lineAnnotation.opacity = measureShapeAnnotation.opacity;\n }\n var lineBorder = new PdfAnnotationBorder();\n lineBorder.width = measureShapeAnnotation.thickness;\n if (!isNullOrUndefined(measureShapeAnnotation.borderStyle) && measureShapeAnnotation.borderStyle !== '') {\n lineBorder.style = this.getBorderStyle(measureShapeAnnotation.borderStyle);\n }\n if (!isNullOrUndefined(measureShapeAnnotation.borderDashArray)) {\n lineBorder.dash = [measureShapeAnnotation.borderDashArray, measureShapeAnnotation.borderDashArray];\n }\n lineAnnotation.border = lineBorder;\n lineAnnotation.rotationAngle = this.getRotateAngle(measureShapeAnnotation.rotateAngle);\n lineAnnotation.lineEndingStyle.begin = this.getLineEndingStyle(measureShapeAnnotation.lineHeadStart);\n lineAnnotation.lineEndingStyle.end = this.getLineEndingStyle(measureShapeAnnotation.lineHeadEnd);\n var dateValue = void 0;\n if (!isNullOrUndefined(measureShapeAnnotation.modifiedDate) && !isNaN(Date.parse(measureShapeAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(measureShapeAnnotation.modifiedDate));\n lineAnnotation.modifiedDate = dateValue;\n }\n lineAnnotation.caption.type = this.getCaptionType(measureShapeAnnotation.captionPosition);\n lineAnnotation.caption.cap = measureShapeAnnotation.caption;\n lineAnnotation.leaderExt = measureShapeAnnotation.leaderLength;\n lineAnnotation.leaderLine = measureShapeAnnotation.leaderLineExtension;\n var commentsDetails = measureShapeAnnotation.comments;\n var bounds = JSON.parse(measureShapeAnnotation.bounds);\n lineAnnotation.bounds = bounds;\n lineAnnotation.bounds.x = bounds.left;\n lineAnnotation.bounds.y = bounds.top;\n if (commentsDetails.length > 0) {\n for (var i = 0; i < commentsDetails.length; i++) {\n lineAnnotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i.toString(), 10)], lineAnnotation.bounds));\n }\n }\n var reviewDetails = measureShapeAnnotation.review;\n lineAnnotation.reviewHistory.add(this.addReviewCollections(reviewDetails, lineAnnotation.bounds));\n lineAnnotation._dictionary.update('LLO', measureShapeAnnotation.leaderLineOffset);\n if (measureShapeAnnotation.isPrint && !isNullOrUndefined(measureShapeAnnotation['isPrint']) && Boolean(measureShapeAnnotation['isPrint'].toString())) {\n if (measureShapeAnnotation.isCommentLock && !isNullOrUndefined(measureShapeAnnotation['isCommentLock']) && Boolean(measureShapeAnnotation['isCommentLock'].toString())) {\n lineAnnotation.flags = PdfAnnotationFlag.print | PdfAnnotationFlag.readOnly;\n }\n else {\n lineAnnotation.flags = PdfAnnotationFlag.print;\n }\n }\n if (measureShapeAnnotation.isLocked && !isNullOrUndefined(measureShapeAnnotation['isLocked']) && Boolean(measureShapeAnnotation['isLocked'].toString())) {\n lineAnnotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n else if (measureShapeAnnotation.isCommentLock && !isNullOrUndefined(measureShapeAnnotation['isCommentLock']) && Boolean(measureShapeAnnotation['isCommentLock'].toString())) {\n lineAnnotation.flags = PdfAnnotationFlag.readOnly;\n }\n else {\n lineAnnotation.flags = PdfAnnotationFlag.print;\n }\n var measureDetail = JSON.parse(measureShapeAnnotation.calibrate);\n if (!isNullOrUndefined(measureDetail)) {\n lineAnnotation._dictionary.set('Measure', this.setMeasureDictionary(measureDetail));\n }\n if (!isNullOrUndefined(measureShapeAnnotation.customData)) {\n lineAnnotation.setValues('CustomData', measureShapeAnnotation.customData);\n }\n if (measureShapeAnnotation.allowedInteractions && measureShapeAnnotation['allowedInteractions'] != null) {\n lineAnnotation.setValues('AllowedInteractions', JSON.stringify(measureShapeAnnotation['allowedInteractions']));\n }\n lineAnnotation.setAppearance(true);\n page.annotations.add(lineAnnotation);\n }\n else if (!isNullOrUndefined(measureShapeAnnotation.shapeAnnotationType) && measureShapeAnnotation.shapeAnnotationType === 'Polyline') {\n var points = JSON.parse(measureShapeAnnotation.vertexPoints);\n var linePoints = this.getSaveVertexPoints(points, page);\n var polylineAnnotation = new PdfPolyLineAnnotation(linePoints);\n polylineAnnotation.author = !isNullOrUndefined(measureShapeAnnotation.author) && measureShapeAnnotation.author.toString() !== \"\" ? measureShapeAnnotation.author.toString() : 'Guest';\n if (!isNullOrUndefined(measureShapeAnnotation.note)) {\n polylineAnnotation.text = measureShapeAnnotation.note.toString();\n }\n polylineAnnotation._dictionary.set('NM', measureShapeAnnotation.annotName.toString());\n if (!isNullOrUndefined(measureShapeAnnotation.subject)) {\n polylineAnnotation.subject = measureShapeAnnotation.subject.toString();\n }\n if (!isNullOrUndefined(measureShapeAnnotation.strokeColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var strokeColor = JSON.parse(measureShapeAnnotation.strokeColor);\n // eslint-disable-next-line max-len\n var color = [strokeColor.r, strokeColor.g, strokeColor.b];\n polylineAnnotation.color = color;\n }\n if (!isNullOrUndefined(measureShapeAnnotation.fillColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fillColor = JSON.parse(measureShapeAnnotation.fillColor);\n if (!this.isTransparentColor(fillColor)) {\n var innerColor = [fillColor.r, fillColor.g, fillColor.b];\n polylineAnnotation.innerColor = innerColor;\n }\n if (fillColor.a < 1 && fillColor.a > 0) {\n polylineAnnotation._dictionary.update('FillOpacity', fillColor.a);\n fillColor.a = 1;\n }\n else {\n polylineAnnotation._dictionary.update('FillOpacity', fillColor.a);\n }\n }\n if (!isNullOrUndefined(measureShapeAnnotation.opacity)) {\n polylineAnnotation.opacity = measureShapeAnnotation.opacity;\n }\n var lineBorder = new PdfAnnotationBorder();\n lineBorder.width = measureShapeAnnotation.thickness;\n lineBorder.style = this.getBorderStyle(measureShapeAnnotation.borderStyle);\n lineBorder.dash = measureShapeAnnotation.borderDashArray;\n polylineAnnotation.border = lineBorder;\n polylineAnnotation.rotationAngle = this.getRotateAngle(measureShapeAnnotation.rotateAngle);\n polylineAnnotation.beginLineStyle = this.getLineEndingStyle(measureShapeAnnotation.lineHeadStart);\n polylineAnnotation.endLineStyle = this.getLineEndingStyle(measureShapeAnnotation.lineHeadEnd);\n var dateValue = void 0;\n if (!isNullOrUndefined(measureShapeAnnotation.modifiedDate) && !isNaN(Date.parse(measureShapeAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(measureShapeAnnotation.modifiedDate));\n polylineAnnotation.modifiedDate = dateValue;\n }\n var commentsDetails = measureShapeAnnotation.comments;\n var bounds = JSON.parse(measureShapeAnnotation.bounds);\n polylineAnnotation.bounds = bounds;\n polylineAnnotation.bounds.x = bounds.left;\n polylineAnnotation.bounds.y = bounds.top;\n if (commentsDetails.length > 0) {\n for (var i = 0; i < commentsDetails.length; i++) {\n // eslint-disable-next-line max-len\n polylineAnnotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i.toString(), 10)], polylineAnnotation.bounds));\n }\n }\n var reviewDetails = measureShapeAnnotation.review;\n polylineAnnotation.reviewHistory.add(this.addReviewCollections(reviewDetails, polylineAnnotation.bounds));\n polylineAnnotation._dictionary.set('IT', _PdfName.get(measureShapeAnnotation.indent.toString()));\n if (!isNullOrUndefined(measureShapeAnnotation.isCloudShape) && measureShapeAnnotation.isCloudShape) {\n var dictionary = new _PdfDictionary(page._crossReference);\n dictionary.update('S', _PdfName.get('C'));\n dictionary.update('I', measureShapeAnnotation.cloudIntensity);\n polylineAnnotation._dictionary.update('BE', dictionary);\n var rectDifferences = JSON.parse(measureShapeAnnotation.rectangleDifference);\n if (rectDifferences.length > 0) {\n var rd = this.getRDValues(rectDifferences);\n polylineAnnotation._dictionary.update('RD', rd);\n }\n }\n if (!isNullOrUndefined(measureShapeAnnotation.isLocked && measureShapeAnnotation.isLocked)) {\n polylineAnnotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n else if (!isNullOrUndefined(measureShapeAnnotation.isCommentLock) && measureShapeAnnotation.isCommentLock) {\n polylineAnnotation.flags = PdfAnnotationFlag.readOnly;\n }\n if (measureShapeAnnotation.isPrint && measureShapeAnnotation['isPrint'] !== null && Boolean(measureShapeAnnotation['isPrint'].toString())) {\n if (measureShapeAnnotation.isCommentLock && measureShapeAnnotation['isCommentLock'] !== null && Boolean(measureShapeAnnotation['isCommentLock'].toString())) {\n polylineAnnotation._annotFlags = PdfAnnotationFlag.print | PdfAnnotationFlag.readOnly;\n }\n else {\n polylineAnnotation._annotFlags = PdfAnnotationFlag.print;\n }\n }\n var measureDetail = JSON.parse(measureShapeAnnotation.calibrate);\n if (!isNullOrUndefined(measureDetail)) {\n polylineAnnotation._dictionary.set('Measure', this.setMeasureDictionary(measureDetail));\n }\n if (!isNullOrUndefined(measureShapeAnnotation.customData)) {\n polylineAnnotation.setValues('CustomData', measureShapeAnnotation.customData);\n }\n if (measureShapeAnnotation.allowedInteractions && measureShapeAnnotation['allowedInteractions'] != null) {\n polylineAnnotation.setValues('AllowedInteractions', JSON.stringify(measureShapeAnnotation['allowedInteractions']));\n }\n polylineAnnotation.setAppearance(true);\n page.annotations.add(polylineAnnotation);\n }\n else if (!isNullOrUndefined(measureShapeAnnotation.shapeAnnotationType) && (measureShapeAnnotation.shapeAnnotationType === 'Polyline') && (measureShapeAnnotation.shapeAnnotationType === 'PolygonRadius') || (measureShapeAnnotation.shapeAnnotationType === 'Circle')) {\n var circleMeasurementAnnotation = this.addCircleMeasurementAnnotation(measureShapeAnnotation, page);\n page.annotations.add(circleMeasurementAnnotation);\n }\n else if (!isNullOrUndefined(measureShapeAnnotation.shapeAnnotationType) && (measureShapeAnnotation.shapeAnnotationType === 'Polygon') && measureShapeAnnotation.indent !== 'PolygonRadius') {\n var points = JSON.parse(measureShapeAnnotation.vertexPoints);\n var linePoints = this.getSaveVertexPoints(points, page);\n var polygonAnnotation = new PdfPolygonAnnotation(linePoints);\n polygonAnnotation.author = !isNullOrUndefined(measureShapeAnnotation.author) && measureShapeAnnotation.author.toString() !== \"\" ? measureShapeAnnotation.author.toString() : 'Guest';\n if (!isNullOrUndefined(measureShapeAnnotation.note)) {\n polygonAnnotation.text = measureShapeAnnotation.note.toString();\n }\n if (!isNullOrUndefined(measureShapeAnnotation.annotName)) {\n polygonAnnotation.name = measureShapeAnnotation.annotName.toString();\n }\n if (!isNullOrUndefined(measureShapeAnnotation.subject)) {\n polygonAnnotation.subject = measureShapeAnnotation.subject.toString();\n }\n if (!isNullOrUndefined(measureShapeAnnotation.strokeColor)) {\n var strokeColor = JSON.parse(measureShapeAnnotation.strokeColor);\n polygonAnnotation.color = [strokeColor.r, strokeColor.g, strokeColor.b];\n }\n if (!isNullOrUndefined(measureShapeAnnotation.fillColor)) {\n var fillColor = JSON.parse(measureShapeAnnotation.fillColor);\n if (!this.isTransparentColor(fillColor)) {\n var innerColor = [fillColor.r, fillColor.g, fillColor.b];\n polygonAnnotation.innerColor = innerColor;\n }\n if (fillColor.a < 1 && fillColor.a > 0) {\n polygonAnnotation._dictionary.update('FillOpacity', fillColor.a);\n fillColor.a = 1;\n }\n else {\n polygonAnnotation._dictionary.update('FillOpacity', fillColor.a);\n }\n }\n if (!isNullOrUndefined(measureShapeAnnotation.opacity)) {\n polygonAnnotation.opacity = measureShapeAnnotation.opacity;\n }\n var lineBorder = new PdfAnnotationBorder();\n lineBorder.width = measureShapeAnnotation.thickness;\n lineBorder.style = measureShapeAnnotation.borderStyle;\n if (!isNullOrUndefined(measureShapeAnnotation.borderDashArray)) {\n lineBorder.dash = [measureShapeAnnotation.borderDashArray, measureShapeAnnotation.borderDashArray];\n }\n polygonAnnotation.border = lineBorder;\n polygonAnnotation._dictionary.update('IT', _PdfName.get(measureShapeAnnotation.indent.toString()));\n polygonAnnotation.rotationAngle = this.getRotateAngle(measureShapeAnnotation.rotateAngle);\n var dateValue = void 0;\n if (!isNullOrUndefined(measureShapeAnnotation.modifiedDate) && !isNaN(Date.parse(measureShapeAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(measureShapeAnnotation.modifiedDate));\n polygonAnnotation.modifiedDate = dateValue;\n }\n var commentsDetails = measureShapeAnnotation.comments;\n var bounds = JSON.parse(measureShapeAnnotation.bounds);\n polygonAnnotation.bounds = bounds;\n polygonAnnotation.bounds.x = bounds.left;\n polygonAnnotation.bounds.y = bounds.top;\n if (commentsDetails.length > 0) {\n for (var i = 0; i < commentsDetails.length; i++) {\n polygonAnnotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i.toString(), 10)], polygonAnnotation.bounds));\n }\n }\n var reviewDetails = measureShapeAnnotation.review;\n polygonAnnotation.reviewHistory.add(this.addReviewCollections(reviewDetails, polygonAnnotation.bounds));\n if (!isNullOrUndefined(measureShapeAnnotation.isCloudShape) && Boolean(measureShapeAnnotation['isCloudShape'].toString())) {\n polygonAnnotation.borderEffect.style = PdfBorderEffectStyle.cloudy;\n polygonAnnotation.borderEffect.intensity = measureShapeAnnotation['cloudIntensity'];\n var rectDifferences = JSON.parse(measureShapeAnnotation.rectangleDifference);\n if (rectDifferences.length > 0) {\n var rd = this.getRDValues(rectDifferences);\n polygonAnnotation._dictionary.update('RD', rd);\n }\n }\n if (measureShapeAnnotation.isPrint && !isNullOrUndefined(measureShapeAnnotation[\"isPrint\"]) && Boolean(measureShapeAnnotation[\"isPrint\"].toString())) {\n if (measureShapeAnnotation.isCommentLock && !isNullOrUndefined(measureShapeAnnotation[\"isCommentLock\"]) && Boolean(measureShapeAnnotation[\"isCommentLock\"].toString())) {\n polygonAnnotation.flags = PdfAnnotationFlag.print | PdfAnnotationFlag.readOnly;\n }\n else {\n polygonAnnotation.flags = PdfAnnotationFlag.print;\n }\n }\n if (measureShapeAnnotation.isLocked && !isNullOrUndefined(measureShapeAnnotation[\"isLocked\"]) && Boolean(measureShapeAnnotation[\"isLocked\"].toString())) {\n polygonAnnotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n else if (measureShapeAnnotation.isCommentLock && !isNullOrUndefined(measureShapeAnnotation[\"isCommentLock\"]) && Boolean(measureShapeAnnotation[\"isCommentLock\"].toString())) {\n polygonAnnotation.flags = PdfAnnotationFlag.readOnly;\n }\n else {\n polygonAnnotation.flags = PdfAnnotationFlag.print;\n }\n var measureDetail = JSON.parse(measureShapeAnnotation.calibrate);\n if (!isNullOrUndefined(measureDetail)) {\n polygonAnnotation._dictionary.set('Measure', this.setMeasureDictionary(measureDetail));\n if (measureShapeAnnotation[\"indent\"] === \"PolygonVolume\" && measureDetail.hasOwnProperty('depth')) {\n polygonAnnotation._dictionary.update(\"Depth\", measureDetail[\"depth\"]);\n }\n }\n if (!isNullOrUndefined(measureShapeAnnotation.customData)) {\n polygonAnnotation.setValues('CustomData', measureShapeAnnotation.customData);\n }\n if (measureShapeAnnotation.allowedInteractions && measureShapeAnnotation[\"allowedInteractions\"] != null) {\n polygonAnnotation.setValues('AllowedInteractions', JSON.stringify(measureShapeAnnotation[\"allowedInteractions\"]));\n }\n polygonAnnotation.setAppearance(true);\n page.annotations.add(polygonAnnotation);\n }\n };\n /**\n * @param details\n * @param page\n *\n * @private\n */\n AnnotationRenderer.prototype.addStickyNotes = function (details, page) {\n var pageNo = details.pageNumber;\n var popUpAnnotation = details;\n var bounds = JSON.parse(popUpAnnotation.bounds);\n var cropValues = this.getCropBoxValue(page, false);\n var left = this.convertPixelToPoint(bounds.left);\n var top = this.convertPixelToPoint(bounds.top);\n var width = this.convertPixelToPoint(bounds.width);\n var height = this.convertPixelToPoint(bounds.height);\n var cropX = 0;\n var cropY = 0;\n if (cropValues.x != 0 && cropValues.y != 0 && cropValues.x == left) {\n cropX = cropValues.x;\n cropY = cropValues.y;\n }\n else if (cropValues.x == 0 && page.cropBox[2] == page.size[0] && cropValues.y == page.size[1]) {\n cropX = cropValues.x;\n cropY = cropValues.y;\n }\n var annotation = new PdfPopupAnnotation(null, cropX + left, cropY + top, width, height);\n if (popUpAnnotation['author'] === null) {\n popUpAnnotation['author'] = 'Guest';\n }\n if (popUpAnnotation['note'] != null) {\n annotation.text = popUpAnnotation['note'].toString();\n }\n annotation.author = popUpAnnotation['author'].toString();\n if (popUpAnnotation['subject'] != null) {\n annotation.subject = popUpAnnotation['subject'].toString();\n }\n annotation._dictionary.set('NM', popUpAnnotation.annotName.toString());\n var dateValue;\n if (!isNullOrUndefined(popUpAnnotation.modifiedDate) && !isNaN(Date.parse(popUpAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(popUpAnnotation.modifiedDate));\n annotation.modifiedDate = dateValue;\n }\n var commentsDetails = popUpAnnotation.comments;\n if (commentsDetails.length > 0) {\n for (var i = 0; i < commentsDetails.length; i++) {\n annotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i.toString(), 10)], annotation.bounds));\n }\n }\n var reviewDetails = popUpAnnotation.review;\n annotation.reviewHistory.add(this.addReviewCollections(reviewDetails, annotation.bounds));\n var color = [255, 255, 51];\n annotation.color = color;\n annotation.opacity = popUpAnnotation.opacity;\n annotation.icon = PdfPopupIcon.comment;\n var isAnnotationFlagSet = false;\n if (!isNullOrUndefined(popUpAnnotation.annotationSettings)) {\n var annotationSettings = popUpAnnotation.annotationSettings;\n var isLock = annotationSettings.isLock;\n if (isLock) {\n annotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n }\n else if (!isNullOrUndefined(popUpAnnotation.isCommentLock) && popUpAnnotation.isCommentLock) {\n annotation.flags = PdfAnnotationFlag.readOnly;\n }\n else {\n annotation.flags = PdfAnnotationFlag.print;\n }\n if (!isNullOrUndefined(popUpAnnotation.customData)) {\n annotation.setValues('CustomData', popUpAnnotation.customData);\n }\n page.annotations.add(annotation);\n };\n /**\n * @param details\n * @param page\n * @param textFont\n *\n * @private\n */\n AnnotationRenderer.prototype.addFreeText = function (details, page, textFont) {\n var _this = this;\n var pageNo = details.pageIndex;\n var freeTextAnnotation = details;\n var bounds = JSON.parse(freeTextAnnotation.bounds);\n var cropValues = this.getCropBoxValue(page, false);\n var left = this.convertPixelToPoint(bounds.left);\n var top = this.convertPixelToPoint(bounds.top);\n var width = this.convertPixelToPoint(bounds.width);\n var height = this.convertPixelToPoint(bounds.height);\n var cropX = 0;\n var cropY = 0;\n if (cropValues.x != 0 && cropValues.y != 0 && cropValues.x == left) {\n cropX = cropValues.x;\n cropY = cropValues.y;\n }\n else if (cropValues.x == 0 && page.cropBox[2] == page.size[0] && cropValues.y == page.size[1]) {\n cropX = cropValues.x;\n cropY = cropValues.y;\n }\n var annotation = new PdfFreeTextAnnotation(cropX + left, cropY + top, width, height);\n annotation.setAppearance(true);\n if (freeTextAnnotation['author'] === null) {\n freeTextAnnotation['author'] = 'Guest';\n }\n annotation.author = freeTextAnnotation['author'].toString();\n var dateValue;\n if (!isNullOrUndefined(freeTextAnnotation.modifiedDate) && !isNaN(Date.parse(freeTextAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(freeTextAnnotation.modifiedDate));\n annotation.modifiedDate = dateValue;\n }\n var reviewDetails = freeTextAnnotation.review;\n annotation.reviewHistory.add(this.addReviewCollections(reviewDetails, annotation.bounds));\n annotation._dictionary.set('NM', freeTextAnnotation.annotName.toString());\n annotation.lineEndingStyle = PdfLineEndingStyle.openArrow;\n annotation.annotationIntent = PdfAnnotationIntent.freeTextTypeWriter;\n var fontSize = 0;\n if (!isNullOrUndefined(freeTextAnnotation.fontSize)) {\n fontSize = parseFloat(freeTextAnnotation.fontSize);\n }\n fontSize = !isNullOrUndefined(fontSize) && !isNaN(fontSize) && fontSize > 0 ? fontSize : 16; //default 16px\n var fontFamily = this.getFontFamily(freeTextAnnotation.fontFamily);\n var fontJson = {};\n if (freeTextAnnotation.hasOwnProperty('font') && !isNullOrUndefined(freeTextAnnotation.font)) {\n fontJson = freeTextAnnotation.font;\n }\n var fontStyle = this.getFontStyle(fontJson);\n annotation.font = new PdfStandardFont(fontFamily, this.convertPixelToPoint(fontSize), fontStyle);\n if (!isNullOrUndefined(textFont) && textFont.length > 0) {\n textFont.Keys.forEach(function (key) {\n // Need to implement font stream\n var fontStream = textFont[\"\" + key];\n if (freeTextAnnotation.hasOwnProperty('dynamicText') && !isNullOrUndefined(freeTextAnnotation.dynamicText.toString())) {\n var fontAnnotation = new PdfTrueTypeFont(fontStream, _this.convertPixelToPoint(fontSize), PdfFontStyle.regular);\n var format = new PdfStringFormat();\n fontAnnotation.measureString(freeTextAnnotation.dynamicText.toString(), format);\n var glyphPresent = fontAnnotation._dictionary.has('IsContainsFont') ? fontAnnotation._dictionary.get('IsContainsFont') : false;\n if (glyphPresent) {\n annotation.font = new PdfTrueTypeFont(fontStream, _this.convertPixelToPoint(fontSize));\n }\n }\n });\n }\n if (freeTextAnnotation['subject'] != null) {\n annotation.subject = freeTextAnnotation['subject'].toString();\n }\n // Markup Text\n annotation.text = '';\n if (freeTextAnnotation.hasOwnProperty('dynamicText') && !isNullOrUndefined(freeTextAnnotation.dynamicText.toString())) {\n // Markup Text\n annotation.text = freeTextAnnotation.dynamicText.toString();\n }\n annotation.rotationAngle = this.getRotateAngle(freeTextAnnotation.rotateAngle);\n var lineBorder = new PdfAnnotationBorder();\n lineBorder.width = !isNullOrUndefined(freeTextAnnotation.thickness) ? freeTextAnnotation.thickness : 1;\n annotation.border = lineBorder;\n if (freeTextAnnotation.hasOwnProperty('padding') && !isNullOrUndefined(freeTextAnnotation.padding)) {\n var paddingValues = freeTextAnnotation.padding;\n // let padding: PdfPaddings = new PdfPaddings(); // PdfPaddings not exist in ej2-pdf\n // annotation.setPaddings(padding); // setPaddings not exist\n }\n annotation.opacity = !isNullOrUndefined(freeTextAnnotation.opacity) ? freeTextAnnotation.opacity : 1;\n if (!isNullOrUndefined(freeTextAnnotation.strokeColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var strokeColor = JSON.parse(freeTextAnnotation.strokeColor);\n // eslint-disable-next-line max-len\n var color = [strokeColor.r, strokeColor.g, strokeColor.b];\n annotation.borderColor = color;\n // Modified Implementation for setting border width for transparent border\n if (this.isTransparentColor(strokeColor)) {\n annotation.border.width = !isNullOrUndefined(freeTextAnnotation.thickness) ? freeTextAnnotation.thickness : 0;\n }\n }\n if (!isNullOrUndefined(freeTextAnnotation.fillColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fillColor = JSON.parse(freeTextAnnotation.fillColor);\n if (!this.isTransparentColor(fillColor)) {\n var color = [fillColor.r, fillColor.g, fillColor.b, fillColor.a];\n annotation.color = color;\n }\n if (fillColor.a < 1 && fillColor.a > 0) {\n annotation._dictionary.update('FillOpacity', fillColor.a);\n fillColor.a = 1;\n }\n else {\n annotation._dictionary.update('FillOpacity', fillColor.a);\n }\n }\n if (!isNullOrUndefined(freeTextAnnotation.fontColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textMarkupColor = JSON.parse(freeTextAnnotation.fontColor);\n if (!this.isTransparentColor(textMarkupColor)) {\n var fontColor = [textMarkupColor.r, textMarkupColor.g, textMarkupColor.b];\n annotation.textMarkUpColor = fontColor;\n }\n }\n var commentsDetails = freeTextAnnotation.comments;\n if (commentsDetails.length > 0) {\n for (var i = 0; i < commentsDetails.length; i++) {\n // eslint-disable-next-line max-len\n annotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i.toString(), 10)], annotation.bounds));\n }\n }\n if (freeTextAnnotation.hasOwnProperty('annotationSettings') && !isNullOrUndefined(freeTextAnnotation.annotationSettings)) {\n var annotationSettings = freeTextAnnotation.annotationSettings;\n if (annotationSettings.hasOwnProperty('isLock') && !isNullOrUndefined(annotationSettings.isLock)) {\n if (annotationSettings.isLock) {\n annotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n }\n }\n else if (!isNullOrUndefined(freeTextAnnotation.isCommentLock) && freeTextAnnotation.isCommentLock) {\n annotation.flags = PdfAnnotationFlag.readOnly;\n }\n else {\n annotation.flags = PdfAnnotationFlag.print;\n }\n if (!isNullOrUndefined(freeTextAnnotation.customData)) {\n annotation.setValues('CustomData', freeTextAnnotation.customData);\n }\n if (freeTextAnnotation.hasOwnProperty(\"textAlign\") && !isNullOrUndefined(freeTextAnnotation.textAlign)) {\n annotation.textAlignment = this.getPdfTextAlignment(freeTextAnnotation.textAlign.toString().toLowerCase());\n }\n var isReadonly = false;\n var isPrint = false;\n if (freeTextAnnotation.hasOwnProperty(\"isReadonly\")) {\n isReadonly = !isNullOrUndefined(freeTextAnnotation.isReadonly) ? freeTextAnnotation.isReadonly : false;\n }\n if (freeTextAnnotation.hasOwnProperty(\"isPrint\")) {\n isPrint = !isNullOrUndefined(freeTextAnnotation.isPrint) ? freeTextAnnotation.isPrint : false;\n }\n if (isReadonly && isPrint) {\n annotation.flags = PdfAnnotationFlag.readOnly | PdfAnnotationFlag.print;\n }\n else if (isPrint) {\n annotation.flags = PdfAnnotationFlag.print;\n }\n else if (isReadonly) {\n annotation.flags = PdfAnnotationFlag.readOnly;\n }\n if (freeTextAnnotation.hasOwnProperty(\"allowedInteractions\") && !isNullOrUndefined(freeTextAnnotation.allowedInteractions)) {\n annotation.setValues('AllowedInteractions', JSON.stringify(freeTextAnnotation.allowedInteractions));\n }\n page.annotations.add(annotation);\n };\n // eslint-disable-next-line max-len\n AnnotationRenderer.prototype.renderSignHereStamp = function (rubberStampAnnotation, rectangle, icon, textBrush, page, pens) {\n var stringFormat = new PdfStringFormat();\n var font = new PdfStandardFont(PdfFontFamily.helvetica, 20, PdfFontStyle.bold | PdfFontStyle.italic);\n stringFormat.alignment = PdfTextAlignment.center;\n stringFormat.lineAlignment = PdfVerticalAlignment.middle;\n var point1 = [0, 0];\n var point2 = [0, 0];\n var drawingPath = new _PdfPath();\n var appearance = rubberStampAnnotation.appearance.normal;\n if (this.defaultHeight > 0 && this.defaultWidth > 0) {\n appearance.graphics.scaleTransform(rectangle.width / (this.defaultWidth + 4), rectangle.height / 28.00);\n }\n point1 = [(this.defaultWidth / 2 + 1), 15, 0, 0];\n point2 = [0, 0];\n drawingPath._addLine(point1[0], point1[1], point2[0], point2[1]);\n var pointValues = [drawingPath._points[0][0], drawingPath._points[0][1], 0, 0];\n appearance.graphics.drawString(icon.toUpperCase(), font, pointValues, pens, textBrush, stringFormat);\n };\n AnnotationRenderer.prototype.retriveDefaultWidth = function (subject) {\n switch (subject.trim()) {\n case 'Witness':\n this.defaultWidth = 97.39;\n this.defaultHeight = 16.84;\n break;\n case 'Initial Here':\n this.defaultWidth = 151.345;\n this.defaultHeight = 16.781;\n break;\n case 'Sign Here':\n this.defaultWidth = 121.306;\n this.defaultHeight = 16.899;\n break;\n default:\n this.defaultWidth = 0;\n this.defaultHeight = 0;\n break;\n }\n };\n // eslint-disable-next-line max-len\n AnnotationRenderer.prototype.renderDynamicStamp = function (rubberStampAnnotation, icon, text, textBrush, rectangle, pens, page) {\n var stringFormat = new PdfStringFormat();\n stringFormat.alignment = PdfTextAlignment.left;\n stringFormat.lineAlignment = PdfVerticalAlignment.middle;\n var stampFont = new PdfStandardFont(PdfFontFamily.helvetica, 20, PdfFontStyle.bold | PdfFontStyle.italic);\n // eslint-disable-next-line max-len\n var detailsFont = new PdfStandardFont(PdfFontFamily.helvetica, (rectangle.height / 6), PdfFontStyle.bold | PdfFontStyle.italic);\n var appearance = rubberStampAnnotation.appearance.normal;\n var point1 = [0, 0];\n var point2 = [0, 0];\n var drawingPath = new _PdfPath();\n point1 = [5, (rectangle.height / 3)];\n point2 = [5, (rectangle.height - (detailsFont.size * 2))];\n drawingPath._addLine(point1[0], point1[1], point2[0], point2[1]);\n var stampTypeBounds = [drawingPath._points[0][0], drawingPath._points[0][1], 0, 0];\n var stampTimeStampbounds = [drawingPath._points[1][0], drawingPath._points[1][1], (rectangle.width - drawingPath._points[1][0]), (rectangle.height - drawingPath._points[1][1])];\n appearance.graphics.drawString(icon.toUpperCase(), stampFont, stampTypeBounds, pens, textBrush, stringFormat);\n appearance.graphics.drawString(text, detailsFont, stampTimeStampbounds, pens, textBrush, stringFormat);\n };\n AnnotationRenderer.prototype.calculateBoundsXY = function (wrapperBounds, bounds, pageNo, pdfPageBase) {\n var boundsXY = new Rect();\n var pageSize = this.getPageSize(pageNo);\n if (pdfPageBase.pageRotation === PdfRotationAngle.angle90) {\n boundsXY.x = this.convertPixelToPoint(wrapperBounds.y);\n boundsXY.y = this.convertPixelToPoint(pageSize.width - wrapperBounds.x - wrapperBounds.width);\n }\n else if (pdfPageBase.pageRotation === PdfRotationAngle.angle180) {\n boundsXY.x = this.convertPixelToPoint(pageSize.width - wrapperBounds.x - wrapperBounds.width);\n boundsXY.y = this.convertPixelToPoint(pageSize.height - wrapperBounds.y - wrapperBounds.height);\n }\n else if (pdfPageBase.pageRotation === PdfRotationAngle.angle270) {\n boundsXY.x = this.convertPixelToPoint(pageSize.height - wrapperBounds.y - wrapperBounds.height);\n boundsXY.y = this.convertPixelToPoint(wrapperBounds.x);\n }\n else {\n boundsXY.x = this.convertPixelToPoint(wrapperBounds.x);\n boundsXY.y = this.convertPixelToPoint(wrapperBounds.y);\n }\n return boundsXY;\n };\n AnnotationRenderer.prototype.getPageSize = function (pageNumber) {\n var page = this.pdfViewer.pdfRendererModule.loadedDocument.getPage(pageNumber);\n var size = page.size;\n return new Size(this.convertPointToPixel(size[0]), this.convertPointToPixel(size[1]));\n };\n AnnotationRenderer.prototype.setMeasurementUnit = function (unit) {\n var measurementUnit;\n switch (unit) {\n case 'cm':\n measurementUnit = PdfMeasurementUnit.centimeter;\n break;\n case 'in':\n measurementUnit = PdfMeasurementUnit.inch;\n break;\n case 'mm':\n measurementUnit = PdfMeasurementUnit.millimeter;\n break;\n case 'pt':\n measurementUnit = PdfMeasurementUnit.point;\n break;\n case 'p':\n measurementUnit = PdfMeasurementUnit.pica;\n break;\n }\n return measurementUnit;\n };\n AnnotationRenderer.prototype.getRubberStampRotateAngle = function (angleString, rotationAngle) {\n var angle = 0;\n switch (angleString) {\n case 'RotateAngle0':\n angle = 0;\n break;\n case 'RotateAngle180':\n angle = 180;\n break;\n case 'RotateAngle270':\n angle = 270;\n break;\n case 'RotateAngle90':\n angle = 90;\n break;\n default:\n break;\n }\n angle -= rotationAngle;\n return angle;\n };\n AnnotationRenderer.prototype.getFontFamily = function (fontFamily) {\n var font = PdfFontFamily.helvetica;\n fontFamily = !isNullOrUndefined(fontFamily) && fontFamily !== '' ? fontFamily : 'Helvetica';\n switch (fontFamily) {\n case 'Helvetica':\n font = PdfFontFamily.helvetica;\n break;\n case 'Courier':\n font = PdfFontFamily.courier;\n break;\n case 'Times New Roman':\n font = PdfFontFamily.timesRoman;\n break;\n case 'Symbol':\n font = PdfFontFamily.symbol;\n break;\n case 'ZapfDingbats':\n font = PdfFontFamily.zapfDingbats;\n break;\n default:\n break;\n }\n return font;\n };\n AnnotationRenderer.prototype.getFontStyle = function (fontJson) {\n var fontStyle = PdfFontStyle.regular;\n if (!isNullOrUndefined(fontJson)) {\n if (fontJson.isBold) {\n fontStyle = fontStyle | PdfFontStyle.bold;\n }\n if (fontJson.isItalic) {\n fontStyle = fontStyle | PdfFontStyle.italic;\n }\n if (fontJson.isStrikeout) {\n fontStyle = fontStyle | PdfFontStyle.strikeout;\n }\n if (fontJson.isUnderline) {\n fontStyle = fontStyle | PdfFontStyle.underline;\n }\n }\n return fontStyle;\n };\n AnnotationRenderer.prototype.getPdfTextAlignment = function (alignment) {\n var textAlignment = PdfTextAlignment.left;\n switch (alignment) {\n case 'center':\n textAlignment = PdfTextAlignment.center;\n break;\n case 'right':\n textAlignment = PdfTextAlignment.right;\n break;\n case 'justify':\n textAlignment = PdfTextAlignment.justify;\n break;\n default:\n break;\n }\n return textAlignment;\n };\n // eslint-disable-next-line max-len\n AnnotationRenderer.prototype.drawStampAsPath = function (resultObjects, rubberStampAnnotation, textBrush, stampBrush) {\n var transformMatrix = new Matrix(1, 0, 0, 1, 0, 0);\n var currentPoint = { x: 0, y: 0 };\n var graphics;\n var graphicsPath = new _PdfPath();\n var stampObjects = resultObjects;\n for (var index = 0; index < stampObjects.length; index++) {\n var val = stampObjects[parseInt(index.toString(), 10)];\n var path = val.command.toString();\n if (path === 'M') {\n graphicsPath._startFigure();\n currentPoint = { x: val.x, y: val.y };\n }\n if (path === 'L') {\n var array = [\n currentPoint, { x: val.x, y: val.y }\n ];\n this.transformPoints(array);\n var array1 = [\n { x: array[0].x, y: array[0].y }, { x: array[1].x, y: array[1].y }\n ];\n graphicsPath._addLine(array1[0].x, array1[0].y, array1[1].x, array1[1].y);\n currentPoint = { x: val.x, y: val.y };\n }\n if (path === 'C') {\n var array2 = [\n currentPoint,\n { x: val.x, y: val.y },\n { x: val.x1, y: val.y1 },\n { x: val.x2, y: val.y2 }\n ];\n this.transformPoints(array2);\n var array21 = [\n { x: array2[0].x, y: array2[0].y },\n { x: array2[1].x, y: array2[1].y },\n { x: array2[2].x, y: array2[2].y },\n { x: array2[3].x, y: array2[3].y }\n ];\n // eslint-disable-next-line max-len\n graphicsPath._addBezier(array21[0].x, array21[0].y, array21[1].x, array21[1].y, array21[2].x, array21[2].y, array21[3].x, array21[3].y);\n currentPoint = { x: val.x, y: val.y };\n }\n if (path === 'Z') {\n graphicsPath._closeFigure();\n }\n }\n };\n AnnotationRenderer.prototype.transformPoints = function (points) {\n if (!isNullOrUndefined(points)) {\n for (var i = 0; i < points.length; i++) {\n points[parseInt(i.toString(), 10)] = this.transform(points[parseInt(i.toString(), 10)]);\n }\n }\n };\n AnnotationRenderer.prototype.transform = function (point) {\n var x = point.x;\n var y = point.y;\n return { x: x, y: y };\n };\n AnnotationRenderer.prototype.getIconName = function (stampAnnotation, subject, rubberStampAnnotation) {\n var iconExists = true;\n switch (subject.trim()) {\n case 'Approved':\n rubberStampAnnotation.icon = PdfRubberStampAnnotationIcon.approved;\n break;\n case 'Confidential':\n rubberStampAnnotation.icon = PdfRubberStampAnnotationIcon.confidential;\n break;\n case 'Not Approved':\n rubberStampAnnotation.icon = PdfRubberStampAnnotationIcon.notApproved;\n break;\n case 'Draft':\n rubberStampAnnotation.icon = PdfRubberStampAnnotationIcon.draft;\n break;\n case 'Final':\n rubberStampAnnotation.icon = PdfRubberStampAnnotationIcon.final;\n break;\n case 'Completed':\n rubberStampAnnotation.icon = PdfRubberStampAnnotationIcon.completed;\n break;\n case 'For Public Release':\n rubberStampAnnotation.icon = PdfRubberStampAnnotationIcon.forPublicRelease;\n break;\n case 'Not For Public Release':\n rubberStampAnnotation.icon = PdfRubberStampAnnotationIcon.notForPublicRelease;\n break;\n case 'For Comment':\n rubberStampAnnotation.icon = PdfRubberStampAnnotationIcon.forComment;\n break;\n case 'Void':\n rubberStampAnnotation.icon = PdfRubberStampAnnotationIcon.void;\n break;\n case 'Preliminary Results':\n rubberStampAnnotation.icon = PdfRubberStampAnnotationIcon.preliminaryResults;\n break;\n case 'Information Only':\n rubberStampAnnotation.icon = PdfRubberStampAnnotationIcon.informationOnly;\n break;\n default:\n iconExists = false;\n break;\n }\n return iconExists;\n };\n AnnotationRenderer.prototype.addCircleMeasurementAnnotation = function (measureShapeAnnotation, page) {\n var bounds = JSON.parse(measureShapeAnnotation.bounds);\n var cropValues = this.getCropBoxValue(page, false);\n var left = this.convertPixelToPoint(bounds.left);\n var top = this.convertPixelToPoint(bounds.top);\n var width = this.convertPixelToPoint(bounds.width);\n var height = this.convertPixelToPoint(bounds.height);\n if (isNullOrUndefined(bounds.left)) {\n measureShapeAnnotation.bounds.left = 0;\n }\n if (isNullOrUndefined(bounds.top)) {\n measureShapeAnnotation.bounds.top = 0;\n }\n var cropX = 0;\n var cropY = 0;\n if (cropValues.x != 0 && cropValues.y != 0 && cropValues.x == left) {\n cropX = cropValues.x;\n cropY = cropValues.y;\n }\n else if (cropValues.x == 0 && page.cropBox[2] == page.size[0] && cropValues.y == page.size[1]) {\n cropX = cropValues.x;\n cropY = cropValues.y;\n }\n // eslint-disable-next-line max-len\n var circleAnnotation = new PdfCircleAnnotation(cropX + left, cropY + top, width, height);\n if (!isNullOrUndefined(measureShapeAnnotation.note)) {\n circleAnnotation.text = measureShapeAnnotation.note.toString();\n }\n circleAnnotation.author = !isNullOrUndefined(measureShapeAnnotation.author) && measureShapeAnnotation.author.toString() !== \"\" ? measureShapeAnnotation.author.toString() : 'Guest';\n circleAnnotation._dictionary.set('NM', measureShapeAnnotation.annotName.toString());\n if (!isNullOrUndefined(measureShapeAnnotation.subject)) {\n circleAnnotation.subject = measureShapeAnnotation.subject.toString();\n }\n if (!isNullOrUndefined(measureShapeAnnotation.strokeColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var strokeColor = JSON.parse(measureShapeAnnotation.strokeColor);\n // eslint-disable-next-line max-len\n var color = [strokeColor.r, strokeColor.g, strokeColor.b];\n circleAnnotation.color = color;\n }\n if (!isNullOrUndefined(measureShapeAnnotation.fillColor)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fillColor = JSON.parse(measureShapeAnnotation.fillColor);\n if (!this.isTransparentColor(fillColor)) {\n var innerColor = [fillColor.r, fillColor.g, fillColor.b];\n circleAnnotation.innerColor = innerColor;\n }\n if (fillColor.a < 1 && fillColor.a > 0) {\n circleAnnotation._dictionary.update('FillOpacity', fillColor.a);\n fillColor.a = 1;\n }\n else {\n circleAnnotation._dictionary.update('FillOpacity', fillColor.a);\n }\n }\n if (!isNullOrUndefined(measureShapeAnnotation.opacity)) {\n circleAnnotation.opacity = measureShapeAnnotation.opacity;\n }\n var lineBorder = new PdfAnnotationBorder();\n lineBorder.width = measureShapeAnnotation.thickness;\n lineBorder.style = measureShapeAnnotation.borderStyle;\n lineBorder.dash = measureShapeAnnotation.borderDashArray;\n circleAnnotation.border = lineBorder;\n circleAnnotation.rotationAngle = this.getRotateAngle(measureShapeAnnotation.rotateAngle);\n var dateValue;\n if (!isNullOrUndefined(measureShapeAnnotation.modifiedDate) && !isNaN(Date.parse(measureShapeAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(measureShapeAnnotation.modifiedDate));\n circleAnnotation.modifiedDate = dateValue;\n }\n var commentsDetails = measureShapeAnnotation.comments;\n if (commentsDetails.length > 0) {\n for (var i = 0; i < commentsDetails.length; i++) {\n // eslint-disable-next-line max-len\n circleAnnotation.comments.add(this.addCommentsCollection(commentsDetails[parseInt(i.toString(), 10)], circleAnnotation.bounds));\n }\n }\n var reviewDetails = measureShapeAnnotation.review;\n circleAnnotation.reviewHistory.add(this.addReviewCollections(reviewDetails, circleAnnotation.bounds));\n if (!isNullOrUndefined(measureShapeAnnotation.isCloudShape) && measureShapeAnnotation.isCloudShape) {\n var borderEffect = new PdfBorderEffect();\n borderEffect.style = PdfBorderEffectStyle.cloudy;\n borderEffect.intensity = measureShapeAnnotation.cloudIntensity;\n circleAnnotation._borderEffect = borderEffect;\n var rectDifferences = JSON.parse(measureShapeAnnotation.rectangleDifference);\n if (rectDifferences.length > 0) {\n var rd = this.getRDValues(rectDifferences);\n circleAnnotation._dictionary.update('RD', rd);\n }\n }\n if (!isNullOrUndefined(measureShapeAnnotation.isLocked) && measureShapeAnnotation.isLocked) {\n circleAnnotation.flags = PdfAnnotationFlag.locked | PdfAnnotationFlag.print;\n }\n else if (!isNullOrUndefined(measureShapeAnnotation.isCommentLock) && measureShapeAnnotation.isCommentLock) {\n circleAnnotation.flags = PdfAnnotationFlag.readOnly;\n }\n else {\n circleAnnotation.flags = PdfAnnotationFlag.print;\n }\n circleAnnotation.measureType = PdfCircleMeasurementType.radius;\n var measureDetail = JSON.parse(measureShapeAnnotation.calibrate);\n if (!isNullOrUndefined(measureDetail)) {\n circleAnnotation._dictionary.set('Measure', this.setMeasureDictionary(measureDetail));\n }\n if (!isNullOrUndefined(measureShapeAnnotation.customData)) {\n circleAnnotation.setValues('CustomData', measureShapeAnnotation.customData);\n }\n circleAnnotation.setAppearance(true);\n return circleAnnotation;\n };\n AnnotationRenderer.prototype.setMeasureDictionary = function (measureDetail) {\n var measureDictionary = new _PdfDictionary();\n measureDictionary.set('Type', 'Measure');\n measureDictionary.set('R', measureDetail.ratio);\n if (!isNullOrUndefined(measureDetail.x)) {\n var xNumberFormat = this.createNumberFormat(measureDetail.x);\n measureDictionary.set('X', xNumberFormat);\n }\n if (!isNullOrUndefined(measureDetail.distance)) {\n var dNumberFormat = this.createNumberFormat(JSON.parse(measureDetail.distance));\n measureDictionary.set('D', dNumberFormat);\n }\n if (!isNullOrUndefined(measureDetail.area)) {\n var aNumberFormat = this.createNumberFormat(JSON.parse(measureDetail.area));\n measureDictionary.set('A', aNumberFormat);\n }\n if (!isNullOrUndefined(measureDetail.angle)) {\n var tNumberFormat = this.createNumberFormat(JSON.parse(measureDetail.angle));\n measureDictionary.set('T', tNumberFormat);\n }\n if (!isNullOrUndefined(measureDetail.volume)) {\n var vNumberFormat = this.createNumberFormat(JSON.parse(measureDetail.volume));\n measureDictionary.set('V', vNumberFormat);\n }\n return measureDictionary;\n };\n AnnotationRenderer.prototype.createNumberFormat = function (numberFormatList) {\n var numberFormats = [];\n if (isNullOrUndefined(numberFormatList) || numberFormatList.length === 0) {\n return undefined;\n }\n for (var index = 0; index < numberFormatList.length; index++) {\n var numberFormatDictionary = new _PdfDictionary();\n var numberFormat = numberFormatList[parseInt(index.toString(), 10)];\n numberFormatDictionary.set('Type', 'NumberFormat');\n numberFormatDictionary.set('U', numberFormat.unit);\n numberFormatDictionary.set('F', numberFormat.fractionalType);\n numberFormatDictionary.set('D', numberFormat.denominator);\n numberFormatDictionary.set('C', numberFormat.conversionFactor);\n numberFormatDictionary.set('FD', numberFormat.formatDenominator);\n numberFormats.push(numberFormatDictionary);\n }\n return numberFormats;\n };\n AnnotationRenderer.prototype.checkAnnotationLock = function (annotation) {\n var isLock = false;\n if (!isNullOrUndefined(annotation.annotationSettings)) {\n var annotationSettings = annotation.annotationSettings;\n if (!isNullOrUndefined(annotationSettings.isLock)) {\n isLock = annotationSettings.isLock;\n }\n }\n return isLock;\n };\n AnnotationRenderer.prototype.getSaveVertexPoints = function (points, page) {\n var cropValues = this.getCropBoxValue(page, false);\n if (cropValues.x == 0 && page.cropBox[2] == page.size[0] && cropValues.y == page.size[1]) {\n cropValues.x = 0;\n cropValues.y = 0;\n }\n var pageHeight = page._size[1];\n var pointList = [];\n for (var index = 0; index < points.length; index++) {\n var x = this.convertPixelToPoint(points[parseInt(index.toString(), 10)].x) + cropValues.x;\n pointList.push(x);\n var y = pageHeight - this.convertPixelToPoint(points[parseInt(index.toString(), 10)].y) + cropValues.y;\n pointList.push(y);\n }\n return pointList;\n };\n AnnotationRenderer.prototype.getLineEndingStyle = function (endingStyle) {\n var style = PdfLineEndingStyle.none;\n switch (endingStyle) {\n case 'Square':\n style = PdfLineEndingStyle.square;\n break;\n case 'ClosedArrow':\n style = PdfLineEndingStyle.closedArrow;\n break;\n case 'RClosedArrow':\n style = PdfLineEndingStyle.rClosedArrow;\n break;\n case 'OpenArrow':\n style = PdfLineEndingStyle.openArrow;\n break;\n case 'ROpenArrow':\n style = PdfLineEndingStyle.rOpenArrow;\n break;\n case 'Butt':\n style = PdfLineEndingStyle.butt;\n break;\n case 'Circle':\n style = PdfLineEndingStyle.circle;\n break;\n case 'Diamond':\n style = PdfLineEndingStyle.diamond;\n break;\n case 'Slash':\n style = PdfLineEndingStyle.slash;\n break;\n }\n return style;\n };\n AnnotationRenderer.prototype.getCaptionType = function (captionPosition) {\n var captionType = PdfLineCaptionType.inline;\n switch (captionPosition) {\n case 'Inline':\n captionType = PdfLineCaptionType.inline;\n break;\n case 'Top':\n captionType = PdfLineCaptionType.top;\n break;\n }\n return captionType;\n };\n AnnotationRenderer.prototype.addReviewCollections = function (popupAnnotation, bounds) {\n var annotation = new PdfPopupAnnotation(null, bounds.x, bounds.y, bounds.width, bounds.height);\n if (popupAnnotation['state'] != null) {\n annotation.state = this.getReviewState(popupAnnotation['state'].toString());\n annotation.stateModel = PdfAnnotationStateModel.review;\n }\n return annotation;\n };\n AnnotationRenderer.prototype.addCommentsCollection = function (popupAnnotation, bounds) {\n // eslint-disable-next-line max-len\n var annotation = new PdfPopupAnnotation();\n annotation.text = popupAnnotation.note;\n annotation.author = popupAnnotation.author;\n annotation.subject = popupAnnotation.subject;\n if (!isNullOrUndefined(popupAnnotation.note)) {\n annotation.text = popupAnnotation['note'].toString();\n }\n else {\n annotation._annotFlags = PdfAnnotationFlag.print;\n }\n var reviewDetails = popupAnnotation.review;\n annotation.reviewHistory.add(this.addReviewCollections(reviewDetails, bounds));\n var dateValue;\n if (!isNullOrUndefined(popupAnnotation.modifiedDate) && !isNaN(Date.parse(popupAnnotation.modifiedDate))) {\n dateValue = new Date(Date.parse(popupAnnotation.modifiedDate));\n annotation.modifiedDate = dateValue;\n }\n annotation._dictionary.set('NM', popupAnnotation.annotName.toString());\n return annotation;\n };\n AnnotationRenderer.prototype.getReviewState = function (state) {\n var reviewState;\n switch (state) {\n case 'Accepted':\n reviewState = PdfAnnotationState.accepted;\n break;\n case 'Cancelled':\n reviewState = PdfAnnotationState.cancel;\n break;\n case 'Completed':\n reviewState = PdfAnnotationState.completed;\n break;\n case 'Rejected':\n reviewState = PdfAnnotationState.rejected;\n break;\n case 'None':\n reviewState = PdfAnnotationState.none;\n break;\n default:\n reviewState = PdfAnnotationState.unmarked;\n break;\n }\n return reviewState;\n };\n AnnotationRenderer.prototype.convertPixelToPoint = function (value) {\n return (value * 72 / 96);\n };\n AnnotationRenderer.prototype.convertPointToPixel = function (value) {\n return (value * 96 / 72);\n };\n AnnotationRenderer.prototype.isTransparentColor = function (fillColor) {\n var isWhite = fillColor && fillColor.r === 255 && fillColor.g === 255 && fillColor.b === 255;\n return fillColor && fillColor.a === 0 && isWhite;\n };\n AnnotationRenderer.prototype.getRDValues = function (values) {\n var rectDifference = [];\n for (var i = 0; i < values.length; i++) {\n rectDifference.push(parseFloat(values[parseInt(i.toString(), 10)]));\n }\n return rectDifference;\n };\n AnnotationRenderer.prototype.getRotateAngle = function (angleString) {\n var angle = PdfRotationAngle.angle0;\n switch (angleString) {\n case 'RotateAngle0':\n angle = PdfRotationAngle.angle0;\n break;\n case 'RotateAngle180':\n angle = PdfRotationAngle.angle180;\n break;\n case 'RotateAngle270':\n angle = PdfRotationAngle.angle270;\n break;\n case 'RotateAngle90':\n angle = PdfRotationAngle.angle90;\n break;\n }\n return angle;\n };\n /**\n * @private\n * @param inkAnnot\n * @param height\n * @param width\n * @param pageRotation\n * @param pageNumber\n * @param loadedPage\n * @returns\n */\n AnnotationRenderer.prototype.loadSignature = function (inkAnnot, height, width, pageRotation, pageNumber, loadedPage) {\n var signature = new SignatureAnnotationBase();\n var outputstring = '';\n if (!isNullOrUndefined(inkAnnot.inkPointsCollection)) {\n for (var index = 0; index < inkAnnot.inkPointsCollection.length; index++) {\n var inkList = inkAnnot.inkPointsCollection[parseInt(index.toString(), 10)];\n for (var j = 0; j < inkList.length; j += 2) {\n var x = void 0;\n var y = void 0;\n if (j === 0) {\n x = inkList[parseInt(j.toString(), 10)];\n y = height - inkList[j + 1];\n outputstring += 'M' + x + ',' + y + ' ';\n }\n else {\n x = inkList[parseInt(j.toString(), 10)];\n y = height - inkList[j + 1];\n outputstring += 'L' + x + ',' + y + ' ';\n }\n }\n }\n }\n signature.AnnotationType = 'Signature';\n signature.Bounds = this.getBounds(inkAnnot.bounds, width, height, pageRotation);\n signature.Opacity = inkAnnot.opacity;\n signature.Thickness = inkAnnot.border.width;\n signature.PathData = outputstring;\n signature.StrokeColor = 'rgba(' + inkAnnot.color[0] + ',' + inkAnnot.color[1] + ',' + inkAnnot.color[2] + ',' + (inkAnnot.color[3] ? inkAnnot.color[3] : 1) + ')';\n signature.PageNumber = pageNumber;\n signature.SignatureName = inkAnnot.name;\n return signature;\n };\n /**\n * @private\n * @param inkAnnot\n * @param height\n * @param width\n * @param pageRotation\n * @param pageNumber\n * @param loadedPage\n * @returns\n */\n AnnotationRenderer.prototype.loadInkAnnotation = function (inkAnnot, height, width, pageRotation, pageNumber, loadedPage) {\n var signature = new InkSignatureAnnotation();\n var outputstring = '';\n if (!isNullOrUndefined(inkAnnot.inkPointsCollection)) {\n for (var index = 0; index < inkAnnot.inkPointsCollection.length; index++) {\n var inkList = inkAnnot.inkPointsCollection[parseInt(index.toString(), 10)];\n for (var j = 0; j < inkList.length; j += 2) {\n var x = void 0;\n var y = void 0;\n if (inkAnnot._page.rotation == PdfRotationAngle.angle90) {\n x = inkList[j + 1];\n y = inkList[parseInt(j.toString(), 10)];\n }\n else if (inkAnnot._page.rotation == PdfRotationAngle.angle180) {\n x = inkAnnot._page.size[0] - inkList[parseInt(j.toString(), 10)];\n y = inkList[j + 1];\n }\n else if (inkAnnot._page.rotation == PdfRotationAngle.angle270) {\n x = inkAnnot._page.size[0] - inkList[j + 1];\n y = inkAnnot._page.size[1] - inkList[parseInt(j.toString(), 10)];\n }\n else {\n x = inkList[parseInt(j.toString(), 10)];\n y = inkAnnot._page.size[1] - inkList[j + 1];\n }\n if (j === 0) {\n outputstring += 'M' + x + ',' + y + ' ';\n }\n else {\n outputstring += 'L' + x + ',' + y + ' ';\n }\n }\n }\n }\n signature.Author = inkAnnot.author;\n signature.Subject = inkAnnot.subject;\n if (!isNullOrUndefined(inkAnnot.modifiedDate)) {\n signature.ModifiedDate = this.formatDate(inkAnnot.modifiedDate);\n }\n else {\n signature.ModifiedDate = this.formatDate(new Date());\n }\n signature.Note = this.getValidNoteContent(inkAnnot.text);\n for (var i = 0; i < inkAnnot.reviewHistory.count; i++) {\n signature.State = this.getStateString(inkAnnot.reviewHistory.at(parseInt(i.toString(), 10)).state);\n signature.StateModel = this.getStateModelString(inkAnnot.reviewHistory.at(parseInt(i.toString(), 10)).stateModel);\n }\n if (isNullOrUndefined(signature.State) || isNullOrUndefined(signature.StateModel)) {\n signature.State = 'Unmarked';\n signature.StateModel = 'None';\n }\n signature.Comments = new Array();\n for (var i = 0; i < inkAnnot.comments.count; i++) {\n var annot = this.loadPopupAnnotation(inkAnnot.comments.at(i), height, width, pageRotation);\n signature.Comments.push(annot);\n }\n if (inkAnnot.flags === PdfAnnotationFlag.locked) {\n signature.IsLocked = true;\n }\n else {\n signature.IsLocked = false;\n }\n if (inkAnnot.flags === PdfAnnotationFlag.readOnly) {\n signature.IsCommentLock = true;\n }\n else {\n signature.IsCommentLock = false;\n }\n signature.AnnotationType = 'Ink';\n signature.AnnotType = 'Ink';\n signature.Bounds = this.getBounds(inkAnnot.bounds, height, width, pageRotation);\n if (inkAnnot.bounds.y < 0) {\n var cropRect = new Rect(inkAnnot.bounds.x, loadedPage.cropBox[1] + inkAnnot.bounds.y, inkAnnot.bounds.width, inkAnnot.bounds.height);\n signature.Bounds = this.getBounds(cropRect, height, width, pageRotation);\n }\n signature.Opacity = inkAnnot.opacity;\n signature.Thickness = inkAnnot.border.width;\n signature.PathData = outputstring;\n signature.StrokeColor = 'rgba(' + inkAnnot.color[0] + ',' + inkAnnot.color[1] + ',' + inkAnnot.color[2] + ',' + (inkAnnot.color[3] ? inkAnnot.color[3] : 1) + ')';\n signature.PageNumber = pageNumber;\n signature.AnnotName = inkAnnot.name;\n if (inkAnnot._dictionary.has('CustomData') && !isNullOrUndefined(inkAnnot._dictionary.get('CustomData'))) {\n var customData = inkAnnot._dictionary.get('CustomData');\n if (customData != null) {\n signature.ExistingCustomData = JSON.stringify(customData);\n }\n }\n return signature;\n };\n /**\n * @param squareAnnot\n * @param height\n * @param width\n * @param pageRotation\n * @param shapeFreeText\n * @private\n */\n AnnotationRenderer.prototype.loadSquareAnnotation = function (squareAnnot, height, width, pageRotation, shapeFreeText) {\n var shapeAnnotation = new ShapeAnnotationBase();\n shapeAnnotation.ShapeAnnotationType = 'Square';\n shapeAnnotation.Author = squareAnnot.author;\n shapeAnnotation.AnnotName = squareAnnot.name;\n shapeAnnotation.Subject = squareAnnot.subject;\n if (!isNullOrUndefined(squareAnnot.modifiedDate)) {\n shapeAnnotation.ModifiedDate = this.formatDate(squareAnnot.modifiedDate);\n }\n else {\n shapeAnnotation.ModifiedDate = this.formatDate(new Date());\n }\n shapeAnnotation.Note = this.getValidNoteContent(squareAnnot.text);\n shapeAnnotation.Thickness = squareAnnot.border.width;\n shapeAnnotation.BorderStyle = this.getBorderStylesString(squareAnnot.border.style);\n shapeAnnotation.BorderDashArray = squareAnnot.border.dash ? squareAnnot.border.dash[0] ? squareAnnot.border.dash[0] : 0 : 0;\n shapeAnnotation.Opacity = squareAnnot.opacity;\n shapeAnnotation.RotateAngle = this.getRotateAngleString(squareAnnot.rotate);\n shapeAnnotation.AnnotType = 'shape';\n for (var i = 0; i < squareAnnot.reviewHistory.count; i++) {\n shapeAnnotation.State = this.getStateString(squareAnnot.reviewHistory.at(parseInt(i.toString(), 10)).state);\n shapeAnnotation.StateModel = this.getStateModelString(squareAnnot.reviewHistory.at(parseInt(i.toString(), 10)).stateModel);\n }\n if (isNullOrUndefined(shapeAnnotation.State) || isNullOrUndefined(shapeAnnotation.StateModel)) {\n shapeAnnotation.State = 'Unmarked';\n shapeAnnotation.StateModel = 'None';\n }\n shapeAnnotation.Comments = new Array();\n for (var i = 0; i < squareAnnot.comments.count; i++) {\n var annot = this.loadPopupAnnotation(squareAnnot.comments.at(i), height, width, pageRotation);\n shapeAnnotation.Comments.push(annot);\n }\n shapeAnnotation.Bounds = this.getBounds(squareAnnot.bounds, height, width, pageRotation);\n shapeAnnotation.LineHeadStart = 'None';\n shapeAnnotation.LineHeadEnd = 'None';\n if (!isNullOrUndefined(squareAnnot.borderEffect)) {\n if (squareAnnot.borderEffect.style === PdfBorderEffectStyle.cloudy) {\n shapeAnnotation.IsCloudShape = true;\n shapeAnnotation.CloudIntensity = squareAnnot.borderEffect.intensity;\n }\n else {\n shapeAnnotation.IsCloudShape = false;\n shapeAnnotation.CloudIntensity = 0;\n }\n }\n else {\n shapeAnnotation.IsCloudShape = false;\n shapeAnnotation.CloudIntensity = 0;\n }\n if (squareAnnot._dictionary.has('RD') && !isNullOrUndefined(squareAnnot._dictionary.get('RD'))) {\n shapeAnnotation.RectangleDifference = squareAnnot._dictionary.get('RD');\n }\n else {\n shapeAnnotation.RectangleDifference = new Array();\n }\n if (squareAnnot.flags === PdfAnnotationFlag.locked) {\n shapeAnnotation.IsLocked = true;\n }\n else {\n shapeAnnotation.IsLocked = false;\n }\n if (squareAnnot.flags === PdfAnnotationFlag.readOnly) {\n shapeAnnotation.IsCommentLock = true;\n }\n else {\n shapeAnnotation.IsCommentLock = false;\n }\n if (squareAnnot._annotFlags.toString().includes('Print')) {\n shapeAnnotation.IsPrint = true;\n }\n if (squareAnnot._dictionary.has('AllowedInteractions')) {\n var allowedInteractions = squareAnnot.getValues('AllowedInteractions');\n var text = allowedInteractions[0];\n shapeAnnotation.AllowedInteractions = JSON.parse(text);\n }\n shapeAnnotation.StrokeColor = !isNullOrUndefined(squareAnnot.color) ? 'rgba(' + squareAnnot.color[0] + ',' + squareAnnot.color[1] + ',' + squareAnnot.color[2] + ',' + (squareAnnot.color[3] ? squareAnnot.color[3] : 1) + ')' : 'rgba(0,0,0,1)';\n var fillOpacity = (!isNullOrUndefined(squareAnnot.color) && squareAnnot.color[3]) ? squareAnnot.color[3] : 1;\n if (squareAnnot._dictionary.has('FillOpacity') && !isNullOrUndefined(squareAnnot._dictionary.get('FillOpacity'))) {\n fillOpacity = parseInt(squareAnnot._dictionary.get('FillOpacity').toString(), 10);\n }\n fillOpacity = squareAnnot.innerColor ? fillOpacity : 0;\n squareAnnot.innerColor = squareAnnot.innerColor ? squareAnnot.innerColor : [255, 255, 255];\n shapeAnnotation.FillColor = 'rgba(' + squareAnnot.innerColor[0] + ',' + squareAnnot.innerColor[1] + ',' + squareAnnot.innerColor[2] + ',' + fillOpacity + ')';\n shapeAnnotation.EnableShapeLabel = false;\n if (shapeFreeText != null) {\n shapeAnnotation.EnableShapeLabel = true;\n shapeAnnotation.LabelContent = shapeFreeText.text;\n shapeAnnotation.LabelFillColor = 'rgba(' + shapeFreeText.color[0] + ',' + shapeFreeText.color[1] + ',' + shapeFreeText.color[2] + ',' + (shapeFreeText.color[3] ? shapeFreeText.color[3] : 1) + ')';\n shapeAnnotation.FontColor = 'rgba(' + shapeFreeText.textMarkUpColor[0] + ',' + shapeFreeText.textMarkUpColor[1] + ',' + shapeFreeText.textMarkUpColor[2] + ',' + (shapeFreeText.textMarkUpColor[3] ? shapeFreeText.textMarkUpColor[3] : 1) + ')';\n shapeAnnotation.LabelBorderColor = 'rgba(' + shapeFreeText.borderColor[0] + ',' + shapeFreeText.borderColor[1] + ',' + shapeFreeText.borderColor[2] + ',' + (shapeFreeText.borderColor[3] ? shapeFreeText.borderColor[3] : 1) + ')';\n shapeAnnotation.FontSize = shapeFreeText.font.size;\n }\n if (squareAnnot._dictionary.has('CustomData') && !isNullOrUndefined(squareAnnot._dictionary.get('CustomData'))) {\n var customData = squareAnnot._dictionary.get('CustomData');\n if (customData != null) {\n shapeAnnotation.ExistingCustomData = JSON.stringify(customData);\n }\n }\n return shapeAnnotation;\n };\n // eslint-disable-next-line max-len\n /**\n * @param lineAnnot\n * @param height\n * @param width\n * @param pageRotation\n * @param shapeFreeText\n * @private\n */\n AnnotationRenderer.prototype.loadLineAnnotation = function (lineAnnot, height, width, pageRotation, shapeFreeText) {\n var shapeAnnotation = new ShapeAnnotationBase();\n shapeAnnotation.ShapeAnnotationType = 'Line';\n shapeAnnotation.Author = lineAnnot.author;\n shapeAnnotation.AnnotName = lineAnnot.name;\n shapeAnnotation.Subject = lineAnnot.subject;\n if (!isNullOrUndefined(lineAnnot.modifiedDate)) {\n shapeAnnotation.ModifiedDate = this.formatDate(lineAnnot.modifiedDate);\n }\n else {\n shapeAnnotation.ModifiedDate = this.formatDate(new Date());\n }\n shapeAnnotation.Note = this.getValidNoteContent(lineAnnot.text);\n shapeAnnotation.Thickness = lineAnnot.border.width;\n shapeAnnotation.BorderStyle = this.getBorderStylesString(lineAnnot.border.style);\n shapeAnnotation.BorderDashArray = lineAnnot.border.dash ? lineAnnot.border.dash[0] ? lineAnnot.border.dash[0] : 0 : 0;\n shapeAnnotation.Opacity = lineAnnot.opacity;\n shapeAnnotation.RotateAngle = this.getRotateAngleString(lineAnnot.rotate);\n shapeAnnotation.AnnotType = 'shape';\n shapeAnnotation.EnableShapeLabel = false;\n if (shapeFreeText != null) {\n shapeAnnotation.EnableShapeLabel = true;\n shapeAnnotation.LabelContent = shapeFreeText.text;\n shapeAnnotation.LabelFillColor = 'rgba(' + shapeFreeText.color[0] + ',' + shapeFreeText.color[1] + ',' + shapeFreeText.color[2] + ',' + (shapeFreeText.color[3] ? shapeFreeText.color[3] : 1) + ')';\n shapeAnnotation.FontColor = 'rgba(' + shapeFreeText.textMarkUpColor[0] + ',' + shapeFreeText.textMarkUpColor[1] + ',' + shapeFreeText.textMarkUpColor[2] + ',' + (shapeFreeText.textMarkUpColor[3] ? shapeFreeText.textMarkUpColor[3] : 1) + ')';\n shapeAnnotation.LabelBorderColor = 'rgba(' + shapeFreeText.borderColor[0] + ',' + shapeFreeText.borderColor[1] + ',' + shapeFreeText.borderColor[2] + ',' + (shapeFreeText.borderColor[3] ? shapeFreeText.borderColor[3] : 1) + ')';\n shapeAnnotation.FontSize = shapeFreeText.font.size;\n }\n for (var i = 0; i < lineAnnot.reviewHistory.count; i++) {\n shapeAnnotation.State = this.getStateString(lineAnnot.reviewHistory.at(parseInt(i.toString(), 10)).state);\n shapeAnnotation.StateModel = this.getStateModelString(lineAnnot.reviewHistory.at(parseInt(i.toString(), 10)).stateModel);\n }\n if (isNullOrUndefined(shapeAnnotation.State) || isNullOrUndefined(shapeAnnotation.StateModel)) {\n shapeAnnotation.State = 'Unmarked';\n shapeAnnotation.StateModel = 'None';\n }\n shapeAnnotation.Comments = new Array();\n for (var i = 0; i < lineAnnot.comments.count; i++) {\n var annot = this.loadPopupAnnotation(lineAnnot.comments.at(i), height, width, pageRotation);\n shapeAnnotation.Comments.push(annot);\n }\n shapeAnnotation.Bounds = this.getBounds(lineAnnot.bounds, height, width, pageRotation);\n shapeAnnotation.LineHeadStart = this.getLineEndingStyleString(lineAnnot.lineEndingStyle.begin);\n shapeAnnotation.LineHeadEnd = this.getLineEndingStyleString(lineAnnot.lineEndingStyle.end);\n if (!isNullOrUndefined(lineAnnot._borderEffect)) {\n if (lineAnnot._borderEffect.style === PdfBorderEffectStyle.cloudy) {\n shapeAnnotation.IsCloudShape = true;\n shapeAnnotation.CloudIntensity = lineAnnot._borderEffect.intensity;\n }\n else {\n shapeAnnotation.IsCloudShape = false;\n shapeAnnotation.CloudIntensity = 0;\n }\n }\n else {\n shapeAnnotation.IsCloudShape = false;\n shapeAnnotation.CloudIntensity = 0;\n }\n var indent = this.getLineIndentString(lineAnnot.lineIntent);\n shapeAnnotation.VertexPoints = this.getLinePoints(lineAnnot.linePoints, height, width, pageRotation, lineAnnot._page);\n if (lineAnnot._dictionary.has('RD') && !isNullOrUndefined(lineAnnot._dictionary.get('RD'))) {\n shapeAnnotation.RectangleDifference = lineAnnot._dictionary.get('RD');\n }\n else {\n shapeAnnotation.RectangleDifference = new Array();\n }\n if (lineAnnot.flags === PdfAnnotationFlag.locked) {\n shapeAnnotation.IsLocked = true;\n }\n else {\n shapeAnnotation.IsLocked = false;\n }\n if (lineAnnot.flags === PdfAnnotationFlag.readOnly) {\n shapeAnnotation.IsCommentLock = true;\n }\n else {\n shapeAnnotation.IsCommentLock = false;\n }\n if (lineAnnot._annotFlags.toString().includes('Print')) {\n shapeAnnotation.IsPrint = true;\n }\n if (lineAnnot._dictionary.has('AllowedInteractions')) {\n var allowedInteractions = lineAnnot.getValues('AllowedInteractions');\n var text = allowedInteractions[0];\n shapeAnnotation.AllowedInteractions = JSON.parse(text);\n }\n var color = !isNullOrUndefined(lineAnnot.color) ? lineAnnot.color : [0, 0, 0];\n shapeAnnotation.StrokeColor = 'rgba(' + color[0] + ',' + color[1] + ',' + color[2] + ',' + (color[3] ? color[3] : 1) + ')';\n var fillOpacity = lineAnnot.color && lineAnnot.color[3] ? lineAnnot.color[3] : 1;\n if (lineAnnot._dictionary.has('FillOpacity') && !isNullOrUndefined(lineAnnot._dictionary.get('FillOpacity'))) {\n fillOpacity = parseInt(lineAnnot._dictionary.get('FillOpacity').toString(), 10);\n }\n fillOpacity = lineAnnot.innerColor ? fillOpacity : 0;\n lineAnnot.innerColor = lineAnnot.innerColor ? lineAnnot.innerColor : [255, 255, 255];\n shapeAnnotation.FillColor = 'rgba(' + lineAnnot.innerColor[0] + ',' + lineAnnot.innerColor[1] + ',' + lineAnnot.innerColor[2] + ',' + fillOpacity + ')';\n if (lineAnnot._dictionary.has('CustomData') && !isNullOrUndefined(lineAnnot._dictionary.get('CustomData'))) {\n var customData = lineAnnot._dictionary.get('CustomData');\n if (customData != null) {\n shapeAnnotation.ExistingCustomData = JSON.stringify(customData);\n }\n }\n if (lineAnnot.lineIntent === PdfLineIntent.lineArrow || !lineAnnot._dictionary.has('Measure')) {\n return shapeAnnotation;\n }\n else {\n var measureShapeAnnotation = new MeasureShapeAnnotationBase(shapeAnnotation);\n if (lineAnnot._dictionary.has('Measure')) {\n measureShapeAnnotation.Calibrate = this.getMeasureObject(lineAnnot);\n }\n measureShapeAnnotation.Indent = lineAnnot.lineIntent.toString();\n measureShapeAnnotation.Caption = lineAnnot.caption.cap;\n measureShapeAnnotation.LeaderLength = lineAnnot.leaderExt;\n measureShapeAnnotation.LeaderLineExtension = lineAnnot.leaderLine;\n measureShapeAnnotation.ExistingCustomData = shapeAnnotation.ExistingCustomData;\n if (lineAnnot._dictionary.has('LLO')) {\n measureShapeAnnotation.LeaderLineOffset = lineAnnot._dictionary.get('LLO');\n }\n else {\n measureShapeAnnotation.LeaderLineOffset = 0;\n }\n measureShapeAnnotation.CaptionPosition = lineAnnot.caption.type.toString();\n if (lineAnnot.flags === PdfAnnotationFlag.readOnly) {\n measureShapeAnnotation.IsCommentLock = true;\n }\n else {\n measureShapeAnnotation.IsCommentLock = false;\n }\n if (lineAnnot.flags === PdfAnnotationFlag.print) {\n measureShapeAnnotation.IsPrint = true;\n }\n if (lineAnnot._dictionary.has('CustomData') && !isNullOrUndefined(lineAnnot._dictionary.get('CustomData'))) {\n var customData = lineAnnot._dictionary.get('CustomData');\n if (customData != null) {\n measureShapeAnnotation.ExistingCustomData = JSON.stringify(customData);\n }\n }\n return measureShapeAnnotation;\n }\n };\n AnnotationRenderer.prototype.getLinePoints = function (points, pageHeight, pageWidth, pageRotation, page) {\n var linePoints = [];\n var startingPoint = new AnnotPoint(points[0], points[1]);\n var endingPoint = new AnnotPoint(points[2], points[3]);\n var cropBox = this.getBothCropBoxValue(page);\n var cropBoxX = 0;\n var cropBoxY = 0;\n if (!(cropBox[0] == 0 && page.cropBox[2] == page.size[2] && cropBox[1] == page.size[3])) {\n cropBoxX = cropBox[0];\n cropBoxY = cropBox[1];\n }\n if (pageRotation == 0) {\n startingPoint = { X: this.convertPointToPixel(points[0]) - this.convertPointToPixel(cropBoxX), Y: (pageHeight - this.convertPointToPixel(points[1])) + this.convertPointToPixel(cropBoxY) };\n endingPoint = { X: this.convertPointToPixel(points[2]) - this.convertPointToPixel(cropBoxX), Y: (pageHeight - this.convertPointToPixel(points[3])) + this.convertPointToPixel(cropBoxY) };\n }\n else if (pageRotation == 1) {\n startingPoint = { X: this.convertPointToPixel(points[1]), Y: this.convertPointToPixel(points[0]) };\n endingPoint = { X: this.convertPointToPixel(points[3]), Y: this.convertPointToPixel(points[2]) };\n }\n else if (pageRotation == 2) {\n startingPoint = { X: pageWidth - this.convertPointToPixel(points[0]), Y: this.convertPointToPixel(points[1]) };\n endingPoint = { X: pageWidth - this.convertPointToPixel(points[2]), Y: this.convertPointToPixel(points[3]) };\n }\n else if (pageRotation == 3) {\n startingPoint = { X: (pageWidth - this.convertPointToPixel(points[1])), Y: (pageHeight - this.convertPointToPixel(points[0])) };\n endingPoint = { X: pageWidth - this.convertPointToPixel(points[3]), Y: pageHeight - this.convertPointToPixel(points[2]) };\n }\n linePoints.push(startingPoint);\n linePoints.push(endingPoint);\n return linePoints;\n };\n /**\n * @param ellipseAnnot\n * @param height\n * @param width\n * @param pageRotation\n * @param shapeFreeText\n * @private\n */\n AnnotationRenderer.prototype.loadEllipseAnnotation = function (ellipseAnnot, height, width, pageRotation, shapeFreeText) {\n var shapeAnnotation = new ShapeAnnotationBase();\n shapeAnnotation.ShapeAnnotationType = 'Circle';\n shapeAnnotation.Author = ellipseAnnot.author;\n shapeAnnotation.AnnotName = ellipseAnnot.name;\n shapeAnnotation.Subject = ellipseAnnot.subject;\n if (!isNullOrUndefined(ellipseAnnot.modifiedDate)) {\n shapeAnnotation.ModifiedDate = this.formatDate(ellipseAnnot.modifiedDate);\n }\n else {\n shapeAnnotation.ModifiedDate = this.formatDate(new Date());\n }\n shapeAnnotation.Note = this.getValidNoteContent(ellipseAnnot.text);\n shapeAnnotation.Thickness = ellipseAnnot.border.width;\n shapeAnnotation.BorderStyle = this.getBorderStylesString(ellipseAnnot.border.style);\n shapeAnnotation.BorderDashArray = ellipseAnnot.border.dash ? ellipseAnnot.border.dash[0] ? ellipseAnnot.border.dash[0] : 0 : 0;\n shapeAnnotation.Opacity = ellipseAnnot.opacity;\n shapeAnnotation.RotateAngle = this.getRotateAngleString(ellipseAnnot.rotate);\n shapeAnnotation.AnnotType = 'shape';\n for (var i = 0; i < ellipseAnnot.reviewHistory.count; i++) {\n shapeAnnotation.State = this.getStateString(ellipseAnnot.reviewHistory.at(parseInt(i.toString(), 10)).state);\n shapeAnnotation.StateModel = this.getStateModelString(ellipseAnnot.reviewHistory.at(parseInt(i.toString(), 10)).stateModel);\n }\n if (isNullOrUndefined(shapeAnnotation.State) || isNullOrUndefined(shapeAnnotation.StateModel)) {\n shapeAnnotation.State = 'Unmarked';\n shapeAnnotation.StateModel = 'None';\n }\n shapeAnnotation.Comments = new Array();\n for (var i = 0; i < ellipseAnnot.comments.count; i++) {\n var annot = this.loadPopupAnnotation(ellipseAnnot.comments.at(i), height, width, pageRotation);\n shapeAnnotation.Comments.push(annot);\n }\n shapeAnnotation.Bounds = this.getBounds(ellipseAnnot.bounds, height, width, pageRotation);\n shapeAnnotation.LineHeadStart = 'None';\n shapeAnnotation.LineHeadEnd = 'None';\n if (!isNullOrUndefined(ellipseAnnot._borderEffect)) {\n if (ellipseAnnot._borderEffect.style === PdfBorderEffectStyle.cloudy) {\n shapeAnnotation.IsCloudShape = true;\n shapeAnnotation.CloudIntensity = ellipseAnnot._borderEffect.intensity;\n }\n else {\n shapeAnnotation.IsCloudShape = false;\n shapeAnnotation.CloudIntensity = 0;\n }\n }\n else {\n shapeAnnotation.IsCloudShape = false;\n shapeAnnotation.CloudIntensity = 0;\n }\n if (ellipseAnnot._dictionary.has('RD') && !isNullOrUndefined(ellipseAnnot._dictionary.get('RD'))) {\n shapeAnnotation.RectangleDifference = ellipseAnnot._dictionary.get('RD');\n }\n else {\n shapeAnnotation.RectangleDifference = new Array();\n }\n if (ellipseAnnot.flags === PdfAnnotationFlag.locked) {\n shapeAnnotation.IsLocked = true;\n }\n else {\n shapeAnnotation.IsLocked = false;\n }\n if (ellipseAnnot.flags === PdfAnnotationFlag.readOnly) {\n shapeAnnotation.IsCommentLock = true;\n }\n else {\n shapeAnnotation.IsCommentLock = false;\n }\n if (ellipseAnnot._annotFlags.toString().includes('Print')) {\n shapeAnnotation.IsPrint = true;\n }\n if (ellipseAnnot._dictionary.has('AllowedInteractions')) {\n var allowedInteractions = ellipseAnnot.getValues('AllowedInteractions');\n var text = allowedInteractions[0];\n shapeAnnotation.AllowedInteractions = JSON.parse(text);\n }\n shapeAnnotation.StrokeColor = 'rgba(' + ellipseAnnot.color[0] + ',' + ellipseAnnot.color[1] + ',' + ellipseAnnot.color[2] + ',' + (ellipseAnnot.color[3] ? ellipseAnnot.color[3] : 1) + ')';\n var fillOpacity = ellipseAnnot.color[3] ? ellipseAnnot.color[3] : 1;\n if (ellipseAnnot._dictionary.has('FillOpacity') && !isNullOrUndefined(ellipseAnnot._dictionary.get('FillOpacity'))) {\n fillOpacity = parseInt(ellipseAnnot._dictionary.get('FillOpacity').toString(), 10);\n }\n fillOpacity = ellipseAnnot.innerColor ? fillOpacity : 0;\n ellipseAnnot.innerColor = ellipseAnnot.innerColor ? ellipseAnnot.innerColor : [255, 255, 255];\n shapeAnnotation.FillColor = 'rgba(' + ellipseAnnot.innerColor[0] + ',' + ellipseAnnot.innerColor[1] + ',' + ellipseAnnot.innerColor[2] + ',' + fillOpacity + ')';\n shapeAnnotation.EnableShapeLabel = false;\n if (shapeFreeText != null) {\n shapeAnnotation.EnableShapeLabel = true;\n shapeAnnotation.LabelContent = shapeFreeText.text;\n shapeAnnotation.LabelFillColor = 'rgba(' + shapeFreeText.color[0] + ',' + shapeFreeText.color[1] + ',' + shapeFreeText.color[2] + ',' + (shapeFreeText.color[3] ? shapeFreeText.color[3] : 1) + ')';\n shapeAnnotation.FontColor = 'rgba(' + shapeFreeText.textMarkUpColor[0] + ',' + shapeFreeText.textMarkUpColor[1] + ',' + shapeFreeText.textMarkUpColor[2] + ',' + (shapeFreeText.textMarkUpColor[3] ? shapeFreeText.textMarkUpColor[3] : 1) + ')';\n shapeAnnotation.LabelBorderColor = 'rgba(' + shapeFreeText.borderColor[0] + ',' + shapeFreeText.borderColor[1] + ',' + shapeFreeText.borderColor[2] + ',' + (shapeFreeText.borderColor[3] ? shapeFreeText.borderColor[3] : 1) + ')';\n shapeAnnotation.FontSize = shapeFreeText.font.size;\n }\n if (ellipseAnnot._dictionary.has('CustomData') && !isNullOrUndefined(ellipseAnnot._dictionary.get('CustomData'))) {\n var customData = ellipseAnnot._dictionary.get('CustomData');\n if (customData != null) {\n shapeAnnotation.ExistingCustomData = JSON.stringify(customData);\n }\n }\n if (ellipseAnnot._dictionary.has('Measure')) {\n shapeAnnotation.FillColor = 'rgba(' + ellipseAnnot.innerColor[0] + ',' + ellipseAnnot.innerColor[1] + ',' + ellipseAnnot.innerColor[2] + ',' + fillOpacity + ')';\n var measureShapeAnnotation = new MeasureShapeAnnotationBase(shapeAnnotation);\n measureShapeAnnotation.Calibrate = this.getMeasureObject(ellipseAnnot);\n if (ellipseAnnot._dictionary.has('IT')) {\n measureShapeAnnotation.Indent = ellipseAnnot._dictionary.get('IT');\n }\n else {\n measureShapeAnnotation.Indent = 'PolyLineDimension';\n }\n measureShapeAnnotation.Caption = false;\n measureShapeAnnotation.LeaderLength = 0;\n measureShapeAnnotation.LeaderLineExtension = 0;\n measureShapeAnnotation.LeaderLineOffset = 0;\n measureShapeAnnotation.CaptionPosition = '';\n if (ellipseAnnot.flags === PdfAnnotationFlag.readOnly) {\n measureShapeAnnotation.IsCommentLock = true;\n }\n else {\n measureShapeAnnotation.IsCommentLock = false;\n }\n if (ellipseAnnot.flags === PdfAnnotationFlag.print) {\n measureShapeAnnotation.IsPrint = true;\n }\n if (ellipseAnnot._dictionary.has('CustomData') && !isNullOrUndefined(ellipseAnnot._dictionary.get('CustomData'))) {\n var customData = ellipseAnnot._dictionary.get('CustomData');\n if (customData != null) {\n measureShapeAnnotation.ExistingCustomData = JSON.stringify(customData);\n }\n }\n return measureShapeAnnotation;\n }\n else {\n return shapeAnnotation;\n }\n };\n /**\n * @param polygonAnnot\n * @param height\n * @param width\n * @param pageRotation\n * @param shapeFreeText\n * @private\n */\n AnnotationRenderer.prototype.loadPolygonAnnotation = function (polygonAnnot, height, width, pageRotation, shapeFreeText) {\n var shapeAnnotation = new ShapeAnnotationBase();\n shapeAnnotation.ShapeAnnotationType = 'Polygon';\n shapeAnnotation.Author = polygonAnnot.author;\n shapeAnnotation.AnnotName = polygonAnnot.name;\n shapeAnnotation.Subject = polygonAnnot.subject;\n if (!isNullOrUndefined(polygonAnnot.modifiedDate)) {\n shapeAnnotation.ModifiedDate = this.formatDate(polygonAnnot.modifiedDate);\n }\n else {\n shapeAnnotation.ModifiedDate = this.formatDate(new Date());\n }\n shapeAnnotation.Note = this.getValidNoteContent(polygonAnnot.text);\n shapeAnnotation.Thickness = polygonAnnot.border.width;\n shapeAnnotation.BorderStyle = this.getBorderStylesString(polygonAnnot.border.style);\n shapeAnnotation.BorderDashArray = polygonAnnot.border.dash ? polygonAnnot.border.dash[0] ? polygonAnnot.border.dash[0] : 0 : 0;\n shapeAnnotation.Opacity = polygonAnnot.opacity;\n shapeAnnotation.RotateAngle = this.getRotateAngleString(polygonAnnot.rotate);\n shapeAnnotation.AnnotType = 'shape';\n for (var i = 0; i < polygonAnnot.reviewHistory.count; i++) {\n shapeAnnotation.State = this.getStateString(polygonAnnot.reviewHistory.at(parseInt(i.toString(), 10)).state);\n shapeAnnotation.StateModel = this.getStateModelString(polygonAnnot.reviewHistory.at(parseInt(i.toString(), 10)).stateModel);\n }\n if (isNullOrUndefined(shapeAnnotation.State) || isNullOrUndefined(shapeAnnotation.StateModel)) {\n shapeAnnotation.State = 'Unmarked';\n shapeAnnotation.StateModel = 'None';\n }\n shapeAnnotation.Comments = new Array();\n for (var i = 0; i < polygonAnnot.comments.count; i++) {\n var annot = this.loadPopupAnnotation(polygonAnnot.comments.at(i), height, width, pageRotation);\n shapeAnnotation.Comments.push(annot);\n }\n shapeAnnotation.Bounds = this.getBounds(polygonAnnot.bounds, height, width, pageRotation);\n if (!isNullOrUndefined(polygonAnnot._dictionary.get('Vertices'))) {\n shapeAnnotation.VertexPoints = this.getVertexPoints(polygonAnnot._dictionary.get('Vertices'), width, height, pageRotation, polygonAnnot._page);\n }\n if (!isNullOrUndefined(shapeAnnotation.VertexPoints) && shapeAnnotation.VertexPoints[0] !== shapeAnnotation.VertexPoints[shapeAnnotation.VertexPoints.length - 1]) {\n shapeAnnotation.VertexPoints.push(shapeAnnotation.VertexPoints[0]);\n }\n shapeAnnotation.StrokeColor = 'rgba(' + polygonAnnot.color[0] + ',' + polygonAnnot.color[1] + ',' + polygonAnnot.color[2] + ',' + (polygonAnnot.color[3] ? polygonAnnot.color[3] : 1) + ')';\n var fillOpacity = polygonAnnot.color[3] ? polygonAnnot.color[3] : 1;\n if (polygonAnnot._dictionary.has('FillOpacity') && !isNullOrUndefined(polygonAnnot._dictionary.get('FillOpacity'))) {\n fillOpacity = parseInt(polygonAnnot._dictionary.get('FillOpacity').toString(), 10);\n }\n fillOpacity = polygonAnnot.innerColor ? fillOpacity : 0;\n polygonAnnot.innerColor = polygonAnnot.innerColor ? polygonAnnot.innerColor : [255, 255, 255];\n shapeAnnotation.FillColor = 'rgba(' + polygonAnnot.innerColor[0] + ',' + polygonAnnot.innerColor[1] + ',' + polygonAnnot.innerColor[2] + ',' + fillOpacity + ')';\n shapeAnnotation.LineHeadStart = 'None';\n shapeAnnotation.LineHeadEnd = 'None';\n shapeAnnotation.EnableShapeLabel = false;\n if (shapeFreeText != null) {\n shapeAnnotation.EnableShapeLabel = true;\n shapeAnnotation.LabelContent = shapeFreeText.text;\n shapeAnnotation.LabelFillColor = 'rgba(' + shapeFreeText.color[0] + ',' + shapeFreeText.color[1] + ',' + shapeFreeText.color[2] + ',' + (shapeFreeText.color[3] ? shapeFreeText.color[3] : 1) + ')';\n shapeAnnotation.FontColor = 'rgba(' + shapeFreeText.textMarkUpColor[0] + ',' + shapeFreeText.textMarkUpColor[1] + ',' + shapeFreeText.textMarkUpColor[2] + ',' + (shapeFreeText.textMarkUpColor[3] ? shapeFreeText.textMarkUpColor[3] : 1) + ')';\n shapeAnnotation.LabelBorderColor = 'rgba(' + shapeFreeText.borderColor[0] + ',' + shapeFreeText.borderColor[1] + ',' + shapeFreeText.borderColor[2] + ',' + (shapeFreeText.borderColor[3] ? shapeFreeText.borderColor[3] : 1) + ')';\n shapeAnnotation.FontSize = shapeFreeText.font.size;\n }\n if (!isNullOrUndefined(polygonAnnot.borderEffect)) {\n if (polygonAnnot.borderEffect.style === PdfBorderEffectStyle.cloudy) {\n shapeAnnotation.IsCloudShape = true;\n shapeAnnotation.CloudIntensity = polygonAnnot.borderEffect.intensity;\n }\n else {\n shapeAnnotation.IsCloudShape = false;\n shapeAnnotation.CloudIntensity = 0;\n }\n }\n else {\n shapeAnnotation.IsCloudShape = false;\n shapeAnnotation.CloudIntensity = 0;\n }\n if (polygonAnnot._dictionary.has('RD') && !isNullOrUndefined(polygonAnnot._dictionary.get('RD'))) {\n shapeAnnotation.RectangleDifference = polygonAnnot._dictionary.get('RD');\n }\n else {\n shapeAnnotation.RectangleDifference = new Array();\n }\n if (polygonAnnot.flags === PdfAnnotationFlag.locked) {\n shapeAnnotation.IsLocked = true;\n }\n else {\n shapeAnnotation.IsLocked = false;\n }\n if (polygonAnnot.flags === PdfAnnotationFlag.readOnly) {\n shapeAnnotation.IsCommentLock = true;\n }\n else {\n shapeAnnotation.IsCommentLock = false;\n }\n if (polygonAnnot.flags === PdfAnnotationFlag.print) {\n shapeAnnotation.IsPrint = true;\n }\n if (polygonAnnot._dictionary.has('CustomData') && !isNullOrUndefined(polygonAnnot._dictionary.get('CustomData'))) {\n var customData = polygonAnnot._dictionary.get('CustomData');\n if (customData != null) {\n shapeAnnotation.ExistingCustomData = JSON.stringify(customData);\n }\n }\n if (polygonAnnot._dictionary.has('AllowedInteractions')) {\n var allowedInteractions = polygonAnnot.getValues('AllowedInteractions');\n var text = allowedInteractions[0];\n shapeAnnotation.AllowedInteractions = JSON.parse(text);\n }\n if (polygonAnnot._dictionary.has('Measure')) {\n var measureShapeAnnotation = new MeasureShapeAnnotationBase(shapeAnnotation);\n if (polygonAnnot._dictionary.has('IT') && !isNullOrUndefined(polygonAnnot._dictionary.get('IT'))) {\n measureShapeAnnotation.Indent = polygonAnnot._dictionary.get('IT').name;\n }\n else {\n measureShapeAnnotation.Indent = 'PolygonDimension';\n }\n measureShapeAnnotation.Calibrate = this.getMeasureObject(polygonAnnot);\n if (isNullOrUndefined(measureShapeAnnotation.Calibrate)) {\n return shapeAnnotation;\n }\n if (measureShapeAnnotation.Indent === 'PolygonVolume' && polygonAnnot._dictionary.has('Depth') && (!isNullOrUndefined(polygonAnnot._dictionary.get('Depth')))) {\n measureShapeAnnotation.Calibrate.Depth = polygonAnnot._dictionary.get('Depth');\n }\n measureShapeAnnotation.Caption = false;\n measureShapeAnnotation.LeaderLength = 0;\n measureShapeAnnotation.LeaderLineExtension = 0;\n measureShapeAnnotation.LeaderLineOffset = 0;\n measureShapeAnnotation.CaptionPosition = '';\n if (polygonAnnot.flags === PdfAnnotationFlag.readOnly) {\n measureShapeAnnotation.IsCommentLock = true;\n }\n else {\n measureShapeAnnotation.IsCommentLock = false;\n }\n if (polygonAnnot.flags === PdfAnnotationFlag.print) {\n measureShapeAnnotation.IsPrint = true;\n }\n if (polygonAnnot._dictionary.has('CustomData') && !isNullOrUndefined(polygonAnnot._dictionary.get('CustomData'))) {\n var customData = polygonAnnot._dictionary.get('CustomData');\n if (isNullOrUndefined(customData)) {\n measureShapeAnnotation.ExistingCustomData = JSON.stringify(customData);\n }\n }\n return measureShapeAnnotation;\n }\n else {\n return shapeAnnotation;\n }\n };\n /**\n * @param polyLineAnnot\n * @param height\n * @param width\n * @param pageRotation\n * @param shapeFreeText\n * @private\n */\n // eslint-disable-next-line max-len\n AnnotationRenderer.prototype.loadPolylineAnnotation = function (polyLineAnnot, height, width, pageRotation, shapeFreeText) {\n var shapeAnnotation = new ShapeAnnotationBase();\n shapeAnnotation.ShapeAnnotationType = 'Polyline';\n shapeAnnotation.Author = polyLineAnnot.author;\n shapeAnnotation.AnnotName = polyLineAnnot.name;\n shapeAnnotation.Subject = polyLineAnnot.subject;\n if (!isNullOrUndefined(polyLineAnnot.modifiedDate)) {\n shapeAnnotation.ModifiedDate = this.formatDate(polyLineAnnot.modifiedDate);\n }\n else {\n shapeAnnotation.ModifiedDate = this.formatDate(new Date());\n }\n shapeAnnotation.Note = this.getValidNoteContent(polyLineAnnot.text);\n shapeAnnotation.Thickness = polyLineAnnot.border.width;\n shapeAnnotation.BorderStyle = this.getBorderStylesString(polyLineAnnot.border.style);\n shapeAnnotation.BorderDashArray = polyLineAnnot.border.dash ? polyLineAnnot.border.dash[0] ? polyLineAnnot.border.dash[0] : 0 : 0;\n shapeAnnotation.Opacity = polyLineAnnot.opacity;\n shapeAnnotation.RotateAngle = this.getRotateAngleString(polyLineAnnot.rotate);\n shapeAnnotation.AnnotType = 'shape';\n if (!isNullOrUndefined(polyLineAnnot.reviewHistory)) {\n for (var i = 0; i < polyLineAnnot.reviewHistory.count; i++) {\n shapeAnnotation.State = this.getStateString(polyLineAnnot.reviewHistory.at(parseInt(i.toString(), 10)).state);\n shapeAnnotation.StateModel = this.getStateModelString(polyLineAnnot.reviewHistory.at(parseInt(i.toString(), 10)).stateModel);\n }\n }\n if (isNullOrUndefined(shapeAnnotation.State) || isNullOrUndefined(shapeAnnotation.StateModel)) {\n shapeAnnotation.State = 'Unmarked';\n shapeAnnotation.StateModel = 'None';\n }\n shapeAnnotation.Comments = new Array();\n if (!isNullOrUndefined(polyLineAnnot.comments)) {\n for (var i = 0; i < polyLineAnnot.comments.count; i++) {\n var annot = this.loadPopupAnnotation(polyLineAnnot.comments.at(i), height, width, pageRotation);\n shapeAnnotation.Comments.push(annot);\n }\n }\n shapeAnnotation.Bounds = this.getBounds(polyLineAnnot.bounds, height, width, pageRotation);\n if (!isNullOrUndefined(polyLineAnnot._dictionary.get('Vertices'))) {\n shapeAnnotation.VertexPoints = this.getVertexPoints(polyLineAnnot._dictionary.get('Vertices'), width, height, pageRotation, polyLineAnnot._page);\n }\n shapeAnnotation.StrokeColor = 'rgba(' + polyLineAnnot.color[0] + ',' + polyLineAnnot.color[1] + ',' + polyLineAnnot.color[2] + ',' + (polyLineAnnot.color[3] ? polyLineAnnot.color[3] : 1) + ')';\n var fillOpacity = polyLineAnnot.color[3] ? polyLineAnnot.color[3] : 1;\n if (polyLineAnnot._dictionary.has('FillOpacity') && !isNullOrUndefined(polyLineAnnot._dictionary.get('FillOpacity'))) {\n fillOpacity = parseInt(polyLineAnnot._dictionary.get('FillOpacity').toString(), 10);\n }\n fillOpacity = polyLineAnnot.innerColor ? fillOpacity : 0;\n polyLineAnnot.innerColor = polyLineAnnot.innerColor ? polyLineAnnot.innerColor : [255, 255, 255];\n shapeAnnotation.FillColor = 'rgba(' + polyLineAnnot.innerColor[0] + ',' + polyLineAnnot.innerColor[1] + ',' + polyLineAnnot.innerColor[2] + ',' + fillOpacity + ')';\n shapeAnnotation.LineHeadStart = this.getLineEndingStyleString(polyLineAnnot.beginLineStyle);\n shapeAnnotation.LineHeadEnd = this.getLineEndingStyleString(polyLineAnnot.endLineStyle);\n shapeAnnotation.EnableShapeLabel = false;\n if (shapeFreeText != null) {\n shapeAnnotation.EnableShapeLabel = true;\n shapeAnnotation.LabelContent = shapeFreeText.text;\n shapeAnnotation.LabelFillColor = 'rgba(' + shapeFreeText.color[0] + ',' + shapeFreeText.color[1] + ',' + shapeFreeText.color[2] + ',' + (shapeFreeText.color[3] ? shapeFreeText.color[3] : 1) + ')';\n shapeAnnotation.FontColor = 'rgba(' + shapeFreeText.textMarkUpColor[0] + ',' + shapeFreeText.textMarkUpColor[1] + ',' + shapeFreeText.textMarkUpColor[2] + ',' + (shapeFreeText.textMarkUpColor[3] ? shapeFreeText.textMarkUpColor[3] : 1) + ')';\n shapeAnnotation.LabelBorderColor = 'rgba(' + shapeFreeText.borderColor[0] + ',' + shapeFreeText.borderColor[1] + ',' + shapeFreeText.borderColor[2] + ',' + (shapeFreeText.borderColor[3] ? shapeFreeText.borderColor[3] : 1) + ')';\n shapeAnnotation.FontSize = shapeFreeText.font.size;\n }\n if (!isNullOrUndefined(polyLineAnnot._borderEffect)) {\n if (polyLineAnnot._borderEffect.style === PdfBorderEffectStyle.cloudy) {\n shapeAnnotation.IsCloudShape = true;\n shapeAnnotation.CloudIntensity = polyLineAnnot._borderEffect.intensity;\n }\n else {\n shapeAnnotation.IsCloudShape = false;\n shapeAnnotation.CloudIntensity = 0;\n }\n }\n else {\n shapeAnnotation.IsCloudShape = false;\n shapeAnnotation.CloudIntensity = 0;\n }\n if (polyLineAnnot._dictionary.has('RD') && !isNullOrUndefined(polyLineAnnot._dictionary.get('RD'))) {\n shapeAnnotation.RectangleDifference = polyLineAnnot._dictionary.get('RD');\n }\n else {\n shapeAnnotation.RectangleDifference = new Array();\n }\n if (polyLineAnnot.flags === PdfAnnotationFlag.locked) {\n shapeAnnotation.IsLocked = true;\n }\n else {\n shapeAnnotation.IsLocked = false;\n }\n if (polyLineAnnot.flags === PdfAnnotationFlag.readOnly) {\n shapeAnnotation.IsCommentLock = true;\n }\n else {\n shapeAnnotation.IsCommentLock = false;\n }\n if (polyLineAnnot._annotFlags.toString().includes('Print')) {\n shapeAnnotation.IsPrint = true;\n }\n if (polyLineAnnot._dictionary.has('CustomData') && !isNullOrUndefined(polyLineAnnot._dictionary.get('CustomData'))) {\n var customData = polyLineAnnot._dictionary.get('CustomData');\n if (customData != null) {\n shapeAnnotation.ExistingCustomData = JSON.stringify(customData);\n }\n }\n if (polyLineAnnot._dictionary.has('AllowedInteractions')) {\n var allowedInteractions = polyLineAnnot.getValues('AllowedInteractions');\n var text = allowedInteractions[0];\n shapeAnnotation.AllowedInteractions = JSON.parse(text);\n }\n if (polyLineAnnot._dictionary.has('Measure')) {\n shapeAnnotation.FillColor = 'rgba(' + polyLineAnnot.innerColor[0] + ',' + polyLineAnnot.innerColor[1] + ',' + polyLineAnnot.innerColor[2] + ',' + fillOpacity + ')';\n var measureShapeAnnotation = new MeasureShapeAnnotationBase(shapeAnnotation);\n measureShapeAnnotation.Calibrate = this.getMeasureObject(polyLineAnnot);\n if (polyLineAnnot._dictionary.has('IT')) {\n measureShapeAnnotation.Indent = polyLineAnnot._dictionary.get('IT').name;\n }\n else {\n measureShapeAnnotation.Indent = 'PolyLineDimension';\n }\n measureShapeAnnotation.Caption = false;\n measureShapeAnnotation.LeaderLength = 0;\n measureShapeAnnotation.LeaderLineExtension = 0;\n measureShapeAnnotation.LeaderLineOffset = 0;\n measureShapeAnnotation.CaptionPosition = '';\n if (polyLineAnnot.flags === PdfAnnotationFlag.readOnly) {\n measureShapeAnnotation.IsCommentLock = true;\n }\n else {\n measureShapeAnnotation.IsCommentLock = false;\n }\n if (polyLineAnnot.flags === PdfAnnotationFlag.print) {\n measureShapeAnnotation.IsPrint = true;\n }\n if (polyLineAnnot._dictionary.has('CustomData') && !isNullOrUndefined(polyLineAnnot._dictionary.get('CustomData'))) {\n var customData = polyLineAnnot._dictionary.get('CustomData');\n if (customData != null) {\n measureShapeAnnotation.ExistingCustomData = JSON.stringify(customData);\n }\n }\n return measureShapeAnnotation;\n }\n else {\n return shapeAnnotation;\n }\n };\n /**\n * @private\n * @param annotation\n * @param pageNumber\n * @returns\n */\n AnnotationRenderer.prototype.loadSignatureImage = function (annotation, pageNumber) {\n var stampAnnotation = annotation;\n var formsFields = new SignatureAnnotationBase();\n formsFields.SignatureName = stampAnnotation.name;\n var dictionary = annotation._dictionary.get('AP');\n if (dictionary === null) {\n var pdfReference = annotation._dictionary.get('AP');\n if (pdfReference !== null && pdfReference.Object !== null) {\n dictionary = pdfReference.Object;\n }\n }\n if (dictionary !== null && dictionary.has('N')) {\n this.m_renderer.findStampImage(annotation);\n }\n formsFields.Bounds = new Rect(stampAnnotation.bounds.x, stampAnnotation.bounds.y, stampAnnotation.bounds.width, stampAnnotation.bounds.height);\n formsFields.PathData = this.m_renderer.imageData;\n formsFields.AnnotationType = \"SignatureImage\";\n formsFields.PageNumber = pageNumber;\n formsFields.Opacity = stampAnnotation.opacity;\n formsFields.StrokeColor = 'rgba(' + stampAnnotation.color + ',' + stampAnnotation.color[1] + ',' + stampAnnotation.color[2] + ',' + (stampAnnotation.color[3] ? stampAnnotation.color[3] : 1) + ')';\n return formsFields;\n };\n AnnotationRenderer.prototype.getMeasureObject = function (annotation) {\n var measureObject = new Measure();\n var measureDictionary;\n if (annotation._dictionary.has('Measure')) {\n measureDictionary = annotation._dictionary.get('Measure');\n }\n if (measureDictionary.has('R')) {\n measureObject.Ratio = measureDictionary.get('R');\n }\n else {\n return null;\n }\n var xList;\n if (measureDictionary.has('X')) {\n xList = this.getMeasureValues(measureDictionary.getArray('X'));\n }\n measureObject.X = xList;\n var distanceList;\n if (measureDictionary.has('D')) {\n distanceList = this.getMeasureValues(measureDictionary.getArray('D'));\n }\n measureObject.Distance = distanceList;\n var areaList;\n if (measureDictionary.has('A')) {\n areaList = this.getMeasureValues(measureDictionary.getArray('A'));\n }\n measureObject.Area = areaList;\n var angleList;\n if (measureDictionary.has('T')) {\n angleList = this.getMeasureValues(measureDictionary.getArray('T'));\n }\n measureObject.Angle = angleList;\n var volumeList;\n if (measureDictionary.has('V')) {\n volumeList = this.getMeasureValues(measureDictionary.getArray('V'));\n }\n measureObject.Volume = volumeList;\n if (!isNullOrUndefined(measureDictionary) && measureDictionary.has('TargetUnitConversion')) {\n measureObject.TargetUnitConversion = measureDictionary.get('TargetUnitConversion').FloatValue;\n }\n else {\n measureObject.TargetUnitConversion = 0;\n }\n return measureObject;\n };\n AnnotationRenderer.prototype.getMeasureValues = function (arrayValues) {\n var measureValuesArray = new Array();\n if (!isNullOrUndefined(arrayValues)) {\n for (var index = 0; index < arrayValues.length; index++) {\n var measureFormat = arrayValues[parseInt(index.toString(), 10)];\n var measureValue = new NumberFormat();\n if (!isNullOrUndefined(measureFormat)) {\n if (measureFormat.has('D') && !isNullOrUndefined(measureFormat.get('D'))) {\n measureValue.Denominator = measureFormat.get('D');\n }\n if (measureFormat.has('C') && !isNullOrUndefined(measureFormat.get('C'))) {\n measureValue.ConversionFactor = measureFormat.get('C');\n }\n if (measureFormat.has('F') && !isNullOrUndefined(measureFormat.get('F'))) {\n measureValue.FractionalType = measureFormat.get('F');\n }\n if (measureFormat.has('FD') && !isNullOrUndefined(measureFormat.get('FD'))) {\n measureValue.FormatDenominator = measureFormat.get('FD');\n }\n if (measureFormat.has('U') && !isNullOrUndefined(measureFormat.get('U'))) {\n measureValue.Unit = measureFormat.get('U');\n }\n }\n measureValuesArray.push(measureValue);\n }\n }\n return measureValuesArray;\n };\n AnnotationRenderer.prototype.getVertexPoints = function (vertices, pageWidth, pageHeight, pageRotation, page) {\n var vertexPoints = [];\n var cropBox = this.getBothCropBoxValue(page);\n var cropBoxX = 0;\n var cropBoxY = 0;\n if (!(cropBox[0] == 0 && page.cropBox[2] == page.size[2] && cropBox[1] == page.size[3])) {\n cropBoxX = cropBox[0];\n cropBoxY = cropBox[1];\n }\n if (pageRotation == 0) {\n for (var i = 0; i < vertices.length; i++) {\n var point = { X: this.convertPointToPixel(vertices[parseInt(i.toString(), 10)]) - this.convertPointToPixel(cropBoxX), Y: (pageHeight - this.convertPointToPixel(vertices[i + 1])) + this.convertPointToPixel(cropBoxY) };\n i = i + 1;\n vertexPoints.push(point);\n }\n }\n else if (pageRotation == 1) {\n for (var i = 0; i < vertices.length; i++) {\n var point = { X: this.convertPointToPixel(vertices[i + 1]), Y: this.convertPointToPixel(vertices[parseInt(i.toString(), 10)]) };\n i = i + 1;\n vertexPoints.push(point);\n }\n }\n else if (pageRotation == 2) {\n for (var i = 0; i < vertices.length; i++) {\n var point = { X: pageWidth - this.convertPointToPixel(vertices[parseInt(i.toString(), 10)]), Y: pageHeight - this.convertPointToPixel(vertices[i + 1]) };\n i = i + 1;\n vertexPoints.push(point);\n }\n }\n else if (pageRotation == 3) {\n for (var i = 0; i < vertices.length; i++) {\n var point = { X: pageWidth - this.convertPointToPixel(vertices[i + 1]), Y: pageHeight - this.convertPointToPixel(vertices[parseInt(i.toString(), 10)]) };\n i = i + 1;\n vertexPoints.push(point);\n }\n }\n return vertexPoints;\n };\n AnnotationRenderer.prototype.getLineIndentString = function (lineIntent) {\n switch (lineIntent) {\n case PdfLineIntent.lineArrow:\n return 'LineArrow';\n case PdfLineIntent.lineDimension:\n return 'LineDimension';\n }\n };\n AnnotationRenderer.prototype.getLineEndingStyleString = function (lineEndingStyle) {\n switch (lineEndingStyle) {\n case PdfLineEndingStyle.none:\n return 'None';\n case PdfLineEndingStyle.butt:\n return 'Butt';\n case PdfLineEndingStyle.circle:\n return 'Circle';\n case PdfLineEndingStyle.closedArrow:\n return 'ClosedArrow';\n case PdfLineEndingStyle.diamond:\n return 'Diamond';\n case PdfLineEndingStyle.openArrow:\n return 'OpenArrow';\n case PdfLineEndingStyle.rClosedArrow:\n return 'RClosedArrow';\n case PdfLineEndingStyle.rOpenArrow:\n return 'ROpenArrow';\n case PdfLineEndingStyle.slash:\n return 'Slash';\n case PdfLineEndingStyle.square:\n return 'Square';\n }\n };\n AnnotationRenderer.prototype.getBorderStylesString = function (borderStyle) {\n switch (borderStyle) {\n case PdfBorderStyle.solid:\n return 'Solid';\n case PdfBorderStyle.dashed:\n return 'Dashed';\n case PdfBorderStyle.beveled:\n return 'Beveled';\n case PdfBorderStyle.inset:\n return 'Inset';\n case PdfBorderStyle.underline:\n return 'Underline';\n case PdfBorderStyle.dot:\n return 'Dot';\n default:\n return 'None';\n }\n };\n AnnotationRenderer.prototype.getBorderStyle = function (borderStyle) {\n var style = PdfBorderStyle.solid;\n switch (borderStyle) {\n case 'Solid':\n style = PdfBorderStyle.solid;\n break;\n case 'Dashed':\n style = PdfBorderStyle.dashed;\n break;\n case 'Beveled':\n style = PdfBorderStyle.beveled;\n break;\n case 'Inset':\n style = PdfBorderStyle.inset;\n break;\n case 'Underline':\n style = PdfBorderStyle.underline;\n break;\n case 'Dot':\n style = PdfBorderStyle.dot;\n break;\n }\n return style;\n };\n AnnotationRenderer.prototype.getRotateAngleString = function (angle) {\n switch (angle) {\n case PdfRotationAngle.angle0:\n return 'RotateAngle0';\n case PdfRotationAngle.angle90:\n return 'RotateAngle90';\n case PdfRotationAngle.angle180:\n return 'RotateAngle180';\n case PdfRotationAngle.angle270:\n return 'RotateAngle270';\n default:\n return 'RotateAngle0';\n }\n };\n AnnotationRenderer.prototype.getValidNoteContent = function (note) {\n if (isNullOrUndefined(note) || note === '' || note === ' ') {\n return '';\n }\n return note;\n };\n AnnotationRenderer.prototype.getBounds = function (bounds, pageWidth, pageHeight, pageRotation) {\n var bound;\n if (pageRotation === 0) {\n // eslint-disable-next-line max-len\n bound = new AnnotBounds(this.convertPointToPixel(bounds.x), this.convertPointToPixel(bounds.y), this.convertPointToPixel(bounds.width), this.convertPointToPixel(bounds.height));\n }\n else if (pageRotation === 1) {\n // eslint-disable-next-line max-len\n bound = new AnnotBounds(pageWidth - this.convertPointToPixel(bounds.y) - this.convertPointToPixel(bounds.height), this.convertPointToPixel(bounds.x), this.convertPointToPixel(bounds.height), this.convertPointToPixel(bounds.width));\n }\n else if (pageRotation === 2) {\n // eslint-disable-next-line max-len\n bound = new AnnotBounds(pageWidth - this.convertPointToPixel(bounds.x) - this.convertPointToPixel(bounds.width), pageHeight - this.convertPointToPixel(bounds.y) - this.convertPointToPixel(bounds.height), this.convertPointToPixel(bounds.width), this.convertPointToPixel(bounds.height));\n }\n else if (pageRotation === 3) {\n // eslint-disable-next-line max-len\n bound = new AnnotBounds(this.convertPointToPixel(bounds.y), pageHeight - this.convertPointToPixel(bounds.x) - this.convertPointToPixel(bounds.width), this.convertPointToPixel(bounds.height), this.convertPointToPixel(bounds.width));\n }\n return bound;\n };\n /**\n * @private\n * @param popupAnnot\n * @param height\n * @param width\n * @param pageRotation\n * @returns\n */\n AnnotationRenderer.prototype.loadPopupAnnotation = function (popupAnnot, height, width, pageRotation) {\n var popupAnnotation = new PopupAnnotationBase();\n popupAnnotation.Author = popupAnnot.author;\n popupAnnotation.Subject = popupAnnot.subject;\n if (popupAnnot._dictionary.has('Subtype') && !isNullOrUndefined(popupAnnot._dictionary.get('Subtype')) && !isNullOrUndefined(popupAnnot._dictionary.get('Subtype').name)) {\n popupAnnotation.SubType = popupAnnot._dictionary.get('Subtype').name.toString();\n }\n if (popupAnnot._dictionary.has('Type') && !isNullOrUndefined(popupAnnot._dictionary.get('Type')) && !isNullOrUndefined(popupAnnot._dictionary.get('Type').name)) {\n popupAnnotation.Type = popupAnnot._dictionary.get('Type').name.toString();\n }\n if (popupAnnot._dictionary.has('IRT') && !isNullOrUndefined(popupAnnot._dictionary.get('IRT'))) {\n var reference = popupAnnot._dictionary.get('IRT');\n if (reference != null) {\n popupAnnotation.Reference = reference.Reference;\n }\n }\n popupAnnotation.AnnotName = popupAnnot.name;\n if (!isNullOrUndefined(popupAnnot.modifiedDate)) {\n popupAnnotation.ModifiedDate = this.formatDate(popupAnnot.modifiedDate);\n }\n else {\n popupAnnotation.ModifiedDate = this.formatDate(new Date());\n }\n popupAnnotation.Note = popupAnnot.text;\n if (popupAnnot.flags === PdfAnnotationFlag.locked) {\n popupAnnotation.IsLock = true;\n }\n else {\n popupAnnotation.IsLock = false;\n }\n if (popupAnnot.flags === PdfAnnotationFlag.readOnly) {\n popupAnnotation.IsCommentLock = true;\n }\n else {\n popupAnnotation.IsCommentLock = false;\n }\n popupAnnotation.Icon = this.getPopupIconString(popupAnnot.icon);\n popupAnnotation.State = this.getStateString(popupAnnot.state);\n popupAnnotation.StateModel = this.getStateModelString(popupAnnot.stateModel);\n popupAnnotation.Size = new SizeBase(popupAnnot.bounds.width, popupAnnot.bounds.height);\n popupAnnot.color = popupAnnot.color ? popupAnnot.color : [0, 0, 0];\n popupAnnotation.Color = new AnnotColor(popupAnnot.color[0], popupAnnot.color[1], popupAnnot.color[2]);\n popupAnnotation.Opacity = popupAnnot.opacity;\n popupAnnotation.AnnotType = 'sticky';\n popupAnnotation.StrokeColor = 'rgba(' + popupAnnotation.Color.R + ',' + popupAnnotation.Color.G + ',' + popupAnnotation.Color.B + ',' + 1 + ')';\n popupAnnotation.Bounds = this.getBounds(popupAnnot.bounds, height, width, pageRotation);\n for (var i = 0; i < popupAnnot.reviewHistory.count; i++) {\n popupAnnotation.State = this.getStateString(popupAnnot.reviewHistory.at(parseInt(i.toString(), 10)).state);\n popupAnnotation.StateModel = this.getStateModelString(popupAnnot.reviewHistory.at(parseInt(i.toString(), 10)).stateModel);\n }\n if (isNullOrUndefined(popupAnnotation.State) || popupAnnotation.State === 'None' || isNullOrUndefined(popupAnnotation.StateModel)) {\n popupAnnotation.State = 'Unmarked';\n popupAnnotation.StateModel = 'None';\n }\n popupAnnotation.Comments = new Array();\n if (popupAnnot._dictionary.has('CustomData') && !isNullOrUndefined(popupAnnot._dictionary.get('CustomData'))) {\n var customData = popupAnnot._dictionary.get('CustomData');\n if (customData != null) {\n popupAnnotation.ExistingCustomData = JSON.stringify(customData);\n }\n }\n for (var i = 0; i < popupAnnot.comments.count; i++) {\n popupAnnotation.Comments.push(this.loadPopupAnnotation(popupAnnot.comments.at(i), height, width, pageRotation));\n }\n return popupAnnotation;\n };\n /**\n * @param freeTextAnnot\n * @param height\n * @param width\n * @param pageRotation\n * @param page\n * @private\n */\n AnnotationRenderer.prototype.loadFreeTextAnnotation = function (freeTextAnnot, height, width, pageRotation, page) {\n var freeTextAnnotation = new FreeTextAnnotationBase();\n freeTextAnnotation.AnnotationIntent = this.getAnnotationIntentString(freeTextAnnot.annotationIntent); // returns wrong value\n freeTextAnnotation.AnnotationFlags = this.getAnnotationFlagsString(freeTextAnnot.flags);\n freeTextAnnotation.Author = freeTextAnnot.author;\n freeTextAnnotation.AnnotName = freeTextAnnot.name;\n if (isNullOrUndefined(freeTextAnnotation.AnnotName) || freeTextAnnotation.AnnotName === '') {\n freeTextAnnotation.AnnotName = Math.abs(Math.random()).toString(36).substring(2);\n }\n freeTextAnnotation.AnnotType = 'Text Box';\n freeTextAnnotation.FreeTextAnnotationType = 'Text Box';\n freeTextAnnotation.BorderColor = new AnnotColor(freeTextAnnot.borderColor[0], freeTextAnnot.borderColor[1], freeTextAnnot.borderColor[2]);\n var points = [{ X: 100, Y: 400 }, { X: 200, Y: 400 }];\n freeTextAnnotation.CalloutLines = points;\n var backgroundColor = freeTextAnnot.color ? freeTextAnnot.color : [0, 0, 0];\n freeTextAnnotation.Color = new AnnotColor(backgroundColor[0], backgroundColor[1], backgroundColor[2]);\n freeTextAnnotation.Flatten = freeTextAnnot.flatten;\n freeTextAnnotation.FlattenPopups = !isNullOrUndefined(freeTextAnnot.flattenPopups) ? freeTextAnnot.flattenPopups : false; // returns undefined\n freeTextAnnotation.FontFamily = this.getFontFamilyString(freeTextAnnot.font._fontFamily);\n freeTextAnnotation.FontSize = this.convertPointToPixel(freeTextAnnot.font.size);\n freeTextAnnotation.Font = new FontBase(freeTextAnnot.font, freeTextAnnotation.FontFamily); // need to be checked\n freeTextAnnotation.Thickness = freeTextAnnot.border.width;\n freeTextAnnotation.StrokeColor = 'rgba(' + freeTextAnnot.borderColor[0] + ',' + freeTextAnnot.borderColor[1] + ',' + freeTextAnnot.borderColor[2] + ',' + (freeTextAnnot.borderColor[3] ? freeTextAnnot.borderColor[3] : 1) + ')';\n var fillOpacity;\n if (freeTextAnnot._dictionary.has('FillOpacity') && !isNullOrUndefined(freeTextAnnot._dictionary.get('FillOpacity'))) {\n fillOpacity = parseInt(freeTextAnnot._dictionary.get('FillOpacity').toString(), 10);\n }\n fillOpacity = freeTextAnnot.color ? (!isNullOrUndefined(fillOpacity) ? fillOpacity : 0) : 0;\n freeTextAnnotation.FillColor = 'rgba(' + backgroundColor[0] + ',' + backgroundColor[1] + ',' + backgroundColor[2] + ',' + fillOpacity + ')';\n freeTextAnnotation.Layer = freeTextAnnot._dictionary.has('Layer') ? freeTextAnnot._dictionary.get('Layer') : null;\n // freeTextAnnotation.Location = freeTextAnnot._dictionary.has('Location') ? freeTextAnnot._dictionary.get('Location') : JSON.stringify({X: freeTextAnnot.bounds.x ,Y: freeTextAnnot.bounds.y});\n freeTextAnnotation.Location = freeTextAnnot._dictionary.has('Location') ? freeTextAnnot._dictionary.get('Location') : '{X=' + freeTextAnnot.bounds.x + ',Y=' + freeTextAnnot.bounds.y + '}';\n freeTextAnnotation.MarkupText = freeTextAnnot.text;\n if (!isNullOrUndefined(freeTextAnnot.modifiedDate)) {\n freeTextAnnotation.ModifiedDate = this.formatDate(freeTextAnnot.modifiedDate);\n }\n else {\n freeTextAnnotation.ModifiedDate = this.formatDate(new Date());\n }\n freeTextAnnotation.Name = \"freeText\";\n freeTextAnnotation.Opacity = freeTextAnnot.opacity;\n if (freeTextAnnot._dictionary.has('Rotation') && !isNullOrUndefined(freeTextAnnot._dictionary.get('Rotation'))) {\n freeTextAnnotation.Rotate = parseInt(freeTextAnnot._dictionary.get('Rotation'));\n }\n if (freeTextAnnot._dictionary.has('Rotate') && !isNullOrUndefined(freeTextAnnot._dictionary.get('Rotate'))) {\n freeTextAnnotation.Rotate = parseInt(freeTextAnnot._dictionary.get('Rotate'));\n }\n if (!isNullOrUndefined(freeTextAnnot.subject)) {\n freeTextAnnotation.Subject = freeTextAnnot.subject;\n }\n else {\n freeTextAnnotation.Subject = 'Text Box';\n }\n freeTextAnnotation.Text = freeTextAnnot.text;\n freeTextAnnotation.MarkupText = freeTextAnnot.text;\n freeTextAnnotation.TextAlign = this.getTextAlignmentString(freeTextAnnot.textAlignment);\n if (isNullOrUndefined(freeTextAnnotation.State) || freeTextAnnotation.State === 'None' || isNullOrUndefined(freeTextAnnotation.StateModel)) {\n freeTextAnnotation.State = 'Unmarked';\n freeTextAnnotation.StateModel = 'None';\n }\n freeTextAnnotation.FontColor = !isNullOrUndefined(freeTextAnnot.textMarkUpColor) ? 'rgba(' + freeTextAnnot.textMarkUpColor[0] + ',' + freeTextAnnot.textMarkUpColor[1] + ',' + freeTextAnnot.textMarkUpColor[2] + ',' + (freeTextAnnot.textMarkUpColor[3] ? freeTextAnnot.textMarkUpColor[3] : 1) + ')' : 'rgba(0, 0, 0, 1)';\n for (var i = 0; i < freeTextAnnot.reviewHistory.count; i++) {\n freeTextAnnotation.State = this.getStateString(freeTextAnnot.reviewHistory.at(parseInt(i.toString(), 10)).state);\n freeTextAnnotation.StateModel = this.getStateModelString(freeTextAnnot.reviewHistory.at(parseInt(i.toString(), 10)).stateModel);\n }\n freeTextAnnotation.Comments = new Array();\n for (var i = 0; i < freeTextAnnot.comments.count; i++) {\n var annot = this.loadPopupAnnotation(freeTextAnnot.comments.at(i), height, width, pageRotation);\n freeTextAnnotation.Comments.push(annot);\n }\n freeTextAnnotation.Bounds = this.getBounds(freeTextAnnot.bounds, height, width, pageRotation);\n if (freeTextAnnotation.Bounds.Y < 0) {\n var cropRect = { x: freeTextAnnot.bounds.x, y: page.cropBox[1] + freeTextAnnot.bounds.y, width: freeTextAnnot.bounds.width, height: freeTextAnnot.bounds.height };\n freeTextAnnotation.Bounds = this.getBounds(cropRect, height, width, pageRotation);\n }\n freeTextAnnotation.PageRotation = pageRotation;\n if (freeTextAnnot.flags === PdfAnnotationFlag.readOnly) {\n freeTextAnnotation.IsCommentLock = true;\n freeTextAnnotation.IsReadonly = true;\n }\n else {\n freeTextAnnotation.IsCommentLock = false;\n }\n if (freeTextAnnot.flags === PdfAnnotationFlag.print) {\n freeTextAnnotation.IsPrint = true;\n }\n if (freeTextAnnot.flags === PdfAnnotationFlag.locked) {\n freeTextAnnotation.IsLocked = true;\n }\n else {\n freeTextAnnotation.IsLocked = false;\n }\n if (freeTextAnnot._dictionary.has('CustomData') && !isNullOrUndefined(freeTextAnnot._dictionary.get('CustomData'))) {\n var customData = freeTextAnnot._dictionary.get('CustomData');\n if (customData != null) {\n freeTextAnnotation.ExistingCustomData = JSON.stringify(customData);\n }\n }\n if (freeTextAnnot._dictionary.has('AllowedInteractions')) {\n var allowedInteractions = freeTextAnnot.getValues('AllowedInteractions');\n var text = allowedInteractions[0];\n freeTextAnnotation.AllowedInteractions = JSON.parse(text);\n }\n return freeTextAnnotation;\n };\n AnnotationRenderer.prototype.getTextAlignmentString = function (textAlignment) {\n switch (textAlignment) {\n case PdfTextAlignment.left:\n return 'Left';\n case PdfTextAlignment.right:\n return 'Right';\n case PdfTextAlignment.center:\n return 'Center';\n case PdfTextAlignment.justify:\n return 'Justify';\n default:\n return 'Left';\n }\n };\n /**\n *\n * @private\n */\n AnnotationRenderer.prototype.loadSignatureText = function (inkAnnot, pageNumber, height, width, pageRotation) {\n var formFields = new SignatureAnnotationBase();\n formFields.SignatureName = inkAnnot.name;\n formFields.Bounds = this.getBounds(inkAnnot.bounds, width, height, pageRotation);\n formFields.AnnotationType = \"SignatureText\";\n formFields.FontFamily = this.getFontFamilyString(inkAnnot.font._fontFamily);\n formFields.FontSize = this.convertPointToPixel(inkAnnot.font.size);\n formFields.PathData = inkAnnot.text;\n formFields.PageNumber = pageNumber;\n formFields.StrokeColor = 'rgba(' + inkAnnot.textMarkUpColor[0] + ',' + inkAnnot.textMarkUpColor[1] + ',' + inkAnnot.textMarkUpColor[2] + ',' + (inkAnnot.textMarkUpColor[3] ? inkAnnot.textMarkUpColor[3] : 1) + ')';\n formFields.Opacity = inkAnnot.opacity;\n formFields.Thickness = 1;\n return formFields;\n };\n AnnotationRenderer.prototype.getFontFamilyString = function (fontFamily) {\n switch (fontFamily) {\n case PdfFontFamily.helvetica:\n return 'Helvetica';\n case PdfFontFamily.timesRoman:\n return 'TimesRoman';\n case PdfFontFamily.courier:\n return 'Courier';\n case PdfFontFamily.symbol:\n return 'Symbol';\n case PdfFontFamily.zapfDingbats:\n return 'ZapfDingbats';\n default:\n return 'Helvetica';\n }\n };\n AnnotationRenderer.prototype.getAnnotationFlagsString = function (flags) {\n switch (flags) {\n case PdfAnnotationFlag.default:\n return 'Default';\n case PdfAnnotationFlag.invisible:\n return 'Invisible';\n case PdfAnnotationFlag.hidden:\n return 'Hidden';\n case PdfAnnotationFlag.print:\n return 'Print';\n case PdfAnnotationFlag.noZoom:\n return 'NoZoom';\n case PdfAnnotationFlag.noRotate:\n return 'NoRotate';\n case PdfAnnotationFlag.noView:\n return 'NoView';\n case PdfAnnotationFlag.readOnly:\n return 'ReadOnly';\n case PdfAnnotationFlag.locked:\n return 'Locked';\n case PdfAnnotationFlag.toggleNoView:\n return 'ToggleNoView';\n default:\n return 'Default';\n }\n };\n AnnotationRenderer.prototype.getAnnotationIntentString = function (annotationIntent) {\n switch (annotationIntent) {\n case PdfAnnotationIntent.freeTextCallout:\n return 'FreeTextCallout';\n case PdfAnnotationIntent.freeTextTypeWriter:\n return 'FreeTextTypeWriter';\n case PdfAnnotationIntent.none:\n return 'None';\n }\n };\n AnnotationRenderer.prototype.getStateString = function (state) {\n switch (state) {\n case PdfAnnotationState.accepted:\n return 'Accepted';\n case PdfAnnotationState.rejected:\n return 'Rejected';\n case PdfAnnotationState.cancel:\n return 'Cancelled';\n case PdfAnnotationState.completed:\n return 'Completed';\n case PdfAnnotationState.none:\n return 'None';\n case PdfAnnotationState.unmarked:\n return 'Unmarked';\n case PdfAnnotationState.marked:\n return 'Marked';\n case PdfAnnotationState.unknown:\n return 'Unknown';\n default:\n return null;\n }\n };\n AnnotationRenderer.prototype.getStateModelString = function (stateModel) {\n switch (stateModel) {\n case PdfAnnotationStateModel.review:\n return 'Review';\n case PdfAnnotationStateModel.marked:\n return 'Marked';\n case PdfAnnotationStateModel.none:\n return 'None';\n default:\n return 'None';\n }\n };\n AnnotationRenderer.prototype.getPopupIconString = function (icon) {\n switch (icon) {\n case PdfPopupIcon.comment:\n return 'Comment';\n case PdfPopupIcon.help:\n return 'Help';\n case PdfPopupIcon.insert:\n return 'Insert';\n case PdfPopupIcon.key:\n return 'Key';\n case PdfPopupIcon.newParagraph:\n return 'NewParagraph';\n case PdfPopupIcon.note:\n return 'Note';\n case PdfPopupIcon.paragraph:\n return 'Paragraph';\n default:\n return null;\n }\n };\n AnnotationRenderer.prototype.formatDate = function (date) {\n var month = this.datePadding(date.getMonth() + 1); // Months are zero-based\n var day = this.datePadding(date.getDate());\n var year = date.getFullYear();\n var hours = this.datePadding(date.getHours());\n var minutes = this.datePadding(date.getMinutes());\n var seconds = this.datePadding(date.getSeconds());\n return month + \"/\" + day + \"/\" + year + \" \" + hours + \":\" + minutes + \":\" + seconds;\n };\n // Pad the numbers with leading zeros if they are single digits\n AnnotationRenderer.prototype.datePadding = function (number) {\n return number < 10 ? ('0' + number) : number.toString();\n };\n /**\n * @param loadedDocument\n * @private\n */\n AnnotationRenderer.prototype.removeSignatureTypeAnnot = function (jsonObject, loadedDocument) {\n if ((jsonObject.hasOwnProperty('isAnnotationsExist') &&\n JSON.parse(jsonObject['isAnnotationsExist'])) ||\n (jsonObject.hasOwnProperty('isFormFieldAnnotationsExist') &&\n JSON.parse(jsonObject['isFormFieldAnnotationsExist']))) {\n var annotationPageList = jsonObject.annotationsPageList ? jsonObject.annotationsPageList : [];\n // var formFieldsPageList : any = jsonObject.formFieldsPageList ? (jsonObject.formFieldsPageList) : [] ;\n if (annotationPageList.length != 0) {\n var removeAnnotList = JSON.parse(annotationPageList);\n for (var i = 0; i < removeAnnotList.length; i++) {\n var loadedPageNo = removeAnnotList[parseInt(i.toString(), 10)];\n // Removing annotations from the page.\n var page = loadedDocument.getPage(parseInt(loadedPageNo, 10));\n var oldPageAnnotations = page.annotations;\n var totalAnnotation = parseInt(oldPageAnnotations.count.toString(), 10);\n for (var m = totalAnnotation - 1; m >= 0; m--) {\n var annotation = oldPageAnnotations.at(m);\n if (annotation instanceof PdfFreeTextAnnotation ||\n annotation instanceof PdfInkAnnotation ||\n annotation instanceof PdfLineAnnotation ||\n annotation instanceof PdfRubberStampAnnotation ||\n annotation instanceof PdfTextMarkupAnnotation ||\n annotation instanceof PdfPopupAnnotation ||\n annotation instanceof PdfSquareAnnotation ||\n annotation instanceof PdfCircleAnnotation ||\n annotation instanceof PdfEllipseAnnotation ||\n annotation instanceof PdfPolygonAnnotation ||\n annotation instanceof PdfRectangleAnnotation ||\n annotation instanceof PdfPolyLineAnnotation) {\n oldPageAnnotations.remove(annotation);\n }\n }\n }\n }\n }\n };\n /**\n * @param textMarkup\n * @param height\n * @param width\n * @param pageRotation\n * @private\n */\n // eslint-disable-next-line max-len\n AnnotationRenderer.prototype.loadTextMarkupAnnotation = function (textMarkup, height, width, pageRotation, page) {\n var markupAnnotation = new TextMarkupAnnotationBase();\n markupAnnotation.TextMarkupAnnotationType = this.getMarkupAnnotTypeString(textMarkup.textMarkupType);\n if (markupAnnotation.TextMarkupAnnotationType === 'StrikeOut') {\n markupAnnotation.TextMarkupAnnotationType = 'Strikethrough';\n }\n markupAnnotation.Author = textMarkup.author;\n markupAnnotation.Subject = textMarkup.subject;\n markupAnnotation.AnnotName = textMarkup.name;\n markupAnnotation.Note = textMarkup.text ? textMarkup.text : '';\n // eslint-disable-next-line max-len\n markupAnnotation.Rect = new RectangleBase(textMarkup.bounds.x, textMarkup.bounds.y, textMarkup.bounds.width + textMarkup.bounds.x, textMarkup.bounds.height + textMarkup.bounds.y);\n markupAnnotation.Opacity = textMarkup.opacity;\n // markupAnnotation.Color = 'rgba(' + textMarkup.color[0] + ',' + textMarkup.color[1] + ',' + textMarkup.color[2] + ',' + (textMarkup.color[3] ? textMarkup.color[3] : 1) + ')';\n markupAnnotation.Color = '#' + (1 << 24 | textMarkup.color[0] << 16 | textMarkup.color[1] << 8 | textMarkup.color[2]).toString(16).slice(1);\n if (!isNullOrUndefined(textMarkup.modifiedDate)) {\n markupAnnotation.ModifiedDate = this.formatDate(textMarkup.modifiedDate);\n }\n else {\n markupAnnotation.ModifiedDate = this.formatDate(new Date());\n }\n markupAnnotation.AnnotationRotation = textMarkup.rotationAngle;\n var quadPoints = textMarkup._dictionary.has('QuadPoints') ? textMarkup._dictionary.get('QuadPoints') : [];\n var bounds = this.getTextMarkupBounds(quadPoints, height, width, pageRotation, page);\n markupAnnotation.Bounds = bounds;\n markupAnnotation.AnnotType = 'textMarkup';\n for (var i = 0; i < textMarkup.reviewHistory.count; i++) {\n markupAnnotation.State = this.getStateString(textMarkup.reviewHistory.at(parseInt(i.toString(), 10)).state);\n markupAnnotation.StateModel = this.getStateModelString(textMarkup.reviewHistory.at(parseInt(i.toString(), 10)).stateModel);\n }\n if (isNullOrUndefined(markupAnnotation.State) || isNullOrUndefined(markupAnnotation.StateModel)) {\n markupAnnotation.State = 'Unmarked';\n markupAnnotation.StateModel = 'None';\n }\n markupAnnotation.Comments = new Array();\n for (var i = 0; i < textMarkup.comments.count; i++) {\n var annot = this.loadPopupAnnotation(textMarkup.comments.at(i), height, width, pageRotation);\n markupAnnotation.Comments.push(annot);\n }\n if (textMarkup.flags === PdfAnnotationFlag.readOnly) {\n markupAnnotation.IsCommentLock = true;\n }\n else {\n markupAnnotation.IsCommentLock = false;\n }\n if (textMarkup.flags === PdfAnnotationFlag.print) {\n markupAnnotation.IsPrint = true;\n }\n if (textMarkup._dictionary.has('CustomData') && !isNullOrUndefined(textMarkup._dictionary.get('CustomData'))) {\n var customData = textMarkup._dictionary.get('CustomData');\n if (customData != null) {\n markupAnnotation.ExistingCustomData = JSON.stringify(customData);\n }\n }\n if (textMarkup._dictionary.has('AllowedInteractions')) {\n var allowedInteractions = textMarkup.getValues('AllowedInteractions');\n var text = allowedInteractions[0];\n markupAnnotation.AllowedInteractions = JSON.parse(text);\n }\n if (textMarkup._dictionary.has('TextMarkupContent')) {\n var textMarkupData = textMarkup.getValues('TextMarkupContent');\n if (!isNullOrUndefined(textMarkupData)) {\n markupAnnotation.TextMarkupContent = textMarkupData[0];\n }\n }\n return markupAnnotation;\n };\n // eslint-disable-next-line max-len\n AnnotationRenderer.prototype.getTextMarkupBounds = function (quadPoints, pageHeight, pageWidth, pageRotation, page) {\n var x = 0;\n var y = 0;\n var width = 0;\n var height = 0;\n var annotationBoundList = [];\n var cropValues = this.getCropBoxValue(page, false);\n var cropX = 0;\n var cropY = 0;\n if (cropValues.x !== 0 && cropValues.y !== 0) {\n cropX = cropValues.x;\n cropY = cropValues.y;\n }\n if (!isNullOrUndefined(quadPoints)) {\n for (var k = 0; k < quadPoints.length; k++) {\n if (pageRotation === 0) {\n x = this.convertPointToPixel(parseInt(quadPoints[parseInt(k.toString(), 10)], 10) - cropX);\n y = pageHeight - this.convertPointToPixel(parseInt(quadPoints[k + 1], 10) + cropY);\n height = this.convertPointToPixel(parseInt(quadPoints[k + 3], 10) - parseInt(quadPoints[k + 7], 10));\n width = this.convertPointToPixel(parseInt(quadPoints[k + 6], 10) - parseInt(quadPoints[k + 4], 10));\n }\n else if (pageRotation === 1) {\n x = this.convertPointToPixel(parseInt(quadPoints[k + 5], 10));\n y = this.convertPointToPixel(parseInt(quadPoints[parseInt(k.toString(), 10)], 10));\n height = this.convertPointToPixel(parseInt(quadPoints[k + 6], 10) - parseInt(quadPoints[k + 4], 10));\n width = this.convertPointToPixel(parseInt(quadPoints[k + 3], 10) - parseInt(quadPoints[k + 7], 10));\n }\n else if (pageRotation === 2) {\n x = pageWidth - this.convertPointToPixel(parseInt(quadPoints[k + 2], 10));\n y = this.convertPointToPixel(parseInt(quadPoints[k + 5], 10));\n height = this.convertPointToPixel(parseInt(quadPoints[k + 3], 10) - parseInt(quadPoints[k + 7], 10));\n width = this.convertPointToPixel(parseInt(quadPoints[k + 6], 10) - parseInt(quadPoints[k + 4], 10));\n }\n else {\n x = pageWidth - this.convertPointToPixel(parseInt(quadPoints[k + 1], 10));\n y = pageHeight - this.convertPointToPixel(parseInt(quadPoints[k + 6], 10));\n height = this.convertPointToPixel(parseInt(quadPoints[k + 6], 10) - parseInt(quadPoints[k + 4], 10));\n width = this.convertPointToPixel(parseInt(quadPoints[k + 3], 10) - parseInt(quadPoints[k + 7], 10));\n }\n var bounds = new AnnotBounds(x, y, width, height);\n k = k + 7;\n annotationBoundList.push(bounds);\n }\n }\n return annotationBoundList;\n };\n AnnotationRenderer.prototype.getMarkupAnnotTypeString = function (textMarkupType) {\n var type = '';\n switch (textMarkupType) {\n case PdfTextMarkupAnnotationType.highlight:\n type = 'Highlight';\n break;\n case PdfTextMarkupAnnotationType.strikeOut:\n type = 'StrikeOut';\n break;\n case PdfTextMarkupAnnotationType.underline:\n type = 'Underline';\n break;\n case PdfTextMarkupAnnotationType.squiggly:\n type = 'Squiggly';\n break;\n }\n return type;\n };\n return AnnotationRenderer;\n}());\nexport { AnnotationRenderer };\n/**\n *\n * @hidden\n */\nvar PointBase = /** @class */ (function () {\n function PointBase(x, y) {\n this.x = x;\n this.y = y;\n }\n return PointBase;\n}());\nexport { PointBase };\n/**\n *\n * @hidden\n */\nvar FreeTextAnnotationBase = /** @class */ (function () {\n function FreeTextAnnotationBase() {\n this.AnnotationSelectorSettings = null;\n this.TextMarkupColor = null;\n this.Color = null;\n this.Font = null;\n this.Border = null;\n this.LineEndingStyle = null;\n this.AnnotationFlags = null;\n this.CalloutLines = null;\n this.ModifiedDate = null;\n this.Comments = null;\n this.CreatedDate = null;\n this.InnerColor = null;\n this.Layer = null;\n this.Page = null;\n this.PageTags = null;\n this.ReviewHistory = null;\n this.Rotate = 0;\n this.Note = null;\n this.CustomData = null;\n this.AnnotationSettings = null;\n this.IsPrint = true;\n this.IsReadonly = false;\n this.ExistingCustomData = null;\n this.Bounds = null;\n this.PageRotation = 0;\n }\n return FreeTextAnnotationBase;\n}());\nexport { FreeTextAnnotationBase };\n/**\n *\n * @hidden\n */\nvar InkSignatureAnnotation = /** @class */ (function () {\n function InkSignatureAnnotation() {\n this.AnnotationType = null;\n this.Bounds = null;\n this.CustomData = null;\n this.Opacity = 0;\n this.StrokeColor = null;\n this.Thickness = null;\n this.PathData = null;\n this.IsLocked = null;\n this.IsCommentLock = null;\n this.PageNumber = null;\n this.AnnotName = null;\n this.Author = null;\n this.ModifiedDate = null;\n this.Subject = null;\n this.Note = null;\n this.State = null;\n this.StateModel = null;\n this.AnnotationSelectorSettings = null;\n this.AnnotationSettings = null;\n this.AllowedInteractions = null;\n this.Comments = null;\n this.AnnotType = null;\n this.IsPrint = null;\n this.ExistingCustomData = null;\n }\n return InkSignatureAnnotation;\n}());\nexport { InkSignatureAnnotation };\n/**\n *\n * @hidden\n */\nvar ShapeAnnotationBase = /** @class */ (function () {\n function ShapeAnnotationBase() {\n this.LabelBounds = new AnnotBounds(0, 0, 0, 0);\n this.LabelContent = null;\n this.LabelFillColor = null;\n this.LabelBorderColor = null;\n this.LabelSettings = null;\n this.FontColor = null;\n this.FontSize = 0;\n this.AnnotationSettings = null;\n this.AnnotationSelectorSettings = null;\n this.VertexPoints = null;\n this.CustomData = null;\n this.ExistingCustomData = null;\n this.IsPrint = true;\n this.AllowedInteractions = null;\n this.AnnotationRotation = 0;\n }\n return ShapeAnnotationBase;\n}());\nexport { ShapeAnnotationBase };\n/**\n *\n * @hidden\n */\nvar MeasureShapeAnnotationBase = /** @class */ (function () {\n function MeasureShapeAnnotationBase(shapeAnnotation) {\n this.LabelBounds = new AnnotBounds(0, 0, 0, 0);\n this.LabelContent = null;\n this.LabelFillColor = null;\n this.LabelBorderColor = null;\n this.LabelSettings = null;\n this.FontColor = null;\n this.FontSize = 0;\n this.AnnotationSettings = null;\n this.AnnotationSelectorSettings = null;\n this.VertexPoints = null;\n this.CustomData = null;\n this.ExistingCustomData = null;\n this.IsPrint = true;\n this.AllowedInteractions = null;\n this.AnnotationRotation = 0;\n this.Author = shapeAnnotation.Author;\n this.AnnotationSelectorSettings = shapeAnnotation.AnnotationSelectorSettings;\n this.BorderDashArray = shapeAnnotation.BorderDashArray;\n this.BorderStyle = shapeAnnotation.BorderStyle;\n this.Bounds = shapeAnnotation.Bounds;\n this.CloudIntensity = shapeAnnotation.CloudIntensity;\n this.FillColor = shapeAnnotation.FillColor;\n this.IsCloudShape = shapeAnnotation.IsCloudShape;\n this.IsLocked = shapeAnnotation.IsLocked;\n this.LineHeadEnd = shapeAnnotation.LineHeadEnd;\n this.LineHeadStart = shapeAnnotation.LineHeadStart;\n this.ModifiedDate = shapeAnnotation.ModifiedDate;\n this.Note = shapeAnnotation.Note;\n this.Opacity = shapeAnnotation.Opacity;\n this.RectangleDifference = shapeAnnotation.RectangleDifference;\n this.RotateAngle = shapeAnnotation.RotateAngle;\n this.ShapeAnnotationType = shapeAnnotation.ShapeAnnotationType;\n this.StrokeColor = shapeAnnotation.StrokeColor;\n this.Subject = shapeAnnotation.Subject;\n this.Thickness = shapeAnnotation.Thickness;\n this.VertexPoints = shapeAnnotation.VertexPoints;\n this.AnnotName = shapeAnnotation.AnnotName;\n this.Comments = shapeAnnotation.Comments;\n this.State = shapeAnnotation.State;\n this.StateModel = shapeAnnotation.StateModel;\n this.AnnotType = 'shape_measure';\n this.AnnotationSettings = shapeAnnotation.AnnotationSettings;\n this.EnableShapeLabel = shapeAnnotation.EnableShapeLabel;\n this.AllowedInteractions = shapeAnnotation.AllowedInteractions;\n this.AnnotationRotation = shapeAnnotation.AnnotationRotation;\n if (shapeAnnotation.EnableShapeLabel == true) {\n this.LabelContent = shapeAnnotation.LabelContent;\n this.LabelFillColor = shapeAnnotation.LabelFillColor;\n this.FontColor = shapeAnnotation.FontColor;\n this.LabelBorderColor = shapeAnnotation.LabelBorderColor;\n this.FontSize = shapeAnnotation.FontSize;\n this.LabelSettings = shapeAnnotation.LabelSettings;\n this.LabelBounds = shapeAnnotation.LabelBounds;\n }\n }\n return MeasureShapeAnnotationBase;\n}());\nexport { MeasureShapeAnnotationBase };\n/**\n *\n * @hidden\n */\nvar SignatureAnnotationBase = /** @class */ (function () {\n function SignatureAnnotationBase() {\n this.PathData = null;\n this.ExistingCustomData = null;\n }\n return SignatureAnnotationBase;\n}());\nexport { SignatureAnnotationBase };\nvar Measure = /** @class */ (function () {\n function Measure() {\n this.Ratio = '';\n this.X = [];\n this.Distance = [];\n this.Area = [];\n this.Angle = [];\n this.Volume = [];\n this.TargetUnitConversion = 0;\n this.Depth = 0;\n }\n return Measure;\n}());\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n this.Unit = '';\n this.ConversionFactor = 0;\n this.FractionalType = '';\n this.Denominator = 0;\n this.FormatDenominator = false;\n }\n return NumberFormat;\n}());\n/**\n *\n * @hidden\n */\nvar PopupAnnotationBase = /** @class */ (function () {\n function PopupAnnotationBase() {\n this.AnnotationFlags = null;\n this.AnnotationSelectorSettings = null;\n this.AnnotationSettings = null;\n this.ExistingCustomData = null;\n this.CustomData = null;\n this.IsPrint = false;\n }\n return PopupAnnotationBase;\n}());\nexport { PopupAnnotationBase };\n/**\n *\n * @hidden\n */\nvar TextMarkupAnnotationBase = /** @class */ (function () {\n function TextMarkupAnnotationBase() {\n this.AnnotationSelectorSettings = null;\n this.AnnotationSettings = null;\n this.ExistingCustomData = null;\n this.CustomData = null;\n this.IsPrint = true;\n this.IsMultiSelect = false;\n this.AnnotpageNumbers = null;\n this.AnnotNameCollection = null;\n }\n return TextMarkupAnnotationBase;\n}());\nexport { TextMarkupAnnotationBase };\n/**\n *\n * @hidden\n */\nvar PdfLayer = /** @class */ (function () {\n function PdfLayer() {\n }\n return PdfLayer;\n}());\nexport { PdfLayer };\n/**\n *\n * @hidden\n */\nvar AnnotPoint = /** @class */ (function () {\n function AnnotPoint(_X, _Y) {\n this.X = _X;\n this.Y = _Y;\n }\n return AnnotPoint;\n}());\nexport { AnnotPoint };\n/**\n *\n * @hidden\n */\nvar AnnotBounds = /** @class */ (function () {\n function AnnotBounds(_X, _Y, _Width, _Height) {\n this.X = _X;\n this.Y = _Y;\n this.Width = _Width;\n this.Height = _Height;\n this.Location = {\n X: _X,\n Y: _Y\n };\n this.Size = {\n IsEmpty: false,\n Width: _Width,\n Height: _Height\n };\n this.Left = _X;\n this.Top = _Y;\n this.Right = _X + _Width;\n this.Bottom = _Y + _Height;\n }\n return AnnotBounds;\n}());\nexport { AnnotBounds };\n/**\n *\n * @hidden\n */\nvar AnnotColor = /** @class */ (function () {\n function AnnotColor(_R, _G, _B) {\n this.IsEmpty = true;\n this.R = _R;\n this.G = _G;\n this.B = _B;\n if (this.R !== 0 || this.G !== 0 || this.B !== 0) {\n this.IsEmpty = false;\n }\n }\n return AnnotColor;\n}());\nexport { AnnotColor };\n/**\n *\n * @hidden\n */\nvar FontBase = /** @class */ (function () {\n function FontBase(pdfFont, fontFamilyString) {\n this.Bold = pdfFont.isBold;\n this.FontFamily = pdfFont._fontFamily;\n this.Height = pdfFont.height;\n this.Italic = pdfFont.isItalic;\n this.Name = fontFamilyString;\n this.Size = pdfFont.size;\n this.Strikeout = pdfFont.isStrikeout;\n this.Style = pdfFont.style;\n this.Underline = pdfFont.isUnderline;\n }\n return FontBase;\n}());\nexport { FontBase };\n/**\n *\n * @hidden\n */\nvar RectangleBase = /** @class */ (function () {\n /**\n * @private\n */\n function RectangleBase(left, top, right, bottom) {\n this.left = left;\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n this.width = right - left;\n this.height = bottom - top;\n }\n return RectangleBase;\n}());\nexport { RectangleBase };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { _PdfName, _PdfReference, _stringToBytes } from '@syncfusion/ej2-pdf';\n/**\n * ImageStructureBase\n *\n * @hidden\n */\nvar ImageStructureBase = /** @class */ (function () {\n function ImageStructureBase(stream, fontDictionary) {\n this.m_isImageStreamParsed = false;\n this.m_isImageInterpolated = false;\n this.isDualFilter = false;\n this.numberOfComponents = 0;\n if (!isNullOrUndefined(fontDictionary)) {\n this.m_imageStream = stream;\n this.m_imageDictionary = fontDictionary;\n }\n }\n /**\n * @private\n *\n */\n ImageStructureBase.prototype.getImageStream = function () {\n this.m_isImageStreamParsed = true;\n var IsDecodeFilterDefined = true;\n var ImageDictionary = this.m_imageDictionary;\n this.getImageInterpolation(ImageDictionary);\n var imageFilter = this.setImageFilter();\n var imageUnit8Array = this.imageStream();\n if (isNullOrUndefined(imageFilter)) {\n this.m_imageFilter.push(\"FlateDecode\");\n IsDecodeFilterDefined = false;\n }\n if (!isNullOrUndefined(imageFilter)) {\n for (var i = 0; i < imageFilter.length; i++) {\n if (imageFilter.length > 1) {\n this.isDualFilter = true;\n }\n switch (imageFilter[parseInt(i.toString(), 10)]) {\n case \"DCTDecode\": {\n if (!this.m_imageDictionary.has(\"SMask\") && !this.m_imageDictionary.has(\"Mask\")) {\n var colorSpace = this.setColorSpace();\n if (colorSpace.name === \"DeviceCMYK\" || colorSpace.name === \"DeviceN\" || colorSpace.name === \"DeviceGray\" || colorSpace.name === \"Separation\" || colorSpace.name === \"DeviceRGB\" || (colorSpace.name === \"ICCBased\" && this.numberOfComponents === 4)) {\n if (colorSpace.name === \"DeviceRGB\" && (this.m_imageDictionary.has(\"DecodeParms\") || this.m_imageDictionary.has(\"Decode\"))) {\n break;\n }\n }\n }\n }\n }\n }\n this.m_imageFilter = null;\n return imageUnit8Array;\n }\n return null;\n };\n ImageStructureBase.prototype.setColorSpace = function () {\n if (isNullOrUndefined(this.m_colorspace)) {\n this.getColorSpace();\n return this.m_colorspace;\n }\n };\n ImageStructureBase.prototype.getColorSpace = function () {\n if (this.m_imageDictionary.has(\"ColorSpace\")) {\n var filter = [];\n this.internalColorSpace = \"\";\n var colorspaceDictionary = null;\n var value = null;\n var colorSpaceResources = null;\n if (this.m_imageDictionary.has(\"ColorSpace\")) {\n var array = this.m_imageDictionary.getArray(\"ColorSpace\");\n if (array && Array.isArray(array) && array.length > 0) {\n value = this.m_imageDictionary.get(\"ColorSpace\");\n }\n }\n if (this.m_imageDictionary._get(\"ColorSpace\") instanceof _PdfReference) {\n }\n if (this.m_imageDictionary.get(\"ColorSpace\") instanceof _PdfName) {\n this.m_colorspace = this.m_imageDictionary.get(\"ColorSpace\");\n }\n if (!isNullOrUndefined(value) && !isNullOrUndefined(value[0])) {\n }\n }\n };\n ImageStructureBase.prototype.setImageFilter = function () {\n if (isNullOrUndefined(this.m_imageFilter)) {\n this.m_imageFilter = this.getImageFilter();\n }\n return this.m_imageFilter;\n };\n ImageStructureBase.prototype.getImageFilter = function () {\n var imageFilter = [];\n if (!isNullOrUndefined(this.m_imageDictionary)) {\n if (this.m_imageDictionary.has(\"Filter\")) {\n if (this.m_imageDictionary.get(\"Filter\") instanceof _PdfName) {\n imageFilter.push(this.m_imageDictionary.get(\"Filter\").name);\n }\n else if (this.m_imageDictionary._get(\"Filter\") instanceof _PdfReference) {\n }\n }\n }\n return imageFilter;\n };\n ImageStructureBase.prototype.getImageInterpolation = function (imageDictionary) {\n if (!isNullOrUndefined(imageDictionary) && imageDictionary.has(\"Interpolate\")) {\n this.m_isImageInterpolated = imageDictionary.get(\"Interpolate\");\n }\n };\n ImageStructureBase.prototype.imageStream = function () {\n var content = _stringToBytes(this.m_imageStream.getString());\n return content;\n };\n return ImageStructureBase;\n}());\nexport { ImageStructureBase };\n","import { _TokenType } from './enumerator';\nvar _ContentParser = /** @class */ (function () {\n function _ContentParser(contentStream) {\n this._recordCollection = [];\n this._operands = [];\n this._lexer = new _ContentLexer(contentStream);\n }\n _ContentParser.prototype._readContent = function () {\n this._parseObject(_TokenType.eof);\n return this._recordCollection;\n };\n _ContentParser.prototype._parseObject = function (tokenType) {\n var symbol;\n while ((symbol = this._getNextToken()) !== _TokenType.eof) { // eslint-disable-line\n if (symbol === tokenType || symbol === _TokenType.none) {\n return;\n }\n switch (symbol) {\n case _TokenType.comment:\n break;\n case _TokenType.number:\n if (this._lexer._operatorParams === '-') {\n this._operands.push('0');\n }\n else {\n this._operands.push(this._lexer._operatorParams);\n }\n break;\n case _TokenType.real:\n this._operands.push(this._lexer._operatorParams);\n break;\n case _TokenType.string:\n case _TokenType.hexString:\n case _TokenType.unicodeHexString:\n case _TokenType.unicodeString:\n this._operands.push(this._lexer._operatorParams);\n break;\n case _TokenType.name:\n this._operands.push(this._lexer._operatorParams);\n break;\n case _TokenType.operator:\n this._createRecord();\n this._operands = [];\n break;\n case _TokenType.beginArray:\n break;\n case _TokenType.endArray:\n throw new Error('Error while parsing content');\n }\n }\n };\n _ContentParser.prototype._createRecord = function () {\n var operand = this._lexer._operatorParams;\n var record = new _PdfRecord(operand, this._operands);\n this._recordCollection.push(record);\n };\n _ContentParser.prototype._getNextToken = function () {\n return this._lexer._getNextToken();\n };\n return _ContentParser;\n}());\nexport { _ContentParser };\nvar _ContentLexer = /** @class */ (function () {\n function _ContentLexer(data) {\n this._tokenType = _TokenType.none;\n this._currentCharacter = '\\0';\n this._nextCharacter = '\\0';\n this._offset = 0;\n this._data = data instanceof Uint8Array ? data : new Uint8Array(data);\n }\n _ContentLexer.prototype._getNextToken = function () {\n this._operatorParams = '';\n var value = this._moveToNextChar();\n switch (value) {\n case '%':\n return this._tokenType = this._getComment();\n case '/':\n return this._tokenType = this._getName();\n case '[':\n case '(':\n return this._tokenType = this._getLiteralString();\n case '+':\n case '-':\n return this._tokenType = this._getNumber();\n case '<':\n return this._tokenType = this._getEncodedDecimalString();\n case '.':\n return this._tokenType = this._getNumber();\n case '\"':\n case '\\'':\n return this._tokenType = this._getOperator();\n }\n if (!isNaN(parseInt(value, 10))) {\n return this._tokenType = this._getNumber();\n }\n if ((/[a-zA-Z]/).test(value)) {\n return this._tokenType = this._getOperator();\n }\n if (value === String.fromCharCode(65535)) {\n return this._tokenType = _TokenType.eof;\n }\n return this._tokenType = _TokenType.none;\n };\n _ContentLexer.prototype._getComment = function () {\n this._operatorParams = '';\n var value;\n var flag = (value = this._consumeValue()) !== '\\x0A' && value !== String.fromCharCode(65535);\n while (flag) {\n flag = (value = this._consumeValue()) !== '\\x0A' && value !== String.fromCharCode(65535);\n }\n return _TokenType.comment;\n };\n _ContentLexer.prototype._getName = function () {\n this._operatorParams = '';\n var flag = false;\n while (!flag) {\n var value = this._consumeValue();\n switch (value) {\n case '\\0':\n case '\\t':\n case '\\x0A':\n case '\\f':\n case '\\x0D':\n case '\\b':\n case ' ':\n case '%':\n case '(':\n case ')':\n case '<':\n case '>':\n case '[':\n case ']':\n case '/':\n flag = true;\n return _TokenType.name;\n default:\n break;\n }\n }\n return _TokenType.none;\n };\n _ContentLexer.prototype._getNumber = function () {\n var value = this._currentCharacter;\n if (value === '+' || value === '-') {\n this._operatorParams += this._currentCharacter;\n value = this._getNextChar();\n }\n while (!isNaN(parseInt(value, 10)) || value === '.') {\n if (!isNaN(parseInt(value, 10))) {\n this._operatorParams += this._currentCharacter;\n }\n else if (value === '.') {\n if (this._operatorParams.includes('.')) {\n break;\n }\n else {\n this._operatorParams += this._currentCharacter;\n }\n }\n value = this._getNextChar();\n }\n return _TokenType.number;\n };\n _ContentLexer.prototype._getOperator = function () {\n this._operatorParams = '';\n var value = this._currentCharacter;\n while (this._isOperator(value)) {\n value = this._consumeValue();\n }\n return _TokenType.operator;\n };\n _ContentLexer.prototype._isOperator = function (value) {\n if ((/[a-zA-Z]/).test(value)) {\n return true;\n }\n switch (value) {\n case '*':\n case '\\'':\n case '\\\"': // eslint-disable-line\n case '1':\n case '0':\n return true;\n }\n return false;\n };\n _ContentLexer.prototype._getLiteralString = function () {\n this._operatorParams = '';\n var beginChar = this._currentCharacter;\n var literal;\n var value = this._consumeValue();\n var flag = true;\n while (flag) {\n if (beginChar === '(') {\n literal = this._getLiteralStringValue(value);\n this._operatorParams += literal;\n value = this._getNextChar();\n flag = false;\n break;\n }\n else {\n if (value === '(') {\n value = this._consumeValue();\n literal = this._getLiteralStringValue(value);\n this._operatorParams += literal;\n value = this._getNextChar();\n continue;\n }\n else if (value === ']') {\n flag = false;\n value = this._consumeValue();\n break;\n }\n value = this._consumeValue();\n }\n }\n return _TokenType.string;\n };\n _ContentLexer.prototype._getEncodedDecimalString = function () {\n var startChar = '<';\n var endChar = '>';\n var space = ' ';\n var parentLevel = 0;\n var value = this._consumeValue();\n var flag = true;\n while (flag) {\n if (value === startChar) {\n parentLevel++;\n value = this._consumeValue();\n }\n else if (value === endChar) {\n if (parentLevel === 0) {\n this._consumeValue();\n flag = false;\n break;\n }\n else if (parentLevel === 1) {\n value = this._consumeValue();\n if (value === '>') {\n parentLevel--;\n }\n if (parentLevel === 1 && value === space) {\n flag = false;\n break;\n }\n }\n else {\n if (value === '>') {\n parentLevel--;\n }\n value = this._consumeValue();\n }\n }\n else {\n value = this._consumeValue();\n if (value === String.fromCharCode(65535)) {\n flag = false;\n break;\n }\n }\n }\n return _TokenType.hexString;\n };\n _ContentLexer.prototype._getLiteralStringValue = function (value) {\n var parenthesesCount = 0;\n var literal = '';\n var flag = true;\n while (flag) {\n if (value === '\\\\') {\n literal += value;\n value = this._getNextChar();\n literal += value;\n value = this._getNextChar();\n continue;\n }\n if (value === '(') {\n parenthesesCount++;\n literal += value;\n value = this._getNextChar();\n continue;\n }\n if (value === ')' && parenthesesCount !== 0) {\n literal += value;\n value = this._getNextChar();\n parenthesesCount--;\n continue;\n }\n if (value === ')' && parenthesesCount === 0) {\n literal += value;\n flag = false;\n return literal;\n }\n literal += value;\n value = this._getNextChar();\n }\n return literal;\n };\n _ContentLexer.prototype._consumeValue = function () {\n this._operatorParams += this._currentCharacter;\n return this._getNextChar();\n };\n _ContentLexer.prototype._moveToNextChar = function () {\n while (this._currentCharacter !== String.fromCharCode(65535)) {\n switch (this._currentCharacter) {\n case '\\0':\n case '\\t':\n case '\\x0A':\n case '\\f':\n case '\\x0D':\n case '\\b':\n case ' ':\n this._getNextChar();\n break;\n default:\n return this._currentCharacter;\n }\n }\n return this._currentCharacter;\n };\n _ContentLexer.prototype._getNextChar = function () {\n if (this._data.length <= this._offset) {\n if (this._nextCharacter === 'Q' || (this._currentCharacter === 'D' && this._nextCharacter === 'o')) {\n this._currentCharacter = this._nextCharacter;\n this._nextCharacter = String.fromCharCode(65535);\n return this._currentCharacter;\n }\n this._currentCharacter = String.fromCharCode(65535);\n this._nextCharacter = String.fromCharCode(65535);\n }\n else {\n this._currentCharacter = this._nextCharacter;\n this._nextCharacter = String.fromCharCode(this._data[this._offset++]);\n if (this._currentCharacter === '\\x0D') {\n if (this._nextCharacter === '\\x0A') {\n this._currentCharacter = this._nextCharacter;\n if (this._data.length <= this._offset) {\n this._nextCharacter = String.fromCharCode(65535);\n }\n else {\n this._nextCharacter = String.fromCharCode(this._data[this._offset++]);\n }\n }\n else {\n this._currentCharacter = '\\x0A';\n }\n }\n }\n return this._currentCharacter;\n };\n return _ContentLexer;\n}());\nexport { _ContentLexer };\nvar _PdfRecord = /** @class */ (function () {\n function _PdfRecord(operator, operands) {\n this._operator = operator;\n this._operands = operands;\n }\n return _PdfRecord;\n}());\nexport { _PdfRecord };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { AnnotationRenderer, ShapeAnnotationBase, MeasureShapeAnnotationBase, ImageStructureBase } from './index';\nimport { PdfRotationAngle, PdfSquareAnnotation, PdfAnnotationFlag, PdfPopupAnnotation, PdfFreeTextAnnotation, PdfRubberStampAnnotation, PdfTextMarkupAnnotation, PdfInkAnnotation, PdfLineAnnotation, PdfRectangleAnnotation, PdfCircleAnnotation, PdfEllipseAnnotation, PdfPolygonAnnotation, PdfPolyLineAnnotation, PdfAngleMeasurementAnnotation, PdfAnnotationState, PdfAnnotationStateModel, _ContentParser, _stringToBytes, _encode } from '@syncfusion/ej2-pdf';\nimport { Rect } from '@syncfusion/ej2-drawings';\n/**\n * PageRenderer\n *\n * @hidden\n */\nvar PageRenderer = /** @class */ (function () {\n /**\n * @param {PdfViewer} pdfViewer - The PdfViewer.\n * @param {PdfViewerBase} pdfViewerBase - The PdfViewerBase.\n * @private\n */\n function PageRenderer(pdfViewer, pdfViewerBase) {\n /**\n * @private\n */\n this.shapeAnnotationList = [];\n /**\n * @private\n */\n this.textMarkupAnnotationList = [];\n /**\n * @private\n */\n this.measureAnnotationList = [];\n /**\n * @private\n */\n this.stickyAnnotationList = [];\n /**\n * @private\n */\n this.rubberStampAnnotationList = [];\n /**\n * @private\n */\n this.freeTextAnnotationList = [];\n /**\n * @private\n */\n this.signatureAnnotationList = [];\n /**\n * @private\n */\n this.signatureInkAnnotationList = [];\n /**\n * @private\n */\n this.annotationOrder = [];\n /**\n * @private\n */\n this.hyperlinks = [];\n /**\n * @private\n */\n this.imageData = '';\n /**\n * @private\n */\n this.isMaskedImage = false;\n /**\n * @private\n */\n this.hyperlinkBounds = [];\n /**\n * @private\n */\n this.annotationDestPage = [];\n /**\n * @private\n */\n this.annotationList = [];\n /**\n * @private\n */\n this.annotationYPosition = [];\n /**\n * @private\n */\n this.digitalSignaturePresent = false;\n this.annotationCount = 0;\n /**\n * @private\n */\n this.isAnnotationPresent = false;\n /**\n *\n * @private\n */\n this.htmldata = [];\n /**\n *\n * @private\n */\n this.renderingMode = 0;\n this.textString = \"\";\n this.baseFont = \"\";\n this.fontSize = 0;\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param {number} pageNumber\n * @param {Size} pageSize\n * @private\n */\n PageRenderer.prototype.exportAnnotationComments = function (pageNumber, pageSize) {\n var page = this.pdfViewer.pdfRendererModule.loadedDocument.getPage(parseInt(pageNumber.toString(), 10));\n var pageRotation = page.rotation;\n return this.getAnnotationFromPDF(pageSize.height, pageSize.width, pageNumber, pageRotation);\n };\n PageRenderer.prototype.IsStampExist = function (subject) {\n switch (subject.trim()) {\n case \"Approved\":\n case \"Not Approved\":\n case \"Confidential\":\n case \"Draft\":\n case \"Final\":\n case \"Completed\":\n case \"For Public Release\":\n case \"Not For Public Release\":\n case \"For Comment\":\n case \"Void\":\n case \"Preliminary Results\":\n case \"Information Only\":\n case \"Witness\":\n case \"Initial Here\":\n case \"Sign Here\":\n case \"Accepted\":\n case \"Rejected\":\n case \"Revised\":\n case \"Reviewed\":\n case \"Received\":\n return true;\n default:\n return false;\n }\n };\n PageRenderer.prototype.getAnnotationFromPDF = function (height, width, pageNumber, pageRotation) {\n var loadedPage = this.pdfViewer.pdfRendererModule.loadedDocument.getPage(parseInt(pageNumber.toString(), 10));\n var annotRenderer = new AnnotationRenderer(this.pdfViewer, this.pdfViewerBase);\n var textLabelCollection = [];\n var loadedFreetextAnnotations = [];\n this.isAnnotationPresent = false;\n if (loadedPage != null) {\n loadedFreetextAnnotations = this.getAllFreeTextAnnotations(loadedPage.annotations);\n this.annotationCount = 0;\n if (loadedPage.annotations != null && loadedPage.annotations.count > 0) {\n this.isAnnotationPresent = true;\n var _loop_1 = function (i) {\n var annotation = loadedPage.annotations.at(i);\n if (annotation instanceof PdfTextMarkupAnnotation) {\n // eslint-disable-next-line max-len\n var textMarkup = annotRenderer.loadTextMarkupAnnotation(annotation, height, width, pageRotation, loadedPage);\n this_1.textMarkupAnnotationList[this_1.textMarkupAnnotationList.length] = textMarkup;\n this_1.annotationOrder[this_1.annotationOrder.length] = textMarkup;\n var name_1 = this_1.textMarkupAnnotationList[this_1.textMarkupAnnotationList.length - 1].AnnotName;\n if (isNullOrUndefined(name_1) || name_1 === '') {\n // eslint-disable-next-line max-len\n this_1.textMarkupAnnotationList[this_1.textMarkupAnnotationList.length - 1].AnnotName = this_1.setAnnotationName(pageNumber);\n }\n }\n else if (annotation instanceof PdfLineAnnotation) {\n // eslint-disable-next-line max-len\n var shapeLabel = this_1.getShapeFreeText(annotation.name, loadedFreetextAnnotations);\n if (!isNullOrUndefined(shapeLabel)) {\n textLabelCollection.push(shapeLabel.name);\n }\n // eslint-disable-next-line max-len\n var shapes = annotRenderer.loadLineAnnotation(annotation, height, width, pageRotation, shapeLabel);\n var name_2 = shapes.AnnotName;\n if (isNullOrUndefined(name_2) || name_2 === '') {\n shapes.AnnotName = this_1.setAnnotationName(pageNumber);\n }\n if (!isNullOrUndefined(shapes)) {\n if (shapes instanceof MeasureShapeAnnotationBase) {\n this_1.measureAnnotationList[this_1.measureAnnotationList.length] = shapes;\n this_1.annotationOrder[this_1.annotationOrder.length] = shapes;\n }\n else if (shapes instanceof ShapeAnnotationBase) {\n this_1.shapeAnnotationList[this_1.shapeAnnotationList.length] = shapes;\n this_1.annotationOrder[this_1.annotationOrder.length] = shapes;\n }\n }\n }\n else if (annotation instanceof PdfSquareAnnotation || annotation instanceof PdfRectangleAnnotation) {\n // eslint-disable-next-line max-len\n var shapeLabel = this_1.getShapeFreeText(annotation.name, loadedFreetextAnnotations);\n if (!isNullOrUndefined(shapeLabel)) {\n textLabelCollection.push(shapeLabel.name);\n }\n // eslint-disable-next-line max-len\n var shapes = annotRenderer.loadSquareAnnotation(annotation, height, width, pageRotation, shapeLabel);\n var name_3 = shapes.AnnotName;\n if (isNullOrUndefined(name_3) || name_3 === '') {\n shapes.AnnotName = this_1.setAnnotationName(pageNumber);\n }\n if (!isNullOrUndefined(shapes)) {\n if (shapes instanceof MeasureShapeAnnotationBase) {\n this_1.measureAnnotationList[this_1.measureAnnotationList.length] = shapes;\n this_1.annotationOrder[this_1.annotationOrder.length] = shapes;\n }\n else if (shapes instanceof ShapeAnnotationBase) {\n this_1.shapeAnnotationList[this_1.shapeAnnotationList.length] = shapes;\n this_1.annotationOrder[this_1.annotationOrder.length] = shapes;\n }\n }\n }\n else if (annotation instanceof PdfRectangleAnnotation) {\n //rectangle annotation\n }\n else if (annotation instanceof PdfCircleAnnotation) {\n // eslint-disable-next-line max-len\n var shapeLabel = this_1.getShapeFreeText(annotation.name, loadedFreetextAnnotations);\n if (!isNullOrUndefined(shapeLabel)) {\n textLabelCollection.push(shapeLabel.name);\n }\n // eslint-disable-next-line max-len\n var shapes = annotRenderer.loadEllipseAnnotation(annotation, height, width, pageRotation, shapeLabel);\n if (!isNullOrUndefined(shapes)) {\n if (shapes instanceof MeasureShapeAnnotationBase) {\n this_1.measureAnnotationList[this_1.measureAnnotationList.length] = shapes;\n this_1.annotationOrder[this_1.annotationOrder.length] = shapes;\n }\n else if (shapes instanceof ShapeAnnotationBase) {\n this_1.shapeAnnotationList[this_1.shapeAnnotationList.length] = shapes;\n this_1.annotationOrder[this_1.annotationOrder.length] = shapes;\n }\n }\n }\n else if (annotation instanceof PdfEllipseAnnotation) {\n // eslint-disable-next-line max-len\n var shapeLabel = this_1.getShapeFreeText(annotation.name, loadedFreetextAnnotations);\n if (!isNullOrUndefined(shapeLabel)) {\n textLabelCollection.push(shapeLabel.name);\n }\n // eslint-disable-next-line max-len\n var shapes = annotRenderer.loadEllipseAnnotation(annotation, height, width, pageRotation, shapeLabel);\n if (!isNullOrUndefined(shapes)) {\n if (shapes instanceof MeasureShapeAnnotationBase) {\n this_1.measureAnnotationList[this_1.measureAnnotationList.length] = shapes;\n this_1.annotationOrder[this_1.annotationOrder.length] = shapes;\n }\n else if (shapes instanceof ShapeAnnotationBase) {\n this_1.shapeAnnotationList[this_1.shapeAnnotationList.length] = shapes;\n this_1.annotationOrder[this_1.annotationOrder.length] = shapes;\n }\n }\n }\n else if (annotation instanceof PdfPolygonAnnotation) {\n // eslint-disable-next-line max-len\n var shapeLabel = this_1.getShapeFreeText(annotation.name, loadedFreetextAnnotations);\n if (!isNullOrUndefined(shapeLabel)) {\n textLabelCollection.push(shapeLabel.name);\n }\n // eslint-disable-next-line max-len\n var shapes = annotRenderer.loadPolygonAnnotation(annotation, height, width, pageRotation, shapeLabel);\n var name_4 = shapes.AnnotName;\n if (isNullOrUndefined(name_4) || name_4 === '') {\n shapes.AnnotName = this_1.setAnnotationName(pageNumber);\n }\n if (!isNullOrUndefined(shapes)) {\n if (shapes instanceof MeasureShapeAnnotationBase) {\n this_1.measureAnnotationList[this_1.measureAnnotationList.length] = shapes;\n this_1.annotationOrder[this_1.annotationOrder.length] = shapes;\n }\n else if (shapes instanceof ShapeAnnotationBase) {\n this_1.shapeAnnotationList[this_1.shapeAnnotationList.length] = shapes;\n this_1.annotationOrder[this_1.annotationOrder.length] = shapes;\n }\n }\n }\n else if (annotation instanceof PdfPolyLineAnnotation || annotation instanceof PdfAngleMeasurementAnnotation) {\n // eslint-disable-next-line max-len\n var shapeLabel = this_1.getShapeFreeText(annotation.name, loadedFreetextAnnotations);\n if (!isNullOrUndefined(shapeLabel)) {\n textLabelCollection.push(shapeLabel.name);\n }\n // eslint-disable-next-line max-len\n var shapes = annotRenderer.loadPolylineAnnotation(annotation, height, width, pageRotation, shapeLabel);\n var name_5 = shapes.AnnotName;\n if (isNullOrUndefined(name_5) || name_5 === '') {\n shapes.AnnotName = this_1.setAnnotationName(pageNumber);\n }\n if (!isNullOrUndefined(shapes)) {\n if (shapes instanceof MeasureShapeAnnotationBase) {\n this_1.measureAnnotationList[this_1.measureAnnotationList.length] = shapes;\n this_1.annotationOrder[this_1.annotationOrder.length] = shapes;\n }\n else if (shapes instanceof ShapeAnnotationBase) {\n this_1.shapeAnnotationList[this_1.shapeAnnotationList.length] = shapes;\n this_1.annotationOrder[this_1.annotationOrder.length] = shapes;\n }\n }\n }\n if (annotation instanceof PdfRubberStampAnnotation) {\n this_1.htmldata = [];\n var stampAnnotation = annotation;\n if (stampAnnotation._dictionary.has('T') && this_1.checkName(stampAnnotation)) {\n this_1.signatureAnnotationList.push(annotRenderer.loadSignatureImage(stampAnnotation, pageNumber));\n }\n else if (stampAnnotation._dictionary.has(\"M\")) {\n var rubberStampAnnotation = new StampAnnotationBase();\n rubberStampAnnotation.Author = stampAnnotation.author;\n rubberStampAnnotation.Subject = stampAnnotation.subject;\n rubberStampAnnotation.AnnotName = stampAnnotation.name;\n if (rubberStampAnnotation.AnnotName === '' || rubberStampAnnotation.AnnotName === null) {\n rubberStampAnnotation.AnnotName = this_1.setAnnotationName(pageNumber);\n }\n if (annotation._dictionary.has(\"rotateAngle\")) {\n var rotateAngle = annotation._dictionary.get(\"rotateAngle\");\n if (rotateAngle !== undefined) {\n // The rotateAngle will get as 1, 2 and 3 To save in RotateAngle multiplying with 90.\n rubberStampAnnotation.RotateAngle = parseInt(rotateAngle[0]) * 90;\n }\n }\n else {\n // If the rotate angle is not specified in the annotation dictionary, then calculate it based on the page rotation.\n rubberStampAnnotation.RotateAngle = 360 - (Math.abs(stampAnnotation.rotate * 90) - (pageRotation * 90));\n var rubberStampAnnotationAngle = rubberStampAnnotation.RotateAngle;\n if (rubberStampAnnotation.RotateAngle > 360) {\n rubberStampAnnotation.RotateAngle = rubberStampAnnotationAngle - 360;\n }\n }\n if (rubberStampAnnotation.RotateAngle != 0) {\n var bounds = this_1.getRubberStampBounds(stampAnnotation._innerTemplateBounds, stampAnnotation.bounds, height, width, pageRotation);\n rubberStampAnnotation.Rect = bounds;\n }\n else {\n rubberStampAnnotation.Rect = this_1.getBounds(stampAnnotation.bounds, height, width, pageRotation);\n }\n if (rubberStampAnnotation.Rect.y) {\n var cropRect = new Rect(rubberStampAnnotation.Rect.x, loadedPage.cropBox[1] + rubberStampAnnotation.Rect.y, rubberStampAnnotation.Rect.width, rubberStampAnnotation.Rect.height);\n rubberStampAnnotation.Rect = this_1.getBounds(cropRect, height, width, pageRotation);\n }\n rubberStampAnnotation.Icon = stampAnnotation.icon;\n rubberStampAnnotation.ModifiedDate = stampAnnotation.modifiedDate.toString();\n rubberStampAnnotation.Opacity = stampAnnotation.opacity;\n rubberStampAnnotation.pageNumber = pageNumber;\n var dictionary = annotation._dictionary.get('AP');\n this_1.pdfViewerBase.pngData.push(stampAnnotation);\n rubberStampAnnotation.IsDynamic = false;\n rubberStampAnnotation.AnnotType = 'stamp';\n if (stampAnnotation._dictionary.hasOwnProperty(\"iconName\")) {\n rubberStampAnnotation.IconName = stampAnnotation.getValues(\"iconName\")[0];\n }\n else if (stampAnnotation.subject !== null) {\n rubberStampAnnotation.IconName = stampAnnotation.subject;\n }\n else {\n rubberStampAnnotation.IconName = \"\";\n }\n if (stampAnnotation.flags === PdfAnnotationFlag.readOnly) {\n rubberStampAnnotation.IsCommentLock = true;\n }\n else {\n rubberStampAnnotation.IsCommentLock = false;\n }\n if (stampAnnotation.flags === PdfAnnotationFlag.locked) {\n rubberStampAnnotation.IsLocked = true;\n }\n else {\n rubberStampAnnotation.IsLocked = false;\n }\n if (!isNullOrUndefined(stampAnnotation.reviewHistory)) {\n for (var i_1 = 0; i_1 < stampAnnotation.reviewHistory.count; i_1++) {\n rubberStampAnnotation.State = this_1.getStateString(stampAnnotation.reviewHistory.at(parseInt(i_1.toString(), 10)).state);\n rubberStampAnnotation.StateModel = this_1.getStateModelString(stampAnnotation.reviewHistory.at(parseInt(i_1.toString(), 10)).stateModel);\n }\n }\n if (rubberStampAnnotation.State == null || rubberStampAnnotation.StateModel == null) {\n rubberStampAnnotation.State = \"Unmarked\";\n rubberStampAnnotation.StateModel = \"None\";\n }\n rubberStampAnnotation.Comments = new Array();\n for (var i_2 = 0; i_2 < stampAnnotation.comments.count; i_2++) {\n var annot = annotRenderer.loadPopupAnnotation(stampAnnotation.comments.at(i_2), height, width, pageRotation);\n rubberStampAnnotation.Comments.push(annot);\n }\n if (annotation._dictionary.has('Name')) {\n rubberStampAnnotation.Name = annotation._dictionary.get('Name');\n if (annotation._dictionary.get('Name').name.includes(\"#23D\") || annotation._dictionary.get('Name').name.includes(\"#D\")) {\n rubberStampAnnotation.IsDynamic = true;\n }\n if (!isNullOrUndefined(rubberStampAnnotation.Subject) && !(this_1.IsStampExist(rubberStampAnnotation.Subject))) {\n rubberStampAnnotation.Subject = stampAnnotation.icon.toString();\n }\n }\n if (isNullOrUndefined(dictionary)) {\n var pdfReference = annotation._dictionary.get('AP');\n if (!isNullOrUndefined(pdfReference) && !isNullOrUndefined(pdfReference.dictionary) && (pdfReference.dictionary.has('N'))) {\n var ap_dictionary = pdfReference.dictionary;\n if (!isNullOrUndefined(ap_dictionary)) {\n this_1.findStampImage(annotation);\n }\n }\n }\n else if (dictionary.has('N')) {\n this_1.findStampImage(annotation);\n }\n rubberStampAnnotation.IsMaskedImage = this_1.isMaskedImage;\n rubberStampAnnotation.Apperarance = this_1.htmldata;\n if (stampAnnotation._dictionary.has('CustomData')) {\n var customData = stampAnnotation._dictionary.get('CustomData');\n if (!(!isNullOrUndefined(customData) && customData.trim())) {\n var ExistingCustomData = dictionary.get('CustomData');\n if (ExistingCustomData) {\n rubberStampAnnotation.CustomData = ExistingCustomData;\n }\n }\n }\n this_1.rubberStampAnnotationList.push(rubberStampAnnotation);\n this_1.annotationOrder.push(rubberStampAnnotation);\n }\n }\n if (annotation instanceof PdfPopupAnnotation) {\n if (!annotation._dictionary.has(\"IRT\")) {\n var stickyNote = annotRenderer.loadPopupAnnotation(annotation, height, width, pageRotation);\n this_1.stickyAnnotationList[this_1.stickyAnnotationList.length] = stickyNote;\n this_1.annotationOrder[this_1.annotationOrder.length] = stickyNote;\n var name_6 = stickyNote.AnnotName;\n if (isNullOrUndefined(name_6) || name_6 === '') {\n stickyNote.AnnotName = this_1.setAnnotationName(pageNumber);\n }\n }\n }\n if (annotation instanceof PdfFreeTextAnnotation) {\n var freeTextAnnot_1 = annotation;\n var isFreeTextAnnotation = this_1.isFreeTextAnnotationType(freeTextAnnot_1);\n if (isFreeTextAnnotation) {\n var isShapeLabelAnnot = textLabelCollection.some(function (s) { return s === freeTextAnnot_1.name; });\n var freeText = annotRenderer.loadFreeTextAnnotation(freeTextAnnot_1, height, width, pageRotation, loadedPage);\n if (!isShapeLabelAnnot) {\n this_1.freeTextAnnotationList[this_1.freeTextAnnotationList.length] = freeText;\n this_1.annotationOrder[this_1.annotationOrder.length] = freeText;\n }\n }\n else {\n var freeText = annotRenderer.loadSignatureText(freeTextAnnot_1, pageNumber, height, width, pageRotation);\n if (!freeTextAnnot_1._dictionary.has('T')) {\n this_1.signatureAnnotationList[this_1.signatureAnnotationList.length] = freeText;\n this_1.annotationOrder[this_1.annotationOrder.length] = freeText;\n }\n }\n }\n if (annotation instanceof PdfInkAnnotation) {\n var inkAnnotation = annotation;\n var signatureData = annotRenderer.loadSignature(inkAnnotation, height, width, pageRotation, pageNumber, loadedPage);\n var inkSignatureData = annotRenderer.loadInkAnnotation(inkAnnotation, height, width, pageRotation, pageNumber, loadedPage);\n if (!inkAnnotation._dictionary.has(\"T\")) {\n this_1.signatureAnnotationList.push(signatureData);\n this_1.annotationOrder.push(signatureData);\n }\n else if (inkAnnotation._dictionary.has(\"NM\")) {\n this_1.signatureInkAnnotationList.push(inkSignatureData);\n this_1.annotationOrder.push(inkSignatureData);\n }\n else if (inkAnnotation._dictionary.has(\"T\")) {\n if (inkAnnotation._dictionary.has(\"annotationSignature\")) {\n var canAdd = true;\n canAdd = inkAnnotation.getValues(\"annotationSignature\").length > 0 ? false : true;\n if (canAdd) {\n this_1.signatureAnnotationList.push(signatureData);\n this_1.annotationOrder.push(signatureData);\n }\n }\n }\n if (!inkAnnotation._dictionary.has('NM') && !inkAnnotation._dictionary.has(\"annotationSignature\")) {\n this_1.signatureAnnotationList.push(signatureData);\n this_1.annotationOrder.push(signatureData);\n }\n }\n };\n var this_1 = this;\n for (var i = 0; i < loadedPage.annotations.count; i++) {\n _loop_1(i);\n }\n }\n }\n return { shapeAnnotation: this.shapeAnnotationList, textMarkupAnnotation: this.textMarkupAnnotationList,\n measureShapeAnnotation: this.measureAnnotationList, stampAnnotations: this.rubberStampAnnotationList,\n stickyNotesAnnotation: this.stickyAnnotationList, freeTextAnnotation: this.freeTextAnnotationList,\n signatureAnnotation: this.signatureAnnotationList, signatureInkAnnotation: this.signatureInkAnnotationList,\n annotationOrder: this.annotationOrder };\n };\n /**\n * @private\n * @param annotation\n */\n PageRenderer.prototype.findStampImage = function (annotation) {\n var stream = annotation._dictionary.get(\"AP\").get(\"N\");\n if (!isNullOrUndefined(stream)) {\n var appearance = stream;\n var data = appearance.getString();\n var content = _stringToBytes(data, true);\n var parser = new _ContentParser(content);\n var result = parser._readContent();\n this.stampAnnoattionRender(result, stream);\n }\n };\n PageRenderer.prototype.stampAnnoattionRender = function (recordCollection, dictionary) {\n if (!isNullOrUndefined(recordCollection)) {\n for (var i = 0; i < recordCollection.length; i++) {\n var element = recordCollection[parseInt(i.toString(), 10)]._operands;\n switch (recordCollection[parseInt(i.toString(), 10)]._operator) {\n case \"q\": {\n var Json = { restorecanvas: false };\n this.htmldata.push(Json);\n break;\n }\n case \"Q\": {\n var Json = { restorecanvas: true };\n this.htmldata.push(Json);\n break;\n }\n case \"Tr\": {\n this.renderingMode = parseInt(element[0]);\n break;\n }\n case \"TJ\":\n case \"Tj\": {\n this.textString = recordCollection[parseInt(i.toString(), 10)]._operands[0];\n var Json = { type: \"string\", text: this.textString, currentFontname: this.currentFont, baseFontName: this.baseFont, fontSize: this.fontSize };\n this.htmldata.push(Json);\n break;\n }\n case \"'\": {\n this.textString = recordCollection[parseInt(i.toString(), 10)]._operands[0];\n var Json = { type: \"string\", text: this.textString, currentFontname: this.currentFont, baseFontName: this.baseFont, fontSize: this.fontSize };\n this.htmldata.push(Json);\n break;\n }\n case \"Tf\": {\n var j = 0;\n for (j = 0; j < element.length; j++) {\n if (element[parseInt(j.toString(), 10)].includes(\"/\")) {\n this.currentFont = element[parseInt(j.toString(), 10)].replace(\"/\", \"\");\n break;\n }\n }\n this.fontSize = parseInt(element[j + 1]);\n if (dictionary.dictionary.has(\"Resources\")) {\n var stdic = dictionary.dictionary.get(\"Resources\");\n if (!isNullOrUndefined(stdic)) {\n var fontObject = stdic.get(\"Font\");\n if (!isNullOrUndefined(fontObject) && recordCollection[parseInt(i.toString(), 10)]._operator == \"Tf\") {\n var name_7 = element[0].replace(\"/\", \"\");\n var refernceholder = fontObject.get(name_7);\n if (!isNullOrUndefined(refernceholder) && !isNullOrUndefined(refernceholder.dictionary)) {\n var sub = refernceholder.dictionary;\n this.baseFont = sub.get(\"BaseFont\");\n }\n }\n }\n }\n break;\n }\n case \"Do\": {\n if (dictionary.dictionary.has(\"Resources\")) {\n var stdic = dictionary.dictionary.get(\"Resources\");\n if (!isNullOrUndefined(stdic)) {\n var xObject = stdic.get(\"XObject\");\n if (!isNullOrUndefined(xObject) && recordCollection[parseInt(i.toString(), 10)]._operator == \"Do\") {\n var name_8 = element[0].replace(\"/\", \"\");\n if (xObject.has(name_8)) {\n var refernceholder = xObject.get(name_8);\n if (!isNullOrUndefined(refernceholder) && !isNullOrUndefined(refernceholder.dictionary)) {\n var sub = refernceholder;\n if (sub.dictionary.get(\"Subtype\").name == \"Image\") {\n var imageStucture = new ImageStructureBase(sub, sub.dictionary);\n if (!isNullOrUndefined(imageStucture)) {\n var imageStream = imageStucture.getImageStream();\n var imageString = 'data:image/png;base64,' + _encode(imageStream);\n var Json = { imagedata: imageString };\n this.htmldata.push(Json);\n this.Imagedata = imageString;\n }\n }\n else if (sub.dictionary.get(\"Subtype\").name === \"Form\") {\n var appearance = sub;\n var data = appearance.getString();\n var content = _stringToBytes(data, true);\n var parser = new _ContentParser(content);\n var result = parser._readContent();\n this.stampAnnoattionRender(result, sub);\n }\n this.IsMaskedImage = false;\n if (sub.dictionary.get(\"SMask\")) {\n this.IsMaskedImage = true;\n }\n }\n }\n }\n }\n }\n break;\n }\n }\n }\n }\n };\n PageRenderer.prototype.getStateModelString = function (stateModel) {\n switch (stateModel) {\n case PdfAnnotationStateModel.review:\n return 'Review';\n case PdfAnnotationStateModel.marked:\n return 'Marked';\n case PdfAnnotationStateModel.none:\n return 'None';\n default:\n return 'None';\n }\n };\n PageRenderer.prototype.getStateString = function (state) {\n switch (state) {\n case PdfAnnotationState.accepted:\n return 'Accepted';\n case PdfAnnotationState.rejected:\n return 'Rejected';\n case PdfAnnotationState.cancel:\n return 'Cancelled';\n case PdfAnnotationState.completed:\n return 'Completed';\n case PdfAnnotationState.none:\n return 'None';\n case PdfAnnotationState.unmarked:\n return 'Unmarked';\n case PdfAnnotationState.marked:\n return 'Marked';\n case PdfAnnotationState.unknown:\n return 'Unknown';\n default:\n return null;\n }\n };\n PageRenderer.prototype.getBounds = function (bounds, pageWidth, pageHeight, pageRotation) {\n var bound;\n if (pageRotation === 0) {\n // eslint-disable-next-line max-len\n bound = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n }\n else if (pageRotation === 1) {\n // eslint-disable-next-line max-len\n bound = new Rect(this.convertPixelToPoint(pageWidth - this.convertPointToPixel(bounds.y)) - this.convertPointToPixel(bounds.height), bounds.x, bounds.height, bounds.width);\n }\n else if (pageRotation === 2) {\n // eslint-disable-next-line max-len\n bound = new Rect(this.convertPixelToPoint(pageWidth - this.convertPointToPixel(bounds.x)) - this.convertPointToPixel(bounds.width), this.convertPixelToPoint(pageHeight - this.convertPointToPixel(bounds.y)) - this.convertPointToPixel(bounds.height), this.convertPointToPixel(bounds.width), bounds.height);\n }\n else if (pageRotation === 3) {\n // eslint-disable-next-line max-len\n bound = new Rect(bounds.y, this.convertPixelToPoint(pageHeight - this.convertPointToPixel(bounds.x)) - this.convertPointToPixel(bounds.width), bounds.height, bounds.width);\n }\n return bound;\n };\n PageRenderer.prototype.getRubberStampBounds = function (innerTemplateBounds, bounds, pageHeight, pageWidth, pageRotation) {\n var bound = new Rect();\n var centerPointX = 0;\n var centerPointY = 0;\n if (pageRotation === 0) {\n centerPointX = bounds.x + (bounds.width / 2);\n centerPointY = bounds.y + (bounds.height / 2);\n bound = new Rect(centerPointX - (innerTemplateBounds.width / 2), centerPointY - (innerTemplateBounds.height / 2), innerTemplateBounds.width, innerTemplateBounds.height);\n }\n else if (pageRotation === 1) {\n var boundsX = this.convertPixelToPoint(pageWidth - this.convertPointToPixel(bounds.Y) - this.convertPointToPixel(bounds.height));\n var boundsY = bounds.X;\n centerPointX = boundsX + (bounds.height / 2);\n centerPointY = boundsY + (bounds.width / 2);\n bound = new Rect(centerPointX - (innerTemplateBounds.width / 2), centerPointY - (innerTemplateBounds.height / 2), innerTemplateBounds.width, innerTemplateBounds.height);\n }\n else if (pageRotation === 2) {\n var boundsX = this.convertPixelToPoint(pageWidth - this.convertPointToPixel(bounds.X) - this.convertPointToPixel(bounds.width));\n var boundsY = this.convertPixelToPoint(pageHeight - this.convertPointToPixel(bounds.Y) - this.convertPointToPixel(bounds.height));\n centerPointX = boundsX + (bounds.width / 2);\n centerPointY = boundsY + (bounds.height / 2);\n bound = new Rect(centerPointX - (innerTemplateBounds.width / 2), centerPointY - (innerTemplateBounds.height / 2), innerTemplateBounds.width, innerTemplateBounds.height);\n }\n else if (pageRotation === 3) {\n var boundsX = bounds.Y;\n var boundsY = this.convertPixelToPoint(pageHeight - this.convertPointToPixel(bounds.X) - this.convertPointToPixel(bounds.width));\n centerPointX = boundsX + (bounds.height / 2);\n centerPointY = boundsY + (bounds.width / 2);\n bound = new Rect(centerPointX - (innerTemplateBounds.width / 2), centerPointY - (innerTemplateBounds.height / 2), innerTemplateBounds.width, innerTemplateBounds.height);\n }\n return bound;\n };\n PageRenderer.prototype.convertPixelToPoint = function (value) {\n return (value * 72 / 96);\n };\n PageRenderer.prototype.convertPointToPixel = function (value) {\n return (value * 96 / 72);\n };\n PageRenderer.prototype.getRotateAngleString = function (angle) {\n switch (angle) {\n case PdfRotationAngle.angle0:\n return 'RotateAngle0';\n case PdfRotationAngle.angle90:\n return 'RotateAngle90';\n case PdfRotationAngle.angle180:\n return 'RotateAngle180';\n case PdfRotationAngle.angle270:\n return 'RotateAngle270';\n default:\n return 'RotateAngle0';\n }\n };\n PageRenderer.prototype.checkName = function (stampAnnotation) {\n // Check if the stamp annotation has a \"Name\" key in its dictionary.\n if (\"Name\" in stampAnnotation._dictionary) {\n // Get the custom data for the \"Name\" key.\n var customData = stampAnnotation.getValues(\"Name\");\n // Check if the custom data is not null and contains a '#' character.\n if (!(isNullOrUndefined(customData)) && customData.indexOf(\"#\") > -1) {\n // The stamp annotation has a name that contains a '#' character.\n return true;\n }\n }\n // The stamp annotation does not have a name that contains a '#' character.\n return false;\n };\n PageRenderer.prototype.getAllFreeTextAnnotations = function (annotations) {\n var loadedFreetextAnnotations = [];\n for (var i = 0; i < annotations.count; i++) {\n var annotation = annotations.at(i);\n if (annotation instanceof PdfFreeTextAnnotation) {\n loadedFreetextAnnotations.push(annotation);\n }\n }\n return loadedFreetextAnnotations;\n };\n PageRenderer.prototype.getShapeFreeText = function (shapeName, loadedFreetextAnnotations) {\n if (!isNullOrUndefined(shapeName) && shapeName !== '') {\n return loadedFreetextAnnotations.find(function (annot) { return annot.name.includes(shapeName); });\n }\n return null;\n };\n PageRenderer.prototype.setAnnotationName = function (pageNumber) {\n var annotationName = pageNumber + this.annotationCount.toString();\n this.annotationCount++;\n return annotationName;\n };\n PageRenderer.prototype.isFreeTextAnnotationType = function (freeTextAnnot) {\n var isFreeTextAnnotation = true;\n if (freeTextAnnot._dictionary.has('AnnotationType')) {\n var annotType = freeTextAnnot.getValues('AnnotationType');\n if (!isNullOrUndefined(annotType) && annotType[0] === 'Signature') {\n isFreeTextAnnotation = false;\n }\n }\n return isFreeTextAnnotation;\n };\n return PageRenderer;\n}());\nexport { PageRenderer };\n/**\n *\n * @hidden\n */\nvar StampAnnotationBase = /** @class */ (function () {\n function StampAnnotationBase() {\n }\n return StampAnnotationBase;\n}());\nexport { StampAnnotationBase };\n","/**\n * @private\n * @hidden\n * @returns {string} - Returns the arial font data value.\n */\nexport function getArialFontData() {\n // eslint-disable-next-line\n return arialFontData;\n}\n/**\n* @private\n*/\nvar arialFontData = \"AAEAAAAXAQAABABwRFNJRyQ9+ecABX+MAAAafEdERUZeI11yAAV1GAAAAKZHU1VC1fDdzAAFdcAAAAmqSlNURm0qaQYABX9sAAAAHkxUU0iAZfo8AAAceAAABo5PUy8yDN8yawAAAfgAAABWUENMVP17PkMABXTgAAAANlZETVhQkmr1AAAjCAAAEZRjbWFw50BqOgAA0cQAABdqY3Z0IJYq0nYAAPqgAAAGMGZwZ23MeVmaAADpMAAABm5nYXNwABgACQAFdNAAAAAQZ2x5Zg73j+wAARr8AAPnYmhkbXi+u8OXAAA0nAAAnShoZWFkzpgmkgAAAXwAAAA2aGhlYRIzEv8AAAG0AAAAJGhtdHgONFhAAAACUAAAGihrZXJuN2E5NgAFAmAAABVgbG9jYQ5haTIAAQDQAAAaLG1heHALRwyoAAAB2AAAACBuYW1lwPJlOwAFF8AAABsNcG9zdI/p134ABTLQAABB/3ByZXBS/sTpAADvoAAACv8AAQAAAAMAAObouupfDzz1CBsIAAAAAACi4ycqAAAAALnVtPb6r/1nEAAIDAAAAAkAAQABAAAAAAABAAAHPv5OAEMQAPqv/iYQAAABAAAAAAAAAAAAAAAAAAAGigABAAAGigEAAD8AdgAHAAIAEAAvAFYAAAQNCv8AAwACAAEDiAGQAAUAAAWaBTMAAAEbBZoFMwAAA9EAZgISCAUCCwYEAgICAgIEAAB6h4AAAAAAAAAIAAAAAE1vbm8AQAAg//wF0/5RATMHPgGyQAAB////AAAAAAYAAQAAAAAAAjkAAAI5AAACOQCwAtcAXgRzABUEcwBJBx0AdwVWAFgBhwBaAqoAfAKqAHwDHQBABKwAcgI5AKoCqgBBAjkAugI5AAAEcwBVBHMA3wRzADwEcwBWBHMAGgRzAFUEcwBNBHMAYQRzAFMEcwBVAjkAuQI5AKoErABwBKwAcgSsAHAEcwBaCB8AbwVW//0FVgCWBccAZgXHAJ4FVgCiBOMAqAY5AG0FxwCkAjkAvwQAADcFVgCWBHMAlgaqAJgFxwCcBjkAYwVWAJ4GOQBYBccAoQVWAFwE4wAwBccAoQVWAAkHjQAZBVYACQVWAAYE4wApAjkAiwI5AAACOQAnA8EANgRz/+ECqgBZBHMASgRzAIYEAABQBHMARgRzAEsCOQATBHMAQgRzAIcBxwCIAcf/ogQAAIgBxwCDBqoAhwRzAIcEcwBEBHMAhwRzAEgCqgCFBAAAPwI5ACQEcwCDBAAAGgXHAAYEAAAPBAAAIQQAACgCrAA5AhQAvAKsAC8ErABXBVb//QVW//0FxwBoBVYAogXHAJwGOQBjBccAoQRzAEoEcwBKBHMASgRzAEoEcwBKBHMASgQAAFAEcwBLBHMASwRzAEsEcwBLAjkAvQI5ACMCOf/lAjkACQRzAIcEcwBEBHMARARzAEQEcwBEBHMARARzAIMEcwCDBHMAgwRzAIMEcwBJAzMAgARzAGsEcwAbBHMAUQLNAG0ETAABBOMAmQXlAAMF5QADCAAA4QKqAN4CqgA9BGQATggAAAEGOQBTBbQAmgRkAE4EZABNBGQATQRz//0EnACgA/QAOAW0AHoGlgChBGQAAAIxAAAC9gAvAuwALQYlAH8HHQBEBOMAgQTjAJ4CqgDoBKwAcgRkAFQEcwAuBGQAMwTlABoEcwCGBHMAjAgAAO8FVv/9BVb//QY5AGMIAACBB40AUgRz//wIAAAAAqoAUwKqAEcBxwCAAccAbARkAE4D9AAvBAAAIQVWAAYBVv45BHP/5AKqAFwCqgBcBAAAFwQAABcEcwBJAjkAuQHHAGwCqgBHCAAAJQVW//0FVgCiBVb//QVWAKIFVgCiAjkAjQI5/+ACOQAEAjkAFQY5AGMGOQBjBjkAYwXHAKEFxwChBccAoQI5AMYCqgAZAqoABgKqAB0CqgAuAqoA5QKqAKICqgBrAqoAOgKqALcCqgAoBHMAAAHHAAMFVgBcBAAAPwTjACkEAAAoAhQAvAXH//0EcwBJBVYABgQAACEFVgCeBHMAhwSsAHIErAChAqoAawKqABkCqgAhBqwAawasAGsGrAAhBHMAAAY5AG0EcwBCAjkAsQVWAFwEAAA/BccAZgQAAFAFxwBmBAAAUARzAEYEa//hAqoB8QVW//0EcwBKBVb//QRzAEoFxwCeBOsARwXH//0FVgCiBHMASwVWAKIEcwBLBHMAlgHHAEIEcwCWAlUAiARzAJoCrACDBccAnARzAIcFxwCcBHMAhwY5AGMEcwBEBccAoQKqAIUFxwChAqoAPAVWAFwEAAA/BOMAMAI5ACQE4wAwAwAAIwXHAKEEcwCDBccAoQRzAIME4wApBAAAKATjACkEAAAoBGgApAY5AGAGYgBVBKAASAR0AEgDkQBiBPAARAMpAC4FMABIBGv/4QQAALAC6wBSCMAAMwgAAE8EAACZCAAATwQAAJkIAABPBAAAmAQAAJgH1QFqBcAAngSrAHIE1QCdBKwAcQTVAiIE1QEFBav/6QUAAckFqwJ+Bav/6QWrAn4Fq//pBasCfgWr/+kFq//pBav/6QWr/+kFq//pBasBwAWrAn4FqwHABasBwAWr/+kFq//pBav/6QWrAn4FqwHABasBwAWr/+kFq//pBav/6QWrAn4FqwHABasBwAWr/+kFq//pBav/6QWr/+kFq//pBav/6QWr/+kFq//pBav/6QWr/+kFq//pBav/6QWr/+kFq//pBav/6QWr/+kFqwLWBasAZgWr/+oF1f//BNUAkggAAAAH6wEwB+sBIAfrATAH6wEgBNUAsgTVAIAE1QAqCCsBmAhrAbgHVQAQBgAA9AYAAG8EQAA6BUAANwTAAD8EFQBABAAAJQYAAFUF4QC/A40AiQTV/9kBgACAAtUAhgcVAGEClgAPBNUAkgLWAIMC1gCDBNUAsgLWAHAFVv/9BHMASgXHAGYEAABQBccAZgQAAFAFVgCiBHMASwVWAKIEcwBLBVYAogRzAEsGOQBtBHMAQgY5AG0EcwBCBjkAbQRzAEIFxwCkBHMAhwXHAB8EcwAGAjn/zgI5/84COf/kAjn/5AI5//YCOf/1AjkAowHHAGYEAAA3Acf/ogVWAJYEAACIBAAAhgRzAJYBx//6BccAnARzAIcFyQClBHMAiwY5AGMEcwBEBjkAYwRzAEQFxwChAqoAawVWAFwEAAA/BOMAMAI5AAwFxwChBHMAgwXHAKEEcwCDBccAoQRzAIMFxwChBHMAgweNABkFxwAGBVYABgQAACEBxwCJBVb//QRzAEoIAAABBx0ARAY5AFME4wCBAjkAuQeNABkFxwAGB40AGQXHAAYHjQAZBccABgVWAAYEAAAhAccAigKq/+EEcwAbBM0AWgasAGsGrAAiBqwAIgasAEoCqgDiAqoAawKqAN4Cqv/qBVf//wZG/6cGtP+oAxL/qAYy/6cG2P+nBgX/pwHH/3gFVv/9BVYAlgVY//4FVgCiBOMAKQXHAKQCOQC/BVYAlgVYAAsGqgCYBccAnAUzAG0GOQBjBccApAVWAJ4E8gCUBOMAMAVWAAYFVgAJBq8AfwX7AGECOQAEBVYABgSgAEgDkQBiBHMAiwHHAGsEYACIBJoAjAQAABkDhwBIBHMAiwRzAFwBxwCJBAAAhgQAABgEnACgBAAAGgOVAFwEcwBEBI0AgwPbAFYEYACIBDMAEQW0AHoGPwBXAcf/yQRgAIgEcwBIBGAAiAY/AFcFVwCiBusAMgRVAKEFwABkBVYAXAI5AL8COQAEBAAANwh1AA0IFQCkBtUAMQSpAKEFFQAKBcAAoAVW//0FQACnBVYAlgRVAKEFawAABVYAogdjAAcE1QBOBcAAoQXAAKEEqQChBUAAEgaqAJgFxwCkBjkAYwXAAKAFVgCeBccAZgTjADAFFQAKBhUAUgVWAAkF6wCfBVUAVwdVAKEHgAChBlUAAAcVAKgFQAClBcAAVQgVAKQFxwAaBHMASgSVAFsEQACIAusAiASrAAAEcwBLBVr/+wOrADIEeACHBHgAhwOAAIYEqwAYBYAAjARrAIgEcwBEBFUAiARzAIcEAABQA6oAJgQAACEGlQBLBAAADwSVAIoEKwBFBmsAjQaVAI0FAAAoBcAAiwQrAIQEFQAwBgAAiQRVAB8EcwBLBHMAAALrAIkEFQBLBAAAPwHHAIgCOQAJAcf/ogdAABMGgACDBHMAAAOAAIYEAAAhBGsAiAPpAKEDSgCICAAAQQiVAKAFhQAtAqoBAQKqAB4CqgAxAqoAMQKqAQECqgB+AqoAfgKqAIwCqgCMAqoBAQKqABACqgEBAqoBIQMQAH0CqgCMAjMA0gKqAwsCqv8EAjkAuQSBAGkEVgAyAzEAGQQRAC0E0QCWAfkAmwMPAF8EygCbBLgAjAH5AJsEEwAoA7AAUAO0ADwEygCbBM8AUAH5AJsC0gA8BJgAWgQ8ABkEiABuBF8AcwOxABkD1AAKBGYAlgQTACgFjgBkBSQAKAPyAJsD8gCbA/IAmwHjAFoDVgBaBoYAmwH5/6wEEwAoBBMAKAO0/1cDtP9XBEgALQWOAGQFjgBkBY4AZAWOAGQEgQBpBIEAaQSBAGkEVgAyAzEAGQQRAC0E0QCWAksAAANKAAAEuACMAksAAAQTACgDsABQA7QAPATPAFAC0gA8BJgAWgSIAG4EXwBzA9QACgRmAJYEEwAoBY4AZAUkACgB+QCbBFYAMgOwAFAEXwBzBJsAPAAA/9wAAP8lAAD/3AAA/lECjQCrAo0AoALaAEMDTQB5Aaj/ugGcAEYB5QBGAZwARgGcAEYBrQBIAZwARgGxAEYBUQBGBDUBfAQ1AS4ENQC3BDUAgQQ1ASwENQC+BDUArwQ1AIEENQCaBDUA2wQ1AIUCjQDBBDUAswYAAQAGAAEAAkIANgYAAQAENQCeBDUAmAQ1AMsGAAEABgABAAYAAQAGAAEABgABAAGxAEYGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAUb/7oGAAEABgABAAYAAQAFtQA6BbUAOgH0/7oB9P+6BgABAAYAAQAGAAEABgABAASBADYENQA2BD3/ugQ9/7oD6QBKA+kASgZ/ABQHdgAUAyf/ugQe/7oGfwAUB3YAFAMn/7oEHv+6BRsAMgS1ACQGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEAAc8AMAGxAEYBsQBGAbEAQAGxAEYGAAEABgABAAAA/9wAAP5RAAD/FgAA/xYAAP8WAAD/FgAA/xYAAP8WAAD/FgAA/xYAAP8WAAD/3AAA/xYAAP/cAAD/IAAA/9wEcwBKCAAAAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQACjQB/Ao0AXQYAAQAE7gAVA00AeQGoAA4B1v/cAagAVgHWABADdQAyA3UAMgGoAC0B1gATBRsAMgS1ACQB9P+6AfT/ugGoAJMB1gATBbUAOgW1ADoB9P+6AfT/ugJCAAADAP/3BbUAOgW1ADoB9P+6AfT/ugW1ADoFtQA6AfT/ugH0/7oEgQA2BDUANgQ9/7oEPf+6BIEANgQ1ADYEPf+6BD3/ugSBADYENQA2BD3/ugQ9/7oCswBfArMAXwKzAF8CswBfA+kASgPpAEoD6QBKA+kASgaSAD4GkgA+BD//ugQ//7oGkgA+BpIAPgQ//7oEP/+6CMkAPgjJAD4Gxf+6BsX/ugjJAD4IyQA+BsX/ugbF/7oEp/+6BKf/ugSn/7oEp/+6BKf/ugSn/7oEp/+6BKf/ugRaACoDmgA2BDX/ugMn/7oEWgAqA5oANgQ1/7oDJ/+6Bk8AJwZPACcCJP+6Ahr/ugSnAEYEpwBGAiT/ugIa/7oEzwAtBM8ALQMn/7oDJ/+6BA0ARwQNAEcBqP+6Aaj/ugK0ACMCtAAjAyf/ugMn/7oENQBFBDUARQH0/7oB9P+6AkIANgMA//cDmv+6Ayf/ugN1ADIDdQAyBRsAMgS1ACQFGwAyBLUAJAH0/7oB9P+6BFoAQATOAEkEWgAmBM4AOQRaAFMEzgBKBFoAUwTOAEoGAAEABgABAAGcAEYBnABGBgABAAYAAQAGAAEAAVEARgGxAEYGAAEABgABAAGtAEgB5QBGBgABAAYAAQAGAAEAAbEARgGxAEYBsQBGAbEARgGxAEABzwAwBgABAAGcAEYBnABGBgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEAAo0AygKNAMcCjQDGBgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEABgABAAYAAQAGAAEAAQD/uggA/7oQAP+6BtwAYwU/AEQG1QChBVsAgwAA/dwAAPwvAAD8pgAA/lQAAPzXAAD9cwAA/ikAAP4NAAD9EQAA/GcAAP2dAAD79QAA/HIAAP7VAAD+1QAA/wIEGwCgBqwAawasABkAAP62AAD9cwAA/ggAAPymAAD+UwAA/REAAPvIAAD69AAA+q8AAPxyAAD7qgAA+2oAAPzxAAD8fQAA+90AAPzBAAD7mAAA/eoAAP6EAAD9wgAA/PEAAP1fAAD+dgAA/rwAAPzrAAD9bAAA/VgAAPyQAAD9FQAA/CwAAPwTAAD8EgAA+5YAAPuWAccAiAVW//0EcwBKBVb//QRzAEoFVv/9BHMASgVW//0EcwBKBVb//QRzAEoFVv/9BHMASgVW//0EcwBKBVb//QRzAEoFVv/9BHMASgVW//0EcwBKBVb//QRzAEoFVv/9BHMASgVWAKIEcwBLBVYAogRzAEsFVgCiBHMASwVWAKIEcwBLBVYAogRzAEsFVgCiBHMASwVWAKIEcwBLBVYAogRzAEsCOQBjAccAHwI5ALoBxwB8BjkAYwRzAEQGOQBjBHMARAY5AGMEcwBEBjkAYwRzAEQGOQBjBHMARAY5AGMEcwBEBjkAYwRzAEQG3ABjBT8ARAbcAGMFPwBEBtwAYwU/AEQG3ABjBT8ARAbcAGMFPwBEBccAoQRzAIMFxwChBHMAgwbVAKEFWwCDBtUAoQVbAIMG1QChBVsAgwbVAKEFWwCDBtUAoQVbAIMFVgAGBAAAIQVWAAYEAAAhBVYABgQAACEFVv/9BHMASgI5/+IBx/+wBjkAYwRzAEQFxwChBHMAgwXHAKEEcwCDBccAoQRzAIMFxwChBHMAgwXHAKEEcwCDAAD+/gAA/v4AAP7+AAD+/gRV//0C6wAMB2MABwVa//sEqQChA4AAhgSpAKEDgACGBccApARrAIgEc//9BAAAFARz//0EAAAUBVYACQQAAA8FVQBXBCsARQVVAKEEcwCHBgUAYwRzAFUGOQBgBHMARAW1ADoB9P+6AiT/ugIa/7oEpwBGAfQAngH0ABAB9AAbAfQAEAH0AGsB9P/5Aif/zgGoAA8BqP/1AqoApAKqAKQBqAAOAagAVgGoAFYAAP/PAagADwHW/78BqP/1Adb/zQGoAB0B1v/1AagAkwHWABMDdQAyA3UAMgN1ADIDdQAyBRsAMgS1ACQFtQA6BbUAOgH0/7oB9P+6BbUAOgW1ADoB9P+6AfT/ugW1ADoFtQA6AfT/ugH0/7oFtQA6BbUAOgH0/7oB9P+6BbUAOgW1ADoB9P+6AfT/ugW1ADoFtQA6AfT/ugH0/7oFtQA6BbUAOgH0/7oB9P+6BIEANgQ1ADYEPf+6BD3/ugSBADYENQA2BD3/ugQ9/7oEgQA2BDUANgQ9/7oEPf+6BIEANgQ1ADYEPf+6BD3/ugSBADYENQA2BD3/ugQ9/7oEgQA2BDUANgQ9/7oEPf+6ArMAMgKzADICswBfArMAXwKzAF8CswBfArMAMgKzADICswBfArMAXwKzAF8CswBfArMAXwKzAF8CswA4ArMAOAKzAEkCswBJA+kASgPpAEoD6QBK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//4ACQAJ//0ACgAK//0ACwAL//0ADAAM//0ADQAN//0ADgAN//0ADwAO//0AEAAP//0AEQAP//wAEgAR//wAEwAS//wAFAAT//wAFQAT//sAFgAU//sAFwAV//sAGAAV//oAGQAX//sAGgAZ//oAGwAa//oAHAAa//oAHQAb//oAHgAc//kAHwAc//kAIAAd//kAIQAf//kAIgAg//kAIwAg//gAJAAh//gAJQAi//gAJgAi//cAJwAj//cAKAAk//cAKQAm//cAKgAm//cAKwAn//YALAAo//YALQAo//YALgAq//YALwAr//YAMAAt//YAMQAt//UAMgAu//UAMwAv//UANAAw//QANQAw//QANgAx//QANwAz//QAOAA0//MAOQA0//MAOgA1//MAOwA1//MAPAA2//MAPQA3//MAPgA4//MAPwA5//IAQAA6//IAQQA7//IAQgA8//IAQwA8//EARAA9//EARQA+//EARgA///AARwBA//AASABB//AASQBC//AASgBC//AASwBD//AATABE//AATQBG/+8ATgBG/+8ATwBH/+8AUABI/+8AUQBJ/+4AUgBJ/+4AUwBK/+4AVABL/+0AVQBN/+0AVgBN/+0AVwBO/+0AWABP/+wAWQBQ/+wAWgBQ/+0AWwBR/+wAXABT/+wAXQBU/+wAXgBU/+wAXwBV/+sAYABW/+sAYQBX/+sAYgBX/+oAYwBZ/+oAZABa/+oAZQBb/+oAZgBc/+kAZwBc/+kAaABd/+kAaQBe/+gAagBg/+kAawBg/+kAbABh/+kAbQBi/+gAbgBj/+gAbwBj/+gAcABk/+cAcQBl/+cAcgBn/+cAcwBn/+cAdABo/+YAdQBp/+YAdgBq/+YAdwBq/+UAeABr/+UAeQBt/+UAegBu/+UAewBu/+UAfABv/+UAfQBw/+UAfgBx/+QAfwBx/+QAgABz/+QAgQB0/+QAggB1/+MAgwB2/+MAhAB2/+MAhQB3/+IAhgB4/+IAhwB5/+IAiAB6/+IAiQB7/+EAigB8/+EAiwB9/+IAjAB9/+EAjQB+/+EAjgB//+EAjwCB/+EAkACB/+AAkQCC/+AAkgCD/+AAkwCE/98AlACE/98AlQCF/98AlgCH/98AlwCI/+AAmACI/98AmQCJ/98AmgCK/94AmwCL/94AnACM/94AnQCM/94AngCO/94AnwCP/94AoACQ/94AoQCQ/90AogCR/90AowCS/90ApACT/90ApQCU/9wApgCV/9sApwCW/9sAqACX/9sAqQCX/9sAqgCY/9sAqwCZ/9sArACb/9sArQCb/9sArgCc/9sArwCd/9sAsACe/9sAsQCe/9oAsgCf/9oAswCg/9oAtACi/9kAtQCj/9gAtgCj/9gAtwCk/9gAuACl/9gAuQCm/9gAugCm/9gAuwCo/9gAvACp/9cAvQCq/9cAvgCq/9cAvwCr/9cAwACs/9cAwQCt/9cAwgCu/9cAwwCv/9YAxACw/9YAxQCx/9UAxgCx/9UAxwCy/9UAyACz/9QAyQC0/9QAygC1/9QAywC2/9QAzAC3/9QAzQC4/9QAzgC5/9QAzwC5/9QA0AC6/9QA0QC8/9QA0gC9/9MA0wC9/9IA1AC+/9IA1QC//9IA1gDA/9EA1wDA/9EA2ADC/9EA2QDD/9EA2gDE/9EA2wDE/9EA3ADF/9EA3QDG/9EA3gDH/9AA3wDH/9AA4ADJ/88A4QDK/88A4gDL/88A4wDL/88A5ADM/88A5QDN/88A5gDO/88A5wDQ/84A6ADQ/84A6QDR/84A6gDS/80A6wDT/80A7ADT/80A7QDU/80A7gDW/8wA7wDX/8wA8ADX/8wA8QDY/8wA8gDZ/8wA8wDa/8wA9ADa/8wA9QDc/8sA9gDd/8sA9wDe/8sA+ADe/8oA+QDf/8oA+gDg/8oA+wDh/8oA/ADh/8oA/QDj/8kA/gDk/8kA/wDl/8kA+Aj/AAgACP/+AAkACf/9AAoACv/9AAsAC//9AAwADP/9AA0ADf/9AA4ADf/9AA8ADv/9ABAAD//9ABEAD//8ABIAEf/8ABMAEv/8ABQAE//8ABUAE//7ABYAFP/7ABcAFf/7ABgAFf/6ABkAF//7ABoAGf/6ABsAGv/6ABwAGv/6AB0AG//6AB4AHP/5AB8AHP/5ACAAHf/5ACEAH//5ACIAIP/5ACMAIP/4ACQAIf/4ACUAIv/4ACYAIv/3ACcAI//3ACgAJP/3ACkAJv/3ACoAJv/3ACsAJ//2ACwAKP/2AC0AKP/2AC4AKv/2AC8AK//2ADAALf/2ADEALf/1ADIALv/1ADMAL//1ADQAMP/0ADUAMP/0ADYAMf/0ADcAM//0ADgANP/zADkANP/zADoANf/zADsANf/zADwANv/zAD0AN//zAD4AOP/zAD8AOf/yAEAAOv/yAEEAO//yAEIAPP/xAEMAPP/xAEQAPf/xAEUAPv/xAEYAP//wAEcAQP/wAEgAQf/wAEkAQv/wAEoAQv/wAEsAQ//wAEwARP/wAE0ARv/vAE4ARv/vAE8AR//vAFAASP/vAFEASf/uAFIASf/uAFMASv/uAFQAS//tAFUATf/tAFYATf/tAFcATv/tAFgAT//sAFkAUP/sAFoAUP/tAFsAUf/sAFwAU//sAF0AVP/sAF4AVP/sAF8AVf/rAGAAVv/rAGEAV//rAGIAV//rAGMAWf/qAGQAWv/qAGUAW//qAGYAXP/pAGcAXP/pAGgAXf/pAGkAXv/pAGoAYP/pAGsAYP/pAGwAYf/pAG0AYv/pAG4AY//oAG8AY//oAHAAZP/oAHEAZf/nAHIAZ//nAHMAZ//nAHQAaP/nAHUAaf/mAHYAav/mAHcAav/mAHgAa//lAHkAbf/lAHoAbv/lAHsAbv/lAHwAb//lAH0AcP/kAH4Acf/kAH8Acv/kAIAAc//kAIEAdP/jAIIAdf/jAIMAdv/jAIQAdv/jAIUAd//jAIYAeP/jAIcAef/iAIgAev/iAIkAe//iAIoAfP/iAIsAff/iAIwAff/iAI0Afv/iAI4Af//iAI8Agf/hAJAAgf/hAJEAgv/gAJIAg//gAJMAhP/gAJQAhP/gAJUAhf/gAJYAh//fAJcAiP/gAJgAiP/fAJkAif/fAJoAiv/eAJsAi//eAJwAjP/eAJ0AjP/eAJ4Ajv/eAJ8Aj//eAKAAkP/eAKEAkP/dAKIAkf/dAKMAkv/dAKQAk//dAKUAlP/cAKYAlf/bAKcAlv/bAKgAl//bAKkAl//bAKoAmP/bAKsAmf/bAKwAm//bAK0Am//bAK4AnP/bAK8Anf/bALAAnv/bALEAnv/aALIAn//aALMAoP/ZALQAov/ZALUAo//YALYAo//YALcApP/YALgApf/YALkApv/YALoApv/YALsAqP/YALwAqf/XAL0Aqv/XAL4Aqv/XAL8Aq//XAMAArP/XAMEArf/XAMIArv/XAMMAr//WAMQAsP/WAMUAsf/VAMYAsf/VAMcAsv/UAMgAs//UAMkAtP/UAMoAtf/UAMsAtv/UAMwAt//UAM0AuP/UAM4Auf/UAM8Auf/UANAAuv/UANEAvP/UANIAvf/TANMAvf/SANQAvv/SANUAv//SANYAwP/RANcAwP/RANgAwv/RANkAw//RANoAxP/RANsAxP/RANwAxf/RAN0Axv/RAN4Ax//QAN8Ax//QAOAAyf/PAOEAyv/PAOIAy//PAOMAy//PAOQAzP/PAOUAzf/PAOYAzv/PAOcA0P/OAOgA0P/OAOkA0f/OAOoA0v/NAOsA0//NAOwA0//NAO0A1P/NAO4A1v/MAO8A1//MAPAA1//MAPEA2P/MAPIA2f/MAPMA2v/MAPQA2v/MAPUA3P/LAPYA3f/LAPcA3v/LAPgA3v/KAPkA3//KAPoA4P/KAPsA4f/KAPwA4f/KAP0A4//JAP4A5P/JAP8A5f/JAPgI/wAIAAj//gAJAAn//QAKAAr//QALAAv//QAMAAz//QANAA3//QAOAA3//QAPAA7//QAQAA///QARAA///AASABH//AATABL//AAUABP//AAVABP/+wAWABT/+wAXABX/+wAYABX/+gAZABf/+wAaABn/+gAbABr/+gAcABr/+gAdABv/+gAeABz/+QAfABz/+QAgAB3/+QAhAB//+QAiACD/+QAjACD/+AAkACH/+AAlACL/+AAmACL/9wAnACP/9wAoACT/9wApACb/9wAqACb/9wArACf/9gAsACj/9gAtACj/9gAuACr/9gAvACv/9gAwAC3/9gAxAC3/9QAyAC7/9QAzAC//9QA0ADD/9AA1ADD/9AA2ADH/9AA3ADP/9AA4ADT/8wA5ADT/8wA6ADX/8wA7ADX/8wA8ADb/8wA9ADf/8wA+ADj/8wA/ADn/8gBAADr/8gBBADv/8gBCADz/8gBDADz/8QBEAD3/8QBFAD7/8QBGAD//8ABHAED/8ABIAEH/8ABJAEL/8ABKAEL/8ABLAEP/8ABMAET/8ABNAEb/7wBOAEb/7wBPAEf/7wBQAEj/7wBRAEn/7gBSAEn/7gBTAEr/7gBUAEv/7QBVAE3/7QBWAE3/7QBXAE7/7QBYAE//7ABZAFD/7ABaAFD/7QBbAFH/7ABcAFP/7ABdAFT/7ABeAFT/7ABfAFX/6wBgAFb/6wBhAFf/6wBiAFf/6wBjAFn/6gBkAFr/6gBlAFv/6gBmAFz/6QBnAFz/6QBoAF3/6QBpAF7/6QBqAGD/6QBrAGD/6QBsAGH/6QBtAGL/6QBuAGP/6ABvAGP/6ABwAGT/6ABxAGX/5wByAGf/5wBzAGf/5wB0AGj/5wB1AGn/5gB2AGr/5gB3AGr/5gB4AGv/5QB5AG3/5QB6AG7/5QB7AG7/5QB8AG//5QB9AHD/5AB+AHH/5AB/AHL/5ACAAHP/5ACBAHT/5ACCAHX/4wCDAHb/4wCEAHb/4wCFAHf/4wCGAHj/4wCHAHn/4gCIAHr/4gCJAHv/4gCKAHz/4gCLAH3/4gCMAH3/4gCNAH7/4gCOAH//4gCPAIH/4QCQAIH/4QCRAIL/4ACSAIP/4ACTAIT/4ACUAIT/4ACVAIX/4ACWAIf/3wCXAIj/4ACYAIj/3wCZAIn/3wCaAIr/3gCbAIv/3gCcAIz/3gCdAIz/3gCeAI7/3gCfAI//3gCgAJD/3gChAJD/3QCiAJH/3QCjAJL/3QCkAJP/3QClAJT/3ACmAJX/2wCnAJb/2wCoAJf/2wCpAJf/2wCqAJj/2wCrAJn/2wCsAJv/2wCtAJv/2wCuAJz/2wCvAJ3/2wCwAJ7/2wCxAJ7/2gCyAJ//2gCzAKD/2QC0AKL/2QC1AKP/2AC2AKP/2AC3AKT/2AC4AKX/2AC5AKb/2AC6AKb/2AC7AKj/2AC8AKn/1wC9AKr/1wC+AKr/1wC/AKv/1wDAAKz/1wDBAK3/1wDCAK7/1wDDAK//1gDEALD/1gDFALH/1QDGALH/1QDHALL/1ADIALP/1ADJALT/1ADKALX/1ADLALb/1ADMALf/1ADNALj/1ADOALn/1ADPALn/1ADQALr/1ADRALz/1ADSAL3/0wDTAL3/0gDUAL7/0gDVAL//0gDWAMD/0QDXAMD/0QDYAML/0QDZAMP/0QDaAMT/0QDbAMT/0QDcAMX/0QDdAMb/0QDeAMf/0ADfAMj/0ADgAMn/zwDhAMr/zwDiAMv/zwDjAMv/zwDkAMz/zwDlAM3/zwDmAM7/zwDnAND/zgDoAND/zgDpANH/zgDqANL/zQDrANP/zQDsANP/zQDtANT/zQDuANb/zADvANf/zADwANf/zADxANj/zADyANn/zADzANr/zAD0ANr/zAD1ANz/ywD2AN3/ywD3AN7/ywD4AN7/ygD5AN//ygD6AOD/ygD7AOH/ygD8AOH/ygD9AOP/yQD+AOT/yQD/AOX/yQAAABgAAAaMCxYIAAMDAgQGBgoHAgQEBAYDBAMDBgYGBgYGBgYGBgMDBgYGBgsIBwcHBgYIBwIFBwYIBwgGCAcHBgcICgcIBwMDAwUGBAYGBgYGBAYGAgIFAggGBgYGBAYDBgYKBgYGBAIEBggIBwYHCAcGBgYGBgYGBgYGBgICAgIGBgYGBgYGBgYGBgQGBgYEBgcICAsEBAYLCAgGBgYGBgYHCQYDBAUICgYGAgYHBgcGBgYLCAgICwoGCwQEAgIGBQYIAgYEBAYGBgMCBAsIBggGBgICAgIICAgHBwcCBAQEBAQEBAQEBAYCBwYHBgIIBggGBwYGBgQEBAoJCgYIBgIHBgcGBwYGBgQIBggGBwcIBgYGBgYCBgQGBAcGBwYIBgcEBwQHBgYDBgQHBgcGBwYHBgYICAYGBQcEBwYGBAwLBgsGCwYGCwgGBwYHBwgHCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAcLCwsLCwcHBwsMCggIBgcHBgYICAUHAgQKBAcEBAcECAYHBgcGBgYGBgYGCAYIBggGBwYJBgICAgICAgICBQIHBQYGAgcGCAYIBggGBwQHBgYEBwYHBgcGCAYKCggGAggGCwoIBgMKCgoKCgoIBgIEBgYKCgoKBAQEBAgJCQUJCggCCAcIBgcHAgcICAcHCAcGBwYIBwgIAggGBQYCBgYGBQYGAgYGBgYFBgYFBgUICAIGBgYIBgoGBwcCAgUMCwkHBwcIBwcGCAYMBwkJBwcIBwgHBgcGBwgHBwYKCggJBwgLCAYGBwQGBggFBgYFBggGBgYGBgYGCAYGBggIBwgGBggGBgYEBgYCAgIKCQYFBgYFBQsNCQQEBAQEBAQEBAQEBAQEBAMEBAMGBgUGBwMDBwcDBgUFBwcDBQcGBgYGBgYGCQcGBgYDBQkDBgYFBQcJCQkJBgYGBgUGBwMFBwMGBQUHBQcGBgYGBgkHAwYFBgYAAAAABAQEBQICAwICAgICAgYGBgYGBgYGBgYGBAYICAMIBgYGCAgICAgCCAgICAgICAgHCAgICAgDAwgICAgGBgYGBQUJCgQGCQoEBgcGCAgICAgICAgICAgICAgICAICAgICCAgAAAAAAAAAAAAAAAAAAAAABwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIBAQIBwUCAwIDBQUCAwcGAwMCAwgIAwMDBAgIAwMICAMDBgYGBgYGBgYGBgYGBAQEBAUFBQUJCQYGCQkGBgwMCQkMDAkJBgYGBgYGBgYGBQYEBgUGBAkJAwMGBgMDBwcEBAYGAgIEBAQEBgYDAwMEBQQFBQcGBwYDAwYHBgcGBwYHCAgCAggICAICCAgCAwgICAICAgICAggCAggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAgICAgICAgICAgICAgICAgICAgICAgICAELFgkHCQcAAAAAAAAAAAAAAAAAAAAABgkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIIBggGCAYIBggGCAYIBggGCAYIBggGCAYGBgYGBgYGBgYGBgYGBgYGAgICAggGCAYIBggGCAYIBggGCQcJBwkHCQcJBwcGBwYJBwkHCQcJBwkHCAYIBggGCAYCAggGBwYHBgcGBwYHBgAAAAAGBAoHBgUGBQgGBgYGBgcGBwYHBggGCQYIAwMDBgMDAwMDAwMCAgQEAgICAAIDAgMCAwIDBQUFBQcGCAgDAwgIAwMICAMDCAgDAwgIAwMICAMDCAgDAwYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgQEBAQEBAQEBAQEBAQEBAQEBAUFBQUFBQUFBQUFBQUFBQUJCQYGCQkGBgkJBgYMDAkJDAwJCQYGBgUGBAkJCQMDCQkDAwkJAwMJCQMDCQkDAwYGBgYJCgQGCQoEBgcHBAQHBwQEBwcEBAkKBAYJCgQGCQoEBgkKBAYJCgQGBgYCAgYGAgIGBgICBgYCAgYGAwMGBgYGBgYDAwYGBgYGBgMEBAQEBQUFBQUFBQUFBQUFBQUFBQcGBwYDAwUFBwYDAwcGCQkJCQIAAAAAAAAADAwAAAAAAAACBAAABwAAAAkJBgYMDAkJBgUGBAUEAwMEAwMDAwMJCgMABAYGBwYHBgcGBwYHBgcGBwYGBgcMGAkAAwMDBAcHCwgCBAQFBwMEAwMHBwcHBwcHBwcHAwMHBwcHDAcICQkIBwkJAwYIBwkJCQgJCQgHCQcLBwcHAwMDBQcEBwcGBwcDBwcDAwYDCwcHBwcEBwMHBQkFBQUEAwQHBwcJCAkJCQcHBwcHBwYHBwcHAwMDAwcHBwcHBwcHBwcHBQcHBwQGCAkJDAQEBwwJCQcHBwcHBgkKBwMEBAkLBwcDBwcHBwcHBwwHBwkMCwcMBAQDAwcGBQcCBwQEBgYHAwMECwcIBwgIAwMDAwkJCQkJCQMEBAQEBAQEBAQEBwMIBwcFAwkHBwUIBwcHBAQECgoKBwkHAwgHCQYJBgcHBAcHBwcJBwkIBwgHBwMHBAcECQcJBwkHCQQJBAgHBwMHBQkHCQcHBQcFBwkJBwcFBwUIBwYEDQwGDAYMBgYMCQcHBwcHCQgJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJBwwMDAwMBwcHDA0LCQkGCAcGBgkJBQcCBAsEBwQEBwQHBwkGCQYIBwgHCAcJBwkHCQcJBwkHAwMDAwMDAwMGAwgGBwcDCQcJBwkHCQcJBAgHBwMJBwkHCQcJBwsJBwUDBwcMCwkHAwsJCwkLCQcFAwQHBwoKCgoEBAQEBwkKBAkJCQMHCAcIBwkDCAcJCQgJCQgHBwcHCQkDBwcFBwMHBwUFBwcDBwUHBQUHBwYHBgkJAwcHBwkICgcJCAMDBg0MCgcICQcICAcICAsHCQkHCAkJCQkICQcICQcJCAsLCgoICQwJBwcGBAcHCQYHBwYHCQcHBwcGBQUJBQcGCQkICQcGCQcHBwQGBwMDAwsKBwYFBwYFDA0IBAQEBAQEBAQEBAQEBAUEAwQEAwcHBQYHAwUHBwMGBgYHBwMEBwYHBwYGBwYICAYGBgMFCQMGBgYGBggICAgHBwcHBQYHAwUHAwYGBgcEBwcHBgcGCAgDBwYHBwAAAAAEBAQFAgIDAgIDAgMCBgYGBgYGBgYGBgYEBgkJAwkGBgYJCQkJCQMJCQkJCQkJCQgJCQkJCQMDCQkJCQcGBgYGBgoLBQYKCwUGCAcJCQkJCQkJCQkJCQkJCQkJAwMDAwMJCQAAAAAAAAAAAAAAAAAAAAAHDAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkEBAkHBQIDAgMFBQIDCAcDAwIDCQkDAwMFCQkDAwkJAwMHBgYGBwYGBgcGBgYEBAQEBgYGBgoKBgYKCgYGDQ0KCg0NCgoHBwcHBwcHBwcFBgUHBQYFCQkDAwcHAwMHBwUFBgYCAgQEBQUGBgMDAwUFBQUFCAcIBwMDBwcHBwcHBwcJCQICCQkJAgMJCQMDCQkJAwMDAwMDCQICCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJBAQECQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAgwYCggKCAAAAAAAAAAAAAAAAAAAAAAGCgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwgHCAcIBwgHCAcIBwgHCAcDAwMDCQcJBwkHCQcJBwkHCQcKCAoICggKCAoICQcJBwoICggKCAoICggHBQcFBwUHBwMDCQcJBwkHCQcJBwkHAAAAAAcECwgHBQcFCQcHBgcGCAYIBggHCQcJBwkDAwMHAwMDAwMDAwICBAQCAgIAAgMCAwIDAgMFBQUFCAcJCQMDCQkDAwkJAwMJCQMDCQkDAwkJAwMJCQMDBwYGBgcGBgYHBgYGBwYGBgcGBgYHBgYGBAQEBAQEBAQEBAQEBAQEBAQEBgYGBgYGBgYGBgYGBgYGBgoKBgYKCgYGCgoGBg0NCgoNDQoKBwcHBQYFCQkJAwMJCQMDCQkDAwkJAwMJCQMDBwcHBwoLBQYKCwUGBwcFBQcHBQUHBwUFCgsFBgoLBQYKCwUGCgsFBgoLBQYGBgICBgYCAgYGAgIGBgICBgYDAwYGBgYGBgMDBgYHBgYGAwUFBQUFBQUFBQUFBQUFBQUFBQUFCAcIBwMDBQUIBwMDCAcKCgoKAgAAAAAAAAANDQAAAAAAAAIEAAAHAAAACgoGBg0NCgoHBQYFBQQDAwQDAwMDAwoLAwAEBgcHBwcHBwcHBwcHBwcHBgYHBw0aCgAEBAMFBwcMCQIEBAUIBAQEBAcHBwcHBwcHBwcEBAgICAcNCQkJCQkICgkDBgkHCwkKCQoJCQcJCQ0HCQcEBAQFBwQHBwcHBwMHBwMDBwMLBwcHBwQHBAcFCQcHBwQDBAgJCQkJCQoJBwcHBwcHBwcHBwcDAwMDBwcHBwcHBwcHBwcFBwcHBQcJCgoNBAQHDQoJBwcHBwcGCQsHAwQFCgwHCAMICAcHCAcHDQkJCg0MBw0EBAMDBwYHCQIHBAQHBwcEAwQOCQkJCQkDAwMDCgoKCQkJAwQEBAQEBAQEBAQHAwkHBwcDCQcJBwkHCAgEBAQLCwsHCgcDCQcJBwkHBwcECQcJBwkICQkHCQcHAwcEBwQJBwkHCgcJBAkECQcHAwcFCQcJBwcHBwcHCgkIBwYIBQgHBwUPDQcNBw0HBw0JCAgICAgJCAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkIDQ0NDQ0ICAgNDgwKCgcJCAcHCgoGCAIFDAUIBQUIBQkHCQcJBwkHCQcJBwoHCgcKBwkHCQcDAwMDAwMDAwYDCQcHBwMJBwkHCgcKBwkECQcIBAkHCQcJBwkHDQkJBwMJBw0MCgcDDQkNCQ0JCQcDBAcICwsLCwQEBAQJCgsFCgsKAwkJCQkHCQMJCQsJCAoJCQgHCQcJCgMJCAYHAwcHBwYHBwMHBwcFBgcHBgcHCQkDBwcHCQkLBwkJAwMGDg0LCAgJCQkJBwkJCwgJCQgJCwkKCQkJBwgLBwoJCwsKCwgJDQkHBwcFCAcJBgcHBgcJBwcHBwcFBwkHBwcLDAgJBwcKBwcHBQcHAwMDDAsHBgcHBgUNDgkEBAQEBAQEBAQEBAQEBQQDBAQEBwcFBwgDBQgIAwcGBggIAwUHBwcHBgYHBwkIBgYGAwUJAwcHBgYHCQkJCQcHBwcFBwgEBQgEBwYGCAUHBwcGBwcJCAMHBgcHAAAAAAQEBQUDAwMDAwMDAwIHBwcHBwcHBwcHBwQHCgoECgcHBwoKCgoKAwoKCgoKCgoKCAoKCgkJAwMKCgoKBwcHBwYGCwwFBwsMBQcICAoKCgoKCgoKCgoKCgoKCgoDAwMDAwoKAAAAAAAAAAAAAAAAAAAAAAcNCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgQECggFAwMDAwYGAwMICAMDAwMJCQMDBAUJCQMDCQkDAwcHBwcHBwcHBwcHBwQEBAQGBgYGCwsHBwsLBwcODgsLDg4LCwgICAgICAgIBwYHBQcGBwUKCgMDCAgDAwgIBQUHBwMDBAQFBQcHAwMEBQYFBgYICAgIAwMHCAcIBwgHCAoKAwMKCgoCAwoKAwMKCgoDAwMDAwMKAwMKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoEBAQKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCDRoLCQsJAAAAAAAAAAAAAAAAAAAAAAcLCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCQcJBwkHCQcJBwkHCQcJBwkHCQcJBwkHCQcJBwkHCQcJBwkHCQcJBwMDAwMKBwoHCgcKBwoHCgcKBwsJCwkLCQsJCwkJBwkHCwkLCQsJCwkLCQkHCQcJBwkHAwMKBwkHCQcJBwkHCQcAAAAABwUMCQgGCAYJBwcHBwcJBwkHCQcKBwoHCQMDAwgDAwMDAwMEAwMEBAMDAwADAwMDAwMDAwYGBgYICAkJAwMJCQMDCQkDAwkJAwMJCQMDCQkDAwkJAwMHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcEBAQEBAQEBAQEBAQEBAQEBAQGBgYGBgYGBgYGBgYGBgYGCwsHBwsLBwcLCwcHDg4LCw4OCwsICAcGBwUKCgoDAwoKAwMKCgMDCgoDAwoKAwMICAgICwwFBwsMBQcICAUFCAgFBQgIBQULDAUHCwwFBwsMBQcLDAUHCwwFBwcHAwMHBwMDBwcDAwcHAwMHBwMDBwcHBwcHAwMHBwcHBwcEBQUFBQYGBgYGBgYGBgYGBgYGBgYICAgIAwMGBggIAwMICAsLCwsDAAAAAAAAAA8OAAAAAAAAAwUAAAgAAAALCwcHDg4LCwcGBwUFBAQDBAMDAwMDCwwDAAQGBwgHCAcIBwgHCAcIBwgHBwcIDx4LAAQEBQUICA0KAwUFBgkEBQQECAgICAgICAgICAQECQkJCA8JCgsLCgkLCgMHCggLCgwKDAsKCQoJDwkJCAQEBAUIBQgICAgIBAgIAwMHAw0ICAgIBQgECAcLBwcIBQMFCQkJCwoKDAoICAgICAgICAgICAMDAwMICAgICAgICAgICAYICAgFCAkLCw8FBQgPDAsICAgICAcLDAgEBQUMDQgJBQkJCAgJCAgPCQkMDw4IDwUFAwMIBwcJAwgFBQgICAQDBQ4JCgkKCgMDAwMMDAwKCgoDBQQFBQUFBQUFBQgDCggICAMLCAkHCggJCQUFBQ0NDQgLCAMKCAsICwgICAUJCAkICwkLCggKCAgDCAQIBQoICggMCAsFCwUKCAkECQYKCAoICAgICAgMCwkIBwkFCggIBREPCA8IDwgIDwsJCQkJCQsJCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwkPDw8PDwkJCQ8QDgsLCAoJCAgLCwcJAwUNBQkFBQkFCQgLCAsICggKCAoICwgLCAsICggKCAMDAwMDAwMDBwMKBwgIAwoICwgMCAwICwUKCAkECggKCAoICwgPCwkHAwkIDw0MCAMPCw8LDwsJBwMFCAkNDQ0NBQUFBQkMDQYMDAsDCQoKCggKAwoLCwoKDAoKCQkJCQsLAwkJBwgDCAkHBwgIAwgHCAcHCAgHCAgLDAMICAgMCg0ICwoDAwcQDw0JCgsJCgoICgoOCQsLCQoLCgwKCgsJCgsJCwkODwwNCgsPCwgJCAUJCAkHCAgHCAoICAgICAcHCwcJCAsLCQsICAsICAgFCAgDAwMODAgHBwgHBg8QCgUFBQUFBQUFBQUFBQUGBQMFBQQICAYICQMGCQkDCAcHCQkDBQkICQgHBwgICgoGBgYEBgwDCAgHBwgKCgoKCAgICAYICQQGCQQIBwcJBQkJCAcICAoKAwgHCAkAAAAABQUFBgMDBAMDAwMDAggICAgICAgICAgIBQgLCwQLCAgICwsLCwsDCwsLCwsLCwsKCwsLCwsEBAsLCwsICAgIBwcMDgYIDA4GCAoJCwsLCwsLCwsLCwsLCwsLCwMDAwMDCwsAAAAAAAAAAAAAAAAAAAAACA8LCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLBQULCQYDAwMDBgYDAwoJBAQDAwsLBAQEBgsLBAQLCwQECAgICAgICAgICAgIBQUFBQcHBwcMDAgIDAwICBAQDQ0QEA0NCQkJCQkJCQkIBwgGCAcIBgwMBAQJCQQECQkGBggIAwMFBQYGCAgEBAQGBwYGBgoJCgkEBAgJCAkICQgJCwsDAwsLCwIDCwsDBAsLCwMDAwMDAwsDAwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwUFBQsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwIPHg0KDQoAAAAAAAAAAAAAAAAAAAAACA0NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMJCAkICQgJCAkICQgJCAkICQgJCAkICQgKCAoICggKCAoICggKCAoIAwMDAwwIDAgMCAwIDAgMCAwIDQoNCg0KDQoNCgoICggNCg0KDQoNCg0KCQcJBwkHCQgDAwwICggKCAoICggKCAAAAAAIBQ4KCQcJBwsICAgICAoICggKCAsIDAgLBAQECQQEBAQEBAQDAwUFAwMDAAMDAwMDAwMDBgYGBgoJCwsEBAsLBAQLCwQECwsEBAsLBAQLCwQECwsEBAgICAgICAgICAgICAgICAgICAgICAgICAUFBQUFBQUFBQUFBQUFBQUFBQcHBwcHBwcHBwcHBwcHBwcMDAgIDAwICAwMCAgQEA0NEBANDQkJCAcIBgwMDAQEDAwEBAwMBAQMDAQEDAwEBAkJCQkMDgYIDA4GCAkJBgYJCQYGCQkGBgwOBggMDgYIDA4GCAwOBggMDgYICAgDAwgIAwMICAMDCAgDAwgIBAQICAgICAgEBAgICAgICAQGBgYGBgYGBgYGBgYGBgYGBgYGBgoJCgkEBAYGCgkEBAoJDAwMDAMAAAAAAAAAERAAAAAAAAADBgAACQAAAAwMCAgQEA0NCAcIBgYFBAQFBAQEBAQMDgMABQYICQgJCAkICQgJCAkICQgICAkQIAwABAQFBgkJDgsDBQUGCQQFBAQJCQkJCQkJCQkJBAQJCQkJEAsLDAwLCgwLAwgLCQ0LDAsMCwsJCwsPCwkJBAQEBwkFCQkICQkECQgEAwgDDQgJCQkFCAQIBwsHBwcFAwUJCwsMCwsMCwkJCQkJCQgJCQkJAwMDAwgJCQkJCQgICAgJBgkJCQYJCQwMEAUFCRAMCwkJCQkJCAsNCQQFBQwOCQoFCQkJCQkJCRALCwwRDwkQBQUEBAkIBwkDCQUFCAgJBAQFEQsLCwsLAwMDAwwMDAsLCwMFBAUFBQUFBQUFCQMLCAkHAwwJCQcLCQkJBQUFDQ0NCQwJAwsIDAgMCAkJBQsJCwkMCgwLCQsJCQMJBAkFCwgLCAwJCwULBQsICQQJBgsICwgJBwkHCQwLCQkHCgUKCQgGEhAIEAgQCAgQDAkKCQoKCwoLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsMChAQEBAQCgoKEBEPDAwJCwoICAwMBwoDBg4FCgYGCgYLCQwIDAgLCQsJCwkMCQwJDAkLCAsIAwMDAwMDAwQIAwsICAkDCwgMCQwJDAkLBQsICgQLCAsICwgMCA8LCQcDCwkQDgwJAw8LDwsPCwkHBAUJCg0NDQ0FBQUFCw0NBgwMDAMLCwsLCQsDCwsNCwoMCwsKCQkLCwwDCQkHCAMICQgHCAkDCAgJBwcJCQgICAsNAwgJCA0LDgkMCwMDCBEQDQkKDAsLCwkLCw4KDAwJCw0LDAsLDAkKCwsMCg0ODQ4LDBAMCQkJBgkJCgcICAcICwgJCAkIBwcNBwkICwsKDAkIDAkJCAYICAQDAw8NCAcHCAgHEBELBQUFBQUFBQUFBQUFBQYFAwUFBAkJBggKAwYKCQMIBwcKCgMGCQgJCQcICQgLCgYGBgQHDAMICAcHCQsLCwsJCQkJBggKBQcJBQgHBwoGCQkJCAkICwoDCQcJCQAAAAAFBQYHAwMEAwMDAwMDCAgICAgICAgICAgFCAwMBQwICAgMDAwMDAMMDAwMDAwMDAoMDAwLCwQEDAwMDAkICAgICA0PBggNDwYICgkMDAwMDAwMDAwMDAwMDAwMBAMDAwMMDAAAAAAAAAAAAAAAAAAAAAAJEAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwFBQwKBwMEAwQHBwMECgkEBAMECwsEBAUGCwsEBAsLBAQJCAgICQgICAkICAgFBQUFCAgICA0NCQkNDQkJEhIODhISDg4JCQkJCQkJCQkHCAYJBwgGDQ0EBAkJBAQKCgYGCAgDAwUFBgYICAQEBQYHBgcHCgkKCQQECQoJCgkKCQoMDAMDDAwMAwMMDAMEDAwMAwMDAwMEDAMDDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMBQUFDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAhAgDgsOCwAAAAAAAAAAAAAAAAAAAAAIDQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAsJCwkLCQsJCwkLCQsJCwkLCQsJCwkLCQsJCwkLCQsJCwkLCQsJCwkDBAMEDAkMCQwJDAkMCQwJDAkOCw4LDgsOCw4LCwgLCA4LDgsOCw4LDgsJBwkHCQcLCQMEDAkLCAsICwgLCAsIAAAAAAkGDwsJBwkHDAkJCAkICwgLCAsIDAkMCQsEBAQJBAQEBAQEBAMDBQUDAwMAAwQDBAMEAwQHBwcHCgkLCwQECwsEBAsLBAQLCwQECwsEBAsLBAQLCwQECQgICAkICAgJCAgICQgICAkICAgJCAgIBQUFBQUFBQUFBQUFBQUFBQUFCAgICAgICAgICAgICAgICA0NCQkNDQkJDQ0JCRISDg4SEg4OCQkJBwgGDQ0NBAQNDQQEDQ0EBA0NBAQNDQQECQkJCQ0PBggNDwYICgoGBgoKBgYKCgYGDQ8GCA0PBggNDwYIDQ8GCA0PBggICAMDCAgDAwgIAwMICAMDCAgEBAgICAgICAQECAgJCAgIBQYGBgYHBwcHBwcHBwcHBwcHBwcHCgkKCQQEBwcKCQQECgkNDQ0NAwAAAAAAAAASEQAAAAAAAAMGAAAKAAAADQ0JCRISDg4JBwgGBwUFBAUEBAQEBA0PAwAFBgkKCQoJCgkKCQoJCgkKCAgJChEiDQAFBQUGCQkPCwMGBgcKBQYFBQkJCQkJCQkJCQkFBQoKCgkRCwsMDAsKDAsFCQsJDQsMCwwLCwkLCxELCwkFBQUHCQYJCQkJCQUJCQQDCAMNCQkJCQYIBAkHCwcJCAYFBgoLCwwLCwwLCQkJCQkJCQkJCQkFBQUFCQkJCQkJCQkJCQkHCQkJBgkKDQ0RBgYJEQ0MCQkJCQkIDA4JBAUFDQ8JCgUKCgkJCwkJEQsLDBEQCREGBgQECQgJCwMJBgYJCQkFBAYRCwsLCwsFBQUFDAwMCwsLBQYEBgYGBgYGBgYJAwsICQgFDAkLCQsJCgoGBgYODg4JDAkFCwgMCQwJCgkGCwkLCQwKDAsJCwkJAwkECQYLCQsJDAkLBgsGCwgJBAkGCwkLCQkICQgJDA0KCQgLBgsJCQYTEQkRCREJCREMCgoKCgoMCwwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwKEREREREKCgoREhANDQkLCgkJDQ0ICgMGDwYKBgYKBgsJDAkMCQsJCwkLCQwJDAkMCQsJCwkFBQUFBQUFBAkDCwgICQMLCQwJDAkMCQsGCwgKBAsJCwkLCQwJEQsLCQQLCREPDQkEEQsRCxELCwkEBgkKDg4ODgYGBgYLDQ0GDQ4NAwsLCwsJCwULCw0LCwwLCwsJCwsNDQULCggJAwkKCQgJCQMICQkHCAkJCAkJCw0DCQkJDQsPCQwLBQUJEhEPCgsLCwsLCQwLDwoMDAoKDQsMCwsMCQsNCw0KDw8NDgoMEAwJCQkGCgkLCAkJBwoLCQkJCQkICQ0HCgkODgsMCQkNCQkJBgkIBAUDDw4JBwkJCAcREgwGBgYGBgYGBgYGBgYGBwYDBgYFCgkHCQoDBwoKAwkICAoKAwYKCQoJCAgJCQwLBwcHBAcMAwkJCAgJDAwMDAoKCgkHCQoFBwoFCQgICgYKCgkICQkMCwMJCAkKAAAAAAUFBgcEAwQDAwQDBAMJCQkJCQkJCQkJCQUJDQ0FDQkJCQ0NDQ0NBA0NDQ0NDQ0NCw0NDQwMBAQNDQ0NCgkJCQgIDhAHCQ4QBwkLCg0NDQ0NDQ0NDQ0NDQ0NDQ0EBAQEBA0NAAAAAAAAAAAAAAAAAAAAAAkRDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQUFDQoHBAQEBAcHBAQLCgQEBAQMDAQEBQYMDAQEDAwEBAoJCQkKCQkJCgkJCQYGBgYICAgIDg4JCQ4OCQkTEw4OExMODgoKCgoKCgoKCQgJBwkICQcNDQUECgoFBAoKBwcJCQQEBgYHBwkJBAQFBggHBwcLCgsKBAQJCgkKCQoJCg0NAwMNDQ0DBA0NBAQNDQ0EBAQEBAQNAwMNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0FBQUNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0CESIPCw8LAAAAAAAAAAAAAAAAAAAAAAkODgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECwkLCQsJCwkLCQsJCwkLCQsJCwkLCQsJCwkLCQsJCwkLCQsJCwkLCQUEBQQMCQwJDAkMCQwJDAkMCQ8LDwsPCw8LDwsLCQsJDwsPCw8LDwsPCwsJCwkLCQsJBQQMCQsJCwkLCQsJCwkAAAAACQYQCwoHCgcMCQkJCQkLCQsJCwkNCQ0JDAQFBAoEBAQEBAQFBAQGBgQEBAAEBAQEBAQEBAcHBwcLCgwMBAQMDAQEDAwEBAwMBAQMDAQEDAwEBAwMBAQKCQkJCgkJCQoJCQkKCQkJCgkJCQoJCQkGBgYGBgYGBgYGBgYGBgYGBgYICAgICAgICAgICAgICAgIDg4JCQ4OCQkODgkJExMODhMTDg4KCgkICQcNDQ0FBA0NBQQNDQUEDQ0FBA0NBQQKCgoKDhAHCQ4QBwkKCgcHCgoHBwoKBwcOEAcJDhAHCQ4QBwkOEAcJDhAHCQkJBAQJCQQECQkEBAkJBAQJCQQECQkJCQkJBAQJCQoJCQkFBgcHBwcHBwcHBwcHBwcHBwcHBwcLCgsKBAQHBwsKBAQLCg4ODg4EAAAAAAAAABMSAAAAAAAAAwYAAAoAAAAODgkJExMODgkICQcHBgUEBQQEBAQEDhADAAYHCQoJCgkKCQoJCgkKCQoJCQkKEyYOAAUFBgcLCxENBAYGBwsFBgUFCwsLCwsLCwsLCwUFCwsLCxMNDQ4ODQwPDQYKDQsPDQ8NDw4NDA0NEw0MDAUFBQcLBgoLCgsLBgsKBAQJBBAKCwsLBgoFCgkNCQkJBgYGCw0NDg0NDw0KCgoKCgoKCwsLCwYGBgYKCwsLCwsKCgoKCwgLCwsHCgwODhMGBgoTDw4KCgoLCwkOEAoEBwcPEQsMBgsLCwoMCwsTDQ0PExILEwcHBAQKCQkMAwsGBgoKCwUEBxENDQ0NDQYGBgYPDw8NDQ0GBgUGBgYGBgYGBgsEDQoMCQYOCwwJDQsLCwYGBhAQEAsPCwYNCg4KDgoLCwYNCg0KDgwODQsNCwsECwYLBg0KDQoPCw4GDgYNCgwGDAcNCg0KDAkMCQoPDgsLCAwIDAsKBxUTChMKEwoKEw4LCwsLCw0MDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDgsTExMTEwsLCxMUEQ4OCgwLCgoODggLBAcRBgsHBwsHDQoOCg4KDQsNCw0LDwsPCw8LDQoNCgYGBgYGBgYECgQNCQoLBA0KDgsPCw8LDgYNCgwFDQoNCg0KDQoTDQwJBA0KExEPCwYTDRMNEw0MCQQGCwsQEBAQBgYGBg0PDwcPEA8EDQ0NDQwNBg0NDw0MDw0NDAwMDQ4OBgwLCAoECgsKCAoLBAoJCwkJCwsJCgoOEAQKCwoQDRAKDg0GBgoUEw8LDA4NDA0KDQ0SCw4OCwwPDQ8NDQ4MDA4NDg0REQ8RDQ4TDgoLCgcLCw4JCgoICg0KCwkLCggJEAkLCg4ODA4LCg4KCwoHCgoEBgQRDwoICQoJCBMUDQYGBgYGBgYGBgYGBgYHBgQGBgULCggKCwQHCwsECgkJCwsEBwsKCwoJCQoKDQwJCQkECBAECgoJCQoNDQ0NCwsLCggKCwUICwUKCQkLBwsLCgkKCg0MBAoJCgsAAAAABgYHCAQEBQQEBAQEAwoKCgoKCgoKCgoKBgoODgUOCgoKDg4ODg4EDg4ODg4ODg4MDg4ODg4FBQ4ODg4LCgoKCQkPEgcKDxIHCgwLDg4ODg4ODg4ODg4ODg4ODgQEBAQEDg4AAAAAAAAAAAAAAAAAAAAACxMODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4OBgYODAgEBAQECAgEBAwLBQUEBA4OBQUFBw4OBQUODgUFCwoKCgsKCgoLCgoKBgYGBgkJCQkQEAoKEBAKChUVEBAVFRAQCwsLCwsLCwsKCQoHCgkKBw8PBQULCwUFCwsHBwoKBAQGBgcHCgoFBQUHCQcICAwLDAsFBQoLCgsKCwoLDg4EBA4ODgMEDg4EBQ4ODgQEBAQEBA4EBA4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgYGBg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgITJhAMEA0AAAAAAAAAAAAAAAAAAAAAChAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCw0LDQsNCw0LDQsNCw0LBgQGBA8LDwsPCw8LDwsPCw8LEAwQDBAMEAwQDA0KDQoQDRANEA0QDRANDAkMCQwJDQoGBA8LDQoNCg0KDQoNCgAAAAAKBxINCwgLCA4LCwoLCg0KDQoNCg4LDwsOBQUFCwUFBQUFBQUEBAYGBAQEAAQEBAQEBAQECAgICAwLDg4FBQ4OBQUODgUFDg4FBQ4OBQUODgUFDg4FBQsKCgoLCgoKCwoKCgsKCgoLCgoKCwoKCgYGBgYGBgYGBgYGBgYGBgYGBgkJCQkJCQkJCQkJCQkJCQkQEAoKEBAKChAQCgoVFRAQFRUQEAsLCgkKBw8PDwUFDw8FBQ8PBQUPDwUFDw8FBQsLCwsPEgcKDxIHCgsLBwcLCwcHCwsHBw8SBwoPEgcKDxIHCg8SBwoPEgcKCgoEBAoKBAQKCgQECgoEBAoKBQUKCgoKCgoFBQoKCwoKCgUHBwcHCAgICAgICAgICAgICAgICAwLDAsFBQgIDAsFBQwLDw8PDwQAAAAAAAAAFRUAAAAAAAAEBwAACwAAABAQCgoVFRAQCgkKBwgGBQUGBQUFBQUPEgQABwkKCwoLCgsKCwoLCgsKCwoKCgsVKhAABgYGBwwMEw4EBwcIDAYHBgYMDAwMDAwMDAwMBgYMDAwMFQ0ODw8ODRAOBgsODBEOEA4QDw4MDg0VDg4NBgYGCAwHDAsLCwwGCwsFBAoEEAsMCwsHCwYLCw8KCwkHBgcMDQ0PDg4QDgwMDAwMDAsMDAwMBgYGBgsMDAwMDAsLCwsMCAwMDAcLDQ8PFQcHDBUQDwwMDAwLCg8RDAYHCBATDA0GDAwMDA0MDBUNDRAVFAwVBwcFBQwKCw4EDAcHCwsMBgUHFQ0ODQ4OBgYGBhAQEA4ODgYHBwcHBwcHBwcHDAQOCw0JBg8MDgsODAwMBwcHEhISDBALBg4LDwsPCwwMBw0MDQwPDQ8ODA4MDAQMBgwHDgsOCxAMDwcPBw4LDAYMCA4LDgsNCQ0JDBAQDAwJDQgODAsIFxULFQsVCwsVDwwNDA0NDw0PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDRUVFRUVDQ0NFRYTEBALDgwLCxAPCQ0EBxMHDQcHDQcNDA8LDwsODA4MDgwQCxALEAwOCw4LBgYGBgYGBgULBA4KCgwEDgsPDBAMEAwPBw4LDQYOCw4LDgsOCxUPDgsFDQwVExAMBhUPFQ8VDw4LBQcMDRISEhIHBwcHDRARCBAREAQNDg4ODQ4GDg4RDg4QDg4NDA4OEhAGDgwJCwQKDAoJCwwECgsLCwkMDAoKCw4QBAoMChAOEgsPDgYGCxYVEgwNDw0ODgsODhMNDw8MDhEOEA4ODwwNEA4QDhIUERMODxUPDAwLCAwMDgoLCwkLDQsMCgsLCgsRCgwLEBANDwsLEAsMDAgLCwUGBBMRDAkLCwoJFRcOBwcHBwcHBwcHBwcHBwgHBgcHBgwLCAsNBggNDAYLCgoNDQYHDAsMCwoKDAsPDgsLCwUJEgYLCwoKCw8PDw8MDAwLCAsNBgkMBgsKCg0HDAwLCgwLDw4GCwoLDAAAAAAHBwcJBAQFBAQEBAQDCwsLCwsLCwsLCwsHCxAQBhALCwsQEBAQEAQQEBAQEBAQEA0QEBAPDwUFEBAQEAwLCwsKChEUCAsRFAgLDQwQEBAQEBAQEBAQEBAQEBAQBQQEBAQQEAAAAAAAAAAAAAAAAAAAAAAMFRAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAHBxANCQQFBAUJCQQFDQwFBQQFDw8FBQYIDw8FBQ8PBQUMCwsLDAsLCwwLCwsHBwcHCgoKChERCwsREQsLFxcSEhcXEhIMDAwMDAwMDAsJCwgLCQsIEREGBgwMBgYNDQgICwsEBAcHCAgLCwUFBggJCAkJDQwNDAUFCw0LDQsNCw0QEAQEEBAQAwQQEAQFEBAQBAQEBAQFEAQEEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBwcHEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAxUqEg4SDgAAAAAAAAAAAAAAAAAAAAALEhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQ0MDQwNDA0MDQwNDA0MDQwNDA0MDQwNDA4MDgwODA4MDgwODA4MDgwGBQYFEAwQDBAMEAwQDBAMEAwSDhIOEg4SDhIODgsOCxIOEg4SDhIOEg4OCw4LDgsNDAYFEAwOCw4LDgsOCw4LAAAAAAsIEw4MCQwJDwwMCwwLDgsOCw4LEAwQDA8FBgYMBQUFBQUFBgQEBwcEBAQABAUEBQQFBAUJCQkJDQwPDwUFDw8FBQ8PBQUPDwUFDw8FBQ8PBQUPDwUFDAsLCwwLCwsMCwsLDAsLCwwLCwsMCwsLBwcHBwcHBwcHBwcHBwcHBwcHCgoKCgoKCgoKCgoKCgoKChERCwsREQsLERELCxcXEhIXFxISDAwLCQsIERERBgYREQYGEREGBhERBgYREQYGDAwMDBEUCAsRFAgLDQ0ICA0NCAgNDQgIERQICxEUCAsRFAgLERQICxEUCAsLCwQECwsEBAsLBAQLCwQECwsFBQsLCwsLCwUFCwsMCwsLBggICAgJCQkJCQkJCQkJCQkJCQkJDQwNDAUFCQkNDAUFDQwRERERBAAAAAAAAAAYFwAAAAAAAAQIAAANAAAAERELCxcXEhILCQsICQcGBQcFBQUFBREUBgAHCwsNCw0LDQsNCw0LDQsNCwsLDRgwEgAHBwgJDQ0VEAUICAkOBwgHBw0NDQ0NDQ0NDQ0HBw4ODg0YDxARERAPExEGDBANExETEBMREA4RDxcPEA8HBwcMDQgNDgwODQcODgUGDAYUDg0ODggMBw4LEQsMDAgGCA4PDxEQERMRDQ0NDQ0NDA0NDQ0GBgYGDg0NDQ0NDg4ODg0KDQ0NCA0PEhIYCAgNGBMRDQ0NDQ4MERQNBgkJEhUPDwgODQ0NDw0NGA8PExgXDRgICAUFDQwMEAQNCAgMDA0HBQgaDxAPEBAGBgYGExMTERERBggICAgICAgICAgNBhAMDwwGEQ0QDBANDg4ICAgUFBQNEw4GEAwRDBEMDQ0IDw0PDREPERANEA0NBg0HDQgRDhEOEw0RCBEIEAwOBw4JEQ4RDg8MDwwNExIODQsPCRANDAkaGAwYDBgMDBgRDg8ODw8RDxERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERIPGBgYGBgPDw8ZGRYSEg0QDgwMEhILDwUJFQgPCQkPCQ8NEQwRDBANEA0QDRMOEw4TDREOEQ4GBgYGBgYGBQwGEAwMDQYRDhENEw0TDREIEAwPBxEOEQ4RDhEOFxEQDAUPDRgVEw8GFxEXERcREAwFCA0OFBQUFAgICAgPExQJExQSBg8QEBAPEQYQEBMREBMREA8OEA8TEgYQDgsOBg4OCwsODQYMDA4LCw0ODA4NEhIGDg0OEhAVDREQBgYMGRgWDg8RDxAQDRAQFg8REQ4QExETERARDg8SDxIQFhcTFRARGBENDg0JDg0QCw0NCw4RDQ0NDgwLDBQLDg0TFA8RDQwSDQ0OCQwMBQYGFhQOCwwNDAoYGhEICAgICAgICAgICAgICQgGCAgHDg0KDA4GCQ4OBgwLCw4OBggODQ4NCwsNDBEPDAwMBgoVBgwMCwsNEREREQ4ODg0KDA4HCg4HDAsLDggODg0LDQwRDwYNCw0OAAAAAAgICQoFBQYFBQUFBQQNDQ0NDQ0NDQ0NDQgNEhIHEg0NDRISEhISBRISEhISEhISDxISEhERBgYSEhISDg0NDQwMExYJDBMWCQwPDhISEhISEhISEhISEhISEhIFBQUFBRISAAAAAAAAAAAAAAAAAAAAAA0YEhISEhISEhISEhISEhISEhISEhISEhISEhISEggIEg8KBQYFBgoKBQYPDgYGBQYREQYGBwkREQYGEREGBg4NDQ0ODQ0NDg0NDQgICAgMDAwMFBQNDRQUDQ0aGhQUGhoUFA4ODg4ODg4ODQsNCQ0LDQkTEwYGDg4GBg4OCQkMDAUFCAgJCQ0NBgYHCQsJCgoPDg8OBgYNDg0ODQ4NDhISBQUSEhIEBRISBQYSEhIFBQUFBQUSBQUSEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIICAgSEhISEhISEhISEhISEhISEhISEhISEhIDGDAVEBUQAAAAAAAAAAAAAAAAAAAAAAwUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFDw0PDQ8NDw0PDQ8NDw0PDQ8NDw0PDQ8NEA0QDRANEA0QDRANEA0QDQYFBgUTDRMNEw0TDRMNEw0TDRUQFRAVEBUQFRARDhEOFRAVEBUQFRAVEBAMEAwQDA8NBgUTDREOEQ4RDhEOEQ4AAAAADQkWEA4LDgsRDQ0MDQwQDBANEA4SDRMNEQYGBg4GBgYGBgYGBQUICAUFBQAFBgUGBQYFBgoKCgoPDhERBgYREQYGEREGBhERBgYREQYGEREGBhERBgYODQ0NDg0NDQ4NDQ0ODQ0NDg0NDQ4NDQ0ICAgICAgICAgICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMFBQNDRQUDQ0UFA0NGhoUFBoaFBQODg0LDQkTExMGBhMTBgYTEwYGExMGBhMTBgYODg4OExYJDBMWCQwODgkJDg4JCQ4OCQkTFgkMExYJDBMWCQwTFgkMExYJDAwMBQUMDAUFDAwFBQwMBQUNDQYGDQ0NDQ0NBgYNDQ4NDQ0HCQkJCQoKCgoKCgoKCgoKCgoKCgoPDg8OBgYKCg8OBgYPDhMTExMFAAAAAAAAABsaAAAAAAAABQkAAA4AAAAUFA0NGhoUFA0LDQkKCAcGCAYGBgYGExYGAAgMDQ4NDg0ODQ4NDg0ODQ4NDQ0OGzYUAAgICAoPDxgSBQkJCxAICQgIDw8PDw8PDw8PDwgIEBAQDxsSEhQUEhEVEwgNEg8XExURFRQSEBMRHBESEQgICAwPCQ8PDg8PBw8PBgYOBhYPDw8PCQ4IDw0TDA4NCQYJEBISFBITFRMPDw8PDw8ODw8PDwYGBgYPDw8PDw8PDw8PDwsPDw8JDxEUFBsJCQ8bFRMPDw8PEA0TFg8HCgoVGBERCBAPDw8RDw8bEhIVGxkPGwkJBgYPDQ4SBQ8JCQ4ODwgGCR0SEhISEggICAgVFRUTExMGCQgJCQkJCQkJCQ8GEg4RDQYUDxIOEg8Q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AJ0AqQCkABAAigEAAIMAkwDwAPEAjQCXAIgAwgDcAO8AngCqAPMA8gD0AKIArADIAMYArQBiAGMAkABkAMoAZQDHAMkAzgDLAMwAzQDnAGYA0QDPANAArgBnAO4AkQDUANIA0wBoAOkA6wCJAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA6AB4AHoAeQB7AH0AfAC3AKEAfwB+AIAAgQDqAOwAuQGWAZcBAgEDAQQBBQD7APwBmAGZAZoBmwD9AP4BBgEHAQgA/wGcAZ0BngGfAaABoQEJAQoBCwEMAaIBowD2APcBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswD4ANUBigGLAbQBtQG2AbcBuAENAQ4BuQG6AQ8BEAERARIA4ADhARMBFAG7AbwBFQEWAYwBvQG+Ab8BwAHBAcIBFwEYAK8AsAEZARoBwwHEARsBHAEdAR4BxQHGAPkA+gDiAOMBHwEgASEBIgHHAcgByQHKAcsBzAHNAc4BIwEkASUBJgHPAdAB0QHSAdMB1AC6AScBKAEpASoA5ADlAdUA1gDfANkA2gDbAN4A1wDdAe8B8AHxAdwB8gHzAfQB9gH3AfgB+QH6ASsB+wH8Af0B/gEsAf8CAAIBAgICAwIEAgUCBgIHAggCCQIKAS0CCwIMAg0CDgIPAhACEQISAhMCFAEuAhUCFgEvATACFwIYAhkCGgIbAhwCHQIeAh8CIAKMAiECIgExATICIwEzAiQCJQImAicCKAIpAioCKwKIAokFEAURAo0CjgKPApACkQKSApMClAKVApYClgKXApgCmQKaApsCnAKdAp4CnwLvA4EDgwOFA4cDiQONA48DkwOVA5kDnQOhA6UDqQOrA60DrwOxA7UDuQO9A8EDxQPJA80C8APRA9UD2QPdA+ED5QPpA+0D7wPxAvEC8gLzAvQC9QL2AvcC+AU4BTkFOgL5AvoC+wL8Av0C/gL/AwADAQMCAwMDBALsAwUFKAUsBTsFPAU+BUAFOQVCBUQFRgVIBUoFTgVSBVYFWgMfBV4FYgVmBWoFbgVyBXYDJwV6BX4FgAWCBYQFhgWIBYoFjAWOBZAFkgWUBZYFmAWaBZwDKwWeBaAFpAWoBawFsAW0BbYFugW7Bb8FwwXHBcsFzwXRAy0F0wXXBdsF3wXjAzEF5wXrBe8F8wX3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AgICAwIEAgUCBgIHAggCCQIKAS0CCwIMAg0CDgIPAhACEQISAhMCFAEuAhUCFgEvATACFwIYAhkCGgIbAhwCHQIeAh8CIAKMAiECIgExATICIwEzAiQCJQImAicCKAIpAioCKwKIAokFEAURAo0CjgKPApACkQKSApMClAKVApYClgKXApgCmQKaApsCnAKdAp4CnwLvA4EDgwOFA4cDiQONA48DkwOVA5kDnQOhA6UDqQOrA60DrwOxA7UDuQO9A8EDxQPJA80C8APRA9UD2QPdA+ED5QPpA+0D7wPxAvEC8gLzAvQC9QL2AvcC+AU4BTkFOgL5AvoC+wL8Av0C/gL/AwADAQMCAwMDBALsAwUFKAUsBTsFPAU+BUAFOQVCBUQFRgVIBUoFTgVSBVYFWgMfBV4FYgVmBWoFbgVyBXYDJwV6BX4FgAWCBYQFhgWIBYoFjAWOBZAFkgWUBZYFmAWaBZwDKwWeBaAFpAWoBawFsAW0BbYFugW7Bb8FwwXHBcsFzwXRAy0F0wXXBdsF3wXjAzEF5wXrBe8F8wX3BfsF/wYDBgcGCwYPBhEGEwYXA+sGGQYdBh8GIAYhBiIGJAYmBigGKgYsBi4GMAM1BjIGNAY4BjoGPgZABkIGRAMIBkUGRgZHBkgGSQZKBksGTAZNBk4GTwZQBlEGUgZTBlQGVQZWBlcGWAZZBloGTgZbAvkC+gL7AvwDCgMLAwwDAAMBAwIGXAZgBmQGaAZpBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUB4wHkBPYE9wT4BPkE+gT7ALEAsgKKATQAtQC2AMMB5QCzALQAxACCAMEAhwNOA08DUgNQA1EDVQNWA1cDWANTA1QA9QHnAsAEfgC8AJkA7QDCAKUAkgE/AI8BQQF2AZEBkgGTAXcAuAF8Ae0B7gRxBHIEgQRzA1kDWgNbA1wDXQSEBHUEdwSFBHYEhgR5BIcEiASJBIoEiwSMBHgElASNBI4EjwSQBJEElgSaBJsEnASd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AADU0gAA1UAAANYmAADWYgAA1uIAANcWAADXuAAA2EAAANisAADZOAAA2aQAANqQAADbggAA27YAANvqAADcGgAA3F4AANzWAADeUAAA4GoAAOCcAADg1gAA4dAAAONeAADjlAAA5PgAAOV0AADmVAAA50oAAOjaAADqRAAA7DIAAO0uAADtdAAA7agAAO3qAADuJAAA7ngAAO7AAADvCgAA7zoAAO9qAADxUgAA8ZAAAPHKAADx+gAA8i4AAPJeAADyigAA8tIAAPSIAAD2AgAA9i4AAPZwAAD2tAAA9uQAAPcUAAD3agAA+EgAAPlaAAD5ngAA+dQAAPouAAD6bAAA+qAAAPrQAAD7DAAA+0wAAPuKAAD7xgAA/AgAAPw+AAD8egAA/LoAAP3IAAD/NAAA/4QAAQDgAAEBNgABAWoAAQG4AAECBAABAkYAAQJ+AAECtAABAvwAAQOeAAEFOgABBwIAAQiEAAEKdgABC8gAAQ1MAAEOLgABD8gAARAyAAEQWgABEPgAARN6AAETugABE/oAARQ6AAEUeAABFNYAARU0AAEVogABFcIAARasAAEXTAABF4IAARfQAAEYGgABGGQAARiAAAEYnAABGLwAARjcAAEY/AABGRwAARlCAAEZaAABGY4AARm0AAEZ5AABGgwAARo0AAEaYAABGowAARrAAAEa6gABGxYAARtMAAEbdgABG6IAARvYAAEcAgABHCwAARxgAAEckAABHMQAAR0IAAEdOAABHWwAAR2uAAEd4gABHhQAAR5WAAEeigABHroAAR78AAEfQAABH4YAAR/iAAEf/gABIBoAASA2AAEgUgABIG4AASHcAAEkrAABJxwAASc4AAEnUgABJ24AASeKAAEnpgABJ8IAASgeAAEoWAABKMIAASmMAAEqLAABKwIAASuCAAEsCgABLHoAAS0QAAEtbgABLbQAAS4SAAEudAABLywAAS/qAAEwFgABMHIAATC2AAEyIgABMxYAATNAAAEzXAABM4gAATPAAAE0DAABNEwAATSAAAE0sAABNOAAATUQAAE1VAABNYQAATW0AAE19AABNiQAATZUAAE2hAABNsQAATb0AAE3JAABN1QAATeCAAE5hgABObYAATnmAAE7NgABPOwAAT0cAAE9SgABPXoAAT2oAAE92AABPgYAAT80AAFAYgABQJIAAUICAAFCOgABQmoAAUP8AAFEKgABRFgAAUSGAAFErgABRgwAAUekAAFH3AABSBwAAUhYAAFIiAABSLYAAUjSAAFJAgABSTIAAUoiAAFLigABS7oAAUv0AAFMNAABTGQAAUyUAAFM1gABTnYAAVBWAAFQlgABUNYAAVEGAAFRRgABUjAAAVKwAAFTlAABU8QAAVP0AAFUJAABVFQAAVSQAAFUwgABVPQAAVUkAAFVVAABVZoAAVXMAAFV/AABVjIAAVakAAFW2AABWKYAAVmoAAFbOAABXWgAAV+4AAFhSgABYa4AAWI4AAFiSAABYtYAAWTUAAFmAAABZ2wAAWhcAAFp4AABa/oAAW4mAAFvGAABbygAAW84AAFwUAABcGAAAXBwAAFwgAABcJAAAXCgAAFxvgABcc4AAXHeAAFyUgABcmIAAXMyAAFzQgABdFQAAXRkAAF0dAABdIQAAXXiAAF3wAABeAIAAXg4AAF4bgABeJ4AAXjOAAF5IgABeUoAAXrUAAF8HAABfXAAAX7YAAGAXAABgMAAAYJSAAGDbgABg34AAYOOAAGFFAABhSQAAYaKAAGH5AABiRgAAYp2AAGL5AABjaoAAY3qAAGOIgABjlgAAY5+AAGOrgABjtQAAZBKAAGQegABkbAAAZHAAAGR0AABkhIAAZIiAAGTtgABlWIAAZbsAAGXFAABl0QAAZigAAGYsAABmegAAZn4AAGakgABm/IAAZwCAAGeaAABn/IAAaFaAAGhigABowAAAaQyAAGkQgABpFIAAaRiAAGlPAABpUwAAaVcAAGlbAABpmQAAafeAAGn7gABqRYAAapKAAGrnAABrTAAAa5OAAGv2gABsOwAAbEiAAGzWAABs/gAAbQIAAG1ngABt0AAAbfEAAG5RgABuVYAAbu+AAG9PgABvr4AAb7uAAHAjgABwhQAAcPYAAHFBAABxRQAAcZEAAHGVAABxmQAAcckAAHHNAAByRoAAckqAAHKYAABy24AAc0aAAHO0AAB0BIAAdGCAAHSygAB0xwAAdT+AAHWegAB1rgAAdheAAHYggAB2cIAAdnSAAHZ4gAB2hoAAdoqAAHbtgAB3SQAAd6YAAHevAAB3uwAAeBaAAHhDAAB4coAAeH4AAHjrgAB5KYAAeU0AAHmYAAB5xQAAefuAAHoOAAB6LYAAel8AAHppAAB6e4AAepEAAHrMAAB63oAAeuuAAHr1gAB6/4AAewyAAHsdgAB7LoAAez4AAHuNgAB7u4AAfAOAAHwhAAB8VIAAfGkAAHyNgAB8uYAAfPaAAH0LgAB9MQAAfWCAAH2bAAB9x4AAfg+AAH4kAAB+ToAAfpwAAH7SAAB/C4AAf00AAH+GgAB/vwAAf/wAAIAjgACAZQAAgKOAAIDBgACA34AAgP0AAIEKgACBIYAAgVOAAIF2gACBhIAAgZYAAIGiAACBvIAAgeyAAIH5gACCBYAAghKAAIIegACCKoAAgjaAAIKegACCrIAAgryAAILKgACC2IAAgv+AAIM+AACDSgAAg3MAAIN+gACDjoAAg6KAAIOugACDwYAAhCeAAISBAACE2QAAhOqAAIT/gACFDYAAhWoAAIV3gACFnAAAhauAAIW3AACFxoAAhhKAAIYcgACGa4AAho+AAIa6AACG2oAAhwmAAIdPgACHkwAAh6AAAIfBgACIGIAAiDkAAIhLgACIjgAAiKAAAIjhAACJAAAAiRYAAIk3AACJcYAAibcAAIn2AACKIIAAilyAAIqRAACKy4AAiwWAAIsxgACLUgAAi+mAAIv0AACL/oAAjCyAAIw3AACMh4AAjMkAAI0DgACNDgAAjRiAAI0jAACNLYAAjTgAAI2YAACNooAAja0AAI23gACNwgAAjcyAAI3XAACN4YAAjewAAI35AACOA4AAjg4AAI4YgACOdwAAjnsAAI7BgACOxYAAjtAAAI7agACO5QAAju+AAI9aAACP4QAAkCyAAJAwgACQj4AAkJOAAJDlAACRWAAAkZmAAJH5gACSYYAAkuqAAJNBAACTuYAAlAqAAJRWAACUYIAAlGsAAJR1gACUgAAAlIqAAJSVAACUn4AAlKoAAJS0gACUvwAAlMmAAJTUAACU3oAAlOkAAJTzgACU/gAAlY0AAJXsAACWPQAAlrcAAJcJAACXE4AAlx4AAJcqAACXNgAAl0oAAJdeAACXbgAAl4qAAJefgACXtwAAl8yAAJfaAACX6oAAl/wAAJgOgACYGoAAmCiAAJg0gACYgoAAmVQAAJlegACZaQAAmXOAAJl+AACZiIAAmZMAAJmdgACZqAAAmbKAAJm9AACZx4AAmdIAAJncgACZ5wAAmfGAAJn8AACaBoAAmhEAAJobgACaJgAAmjCAAJo7AACaRYAAmlAAAJpagACaZQAAmm+AAJp6AACaoYAAmqcAAJqxgACbaYAAm22AAJu0AACb/IAAnEwAAJycgACdBgAAnQoAAJ1agACdroAAniqAAJ6fgACe5YAAnumAAJ8KAACfLYAAn22AAJ9xgACfmYAAn52AAJ/jAACgN4AAoIOAAKCHgACguwAAoL8AAKEcgAChIIAAoWWAAKFpgAChtoAAohwAAKJLAACiTwAAoo6AAKLlAACjCAAAowwAAKNWgACjuYAAo+iAAKPsgACkE4AApBeAAKRLAACkTwAApIUAAKSJAACkywAApM8AAKVAgAClRIAApZqAAKWegACmOQAApj0AAKa7gACmv4AApxoAAKceAACnWgAAp14AAKfEAACnyAAAqA+AAKgTgACoY4AAqGeAAKhrgACob4AAqM2AAKjRgACo1YAAqNmAAKkuAACpgYAAqbUAAKnuAACqTgAAqq6AAKrugACrM4AAq4SAAKuIgACrxAAAq/qAAKxhgACsZYAArK0AAKzugACtbgAArXIAAK12AACtegAArcyAAK3QgACt/oAArgKAAK5GAACuSgAAroUAAK6JAACu0IAArtSAAK78AACvAAAArwQAAK8/gACvnIAAr+eAALAmAACwKgAAsC4AALAyAACwmYAAsQgAALE7gACxP4AAsdeAALJpAACzCoAAs6OAALREgAC04QAAtVUAALXCgAC1zQAAtdeAALXbgAC134AAteoAALX0gAC1/wAAtgMAALYHAAC2EYAAthwAALYgAAC2JAAAti6AALY5AAC2Q4AAtkeAALZLgAC2T4AAtlOAALZXgAC2W4AAtmYAALZqAAC2bgAAtniAALaDAAC2jYAAtpgAALaigAC2rQAAtreAALbCAAC2zIAAttcAALbhgAC27AAAtvaAALcBAAC3C4AAtxYAALcggAC3KwAAtzWAALdAAAC3SoAAt1UAALdfgAC3agAAt3SAALd/AAC3iYAAt5QAALeegAC3qQAAt7OAALe+AAC3yIAAt9MAALfdgAC36AAAt/KAALf9AAC4B4AAuBIAALgcgAC4JwAAuDGAALg8AAC4RoAAuFEAALhbgAC4ZgAAuHCAALh7AAC4hYAAuJAAALiagAC4pQAAuM0AALjeAAC4+4AAuQYAALkQgAC5GwAAuSWAALkwAAC5OoAAuUUAALlPgAC5WgAAuWSAALlvAAC5eYAAuYQAALmOgAC5mQAAuaOAALmuAAC5uIAAucMAALnNgAC52AAAueKAALntAAC594AAugSAALoRgAC6HoAAuoMAALrqAAC7UQAAu7QAALvFgAC71wAAu/KAALwJgAC8HgAAvDoAALxwAAC8owAAvNkAAL0MAAC9NAAAvXqAAL2ngAC9yAAAvd6AAL3ugAC+NgAAvoiAAL7ugAC/BYAAvx0AAL80AAC/SwAAv3gAAL+lgAC/0IAAv/uAAMAmgADAVIAAwIKAAMCwgADAtQAAwLmAAMC+AADAwoAAwMcAAMDigADA/gAAwSwAAMEwgADBNQAAwTmAAME9gADBQgAAwUaAAMFLAADBT4AAwVQAAMFYgADBhAAAwa8AAMHagADCBYAAwiuAAMI6AADCRIAAwk8AAMJkAADCeIAAwpeAAMKqAADCyQAAwt4AAML/AADDE4AAwzEAAMNHAADDYIAAw3YAAMOMgADDrAAAw78AAMPWgADD74AAxAMAAMQWgADELIAAxD6AAMRJAADEVIAAxF4AAMRrAADEdwAAxIMAAMSXgADEswAAxMiAAMTlgADE+oAAxReAAMUpAADFQwAAxVSAAMVrgADFd4AAxYYAAMWPgADFm4AAxaUAAMWugADFuwAAxccAAMXbgADF9QAAxgqAAMYkAADGOQAAxlSAAMZlAADGfQAAxo2AAMaggADGrwAAxr4AAMbMgADG24AAxuiAAMb1AADHAQAAxw0AAMcXgADHIQAAxyuAAMc3AADHQYAAx1SAAMdlgADHcwAAx4IAAMePAADHmoAAx6oAAMe2AADHxIAAx88AAMfagADH5AAAx+2AAMf4gADID4AAyBuAAMgngADIM4AAyEGAAMhOgADIWgAAyGYAAMhyAADIfgAAyIoAAMiXAADIrIAAyLmAAMjRgADI3oAAyPSAAMkBgADJGIAAyUAAAMlzgADJu4AAye2AAMoRgADKNwAAyrIAAMsxAADLjwAAy+4AAMxYgADMxQAAzP8AAM1MgADNioAAzc8AAM4WgADOZAAAzr6AAM8aAADPf4AAz96AANAigADQJoAA0HGAANDAgADREQAA0XIAANGogADRxgAA0fOAANIdAADSeQAA0ocAANKlgADS1gAA0wSAANMegADTYAAA062AANPhAADUOIAA1FcAANR1gADUp4AA1NYAANUDAADVGgAA1TCAANVCgADVXoAA1X2AANWQAADVnoAA1bAAANXBAADV1YAA1eoAANYKgADWKwAA1juAANZLgADWWQAA1maAANZyAADWfYAA1oqAANaXgADWqAAA1riAANbHgADW1oAA1uUAANbzgADXAAAA1wyAANcZAADXJYAA1zQAANdCgADXUwAA12OAANd0AADXhIAA15gAANergADXvAAA18yAANfcgADX7IAA1/sAANgJgADYHIAA2C+AANg/AADYTwAA2GCAANhyAADYgQAA2JaAANilgADYtIAA2MSAANjUgADY44AA2PKAANkCgADZEoAA2SOAANk0gADZSYAA2W0AANl9gADZjgAA2agAANnCAADZzoAA2dsAANnpAADZ9wAA2hyAANpCAADaVIAA2mcAANp2AADahQAA2pqAANqwAADawoAA2tUAANrrAADbAQAA2xEAANshAADbLwAA2z0AANtPgADbYgAA23GAANuBAADbkYAA26IAANu3AADbzAAA292AANvvAADcAIAA3BIAANwngADcPQAA3FKAANxoAADcewAA3I4AANyhAADctAAA3NEAANzuAADdCwAA3SgAAN03gADdRwAA3VaAAN1mAADddYAA3YUAAN2WAADdpwAA3boAAN3NAADd5QAA3fgAAN4HgADeGwAA3l8AAN5zAADehwAA3pUAAN6jAADeuIAA3s4AAN7rAADfBAAA3xSAAN8lAADfOoAA304AAN9hAADfdAAA34QAAN+UAADfpgAA37gAAN/TAADf6YAA3/eAAOAFgADgFYAA4CWAAOBsAADgvYAA4PmAAOE9gADhUwAA4WiAAOF9AADhkgAA4asAAOHEAADh2YAA4e8AAOIMgADiKgAA4jqAAOJLAADiW4AA4mwAAOJ8gADijQAA4qKAAOK4AADizIAA4uGAAOMDgADjJAAA40wAAON0gADjhAAA45OAAOOjAADjsgAA48GAAOPRAADj4IAA4++AAOQogADkY4AA5KkAAOTwAADlIoAA5VUAAOWTgADl0gAA5hGAAOZRAADmmIAA5uAAAOcpgADncwAA57OAAOf0AADoGIAA6D0AAOhMgADoXAAA6HKAAOiJAADolwAA6KUAAOjpAADo7QAA6P8AAOkRAADpJwAA6T0AAOlJgADpVgAA6WaAAOl3AADphYAA6ZQ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//8AS//oBB4FwwImAEgAAAEHAI4A3wAAACNAFAMCIkALCwJVryIBIgpkSCsCAwIluQIiACkAKwErXSs1NQD//wC9AAACLgXCAiYA1QAAAQYAjd8AADK3AQdACwsGVQe4/8CzFxk0B7j/wEAOIiU0LwcBBwFaSCsBAQe5AiIAKQArAStdKysrNf//ACMAAAGbBcICJgDVAAABBgBDygAAKEAQAQVAFxk0BUAiJTQgBQEFArj/prRIKwEBBbkCIgApACsBK10rKzX////vAAACaAXCAiYA1QAAAQYA1tYAABZACgEABgkBAkEBAQq5AiIAKQArASs1//8ACQAAAjoFwwImANUAAAEGAI7MAAAfQBECAQggCwsGVQgCAEgrAQICC7kCIgApACsBKys1NQD//wCHAAAD5gWqAiYAUQAAAQcA1wD/AAAANbMBAQEmuQIiACkAKwGxBgJDVFi1ABcjAQtBKxu5ACj/wLciJDRPKAEoErj/4rFIKytdK1k1AP//AET/6AQnBcICJgBSAAABBwCNAPQAAAAbQA4C4B3wHQIdBABIKwIBHbkCIgApACsBK101AP//AET/6AQnBcICJgBSAAABBwBDAN4AAAAmsQIbuP/AQBELDTQPGwFwGwEbBABIKwIBG7kCIgApACsBK11xKzX//wBE/+gEJwXCAiYAUgAAAQcA1gDgAAAAIEASAhxALjI0nxwBABwfAAdBAgEguQIiACkAKwErcis1//8ARP/oBCcFwwImAFIAAAEHAI4A4AAAACpACQMCHkAWFgZVHrj/wEANCgsGVR4EbkgrAgMCIbkCIgApACsBKysrNTX//wBE/+gEJwWqAiYAUgAAAQcA1wDgAAAAMEAXAi8rPysCfyv/KwJPK48rAi8rPysCKwS4/+y0SCsCASm5AiIAKQArAStdXV1xNf//AIP/6APgBcICJgBYAAABBwCNAOcAAAAhQBMBHEAOEDQfHE8cAhwRPEgrAQEcuQIiACkAKwErcSs1AP//AIP/6APgBcICJgBYAAABBwBDAQcAAAAVQAoBARoRAEgnAQEauQIiACkAKwErAP//AIP/6APgBcICJgBYAAABBwDWANwAAAApswEBAR+5AiIAKQArAbEGAkNUWLUAGx4LFkErG7ePGQEZESNIKytdWTUA//8Ag//oA+AFwwImAFgAAAEHAI4A3AAA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Amtu1Hb+/ra3/v521AP6ctRyt/7+AQK3c9NyAAACAHABqgJmA6AACwAXAAABMhYVFAYjIiY1NDYXIgYVFBYzMjY1NCYBa2iTk2hok5JpSWZnSEhnZgOgk2hok5NoaJNMZ0hJZmZJSGf////9AAAFWQa+AiYAJAAAAQcA2AFKAV8AJkAXAgAPARAP0A8CIA8wDwIADxIMDEECAQ+5AiEAKQArAStdcXI1//8ASv/oBBwFXwImAEQAAAEHANgA9QAAABpADQJwOAEAODsCAkECATi5AsMAKQArAStdNf//AGb/5wV2ByYCJgAmAAABBwDWAbABZAAWQAoBACAjCA9BAQEguQIhACkAKwErNf//AFD/6APtBcICJgBGAAABBwDWAPoAAAAWQAoBAB0gBw5BAQEduQIiACkAKwErNf//AGb/5wV2BxoCJgAmAAABBwDaAbABkAAVQAkBHgtkSCsBAR65AiEAKQArASs1AP//AFD/6APtBYoCJgBGAAABBwDaAPAAAAApswEBARu5AiIAKQArAbEGAkNUWLUAGx4LC0ErG7dvGwEbEyhIKytdWTUA//8AogAABOgGyQImACgAAAEHANgBgQFqABZACgEADA8BAkEBAQy5AiEAKQArASs1//8AS//oBB4FXwImAEgAAAEHANgA4AAAABZACgIAHiEHD0ECAR65AsMAKQArASs1//8AogAABOgHIgImACgAAAEHANkBawFqACWzAQEBELkCIQApACsBsQYCQ1RYtQATDQECQSsbtBMFRkgrK1k1AP//AEv/6AQeBbgCJgBIAAABBwDZAPQAAAAVQAoCASUWAEgnAgEiuQIiACkAKwErAP//AKIAAAToBvQCJgAoAAABBwDaAYEBagAWQAoBAAwPAQJBAQEMuQIhACkAKwErNf//AEv/6AQeBYoCJgBIAAABBwDaAPoAAAAWQAoCAB4hBw9BAgEeuQIiACkAKwErNf//AG3/5wW5ByECJgAqAAABBwDWAg4BXwAlswEBASi5AiEAKQArAbEGAkNUWLUAKCsODkErG7QmDgBIKytZNQD//wBC/lED6gXCAiYASgAAAQcA1gDIAAAAFkAKAgAtMA8XQQIBLbkCIgApACsBKzX//wBt/+cFuQbpAiYAKgAAAQcA2gIOAV8AFkAKAQAmKQoCQQEBJrkCIQApACsBKzX//wBC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BQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREhAQAEAPwgA8D8QAUA+wAgBMAAAAIBAAAABQAFAAADAAcAACERIRElIREh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ESEBAAQA/CADwPxABQD7ACAEwAD//wBG/9UBnACkABYC9gAA//8ARv72AZwAWwAWAvMAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAQAAAAUABQAAAwAHAAAhESERJSERIQEABAD8IAPA/EAFAPsAIATAAAACAMoBGAHJBbcAEgAeAD65ABAC8rcHQAkKNAcHHLwC7gAWAuwABgLxtAcHExkAuALtsg0NE7kC7QAZL+0zL+0REjkv7QA//TIvKz8xMAEUBwYHBhUjNCcmJyY1NDYzMhYDFAYjIiY1NDYzMhYByRorBRo5GQolGkY3OUkGSDQySEg0MkgFHUN2wxySiH6ZOrZ+LT1dXPw3MkhIMjNKSgAAAQDHARgBzwIiAAsAFr4ACQLuAAMC7AAAAu0ABi/tAD/tMTABFAYjIiY1NDYzMhYBz083NkxNNThOAZ02T043Nk9OAAACAMYBGAHNBFcACwAXACq5AAkC7rIDAxW8Au4ADwLsAAAC7bIGBgy5Au0AEi/tMy/tAD/9Mi/tMTABFAYjIiY1NDYzMhYRFAYjIiY1NDYzMhYBzU44NUxKNzhOTzc1TEs2OE4D0jhOTjg3Tk79lDZPTjc2T04AAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUAAAMABwAAIREhESUhESEBAAQA/CADwPxABQD7ACAEwAAAAgEAAAAFAAUA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ABH++AAzACT/aAA1ADf/2wA1ADn/2wA1ADr/2wA1ADz/2wA3AAP/2wA3AA//HQA3ABD/jwA3ABH/HQA3AB3/HQA3AB7/HQA3ACT/aAA3ADL/2wA3AET/HQA3AEb/HQA3AEj/HQA3AEz/tAA3AFL/HQA3AFX/tAA3AFb/HQA3AFj/tAA3AFr/jwA3AFz/jwA5AA//RAA5ABD/jwA5ABH/RAA5AB3/tAA5AB7/tAA5ACT/aAA5AET/aAA5AEj/jwA5AEz/2wA5AFL/jwA5AFX/tAA5AFj/tAA5AFz/tAA6AA//jwA6ABD/2wA6ABH/jwA6AB3/2wA6AB7/2wA6ACT/tAA6AET/tAA6AEj/2wA6AEwAAAA6AFL/2wA6AFX/2wA6AFj/2wA6AFz/7gA8AAP/2wA8AA/++AA8ABD/RAA8ABH++AA8AB3/jwA8AB7/ewA8ACT/aAA8AET/aAA8AEj/RAA8AEz/tAA8AFL/RAA8AFP/aAA8AFT/RAA8AFj/jwA8AFn/jwBJAEn/2wBJALYAJQBVAA//jwBVABH/jwBVALYATABZAA//aABZABH/aABaAA//jwBaABH/jwBcAA//aABcABH/aAC1ALX/2wC2AAP/tAC2AFb/2wC2ALb/2wDEAi3/YADEAjb/YADEAkz/YADEAlH/vADEAlT/vAErAA//HwErABH/HwErAfgApAErAfn/RAErAfv/RAErAgH/RAErAhr/qAErAicAWAEsAfn/2wEsAfv/2wEsAgH/2wEsAgr/vgEsAg//vgEtAfn/xQEtAgr/vgEtAg//vgEvATL/4wEvAhz/2QEvAiT/yQEvAoz/4wEyAS7/4wEyAS//4wEyATH/4wEyATP/4wEyAhD/4wEyAhf/4wEyAiD/4wEyAiL/4wEyAib/4wEyAiv/4wEzATL/4wEzAhz/2QEzAiT/yQEzAoz/4wHxASz/1QHxAS3/xQHxAgX/1QHxAgn/aAHxAgr/aAHxAg//aAHxAhb/2wHxAh7/2wHxAiT/2wH1Agr/vgH2ASz/jQH2AS3/jQH2AS7/RgH2ATH/RgH2ATP/RgH2AfgAqgH2Afn/aAH2Afv/aAH2AgH/aAH2AgX/jQH2Ag3/ngH2AhL/aAH2AhP/tAH2Ahj/aAH2Ahr/tAH2Ahv/aAH2Ah3/aAH2AiD/RgH2AicAYgH2Ain/RgH3Agr/0QH3Ag//0QH5AAP/jwH5ALb/aAH5ASz/1QH5AS3/xQH5AgX/1QH5Agn/aAH5Agr/aAH5Ag//aAH5Ahb/2wH5Ah7/2wH5AiT/2wH7AAP/jwH7ASz/1QH7AgX/1QH7Agn/iQH7Agr/aAH7Ag//aAIAASz/wQIAAS3/jwIAAS7/5wIAAS//5wIAATH/5wIAATP/5wIAAgX/wQIAAhD/5wIAAhf/5wIAAhn/5wIAAh//5wIAAiD/5wIAAib/5wIAAin/5wIAAiv/5wIBAAP/jwIBASz/1QIBAgX/1QIBAgn/aAIBAgr/aAIBAg//aAIFAfn/2wIFAfv/1QIFAgH/2wIFAgr/vgIFAg//vgIHAAP/2wIHAA/++gIHABH++gIHAfn/aAIHAfv/aAIHAgH/aAIIATL/ngIIAoz/ngIJAAP/2wIJAA//HwIJABH/HwIJAB3/HwIJAB7/HwIJASz/2wIJAS3/2wIJAS7/HwIJATD/HwIJATH/HwIJATP/HwIJAfgAvAIJAfn/aAIJAfv/aAIJAgH/aAIJAgX/2wIJAg3/2wIJAhD/HwIJAhH/HwIJAhT/TgIJAhb/TgIJAhj/agIJAhr/tAIJAh3/agIJAh7/jwIJAiD/HwIJAiP/UAIJAiT/jwIJAiX/agIJAicAvAIJAij/TgIJAin/HwIJAir/TgIKAAP/2wIKAA/++gIKABD/RgIKABH++gIKAB3/jwIKAB7/jwIKASz/jQIKAS3/jQIKAS7/RgIKATH/RgIKATP/RgIKAfgAvAIKAfn/aAIKAfv/aAIKAgH/aAIKAgX/jQIKAg3/ngIKAhL/aAIKAhP/tAIKAhb/ngIKAhj/aAIKAhr/tAIKAhv/aAIKAh3/aAIKAiD/RgIKAicAeQIKAin/RgIMAS7/sgIMAS//sgIMATH/sgIMATP/sgIMAhD/sgIMAhn/2QIMAiD/sgIMAib/sgIMAin/sgIMAiv/sgINAgr/0QINAg//0QIPAAP/2wIPASz/jQIPAS3/jQIPAS7/RgIPATH/RgIPATP/RgIPAfgAqgIPAfn/aAIPAfv/aAIPAgH/aAIPAgX/jQIPAg3/ngIPAhL/aAIPAhP/tAIPAhj/aAIPAhr/tAIPAhv/aAIPAh3/aAIPAiD/RgIPAicAYgIPAin/RgIXAS7/dwIXAS//tAIXATH/dwIXATL/qgIXATP/dwIXAhD/dwIXAhL/2wIXAhb/qgIXAhj/2wIXAhn/ngIXAhr/2wIXAhv/2wIXAh7/qgIXAiD/dwIXAib/dwIXAin/dwIXAiv/dwIXAoz/qgIZAhz/2QIbAS7/5wIbAS//5wIbATH/5wIbATP/5wIbAhD/5wIbAhf/5wIbAhn/5wIbAh//5wIbAiD/5wIbAiL/5wIbAib/5wIbAin/5wIbAiv/5wIcAS7/4QIcAS//4QIcATH/4QIcATP/2wIcAhD/4QIcAh//4QIcAiD/4QIcAiL/0QIcAiP/zwIcAib/4QIcAin/4QIcAir/zwIcAiv/4QIfAS7/yQIfAS//yQIfATH/yQIfATP/yQIfAhD/yQIfAhf/yQIfAh//yQIfAiD/yQIfAiL/yQIfAin/yQIgATL/4wIgAhz/2QIgAiT/yQIgAoz/4wIhATL/4wIhAhz/2QIhAoz/4wIkAS7/yQIkAS//yQIkATH/yQIkATP/yQIkAhD/yQIkAhf/yQIkAiD/yQIkAiL/yQIkAib/yQIkAin/yQIkAiv/yQImATL/4wImAhz/2QImAiT/yQImAoz/4wIpATL/4wIpAhz/2QIpAiT/yQIpAoz/4wIrATL/4wIrAhz/2QIrAiT/yQIrAoz/4wIuAA//BgIuABH/BgIuAKn/dwIuAKr/dwIuALL/0wI0ALb/YAI1ALb/dwI6ALb/jQI6Aj4ARAI6AkH/6QI6AkUALQI6Akj/0wI6Akn/6QI6Akv/0wI6Akz/YAI6Ak3/pgI6Ak7/vAI6AlH/YAI6Alf/0wI6AloAFwI6Amz/0wI6Am3/6QI6Am4AFwI6AncALQI7Ajr/0wI7AkH/6QI7Akj/6QI7Akv/6QI7Akz/pAI7Ak3/0QI7Ak7/6QI7Ak//0wI7AlH/pAI7AlT/vAI7Alf/6QI7Aln/6QI7AmX/6QI7Am3/0wI8Ajr/vAI8Aj7/0wI8AkD/0wI8AkH/vAI8AkX/6QI8Akj/vAI8Akv/vAI8Akz/dwI8Ak3/vAI8Ak7/vAI8Ak//pgI8AlH/pAI8AlT/jQI8Aln/vAI8Al7/6QI8Amb/6QI8Amz/vAI8Am3/6QI8Am//6QI8AnH/vAI8Ann/6QI9AA//BgI9ABH/BgI9AKn/dwI9AKr/dwI9ALL/0wI9Ajr/dwI9Aj7/dwI9AkH/0wI9AkX/jQI9Akb/0QI9Akj/jQI9Akv/pAI9Aln/vAI9Alr/jQI9Alz/jQI9Al7/dwI9Al//dwI9AmL/jQI9AmX/jQI9Amb/jQI9Amf/jQI9Amj/dwI9Amr/jQI9Am3/dwI9AnX/jQI9Anb/jQI9Anj/jQI9Ann/dwI+Ak0AFwI+Ak7/0wI+AlH/ugI+AmEARAI+AmgAFwI+Am0ALQI/AkH/0wI/Amv/6QJAAkH/6QJAAkj/0wJAAkv/6QJAAkwAFwJAAk0ALQJAAlQALQJAAloAFwJAAl//5wJAAmj/6QJAAm3/6QJBAkX/6QJBAkj/6QJBAkv/6QJBAkz/0wJBAk3/6QJBAk7/6QJBAlH/0wJBAln/6QJEAkH/6QJEAkj/6QJEAkv/6QJEAk0AFwJEAk7/ugJFAk7/6QJFAlsAFwJFAm0AFwJGAk7/6QJGAlH/6QJGAloAFwJGAl8AFwJGAmgAFwJGAmsAFwJGAm0AFwJGAnH/6QJGAncAFwJIAjr/0wJIAj7/0wJIAkD/0wJIAkX/6QJIAk3/0wJIAk//pAJIAlH/0wJIAln/0wJIAl7/0wJIAmX/6QJIAm//6QJKAA/+fQJKABH+fQJKAB3/0wJKAB7/0wJKAKr/jQJKAjr/dwJKAj7/dwJKAkD/6QJKAkH/0wJKAkX/jQJKAkb/6QJKAkj/0wJKAkv/6QJKAkz/pAJKAk3/0wJKAk7/6QJKAk//pAJKAln/0wJKAlr/vAJKAl7/YAJKAl//pgJKAmj/pgJKAnf/0wJKAnn/vAJLAjr/0wJLAj7/0wJLAkH/6QJLAkX/vAJLAkb/6QJLAkj/0wJLAkz/vAJLAk3/vAJLAk//jQJLAlH/vAJLAlT/ugJLAlf/6QJLAloAFwJLAmAALQJLAnH/6QJMAA//HQJMABH/HQJMAKn/pgJMAKr/pgJMALL/0wJMAjr/vAJMAj7/vAJMAkAAFwJMAkH/6QJMAkX/0wJMAkj/pAJMAk7/vAJMAln/0wJMAlr/pAJMAlz/pgJMAl//jQJMAmL/pgJMAmT/pgJMAmX/pAJMAmb/pgJMAmj/YAJMAmn/pgJMAmr/jQJMAmv/jQJMAm3/jQJMAm//pgJMAnP/pgJMAnX/pgJMAnb/pgJMAnj/pgJMAnn/jQJNAA/+8AJNABH+8AJNAB3/0wJNAB7/0wJNAKn/pgJNAKr/pAJNALL/6QJNAjr/dwJNAj7/pAJNAkH/0wJNAkX/vAJNAkj/vAJNAk7/vAJNAlf/0wJNAln/0wJNAlv/0wJNAlz/jQJNAl3/pAJNAl7/YAJNAl//dwJNAmD/vAJNAmH/jQJNAmL/pAJNAmP/vAJNAmT/pAJNAmX/dwJNAmb/pAJNAmf/pAJNAmj/dwJNAmn/pAJNAmr/pAJNAmv/dwJNAm//pAJNAnD/pAJNAnL/pAJNAnP/pAJNAnj/pAJNAnn/dwJOAjr/0wJOAj7/vAJOAkX/vAJOAkz/jQJOAk3/pAJOAlH/0wJOAln/ugJOAmX/vAJPAkH/0wJPAkj/vAJPAkv/vAJPAk7/vAJPAlf/ugJPAmj/6QJPAm3/0wJQAkj/0wJQAloALQJTAloAFwJTAm0ALQJUALb/dwJUAln/vAJWALb/YAJWAjr/0wJWAj7/0wJWAkD/vAJWAkH/6QJWAkX/ugJWAkb/0wJWAkj/0wJWAkv/0wJWAkz/MwJWAk//pAJWAlH/YAJWAlf/6QJWAln/pAJXAj7/vAJXAkD/5wJXAkH/6QJXAkX/vAJXAk//ugJXAln/0wJXAl7/vAJXAmAAFwJXAmX/vAJXAmb/6QJXAnn/6QJYAjr/vAJYAj7/pgJYAkD/0wJYAkX/pAJYAkj/6QJYAkv/6QJYAkz/jQJYAk//pAJYAlH/vAJYAl7/pAJYAmX/pAJYAmb/6QJaAmH/6QJaAmz/0wJaAm3/6QJaAnH/0wJbAlr/0QJbAl7/pAJbAl//6QJbAmD/6QJbAmH/0wJbAmX/pAJbAmb/0wJbAmv/6QJbAm3/0wJbAm7/6QJbAm//vAJbAnH/vAJbAnT/vAJbAnf/6QJbAnn/0wJcAlr/6QJcAlv/6QJcAl7/6QJcAl//6QJcAmD/6QJcAmH/6QJcAmX/0QJcAmb/6QJcAmj/6QJcAmv/6QJcAmz/0wJcAm3/0wJcAm7/6QJcAnH/pAJcAnT/vAJcAnn/6QJdAA//BgJdABH/BgJdAlr/0wJdAl7/pAJdAl//0wJdAmH/6QJdAmX/0wJdAmj/0wJdAmv/0wJdAnn/6QJeAnT/0wJeAncAFwJfAlv/6QJfAl7/0wJfAmD/6QJfAmH/0wJfAmX/vAJfAmz/vAJfAm3/6QJfAm//0wJfAnH/vAJgAlsAFwJgAm0AFwJgAnH/6QJgAnQALQJhAlv/6QJhAl7/0wJhAl//6QJhAmH/6QJhAmX/6QJhAmj/6QJhAmv/6QJhAm3/6QJhAm7/6QJhAnH/vAJhAnT/0wJkAloALQJkAlsALQJkAl8AFwJkAmEAFwJkAmUAFwJkAmgAFwJkAmsAFwJkAmwAFwJkAm0AFwJkAncAFwJlAmgAFwJlAnH/0wJmAlv/6QJmAmH/6QJmAm0AFwJoAl7/0wJoAmD/6QJoAmH/6QJoAmX/0wJoAmz/0wJoAm3/6QJoAm//6QJoAnH/0wJqAl7/0QJqAmH/6QJqAmX/ugJqAmz/0wJqAm3/6QJqAm//6QJqAnH/0wJqAnn/6QJrAmAAFwJrAmgAFwJrAnH/6QJrAncAFwJsAA//HQJsABH/HQJsAlr/6QJsAl7/vAJsAl//6QJsAmAARAJsAmX/0wJsAmj/6QJsAmv/6QJsAm0AFwJtAA//MwJtABH/MwJtAKoAFwJtAlr/6QJtAlsAFwJtAl7/vAJtAl//6QJtAmAAFwJtAmX/0wJtAmb/6QJtAmj/5wJtAmr/6QJtAmv/6QJtAm7/6QJtAnf/6QJtAnn/6QJuAlv/6QJuAl7/0wJuAmX/0wJuAmz/0wJuAm3/6QJuAnH/0wJuAnn/6QJvAlr/6QJvAlv/6QJvAl//6QJvAmH/6QJvAmj/6QJvAmv/6QJvAmz/6QJvAm7/6QJvAnH/0wJwAl//6QJwAmH/6QJwAmj/6QJwAmv/6QJzAl//6QJzAmj/6QJzAm0AFwJ2Amz/YAJ2AnH/dwJ3Al7/0wJ3Al8AFwJ3AmH/6QJ3AmX/0wJ3AmgAFwJ3Amz/0wJ3Am//6QJ3Ann/6QJ4Al7/0wJ4AmD/6QJ4AmX/0wJ4Amb/6QJ4Amz/0wJ4Am//6QJ4AnH/0wKGAA//MwKGABH/MwKIAA//BgKIABH/BgKIAB3/0wKIAB7/0wKIAKn/YAKIAKr/YAKIALL/0wKMAS7/4wKMATH/4wKMATP/4wKMAhD/4wKMAhf/4wKMAiD/4wKMAiL/4wKMAib/4wKMAiv/4wAAAEYDTgAAAAMAAAAAAP4AAAAAAAMAAAABAAoBPgAAAAMAAAACAA4F3gAAAAMAAAADAF4FwAAAAAMAAAAEAAoBPgAAAAMAAAAFABgF7gAAAAMAAAAGAA4GHgAAAAMAAAAHAMQGLAAAAAMAAAAIACYHfAAAAAMAAAAJAIoNpAAAAAMAAAAKBMIA/gAAAAMAAAALAGIOLgAAAAMAAAAMAGYOkAAAAAMAAAANBrQG8AAAAAMAAAAOAFwO9gABAAAAAAAAAH8PUgABAAAAAAABAAUP8QABAAAAAAACAAcSQQABAAAAAAADAC8SMgABAAAAAAAEAAUP8QABAAAAAAAFAAwSSQABAAAAAAAGAAcSYQABAAAAAAAHAGISaAABAAAAAAAIABMTEAABAAAAAAAJAEUWJAABAAAAAAAKAmEP0QABAAAAAAALADEWaQABAAAAAAAMADMWmgABAAAAAAANA1oSygABAAAAAAAOAC4WzQADAAEEAwACAAwW+wADAAEEBQACABAXCwADAAEEBgACAAwXGwADAAEEBwACABAXJwADAAEECAACABAXNwADAAEECQAAAP4AAAADAAEECQABAAoBPgADAAEECQACAA4F3gADAAEECQADAF4FwAADAAEECQAEAAoBPgADAAEECQAFABgF7gADAAEECQAGAA4GHgADAAEECQAHAMQGLAADAAEECQAIACYHfAADAAEECQAJAIoNpAADAAEECQAKBMIA/gADAAEECQALAGIOLgADAAEECQAMAGYOkAADAAEECQANBrQG8AADAAEECQAOAFwO9gADAAEECgACAAwW+wADAAEECwACABAXRwADAAEEDAACAAwW+wADAAEEDgACAAwXVwADAAEEEAACAA4XZwADAAEEEwACABIXdQADAAEEFAACAAwW+wADAAEEFQACABAW+wADAAEEFgACAAwW+wADAAEEGQACAA4XhwADAAEEGwACABAXVwADAAEEHQACAAwW+wADAAEEHwACAAwW+wADAAEEJAACAA4XlQADAAEEKgACAA4XowADAAEELQACAA4XsQADAAEICgACAAwW+wADAAEIFgACAAwW+wADAAEMCgACAAwW+wADAAEMDAACAAwW+wBUAHkAcABlAGYAYQBjAGUAIACpACAAVABoAGUAIABNAG8AbgBvAHQAeQBwAGUAIABDAG8AcgBwAG8AcgBhAHQAaQBvAG4AIABwAGwAYwAuACAARABhAHQAYQAgAKkAIABUAGgAZQAgAE0AbwBuAG8AdAB5AHAAZQAgAEMAbwByAHAAbwByAGEAdABpAG8AbgAgAHAAbABjAC8AVAB5AHAAZQAgAFMAbwBsAHUAdABpAG8AbgBzACAASQBuAGMALgAgADEAOQA5ADAALQAxADkAOQAyAC4AIABBAGwAbAAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAEMAbwBuAHQAZQBtAHAAbwByAGEAcgB5ACAAcwBhAG4AcwAgAHMAZQByAGkAZgAgAGQAZQBzAGkAZwBuACwAIABBAHIAaQBhAGwAIABjAG8AbgB0AGEAaQBuAHMAIABtAG8AcgBlACAAaAB1AG0AYQBuAGkAcwB0ACAAYwBoAGEAcgBhAGMAdABlAHIAaQBzAHQAaQBjAHMAIAB0AGgAYQBuACAAbQBhAG4AeQAgAG8AZgAgAGkAdABzACAAcAByAGUAZABlAGMAZQBzAHMAbwByAHMAIABhAG4AZAAgAGEAcwAgAHMAdQBjAGgAIABpAHMAIABtAG8AcgBlACAAaQBuACAAdAB1AG4AZQAgAHcAaQB0AGgAIAB0AGgAZQAgAG0AbwBvAGQAIABvAGYAIAB0AGgAZQAgAGwAYQBzAHQAIABkAGUAYwBhAGQAZQBzACAAbwBmACAAdABoAGUAIAB0AHcAZQBuAHQAaQBlAHQAaAAgAGMAZQBuAHQAdQByAHkALgAgACAAVABoAGUAIABvAHYAZQByAGEAbABsACAAdAByAGUAYQB0AG0AZQBuAHQAIABvAGYAIABjAHUAcgB2AGUAcwAgAGkAcwAgAHMAbwBmAHQAZQByACAAYQBuAGQAIABmAHUAbABsAGUAcgAgAHQAaABhAG4AIABpAG4AIABtAG8AcwB0ACAAaQBuAGQAdQBzAHQAcgBpAGEAbAAgAHMAdAB5AGwAZQAgAHMAYQBuAHMAIABzAGUAcgBpAGYAIABmAGEAYwBlAHMALgAgACAAVABlAHIAbQBpAG4AYQBsACAAcwB0AHIAbwBrAGUAcwAgAGEAcgBlACAAYwB1AHQAIABvAG4AIAB0AGgAZQAgAGQAaQBhAGcAbwBuAGEAbAAgAHcAaABpAGMAaAAgAGgAZQBsAHAAcwAgAHQAbwAgAGcAaQB2AGUAIAB0AGgAZQAgAGYAYQBjAGUAIABhACAAbABlAHMAcwAgAG0AZQBjAGgAYQBuAGkAYwBhAGwAIABhAHAAcABlAGEAcgBhAG4AYwBlAC4AIAAgAEEAcgBpAGEAbAAgAGkAcwAgAGEAbgAgAGUAeAB0AHIAZQBtAGUAbAB5ACAAdgBlAHIAcwBhAHQAaQBsAGUAIABmAGEAbQBpAGwAeQAgAG8AZgAgAHQAeQBwAGUAZgBhAGMAZQBzACAAdwBoAGkAYwBoACAAYwBhAG4AIABiAGUAIAB1AHMAZQBkACAAdwBpAHQAaAAgAGUAcQB1AGEAbAAgAHMAdQBjAGMAZQBzAHMAIABmAG8AcgAgAHQAZQB4AHQAIABzAGUAdAB0AGkAbgBnACAAaQBuACAAcgBlAHAAbwByAHQAcwAsACAAcAByAGUAcwBlAG4AdABhAHQAaQBvAG4AcwAsACAAbQBhAGcAYQB6AGkAbgBlAHMAIABlAHQAYwAsACAAYQBuAGQAIABmAG8AcgAgAGQAaQBzAHAAbABhAHkAIAB1AHMAZQAgAGkAbgAgAG4AZQB3AHMAcABhAHAAZQByAHMALAAgAGEAZAB2AGUAcgB0AGkAcwBpAG4AZwAgAGEAbgBkACAAcAByAG8AbQBvAHQAaQBvAG4AcwAuAE0AbwBuAG8AdAB5AHAAZQA6AEEAcgBpAGEAbAAgAFIAZQBnAHUAbABhAHIAOgBWAGUAcgBzAGkAbwBuACAAMwAuADAAMAAgACgATQBpAGMAcgBvAHMAbwBmAHQAKQBBAHIAaQBhAGwATQBUAEEAcgBpAGEAbACuACAAVAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGgAZQAgAE0AbwBuAG8AdAB5AHAAZQAgAEMAbwByAHAAbwByAGEAdABpAG8AbgAgAHAAbABjACAAcgBlAGcAaQBzAHQAZQByAGUAZAAgAGkAbgAgAHQAaABlACAAVQBTACAAUABhAHQAIAAmACAAVABNACAATwBmAGYALgAgAGEAbgBkACAAZQBsAHMAZQB3AGgAZQByAGUALgBOAE8AVABJAEYASQBDAEEAVABJAE8ATgAgAE8ARgAgAEwASQBDAEUATgBTAEUAIABBAEcAUgBFAEUATQBFAE4AVAANAAoADQAKAFQAaABpAHMAIAB0AHkAcABlAGYAYQBjAGUAIABpAHMAIAB0AGgAZQAgAHAAcgBvAHAAZQByAHQAeQAgAG8AZgAgAE0AbwBuAG8AdAB5AHAAZQAgAFQAeQBwAG8AZwByAGEAcABoAHkAIABhAG4AZAAgAGkAdABzACAAdQBzAGUAIABiAHkAIAB5AG8AdQAgAGkAcwAgAGMAbwB2AGUAcgBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAHQAZQByAG0AcwAgAG8AZgAgAGEAIABsAGkAYwBlAG4AcwBlACAAYQBnAHIAZQBlAG0AZQBuAHQALgAgAFkAbwB1ACAAaABhAHYAZQAgAG8AYgB0AGEAaQBuAGUAZAAgAHQAaABpAHMAIAB0AHkAcABlAGYAYQBjAGUAIABzAG8AZgB0AHcAYQByAGUAIABlAGkAdABoAGUAcgAgAGQAaQByAGUAYwB0AGwAeQAgAGYAcgBvAG0AIABNAG8AbgBvAHQAeQBwAGUAIABvAHIAIAB0AG8AZwBlAHQAaABlAHIAIAB3AGkAdABoACAAcwBvAGYAdAB3AGEAcgBlACAAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAYgB5ACAAbwBuAGUAIABvAGYAIABNAG8AbgBvAHQAeQBwAGUAJwBzACAAbABpAGMAZQBuAHMAZQBlAHMALgANAAoADQAKAFQAaABpAHMAIABzAG8AZgB0AHcAYQByAGUAIABpAHMAIABhACAAdgBhAGwAdQBhAGIAbABlACAAYQBzAHMAZQB0ACAAbwBmACAATQBvAG4AbwB0AHkAcABlAC4AIABVAG4AbABlAHMAcwAgAHkAbwB1ACAAaABhAHYAZQAgAGUAbgB0AGUAcgBlAGQAIABpAG4AdABvACAAYQAgAHMAcABlAGMAaQBmAGkAYwAgAGwAaQBjAGUAbgBzAGUAIABhAGcAcgBlAGUAbQBlAG4AdAAgAGcAcgBhAG4AdABpAG4AZwAgAHkAbwB1ACAAYQBkAGQAaQB0AGkAbwBuAGEAbAAgAHIAaQBnAGgAdABzACwAIAB5AG8AdQByACAAdQBzAGUAIABvAGYAIAB0AGgAaQBzACAAcwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAG0AaQB0AGUAZAAgAHQAbwAgAHkAbwB1AHIAIAB3AG8AcgBrAHMAdABhAHQAaQBvAG4AIABmAG8AcgAgAHkAbwB1AHIAIABvAHcAbgAgAHAAdQBiAGwAaQBzAGgAaQBuAGcAIAB1AHMAZQAuACAAWQBvAHUAIABtAGEAeQAgAG4AbwB0ACAAYwBvAHAAeQAgAG8AcgAgAGQAaQBzAHQAcgBpAGIAdQB0AGUAIAB0AGgAaQBzACAAcwBvAGYAdAB3AGEAcgBlAC4ADQAKAA0ACgBJAGYAIAB5AG8AdQAgAGgAYQB2AGUAIABhAG4AeQAgAHEAdQBlAHMAdABpAG8AbgAgAGMAbwBuAGMAZQByAG4AaQBuAGcAIAB5AG8AdQByACAAcgBpAGcAaAB0AHMAIAB5AG8AdQAgAHMAaABvAHUAbABkACAAcgBlAHYAaQBlAHcAIAB0AGgAZQAgAGwAaQBjAGUAbgBzAGUAIABhAGcAcgBlAGUAbQBlAG4AdAAgAHkAbwB1ACAAcgBlAGMAZQBpAHYAZQBkACAAdwBpAHQAaAAgAHQAaABlACAAcwBvAGYAdAB3AGEAcgBlACAAbwByACAAYwBvAG4AdABhAGMAdAAgAE0AbwBuAG8AdAB5AHAAZQAgAGYAbwByACAAYQAgAGMAbwBwAHkAIABvAGYAIAB0AGgAZQAgAGwAaQBjAGUAbgBzAGUAIABhAGcAcgBlAGUAbQBlAG4AdAAuAA0ACgANAAoATQBvAG4AbwB0AHkAcABlACAAYwBhAG4AIABiAGUAIABjAG8AbgB0AGEAYwB0AGUAZAAgAGEAdAA6AA0ACgANAAoAVQBTAEEAIAAtACAAKAA4ADQANwApACAANwAxADgALQAwADQAMAAwAAkACQBVAEsAIAAtACAAMAAxADEANAA0ACAAMAAxADcAMwA3ACAANwA2ADUAOQA1ADkADQAKAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBtAG8AbgBvAHQAeQBwAGUALgBjAG8AbQBNAG8AbgBvAHQAeQBwAGUAIABUAHkAcABlACAARAByAGEAdwBpAG4AZwAgAE8AZgBmAGkAYwBlACAALQAgAFIAbwBiAGkAbgAgAE4AaQBjAGgAbwBsAGEAcwAsACAAUABhAHQAcgBpAGMAaQBhACAAUwBhAHUAbgBkAGUAcgBzACAAMQA5ADgAMgBoAHQAdABwADoALwAvAHcAdwB3AC4AbQBvAG4AbwB0AHkAcABlAC4AYwBvAG0ALwBoAHQAbQBsAC8AbQB0AG4AYQBtAGUALwBtAHMAXwBhAHIAaQBhAGwALgBoAHQAbQBsAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBtAG8AbgBvAHQAeQBwAGUALgBjAG8AbQAvAGgAdABtAGwALwBtAHQAbgBhAG0AZQAvAG0AcwBfAHcAZQBsAGMAbwBtAGUALgBoAHQAbQBsAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBtAG8AbgBvAHQAeQBwAGUALgBjAG8AbQAvAGgAdABtAGwALwB0AHkAcABlAC8AbABpAGMAZQBuAHMAZQAuAGgAdABtAGxUeXBlZmFjZSCpIFRoZSBNb25vdHlwZSBDb3Jwb3JhdGlvbiBwbGMuIERhdGEgqSBUaGUgTW9ub3R5cGUgQ29ycG9yYXRpb24gcGxjL1R5cGUgU29sdXRpb25zIEluYy4gMTk5MC0xOTkyLiBBbGwgUmlnaHRzIFJlc2VydmVkQ29udGVtcG9yYXJ5IHNhbnMgc2VyaWYgZGVzaWduLCBBcmlhbCBjb250YWlucyBtb3JlIGh1bWFuaXN0IGNoYXJhY3RlcmlzdGljcyB0aGFuIG1hbnkgb2YgaXRzIHByZWRlY2Vzc29ycyBhbmQgYXMgc3VjaCBpcyBtb3JlIGluIHR1bmUgd2l0aCB0aGUgbW9vZCBvZiB0aGUgbGFzdCBkZWNhZGVzIG9mIHRoZSB0d2VudGlldGggY2VudHVyeS4gIFRoZSBvdmVyYWxsIHRyZWF0bWVudCBvZiBjdXJ2ZXMgaXMgc29mdGVyIGFuZCBmdWxsZXIgdGhhbiBpbiBtb3N0IGluZHVzdHJpYWwgc3R5bGUgc2FucyBzZXJpZiBmYWNlcy4gIFRlcm1pbmFsIHN0cm9rZXMgYXJlIGN1dCBvbiB0aGUgZGlhZ29uYWwgd2hpY2ggaGVscHMgdG8gZ2l2ZSB0aGUgZmFjZSBhIGxlc3MgbWVjaGFuaWNhbCBhcHBlYXJhbmNlLiAgQXJpYWwgaXMgYW4gZXh0cmVtZWx5IHZlcnNhdGlsZSBmYW1pbHkgb2YgdHlwZWZhY2VzIHdoaWNoIGNhbiBiZSB1c2VkIHdpdGggZXF1YWwgc3VjY2VzcyBmb3IgdGV4dCBzZXR0aW5nIGluIHJlcG9ydHMsIHByZXNlbnRhdGlvbnMsIG1hZ2F6aW5lcyBldGMsIGFuZCBmb3IgZGlzcGxheSB1c2UgaW4gbmV3c3BhcGVycywgYWR2ZXJ0aXNpbmcgYW5kIHByb21vdGlvbnMuTW9ub3R5cGU6QXJpYWwgUmVndWxhcjpWZXJzaW9uIDMuMDAgKE1pY3Jvc29mdClBcmlhbE1UQXJpYWyoIFRyYWRlbWFyayBvZiBUaGUgTW9ub3R5cGUgQ29ycG9yYXRpb24gcGxjIHJlZ2lzdGVyZWQgaW4gdGhlIFVTIFBhdCAmIFRNIE9mZi4gYW5kIGVsc2V3aGVyZS5OT1RJRklDQVRJT04gT0YgTElDRU5TRSBBR1JFRU1FTlQNCg0KVGhpcyB0eXBlZmFjZSBpcyB0aGUgcHJvcGVydHkgb2YgTW9ub3R5cGUgVHlwb2dyYXBoeSBhbmQgaXRzIHVzZSBieSB5b3UgaXMgY292ZXJlZCB1bmRlciB0aGUgdGVybXMgb2YgYSBsaWNlbnNlIGFncmVlbWVudC4gWW91IGhhdmUgb2J0YWluZWQgdGhpcyB0eXBlZmFjZSBzb2Z0d2FyZSBlaXRoZXIgZGlyZWN0bHkgZnJvbSBNb25vdHlwZSBvciB0b2dldGhlciB3aXRoIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIGJ5IG9uZSBvZiBNb25vdHlwZSdzIGxpY2Vuc2Vlcy4NCg0KVGhpcyBzb2Z0d2FyZSBpcyBhIHZhbHVhYmxlIGFzc2V0IG9mIE1vbm90eXBlLiBVbmxlc3MgeW91IGhhdmUgZW50ZXJlZCBpbnRvIGEgc3BlY2lmaWMgbGljZW5zZSBhZ3JlZW1lbnQgZ3JhbnRpbmcgeW91IGFkZGl0aW9uYWwgcmlnaHRzLCB5b3VyIHVzZSBvZiB0aGlzIHNvZnR3YXJlIGlzIGxpbWl0ZWQgdG8geW91ciB3b3Jrc3RhdGlvbiBmb3IgeW91ciBvd24gcHVibGlzaGluZyB1c2UuIFlvdSBtYXkgbm90IGNvcHkgb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlLg0KDQpJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb24gY29uY2VybmluZyB5b3VyIHJpZ2h0cyB5b3Ugc2hvdWxkIHJldmlldyB0aGUgbGljZW5zZSBhZ3JlZW1lbnQgeW91IHJlY2VpdmVkIHdpdGggdGhlIHNvZnR3YXJlIG9yIGNvbnRhY3QgTW9ub3R5cGUgZm9yIGEgY29weSBvZiB0aGUgbGljZW5zZSBhZ3JlZW1lbnQuDQoNCk1vbm90eXBlIGNhbiBiZSBjb250YWN0ZWQgYXQ6DQoNClVTQSAtICg4NDcpIDcxOC0wNDAwCQlVSyAtIDAxMTQ0IDAxNzM3IDc2NTk1OQ0KaHR0cDovL3d3dy5tb25vdHlwZS5jb21Nb25vdHlwZSBUeXBlIERyYXdpbmcgT2ZmaWNlIC0gUm9iaW4gTmljaG9sYXMsIFBhdHJpY2lhIFNhdW5kZXJzIDE5ODJodHRwOi8vd3d3Lm1vbm90eXBlLmNvbS9odG1sL210bmFtZS9tc19hcmlhbC5odG1saHR0cDovL3d3dy5tb25vdHlwZS5jb20vaHRtbC9tdG5hbWUvbXNfd2VsY29tZS5odG1saHR0cDovL3d3dy5tb25vdHlwZS5jb20vaHRtbC90eXBlL2xpY2Vuc2UuaHRtbABOAG8AcgBtAGEAbABuAHkAbwBiAHkBDQBlAGoAbgDpAG4AbwByAG0AYQBsAFMAdABhAG4AZABhAHIAZAOaA7EDvQO/A70DuQO6A6wATgBvAHIAbQBhAGEAbABpAE4AbwByAG0A4QBsAG4AZQBOAG8AcgBtAGEAbABlAFMAdABhAG4AZABhAGEAcgBkBB4EMQRLBEcEPQRLBDkATgBhAHYAYQBkAG4AbwB0AGgBsAGhAwAAbgBnAEEAcgByAHUAbgB0AGEAAAAAAgAAAAAAAP8nAJYAAAAAAAAAAAAAAAAAAAAAAAAAAAaKAAABAgEDAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYBBACYAJkAmgEFAJwAnQCeAQYAoAChAKIAowCkAKUApgCnAKgAqQCqAKsArQCuAK8AsACxALIAswC0ALUAtgC3ALgAuQC6ALsAvAEHAL4AvwDAAMEAwgDDAMQAxQDGAMcAyADJAMoAywDMAM0AzgDPANAA0QDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkA6gDrAOwA7QDuAO8A8ADxAPIA8wD0APUA9gD3APgA+QD6APsA/AD9AP4A/wEAAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAJ8CFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQAlwIlAiYCJwIoAikCKgIrAiwCLQIuAi8CMAIxAjICMwI0AjUCNgI3AjgCOQI6AjsCPAI9Aj4CPwJAAkECQgJDAkQCRQJGAkcCSAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAo8CkAKRApIAmwKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AwADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MAvQNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5APlA+YD5wPoA+kD6gPrA+wD7QPuA+8D8APxA/ID8wP0A/UD9gP3A/gD+QP6A/sD/AP9A/4D/wQABAEEAgQDBAQEBQQGBAcECAQJBAoECwQMBA0EDgQPBBAEEQQSBBMEFAQVBBYEFwQYBBkEGgQbBBwEHQQeBB8EIAQhBCIEIwQkBCUEJgQnBCgEKQQqBCsELAQtBC4ELwQwBDEEMgQzBDQENQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8EUARRBFIEUwRUBFUEVgRXBFgEWQRaBFsEXARdBF4EXwRgBGEEYgRjBGQEZQRmBGcEaARpBGoEawRsBG0EbgRvBHAEcQRyBHMEdAR1BHYEdwR4BHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBJQElQSWBJcEmASZBJoEmwScBJ0EngSfBKAEoQSiBKMEpASlBKYEpwSoBKkEqgSrBKwErQSuBK8EsASxBLIEswS0BLUEtgS3BLgEuQS6BLsEvAS9BL4EvwTABMEEwgTDBMQExQTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNYE1wTYBNkE2gTbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUpBSoFKwUsBS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVKBUsFTAVNBU4FTwVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVcBV0FXgVfBWAFYQViBWMFZAVlBWYFZwVoBWkFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWbBZwFnQWeBZ8FoAWhBaIFowWkBaUFpgWnBagFqQWqBasFrAWtBa4FrwWwBbEFsgWzBbQFtQW2BbcFuAW5BboFuwW8Bb0FvgW/BcAFwQXCBcMFxAXFBcYFxwXIBckFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF3AXdBd4F3wXgBeEF4gXjBeQF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/QX+Bf8GAAYBBgIGAwYEBgUGBgYHBggGCQYKBgsGDAYNBg4GDwYQBhEGEgYTBhQGFQYWBhcGGAYZBhoGGwYcBh0GHgYfBiAGIQYiBiMGJAYlBiYGJwYoBikGKgYrBiwGLQYuBi8GMAYxBjIGMwY0BjUGNgY3BjgGOQY6BjsGPAY9Bj4GPwZABkEGQgZDBkQGRQZGBkcGSAZJBkoGSwZMBk0GTgZPBlAGUQZSBlMGVAZVBlYGVwZYBlkGWgZbBlwGXQZeBl8GYAZhBmIGYwZkBmUGZgZnBmgGaQZqBmsGbAZtBm4GbwZwBnEGcgZzBnQGdQZ2BncGeAZ5BnoGewZ8Bn0GfgZ/BoAGgQaCBoMGhAaFBoYGhwaIBokGigaLBowGjQaOBS5udWxsEG5vbm1hcmtpbmdyZXR1cm4DbXUxA3BpMQNPaG0ERXVybwdkbWFjcm9uCW92ZXJzY29yZQZtaWRkb3QGQWJyZXZlBmFicmV2ZQdBb2dvbmVrB2FvZ29uZWsGRGNhcm9uBmRjYXJvbgZEc2xhc2gHRW9nb25lawdlb2dvbmVrBkVjYXJvbgZlY2Fyb24GTGFjdXRlBmxhY3V0ZQZMY2Fyb24GbGNhcm9uBExkb3QEbGRvdAZOYWN1dGUGbmFjdXRlBk5jYXJvbgZuY2Fyb24JT2RibGFjdXRlCW9kYmxhY3V0ZQZSYWN1dGUGcmFjdXRlBlJjYXJvbgZyY2Fyb24GU2FjdXRlBnNhY3V0ZQhUY2VkaWxsYQh0Y2VkaWxsYQZUY2Fyb24GdGNhcm9uBVVyaW5nBXVyaW5nCVVkYmxhY3V0ZQl1ZGJsYWN1dGUGWmFjdXRlBnphY3V0ZQRaZG90BHpkb3QFR2FtbWEFVGhldGEDUGhpBWFscGhhBWRlbHRhB2Vwc2lsb24Fc2lnbWEDdGF1A3BoaQ11bmRlcnNjb3JlZGJsCWV4Y2xhbWRibAluc3VwZXJpb3IGcGVzZXRhCWFycm93bGVmdAdhcnJvd3VwCmFycm93cmlnaHQJYXJyb3dkb3duCWFycm93Ym90aAlhcnJvd3VwZG4MYXJyb3d1cGRuYnNlCm9ydGhvZ29uYWwMaW50ZXJzZWN0aW9uC2VxdWl2YWxlbmNlBWhvdXNlDXJldmxvZ2ljYWxub3QKaW50ZWdyYWx0cAppbnRlZ3JhbGJ0CFNGMTAwMDAwCFNGMTEwMDAwCFNGMDEwMDAwCFNGMDMwMDAwCFNGMDIwMDAwCFNGMDQwMDAwCFNGMDgwMDAwCFNGMDkwMDAwCFNGMDYwMDAwCFNGMDcwMDAwCFNGMDUwMDAwCFNGNDMwMDAwCFNGMjQwMDAwCFNGNTEwMDAwCFNGNTIwMDAwCFNGMzkwMDAwCFNGMjIwMDAwCFNGMjEwMDAwCFNGMjUwMDAwCFNGNTAwMDAwCFNGNDkwMDAwCFNGMzgwMDAwCFNGMjgwMDAwCFNGMjcwMDAwCFNGMjYwMDAwCFNGMzYwMDAwCFNGMzcwMDAwCFNGNDIwMDAwCFNGMTkwMDAwCFNGMjAwMDAwCFNGMjMwMDAwCFNGNDcwMDAwCFNGNDgwMDAwCFNGNDEwMDAwCFNGNDUwMDAwCFNGNDYwMDAwCFNGNDAwMDAwCFNGNTQwMDAwCFNGNTMwMDAwCFNGNDQwMDAwB3VwYmxvY2sHZG5ibG9jawVibG9jawdsZmJsb2NrB3J0YmxvY2sHbHRzaGFkZQVzaGFkZQdka3NoYWRlCWZpbGxlZGJveApmaWxsZWRyZWN0B3RyaWFndXAHdHJpYWdydAd0cmlhZ2RuB3RyaWFnbGYGY2lyY2xlCWludmJ1bGxldAlpbnZjaXJjbGUJc21pbGVmYWNlDGludnNtaWxlZmFjZQNzdW4GZmVtYWxlBG1hbGUFc3BhZGUEY2x1YgVoZWFydAdkaWFtb25kC211c2ljYWxub3RlDm11c2ljYWxub3RlZGJsAklKAmlqC25hcG9zdHJvcGhlBm1pbnV0ZQZzZWNvbmQJYWZpaTYxMjQ4CWFmaWk2MTI4OQZIMjIwNzMGSDE4NTQzBkgxODU1MQZIMTg1MzMKb3BlbmJ1bGxldAdBbWFjcm9uB2FtYWNyb24LQ2NpcmN1bWZsZXgLY2NpcmN1bWZsZXgEQ2RvdARjZG90B0VtYWNyb24HZW1hY3JvbgZFYnJldmUGZWJyZXZlBEVkb3QEZWRvdAtHY2lyY3VtZmxleAtnY2lyY3VtZmxleARHZG90BGdkb3QIR2NlZGlsbGEIZ2NlZGlsbGELSGNpcmN1bWZsZXgLaGNpcmN1bWZsZXgESGJhcgRoYmFyBkl0aWxkZQZpdGlsZGUHSW1hY3JvbgdpbWFjcm9uBklicmV2ZQZpYnJldmUHSW9nb25lawdpb2dvbmVrC0pjaXJjdW1mbGV4C2pjaXJjdW1mbGV4CEtjZWRpbGxhCGtjZWRpbGxhDGtncmVlbmxhbmRpYwhMY2VkaWxsYQhsY2VkaWxsYQhOY2VkaWxsYQhuY2VkaWxsYQNFbmcDZW5nB09tYWNyb24Hb21hY3JvbgZPYnJldmUGb2JyZXZlCFJjZWRpbGxhCHJjZWRpbGxhC1NjaXJjdW1mbGV4C3NjaXJjdW1mbGV4BFRiYXIEdGJhcgZVdGlsZGUGdXRpbGRlB1VtYWNyb24HdW1hY3JvbgZVYnJldmUGdWJyZXZlB1VvZ29uZWsHdW9nb25lawtXY2lyY3VtZmxleAt3Y2lyY3VtZmxleAtZY2lyY3VtZmxleAt5Y2lyY3VtZmxleAVsb25ncwpBcmluZ2FjdXRlCmFyaW5nYWN1dGUHQUVhY3V0ZQdhZWFjdXRlC09zbGFzaGFjdXRlC29zbGFzaGFjdXRlCWFub3RlbGVpYQZXZ3JhdmUGd2dyYXZlBldhY3V0ZQZ3YWN1dGUJV2RpZXJlc2lzCXdkaWVyZXNpcwZZZ3JhdmUGeWdyYXZlDXF1b3RlcmV2ZXJzZWQJcmFkaWNhbGV4CWFmaWkwODk0MQllc3RpbWF0ZWQJb25lZWlnaHRoDHRocmVlZWlnaHRocwtmaXZlZWlnaHRocwxzZXZlbmVpZ2h0aHMLY29tbWFhY2NlbnQQdW5kZXJjb21tYWFjY2VudAV0b25vcw1kaWVyZXNpc3Rvbm9zCkFscGhhdG9ub3MMRXBzaWxvbnRvbm9zCEV0YXRvbm9zCUlvdGF0b25vcwxPbWljcm9udG9ub3MMVXBzaWxvbnRvbm9zCk9tZWdhdG9ub3MRaW90YWRpZXJlc2lzdG9ub3MFQWxwaGEEQmV0YQVEZWx0YQdFcHNpbG9uBFpldGEDRXRhBElvdGEFS2FwcGEGTGFtYmRhAk11Ak51AlhpB09taWNyb24CUGkDUmhvBVNpZ21hA1RhdQdVcHNpbG9uA0NoaQNQc2kMSW90YWRpZXJlc2lzD1Vwc2lsb25kaWVyZXNpcwphbHBoYXRvbm9zDGVwc2lsb250b25vcwhldGF0b25vcwlpb3RhdG9ub3MUdXBzaWxvbmRpZXJlc2lzdG9ub3MEYmV0YQVnYW1tYQR6ZXRhA2V0YQV0aGV0YQRpb3RhBWthcHBhBmxhbWJkYQJudQJ4aQdvbWljcm9uA3JobwZzaWdtYTEHdXBzaWxvbgNjaGkDcHNpBW9tZWdhDGlvdGFkaWVyZXNpcw91cHNpbG9uZGllcmVzaXMMb21pY3JvbnRvbm9zDHVwc2lsb250b25vcwpvbWVnYXRvbm9zCWFmaWkxMDAyMwlhZmlpMTAwNTEJYWZpaTEwMDUyCWFmaWkxMDA1MwlhZmlpMTAwNTQJYWZpaTEwMDU1CWFmaWkxMDA1NglhZmlpMTAwNTcJYWZpaTEwMDU4CWFmaWkxMDA1OQlhZmlpMTAwNjAJYWZpaTEwMDYxCWFmaWkxMDA2MglhZmlpMTAxNDUJYWZpaTEwMDE3CWFmaWkxMDAxOAlhZmlpMTAwMTkJYWZpaTEwMDIwCWFmaWkxMDAyMQlhZmlpMTAwMjIJYWZpaTEwMDI0CWFmaWkxMDAyNQlhZmlpMTAwMjYJYWZpaTEwMDI3CWFmaWkxMDAyOAlhZmlpMTAwMjkJYWZpaTEwMDMwCWFmaWkxMDAzMQlhZmlpMTAwMzIJYWZpaTEwMDMzCWFmaWkxMDAzNAlhZmlpMTAwMzUJYWZpaTEwMDM2CWFmaWkxMDAzNwlhZmlpMTAwMzgJYWZpaTEwMDM5CWFmaWkxMDA0MAlhZmlpMTAwNDEJYWZpaTEwMDQyCWFmaWkxMDA0MwlhZmlpMTAwNDQJYWZpaTEwMDQ1CWFmaWkxMDA0NglhZmlpMTAwNDcJYWZpaTEwMDQ4CWFmaWkxMDA0OQlhZmlpMTAwNjUJYWZpaTEwMDY2CWFmaWkxMDA2NwlhZmlpMTAwNjgJYWZpaTEwMDY5CWFmaWkxMDA3MAlhZmlpMTAwNzIJYWZpaTEwMDczCWFmaWkxMDA3NAlhZmlpMTAwNzUJYWZpaTEwMDc2CWFmaWkxMDA3NwlhZmlpMTAwNzgJYWZpaTEwMDc5CWFmaWkxMDA4MAlhZmlpMTAwODEJYWZpaTEwMDgyCWFmaWkxMDA4MwlhZmlpMTAwODQJYWZpaTEwMDg1CWFmaWkxMDA4NglhZmlpMTAwODcJYWZpaTEwMDg4CWFmaWkxMDA4OQlhZmlpMTAwOTAJYWZpaTEwMDkxCWFmaWkxMDA5MglhZmlpMTAwOTMJYWZpaTEwMDk0CWFmaWkxMDA5NQlhZmlpMTAwOTYJYWZpaTEwMDk3CWFmaWkxMDA3MQlhZmlpMTAwOTkJYWZpaTEwMTAwCWFmaWkxMDEwMQlhZmlpMTAxMDIJYWZpaTEwMTAzCWFmaWkxMDEwNAlhZmlpMTAxMDUJYWZpaTEwMTA2CWFmaWkxMDEwNwlhZmlpMTAxMDgJYWZpaTEwMTA5CWFmaWkxMDExMAlhZmlpMTAxOTMJYWZpaTEwMDUwCWFmaWkxMDA5OAlhZmlpMDAyMDgJYWZpaTYxMzUyBXNoZXZhCmhhdGFmc2Vnb2wKaGF0YWZwYXRhaAtoYXRhZnFhbWF0cwVoaXJpcQV0c2VyZQVzZWdvbAVwYXRhaAZxYW1hdHMFaG9sYW0GcXVidXRzBmRhZ2VzaAVtZXRlZwVtYXFhZgRyYWZlBXBhc2VxB3NoaW5kb3QGc2luZG90CHNvZnBhc3VxBGFsZWYDYmV0BWdpbWVsBWRhbGV0AmhlA3ZhdgV6YXlpbgNoZXQDdGV0A3lvZAhmaW5hbGthZgNrYWYFbGFtZWQIZmluYWxtZW0DbWVtCGZpbmFsbnVuA251bgZzYW1la2gEYXlpbgdmaW5hbHBlAnBlCmZpbmFsdHNhZGkFdHNhZGkDcW9mBHJlc2gEc2hpbgN0YXYJZG91YmxldmF2BnZhdnlvZAlkb3VibGV5b2QGZ2VyZXNoCWdlcnNoYXlpbQ1uZXdzaGVxZWxzaWduCnZhdnNoaW5kb3QNZmluYWxrYWZzaGV2YQ5maW5hbGthZnFhbWF0cwpsYW1lZGhvbGFtEGxhbWVkaG9sYW1kYWdlc2gHYWx0YXlpbgtzaGluc2hpbmRvdApzaGluc2luZG90EXNoaW5kYWdlc2hzaGluZG90EHNoaW5kYWdlc2hzaW5kb3QJYWxlZnBhdGFoCmFsZWZxYW1hdHMJYWxlZm1hcGlxCWJldGRhZ2VzaAtnaW1lbGRhZ2VzaAtkYWxldGRhZ2VzaAhoZWRhZ2VzaAl2YXZkYWdlc2gLemF5aW5kYWdlc2gJdGV0ZGFnZXNoCXlvZGRhZ2VzaA5maW5hbGthZmRhZ2VzaAlrYWZkYWdlc2gLbGFtZWRkYWdlc2gJbWVtZGFnZXNoCW51bmRhZ2VzaAxzYW1la2hkYWdlc2gNZmluYWxwZWRhZ2VzaAhwZWRhZ2VzaAt0c2FkaWRhZ2VzaAlxb2ZkYWdlc2gKcmVzaGRhZ2VzaApzaGluZGFnZXNoCHRhdmRhZ2VzCHZhdmhvbGFtB2JldHJhZmUHa2FmcmFmZQZwZXJhZmUJYWxlZmxhbWVkEnplcm93aWR0aG5vbmpvaW5lcg96ZXJvd2lkdGhqb2luZXIPbGVmdHRvcmlnaHRtYXJrD3JpZ2h0dG9sZWZ0bWFyawlhZmlpNTczODgJYWZpaTU3NDAzCWFmaWk1NzQwNwlhZmlpNTc0MDkJYWZpaTU3NDQwCWFmaWk1NzQ1MQlhZmlpNTc0NTIJYWZpaTU3NDUzCWFmaWk1NzQ1NAlhZmlpNTc0NTUJYWZpaTU3NDU2CWFmaWk1NzQ1NwlhZmlpNTc0NTgJYWZpaTU3MzkyCWFmaWk1NzM5MwlhZmlpNTczOTQJYWZpaTU3Mzk1CWFmaWk1NzM5NglhZmlpNTczOTcJYWZpaTU3Mzk4CWFmaWk1NzM5OQlhZmlpNTc0MDAJYWZpaTU3NDAxCWFmaWk1NzM4MQlhZmlpNTc0NjEJYWZpaTYzMTY3CWFmaWk1NzQ1OQlhZmlpNTc1NDMJYWZpaTU3NTM0CWFmaWk1NzQ5NAlhZmlpNjI4NDMJYWZpaTYyODQ0CWFmaWk2Mjg0NQlhZmlpNjQyNDAJYWZpaTY0MjQxCWFmaWk2Mzk1NAlhZmlpNTczODIJYWZpaTY0MjQyCWFmaWk2Mjg4MQlhZmlpNTc1MDQJYWZpaTU3MzY5CWFmaWk1NzM3MAlhZmlpNTczNzEJYWZpaTU3MzcyCWFmaWk1NzM3MwlhZmlpNTczNzQJYWZpaTU3Mzc1CWFmaWk1NzM5MQlhZmlpNTc0NzEJYWZpaTU3NDYwCWFmaWk1MjI1OAlhZmlpNTc1MDYJYWZpaTYyOTU4CWFmaWk2Mjk1NglhZmlpNTI5NTcJYWZpaTU3NTA1CWFmaWk2Mjg4OQlhZmlpNjI4ODcJYWZpaTYyODg4CWFmaWk1NzUwNwlhZmlpNjI5NjEJYWZpaTYyOTU5CWFmaWk2Mjk2MAlhZmlpNTc1MDgJYWZpaTYyOTYyCWFmaWk1NzU2NwlhZmlpNjI5NjQJYWZpaTUyMzA1CWFmaWk1MjMwNglhZmlpNTc1MDkJYWZpaTYyOTY3CWFmaWk2Mjk2NQlhZmlpNjI5NjYJYWZpaTU3NTU1CWFmaWk1MjM2NAlhZmlpNjM3NTMJYWZpaTYzNzU0CWFmaWk2Mzc1OQlhZmlpNjM3NjMJYWZpaTYzNzk1CWFmaWk2Mjg5MQlhZmlpNjM4MDgJYWZpaTYyOTM4CWFmaWk2MzgxMAlhZmlpNjI5NDIJYWZpaTYyOTQ3CWFmaWk2MzgxMwlhZmlpNjM4MjMJYWZpaTYzODI0CWFmaWk2MzgzMwlhZmlpNjM4NDQJYWZpaTYyODgyCWFmaWk2Mjg4MwlhZmlpNjI4ODQJYWZpaTYyODg1CWFmaWk2Mjg4NglhZmlpNjM4NDYJYWZpaTYzODQ5B3VuaTIwMkEHdW5pMjAyQgd1bmkyMDJEB3VuaTIwMkUHdW5pMjAyQwd1bmkyMDZFCHVuaTIwNkY7B3VuaTIwNkEHdW5pMjA2Qgh1bmkyMDZDOwd1bmkyMDZEB3VuaUYwMEEHdW5pRjAwQgd1bmlGMDBDB3VuaUYwMEQHdW5pRjAwRQd1bmlGRkZDCWFmaWk2MzkwNAlhZmlpNjM5MDUJYWZpaTYzOTA2CWFmaWk2MzkwOAlhZmlpNjM5MTAJYWZpaTYzOTEyCWFmaWk2MjkyNwlhZmlpNjM5NDEJYWZpaTYyOTM5CWFmaWk2Mzk0MwlhZmlpNjI5NDMJYWZpaTYyOTQ2CWFmaWk2Mzk0NglhZmlpNjI5NTEJYWZpaTYzOTQ4CWFmaWk2Mjk1MwlhZmlpNjM5NTAJYWZpaTYzOTUxCWFmaWk2Mzk1MglhZmlpNjM5NTMJYWZpaTYzOTU2CWFmaWk2Mzk1OAlhZmlpNjM5NTkJYWZpaTYzOTYwCWFmaWk2Mzk2MQlhZmlpNjQwNDYJYWZpaTY0MDU4CWFmaWk2NDA1OQlhZmlpNjQwNjAJYWZpaTY0MDYxCWFmaWk2Mjk0NQlhZmlpNjQxODQJYWZpaTUyMzk5CWFmaWk1MjQwMAlhZmlpNjI3NTMJYWZpaTU3NDExCWFmaWk2Mjc1NAlhZmlpNTc0MTIJYWZpaTYyNzU1CWFmaWk1NzQxMwlhZmlpNjI3NTYJYWZpaTU3NDE0CWFmaWk2Mjc1OQlhZmlpNjI3NTcJYWZpaTYyNzU4CWFmaWk1NzQxNQlhZmlpNjI3NjAJYWZpaTU3NDE2CWFmaWk2Mjc2MwlhZmlpNjI3NjEJYWZpaTYyNzYyCWFmaWk1NzQxNwlhZmlpNjI3NjQJYWZpaTU3NDE4CWFmaWk2Mjc2NwlhZmlpNjI3NjUJYWZpaTYyNzY2CWFmaWk1NzQxOQlhZmlpNjI3NzAJYWZpaTYyNzY4CWFmaWk2Mjc2OQlhZmlpNTc0MjAJYWZpaTYyNzczCWFmaWk2Mjc3MQlhZmlpNjI3NzIJYWZpaTU3NDIxCWFmaWk2Mjc3NglhZmlpNjI3NzQJYWZpaTYyNzc1CWFmaWk1NzQyMglhZmlpNjI3NzkJYWZpaTYyNzc3CWFmaWk2Mjc3OAlhZmlpNTc0MjMJYWZpaTYyNzgwCWFmaWk1NzQyNAlhZmlpNjI3ODEJYWZpaTU3NDI1CWFmaWk2Mjc4MglhZmlpNTc0MjYJYWZpaTYyNzgzCWFmaWk1NzQyNwlhZmlpNjI3ODYJYWZpaTYyNzg0CWFmaWk2Mjc4NQlhZmlpNTc0MjgJYWZpaTYyNzg5CWFmaWk2Mjc4NwlhZmlpNjI3ODgJYWZpaTU3NDI5CWFmaWk2Mjc5MglhZmlpNjI3OTAJYWZpaTYyNzkxCWFmaWk1NzQzMAlhZmlpNjI3OTUJYWZpaTYyNzkzCWFmaWk2Mjc5NAlhZmlpNTc0MzEJYWZpaTYyNzk4CWFmaWk2Mjc5NglhZmlpNjI3OTcJYWZpaTU3NDMyCWFmaWk2MjgwMQlhZmlpNjI3OTkJYWZpaTYyODAwCWFmaWk1NzQzMwlhZmlpNjI4MDQJYWZpaTYyODAyCWFmaWk2MjgwMwlhZmlpNTc0MzQJYWZpaTYyODA3CWFmaWk2MjgwNQlhZmlpNjI4MDYJYWZpaTU3NDQxCWFmaWk2MjgxMAlhZmlpNjI4MDgJYWZpaTYyODA5CWFmaWk1NzQ0MglhZmlpNjI4MTMJYWZpaTYyODExCWFmaWk2MjgxMglhZmlpNTc0NDMJYWZpaTYyODE2CWFmaWk1NzQxMAlhZmlpNjI4MTUJYWZpaTU3NDQ0CWFmaWk2MjgxOQlhZmlpNjI4MTcJYWZpaTYyODE4CWFmaWk1NzQ0NQlhZmlpNjI4MjIJYWZpaTYyODIwCWFmaWk2MjgyMQlhZmlpNTc0NDYJYWZpaTYyODI1CWFmaWk2MjgyMwlhZmlpNjI4MjQJYWZpaTU3NDQ3CWFmaWk2MjgyOAlhZmlpNTc0NzAJYWZpaTYyODI3CWFmaWk1NzQ0OAlhZmlpNjI4MjkJYWZpaTU3NDQ5CWFmaWk2MjgzMAlhZmlpNTc0NTAJYWZpaTYyODMzCWFmaWk2MjgzMQlhZmlpNjI4MzIJYWZpaTYyODM0CWFmaWk2MjgzNQlhZmlpNjI4MzYJYWZpaTYyODM3CWFmaWk2MjgzOAlhZmlpNjI4MzkJYWZpaTYyODQwCWFmaWk2Mjg0MQlnbHlwaDEwMjELYWZpaTU3NTQzLTILYWZpaTU3NDU0LTILYWZpaTU3NDUxLTIJZ2x5cGgxMDI1CWdseXBoMTAyNgthZmlpNTc0NzEtMgthZmlpNTc0NTgtMgthZmlpNTc0NTctMgthZmlpNTc0OTQtMgthZmlpNTc0NTktMgthZmlpNTc0NTUtMgthZmlpNTc0NTItMglnbHlwaDEwMzQJZ2x5cGgxMDM1CWdseXBoMTAzNgthZmlpNjI4ODQtMgthZmlpNjI4ODEtMgthZmlpNjI4ODYtMgthZmlpNjI4ODMtMgthZmlpNjI4ODUtMgthZmlpNjI4ODItMgthZmlpNTc1MDQtMgthZmlpNTc0NTYtMgthZmlpNTc0NTMtMglnbHlwaDEwNDYJZ2x5cGgxMDQ3C2FmaWk1NzU0My0zC2FmaWk1NzQ1NC0zC2FmaWk1NzQ1MS0zCWdseXBoMTA1MQlnbHlwaDEwNTILYWZpaTU3NDcxLTMLYWZpaTU3NDU4LTMLYWZpaTU3NDU3LTMLYWZpaTU3NDk0LTMLYWZpaTU3NDU5LTMLYWZpaTU3NDU1LTMLYWZpaTU3NDUyLTMJZ2x5cGgxMDYwCWdseXBoMTA2MQlnbHlwaDEwNjILYWZpaTYyODg0LTMLYWZpaTYyODgxLTMLYWZpaTYyODg2LTMLYWZpaTYyODgzLTMLYWZpaTYyODg1LTMLYWZpaTYyODgyLTMLYWZpaTU3NTA0LTMLYWZpaTU3NDU2LTMLYWZpaTU3NDUzLTMJZ2x5cGgxMDcyCWdseXBoMTA3MwthZmlpNTc1NDMtNAthZmlpNTc0NTQtNAthZmlpNTc0NTEtNAlnbHlwaDEwNzcJZ2x5cGgxMDc4C2FmaWk1NzQ3MS00C2FmaWk1NzQ1OC00C2FmaWk1NzQ1Ny00C2FmaWk1NzQ5NC00C2FmaWk1NzQ1OS00C2FmaWk1NzQ1NS00C2FmaWk1NzQ1Mi00CWdseXBoMTA4NglnbHlwaDEwODcJZ2x5cGgxMDg4C2FmaWk2Mjg4NC00C2FmaWk2Mjg4MS00C2FmaWk2Mjg4Ni00C2FmaWk2Mjg4My00C2FmaWk2Mjg4NS00C2FmaWk2Mjg4Mi00C2FmaWk1NzUwNC00C2FmaWk1NzQ1Ni00C2FmaWk1NzQ1My00CWdseXBoMTA5OAlnbHlwaDEwOTkJZ2x5cGgxMTAwCWdseXBoMTEwMQlnbHlwaDExMDIJZ2x5cGgxMTAzCWdseXBoMTEwNAlnbHlwaDExMDUJZ2x5cGgxMTA2CWdseXBoMTEwNwlnbHlwaDExMDgJZ2x5cGgxMTA5CWdseXBoMTExMAlnbHlwaDExMTEJZ2x5cGgxMTEyCWdseXBoMTExMwlnbHlwaDExMTQJZ2x5cGgxMTE1CWdseXBoMTExNglnbHlwaDExMTcJZ2x5cGgxMTE4CWdseXBoMTExOQlnbHlwaDExMjAJZ2x5cGgxMTIxCWdseXBoMTEyMglnbHlwaDExMjMJZ2x5cGgxMTI0CWdseXBoMTEyNQlnbHlwaDExMjYLYWZpaTU3NDQwLTILYWZpaTU3NDQwLTMLYWZpaTU3NDQwLTQFT2hvcm4Fb2hvcm4FVWhvcm4FdWhvcm4JZ2x5cGgxMTM0CWdseXBoMTEzNQlnbHlwaDExMzYHdW5pRjAwNgd1bmlGMDA3B3VuaUYwMDkSY29tYmluaW5naG9va2Fib3ZlB3VuaUYwMTAHdW5pRjAxMwd1bmlGMDExB3VuaUYwMUMHdW5pRjAxNRRjb21iaW5pbmd0aWxkZWFjY2VudAlnbHlwaDExNDcJZ2x5cGgxMTQ4B3VuaUYwMkMIZG9uZ3NpZ24Ib25ldGhpcmQJdHdvdGhpcmRzB3VuaUYwMDgJZ2x5cGgxMTU0CWdseXBoMTE1NQd1bmlGMDBGB3VuaUYwMTIHdW5pRjAxNAd1bmlGMDE2B3VuaUYwMTcHdW5pRjAxOAd1bmlGMDE5B3VuaUYwMUEHdW5pRjAxQgd1bmlGMDFFB3VuaUYwMUYHdW5pRjAyMAd1bmlGMDIxB3VuaUYwMjIUY29tYmluaW5nZ3JhdmVhY2NlbnQUY29tYmluaW5nYWN1dGVhY2NlbnQHdW5pRjAxRBFjb21iaW5pbmdkb3RiZWxvdwd1bmlGMDIzB3VuaUYwMjkHdW5pRjAyQQd1bmlGMDJCB3VuaUYwMjQHdW5pRjAyNQd1bmlGMDI2B3VuaUYwMjcHdW5pRjAyOAd1bmlGMDJEB3VuaUYwMkUHdW5pRjAyRgd1bmlGMDMwB3VuaUYwMzEJQWRvdGJlbG93CWFkb3RiZWxvdwpBaG9va2Fib3ZlCmFob29rYWJvdmUQQWNpcmN1bWZsZXhhY3V0ZRBhY2lyY3VtZmxleGFjdXRlEEFjaXJjdW1mbGV4Z3JhdmUQYWNpcmN1bWZsZXhncmF2ZRRBY2lyY3VtZmxleGhvb2thYm92ZRRhY2lyY3VtZmxleGhvb2thYm92ZRBBY2lyY3VtZmxleHRpbGRlEGFjaXJjdW1mbGV4dGlsZGUTQWNpcmN1bWZsZXhkb3RiZWxvdxNhY2lyY3VtZmxleGRvdGJlbG93C0FicmV2ZWFjdXRlC2FicmV2ZWFjdXRlC0FicmV2ZWdyYXZlC2FicmV2ZWdyYXZlD0FicmV2ZWhvb2thYm92ZQ9hYnJldmVob29rYWJvdmULQWJyZXZldGlsZGULYWJyZXZldGlsZGUOQWJyZXZlZG90YmVsb3cOYWJyZXZlZG90YmVsb3cJRWRvdGJlbG93CWVkb3RiZWxvdwpFaG9va2Fib3ZlCmVob29rYWJvdmUGRXRpbGRlBmV0aWxkZRBFY2lyY3VtZmxleGFjdXRlEGVjaXJjdW1mbGV4YWN1dGUQRWNpcmN1bWZsZXhncmF2ZRBlY2lyY3VtZmxleGdyYXZlFEVjaXJjdW1mbGV4aG9va2Fib3ZlFGVjaXJjdW1mbGV4aG9va2Fib3ZlEEVjaXJjdW1mbGV4dGlsZGUQZWNpcmN1bWZsZXh0aWxkZRNFY2lyY3VtZmxleGRvdGJlbG93E2VjaXJjdW1mbGV4ZG90YmVsb3cKSWhvb2thYm92ZQppaG9va2Fib3ZlCUlkb3RiZWxvdwlpZG90YmVsb3cJT2RvdGJlbG93CW9kb3RiZWxvdwpPaG9va2Fib3ZlCm9ob29rYWJvdmUQT2NpcmN1bWZsZXhhY3V0ZRBvY2lyY3VtZmxleGFjdXRlEE9jaXJjdW1mbGV4Z3JhdmUQb2NpcmN1bWZsZXhncmF2ZRRPY2lyY3VtZmxleGhvb2thYm92ZRRvY2lyY3VtZmxleGhvb2thYm92ZRBPY2lyY3VtZmxleHRpbGRlEG9jaXJjdW1mbGV4dGlsZGUTT2NpcmN1bWZsZXhkb3RiZWxvdxNvY2lyY3VtZmxleGRvdGJlbG93Ck9ob3JuYWN1dGUKb2hvcm5hY3V0ZQpPaG9ybmdyYXZlCm9ob3JuZ3JhdmUOT2hvcm5ob29rYWJvdmUOb2hvcm5ob29rYWJvdmUKT2hvcm50aWxkZQpvaG9ybnRpbGRlDU9ob3JuZG90YmVsb3cNb2hvcm5kb3RiZWxvdwlVZG90YmVsb3cJdWRvdGJlbG93ClVob29rYWJvdmUKdWhvb2thYm92ZQpVaG9ybmFjdXRlCnVob3JuYWN1dGUKVWhvcm5ncmF2ZQp1aG9ybmdyYXZlDlVob3JuaG9va2Fib3ZlDnVob3JuaG9va2Fib3ZlClVob3JudGlsZGUKdWhvcm50aWxkZQ1VaG9ybmRvdGJlbG93DXVob3JuZG90YmVsb3cJWWRvdGJlbG93CXlkb3RiZWxvdwpZaG9va2Fib3ZlCnlob29rYWJvdmUGWXRpbGRlBnl0aWxkZQd1bmkwMUNEB3VuaTAxQ0UHdW5pMDFDRgd1bmkwMUQwB3VuaTAxRDEHdW5pMDFEMgd1bmkwMUQzB3VuaTAxRDQHdW5pMDFENQd1bmkwMUQ2B3VuaTAxRDcHdW5pMDFEOAd1bmkwMUQ5B3VuaTAxREEHdW5pMDFEQgd1bmkwMURDCWdseXBoMTI5MglnbHlwaDEyOTMJZ2x5cGgxMjk0CWdseXBoMTI5NQd1bmkwNDkyB3VuaTA0OTMHdW5pMDQ5Ngd1bmkwNDk3B3VuaTA0OUEHdW5pMDQ5Qgd1bmkwNDlDB3VuaTA0OUQHdW5pMDRBMgd1bmkwNEEzB3VuaTA0QUUHdW5pMDRBRgd1bmkwNEIwB3VuaTA0QjEHdW5pMDRCMgd1bmkwNEIzB3VuaTA0QjgHdW5pMDRCOQd1bmkwNEJBB3VuaTA0QkIHdW5pMDE4Rgd1bmkwMjU5B3VuaTA0RTgHdW5pMDRFOQlnbHlwaDEzMjAJZ2x5cGgxMzIxCWdseXBoMTMyMglnbHlwaDEzMjMJZ2x5cGgxMzI0CWdseXBoMTMyNQlnbHlwaDEzMjYJZ2x5cGgxMzI3CWdseXBoMTMyOAlnbHlwaDEzMjkJZ2x5cGgxMzMwCWdseXBoMTMzMQlnbHlwaDEzMzIJZ2x5cGgxMzMzCWdseXBoMTMzNAlnbHlwaDEzMzUHdW5pMDY1Mwd1bmkwNjU0B3VuaTA2NTUHdW5pMDY3MAd1bmkwNjcxB3VuaUZCNTEHdW5pMDY3MglnbHlwaDEzNDMHdW5pMDY3MwlnbHlwaDEzNDUHdW5pMDY3NQdnbHlwaDQ3B3VuaTA2NzYJZ2x5cGgxMzQ5B3VuaTA2NzcJZ2x5cGgxMzUxB3VuaTA2NzgFZ2x5cGgHdW5pMDY3OQd1bmlGQjY3B3VuaUZCNjgHdW5pRkI2OQd1bmkwNjdBB3VuaUZCNUYHdW5pRkI2MAd1bmlGQjYxB3VuaTA2N0IHdW5pRkI1Mwd1bmlGQjU0B3VuaUZCNTUHdW5pMDY3QwlnbHlwaDEzNjcJZ2x5cGgxMzY4CWdseXBoMTM2OQd1bmkwNjdECWdseXBoMTM3MQlnbHlwaDEzNzIJZ2x5cGgxMzczB3VuaTA2N0YHdW5pRkI2Mwd1bmlGQjY0B3VuaUZCNjUHdW5pMDY4MAd1bmlGQjVCB3VuaUZCNUMHdW5pRkI1RAd1bmkwNjgxCWdseXBoMTM4MwlnbHlwaDEzODQJZ2x5cGgxMzg1B3VuaTA2ODIJZ2x5cGgxMzg3CWdseXBoMTM4OAlnbHlwaDEzODkHdW5pMDY4Mwd1bmlGQjc3B3VuaUZCNzgHdW5pRkI3OQd1bmkwNjg0B3VuaUZCNzMHdW5pRkI3NAd1bmlGQjc1B3VuaTA2ODUJZ2x5cGgxMzk5CWdseXBoMTQwMAlnbHlwaDE0MDEHdW5pMDY4Nwd1bmlGQjdmB3VuaUZCODAHdW5pRkI4MQd1bmkwNjg4B3VuaUZCODkHdW5pMDY4OQlnbHlwaDE0MDkHdW5pMDY4QQlnbHlwaDE0MTEHdW5pMDY4QglnbHlwaDE0MTMHdW5pMDY4Qwd1bmlGQjg1B3VuaTA2OEQHdW5pRkI4Mwd1bmkwNjhFB3VuaUZCODcHdW5pMDY4RglnbHlwaDE0MjEHdW5pMDY5MAlnbHlwaDE0MjMHdW5pMDY5MQd1bmlGQjhEB3VuaTA2OTIJZ2x5cGgxNDI2B3VuaTA2OTMJZ2x5cGgxNDI5B3VuaTA2OTQJZ2x5cGgxNDMxB3VuaTA2OTUJZ2x5cGgxNDMzB3VuaTA2OTYJZ2x5cGgxNDM1B3VuaTA2OTcJZ2x5cGgxNDM3B3VuaTA2OTkJZ2x5cGgxNDM5B3VuaTA2OUEJZ2x5cGgxNDQxCWdseXBoMTQ0MglnbHlwaDE0NDMHdW5pMDY5QglnbHlwaDE0NDUJZ2x5cGgxNDQ2CWdseXBoMTQ0Nwd1bmkwNjlDCWdseXBoMTQ0OQlnbHlwaDE0NTAJZ2x5cGgxNDUxB3VuaTA2OUQJZ2x5cGgxNDUzCWdseXBoMTQ1NAlnbHlwaDE0NTUHdW5pMDY5RQlnbHlwaDE0NTcJZ2x5cGgxNDU4CWdseXBoMTQ1OQd1bmkwNjlGCWdseXBoMTQ2MQd1bmkwNkEwCWdseXBoMTQ2MwlnbHlwaDE0NjQJZ2x5cGgxNDY1B3VuaTA2QTEHdW5pMDZBMglnbHlwaDE0NjgJZ2x5cGgxNDY5CWdseXBoMTQ3MAd1bmkwNkEzCWdseXBoMTQ3MglnbHlwaDE0NzMJZ2x5cGgxNDc0B3VuaTA2QTQHdW5pRkI2Qgd1bmlGQjZDB3VuaUZCNkQHdW5pMDZBNQlnbHlwaDE0ODAJZ2x5cGgxNDgxCWdseXBoMTQ4Mgd1bmkwNkE2B3VuaUZCNkYHdW5pRkI3MAd1bmlGQjcxB3VuaTA2QTcJZ2x5cGgxNDg4B3VuaTA2QTgJZ2x5cGgxNDkwB3VuaTA2QUEJZ2x5cGgxNDkyCWdseXBoMTQ5MwlnbHlwaDE0OTQHdW5pMDZBQglnbHlwaDE0OTYJZ2x5cGgxNDk3CWdseXBoMTQ5OAd1bmkwNkFDCWdseXBoMTUwMAlnbHlwaDE1MDEJZ2x5cGgxNTAyB3VuaTA2QUQHdW5pRkJENAd1bmlGQkQ1B3VuaUZCRDYHdW5pMDZBRQlnbHlwaDE1MDgJZ2x5cGgxNTA5CWdseXBoMTUxMAd1bmkwNkIwCWdseXBoMTUxMglnbHlwaDE1MTMJZ2x5cGgxNTE0B3VuaTA2QjEHdW5pRkI5Qgd1bmlGQjlDB3VuaUZCOUQHdW5pMDZCMglnbHlwaDE1MjAJZ2x5cGgxNTIxCWdseXBoMTUyMgd1bmkwNkIzB3VuaUZCOTcHdW5pRkI5OAd1bmlGQjk5B3VuaTA2QjQJZ2x5cGgxNTI4CWdseXBoMTUyOQlnbHlwaDE1MzAHdW5pMDZCNQlnbHlwaDE1MzIJZ2x5cGgxNTMzCWdseXBoMTUzNAd1bmkwNkI2CWdseXBoMTUzNglnbHlwaDE1MzcJZ2x5cGgxNTM4B3VuaTA2QjcJZ2x5cGgxNTQwCWdseXBoMTU0MQlnbHlwaDE1NDIHdW5pMDZCOAlnbHlwaDE1NDQJZ2x5cGgxNTQ1CWdseXBoMTU0Ngd1bmkwNkI5CWdseXBoMTU0OAlnbHlwaDE1NDkJZ2x5cGgxNTUwB3VuaTA2QkEHdW5pRkI5Rgd1bmkwNkJCB3VuaUZCQTEHdW5pMDZCQwlnbHlwaDE1NTYJZ2x5cGgxNTU3CWdseXBoMTU1OAd1bmkwNkJECWdseXBoMTU2MAd1bmkwNkJGCWdseXBoMTU2MglnbHlwaDE1NjMJZ2x5cGgxNTY0B3VuaTA2QzAHdW5pRkJBNQd1bmkwNkMxB3VuaTA2QzIHdW5pMDZDMwd1bmkwNkM0CWdseXBoMTU3MQd1bmkwNkM1B3VuaUZCRTEHdW5pMDZDNgd1bmlGQkRBB3VuaTA2QzcHdW5pRkJEOAd1bmkwNkM4B3VuaUZCREMHdW5pMDZDOQd1bmlGQkUzB3VuaTA2Q0EJZ2x5cGgxNTgzB3VuaTA2Q0IHdW5pRkJERgd1bmkwNkNECWdseXBoMTU4Nwd1bmkwNkNFCWdseXBoMTU4OQlnbHlwaDE1OTAJZ2x5cGgxNTkxB3VuaTA2Q0YJZ2x5cGgxNTkzB3VuaTA2RDAHdW5pRkJFNQd1bmlGQkU2B3VuaUZCRTcHdW5pMDZEMQlnbHlwaDE1OTkHdW5pMDZEMgd1bmlGQkFGB3VuaTA2RDMHdW5pRkJCMQd1bmkwNkQ0B3VuaTA2RDYHdW5pMDZENwd1bmkwNkQ4B3VuaTA2RDkHdW5pMDZEQQd1bmkwNkRCB3VuaTA2REMHdW5pMDZERAd1bmkwNkRFB3VuaTA2REYHdW5pMDZFMAd1bmkwNkUxB3VuaTA2RTIHdW5pMDZFMwd1bmkwNkU0B3VuaTA2RTUHdW5pMDZFNgd1bmkwNkU3B3VuaTA2RTgHdW5pMDZFOQd1bmkwNkVBB3VuaTA2RUIHdW5pMDZFRAd1bmkwNkZBCWdseXBoMTYyOQlnbHlwaDE2MzAJZ2x5cGgxNjMxB3VuaTA2RkIJZ2x5cGgxNjMzCWdseXBoMTYzNAlnbHlwaDE2MzUHdW5pMDZGQwlnbHlwaDE2MzcJZ2x5cGgxNjM4CWdseXBoMTYzOQd1bmkwNkZEB3VuaTA2RkUHdW5pRkJBNgd1bmlGQkE4B3VuaUZCQTkJZ2x5cGgxNjQ1CWdseXBoMTY0NglnbHlwaDE2NDcJZ2x5cGgxNjQ4CWdseXBoMTY0OQlnbHlwaDE2NTAJZ2x5cGgxNjUxB3VuaUZCMUQHdW5pRkIxRQlnbHlwaDE2NTQHdW5pRkIxRglnbHlwaDE2NTYJZ2x5cGgxNjU3CWdseXBoMTY1OAlnbHlwaDE2NTkJZ2x5cGgxNjYwCWdseXBoMTY2MQlnbHlwaDE2NjIJZ2x5cGgxNjYzCWdseXBoMTY2NAlnbHlwaDE2NjUJZ2x5cGgxNjY2CWdseXBoMTY2NwlnbHlwaDE2NjgJZ2x5cGgxNjY5CWdseXBoMTY3MAlnbHlwaDE2NzEJZ2x5cGgxNjcyCWdseXBoMTY3MwAAAAADAAgAAgARAAH//wADAAEAAE0CvyICOQQmAABA2gW6AABNIEFyaWFsICAgICAgICAg/////wA///5BUkxSMDAAAEAAAAAAAQAAAAwAAAAAAAAAAgAZAugC8AABAvEC+AADAvkDBQABAwgDCAABAwoDDAABAxIDEgADAxsDGwABAx8DIgABAycDNgABA0cDSwADA3wDfQABA38DfwACA4ADgAABA4EDjAACA40D9AABA/UD/AACA/8EAAADBAQEBQADBAgECQADBA0EEgADBBQEFQADBEwETgABBGcEaQABBSoGbAABBnIGiQABAAAAAQAAAAoAPgCiAAFhcmFiAAgACgABTUFSIAAaAAAABwAFAAEAAgADAAUABgAAAAcABgAAAAEAAgADAAQABgAIaXNvbAAyaXNvbAA4aW5pdAA+bWVkaQBEZmluYQBKZmluYQBQbGlnYQBWcmxpZwBeAAAAAQAAAAAAAQABAAAAAQACAAAAAQADAAAAAQAEAAAAAQAFAAAAAgAGAAcAAAABAAYACAASACgARgGoAwoFVAeeCMAAAQABAAEACAACAAgAAQZyAAEAAQXfAAEAAQABAAgAAgAMAAMGagYdA5MAAQADBh8GIAYhAAEAAQABAAgAAgCuAFQDIQMpAy8DMwPzA4sDkQOXA5sDnwOjA6cDswO3A7sDvwPDA8cDywPPA9MD1wPbA98D4wPnA+sD6wPzBSkFKgVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BaIFpgWqBa4FsgW0BbgFKgW9BcEFxQXJBc0D0wXFBdUF2QXdBeEF5QXpBe0F8QX1BfkF/QYBBgUGCQYNBUwGFQMhBhsGawY2BjwGXgZiBmYAAQBUAx8DJwMtAzEDNQOJA48DlQOZA50DoQOlA7EDtQO5A70DwQPFA8kDzQPRA9UD2QPdA+ED5QPpA+sD8QUoBSwFSgVOBVIFVgVaBV4FYgVmBWoFbgVyBXYFegWgBaQFqAWsBbAFtAW2BboFuwW/BcMFxwXLBc8F0QXTBdcF2wXfBeMF5wXrBe8F8wX3BfsF/wYDBgcGCwYRBhMGFwYZBh8GNAY6BlwGYAZkAAEAAQABAAgAAgCuAFQDIgMqAzADNAP0A4wDkgOYA5wDoAOkA6gDtAO4A7wDwAPEA8gDzAPQA9QD2APcA+AD5APoA+wD7AP0BSkFKwVNBVEFVQVZBV0FYQVlBWkFbQVxBXUFeQV9BaMFpwWrBa8FswW1BbkFKwW+BcIFxgXKBc4D1AXGBdYF2gXeBeIF5gXqBe4F8gX2BfoF/gYCBgYGCgYOBUwGFgMiBhwGbAY3Bj0GXwZjBmcAAQBUAx8DJwMtAzEDNQOJA48DlQOZA50DoQOlA7EDtQO5A70DwQPFA8kDzQPRA9UD2QPdA+ED5QPpA+sD8QUoBSwFSgVOBVIFVgVaBV4FYgVmBWoFbgVyBXYFegWgBaQFqAWsBbAFtAW2BboFuwW/BcMFxwXLBc8F0QXTBdcF2wXfBeMF5wXrBe8F8wX3BfsF/wYDBgcGCwYRBhMGFwYZBh8GNAY6BlwGYAZkAAEAAQABAAgAAgEiAI4DIAMoAywDLgMyAzYDggOEA4YDiAOKA44DkAOUA5YDmgOeA6IDpgOqA6wDrgOwA7IDtgO6A74DwgPGA8oDzgPSA9YD2gPeA+ID5gPqA+oD7gPwA/ID9gP4A/oD/AUoBSwFPQU/BUEFQwVFBUcFSQVLBU8FUwVXBVsFXwVjBWcFawVvBXMFdwV7BX8FgQWDBYUFhwWJBYsFjQWPBZEFkwWVBZcFmQWbBZ0FnwWhBaUFqQWtBbEFtQW3BboFvAXABcQFyAXMBdAF0gXUBdgF3AZzBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhIGFAYYBhoGHgYfBiAGIQYjBiUGJwYpBisGLQYvBjEGMwY1BjkGOwY/BkEGQwZdBmEGZQABAI4DHwMnAysDLQMxAzUDgQODA4UDhwOJA40DjwOTA5UDmQOdA6EDpQOpA6sDrQOvA7EDtQO5A70DwQPFA8kDzQPRA9UD2QPdA+ED5QPpA+sD7QPvA/ED9QP3A/kD+wUoBSwFPAU+BUAFQgVEBUYFSAVKBU4FUgVWBVoFXgViBWYFagVuBXIFdgV6BX4FgAWCBYQFhgWIBYoFjAWOBZAFkgWUBZYFmAWaBZwFngWgBaQFqAWsBbAFtAW2BboFuwW/BcMFxwXLBc8F0QXTBdcF2wXfBeMF5wXrBe8F8wX3BfsF/wYDBgcGCwYPBhEGEwYXBhkGHQYfBiAGIQYiBiQGJgYoBioGLAYuBjAGMgY0BjgGOgY+BkAGQgZcBmAGZAABAAEAAQAIAAIBIgCOAyADKAMsAy4DMgM2A4IDhAOGA4gDigOOA5ADlAOWA5oDngOiA6YDqgOsA64DsAOyA7YDugO+A8IDxgPKA84D0gPWA9oD3gPiA+YD6gPqA+4D8APyA/YD+AP6A/wFKAUsBT0FPwVBBUMFRQVHBUkFSwVPBVMFVwVbBV8FYwVnBWsFbwVzBXcFewV/BYEFgwWFBYcFiQWLBY0FjwWRBZMFlQWXBZkFmwWdBZ8FoQWlBakFrQWxBbUFtwW6BbwFwAXEBcgFzAXQBdIF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYSBhQGGAYaBh4GHwYgBiEGIwYlBicGKQYrBi0GLwYxBjMGNQY5BjsGPwZBBkMGXQZhBmUAAQCOAx8DJwMrAy0DMQM1A4EDgwOFA4cDiQONA48DkwOVA5kDnQOhA6UDqQOrA60DrwOxA7UDuQO9A8EDxQPJA80D0QPVA9kD3QPhA+UD6QPrA+0D7wPxA/UD9wP5A/sFKAUsBTwFPgVABUIFRAVGBUgFSgVOBVIFVgVaBV4FYgVmBWoFbgVyBXYFegV+BYAFggWEBYYFiAWKBYwFjgWQBZIFlAWWBZgFmgWcBZ4FoAWkBagFrAWwBbQFtgW6BbsFvwXDBccFywXPBdEF0wXXBdsF3wXjBecF6wXvBfMF9wX7Bf8GAwYHBgsGDwYRBhMGFwYZBh0GHwYgBiEGIgYkBiYGKAYqBiwGLgYwBjIGNAY4BjoGPgZABkIGXAZgBmQABAAJAAEACAABAQIACgAaAHAAsgC8AMYA0ADaAOQA7gD4AAoAFgAeACYALAAyADgAPgBEAEoAUAN/AAMD4APq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\";\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { PdfTextBoxField, PdfFormFieldVisibility, PdfTextAlignment, PdfSignatureField, PdfFreeTextAnnotation, PdfFontFamily, PdfStandardFont, PdfAnnotationFlag, PdfRubberStampAnnotation, PdfBitmap, PdfFontStyle as FontStyle, PdfCheckBoxField, PdfComboBoxField, PdfListBoxField, PdfListFieldItem, PdfRadioButtonListField, PdfRadioButtonListItem, PdfRotationAngle, PdfFontStyle, PdfInkAnnotation, PdfTrueTypeFont } from '@syncfusion/ej2-pdf';\nimport { PageRenderer } from '../index';\nimport { getArialFontData } from '../pdf-base/fontData';\nimport { Rect } from '@syncfusion/ej2-drawings';\n/**\n * FormFieldsBase\n *\n * @hidden\n */\nvar FormFieldsBase = /** @class */ (function () {\n /**\n * @param {PdfViewer} pdfViewer - The PdfViewer.\n * @param {PdfViewerBase} pdfViewerBase - The PdfViewerBase.\n * @private\n */\n function FormFieldsBase(pdfViewer, pdfViewerBase, digitalSignatruePresent) {\n /**\n * @private\n */\n this.PdfRenderedFormFields = [];\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n this.formFieldLoadedDocument = this.pdfViewer.pdfRendererModule.loadedDocument;\n this.m_isDigitalSignaturePresent = digitalSignatruePresent;\n }\n /**\n * @private\n * @param textSignature\n * @param isAnnotationFlattern\n */\n FormFieldsBase.prototype.drawFreeTextAnnotations = function (textSignature, loadedDocument, isAnnotationFlattern) {\n var stampObjects = textSignature.data;\n var textData = stampObjects.replace(/\"/g, '');\n var boundsObject = JSON.parse(textSignature.bounds);\n var page = loadedDocument.getPage(textSignature.pageIndex);\n if (stampObjects != \"\") {\n var left = this.convertPixelToPoint(boundsObject.left);\n var top_1 = this.convertPixelToPoint(boundsObject.top);\n var width = this.convertPixelToPoint(boundsObject.width);\n var height = this.convertPixelToPoint(boundsObject.height);\n var annotation = new PdfFreeTextAnnotation(left, top_1, width, height);\n annotation._dictionary.set('NM', textSignature.signatureName.toString());\n var fontSize = textSignature.fontSize;\n annotation.border.width = 0;\n var fontFamilyEnum = PdfFontFamily.helvetica;\n var fontName = textSignature.fontFamily.toString();\n if (!isNullOrUndefined(fontName)) {\n var family = fontName.toString();\n if (family.includes(\"Times New Roman\")) {\n fontFamilyEnum = PdfFontFamily.timesRoman;\n }\n else if (family.includes(\"Courier\")) {\n fontFamilyEnum = PdfFontFamily.courier;\n }\n else if (family.includes(\"Symbol\")) {\n fontFamilyEnum = PdfFontFamily.symbol;\n }\n else if (family.includes(\"ZapfDingbats\")) {\n fontFamilyEnum = PdfFontFamily.zapfDingbats;\n }\n }\n fontSize = Math.floor(this.convertPixelToPoint(fontSize));\n var fontStyle = FontStyle.regular;\n annotation.font = new PdfStandardFont(fontFamilyEnum, fontSize, fontStyle);\n annotation.text = textData;\n annotation.borderColor = [0, 0, 0];\n annotation.textAlignment = PdfTextAlignment.center;\n annotation._annotFlags = PdfAnnotationFlag.print;\n if (isAnnotationFlattern) {\n var rotateAngle = this.getRotateAngle(page.rotation);\n annotation.rotationAngle = Math.abs(rotateAngle);\n }\n annotation.setValues('AnnotationType', 'Signature');\n if (isAnnotationFlattern) {\n annotation.flatten = true;\n }\n annotation.setAppearance(true);\n page.annotations.add(annotation);\n }\n };\n FormFieldsBase.prototype.getRotateAngle = function (angleString) {\n var angle = 0;\n switch (angleString) {\n case PdfRotationAngle.angle0:\n angle = 0;\n break;\n case PdfRotationAngle.angle180:\n angle = 2;\n break;\n case PdfRotationAngle.angle270:\n angle = 3;\n break;\n case PdfRotationAngle.angle90:\n angle = 1;\n break;\n }\n return angle;\n };\n /**\n * @private\n * @param textSignature\n * @param isAnnotationFlattern\n */\n FormFieldsBase.prototype.drawImage = function (signatureImage, loadedDocument, isAnnotationFlattern) {\n var stampObjects = signatureImage.data;\n var boundsObject = JSON.parse(signatureImage.bounds);\n var page = loadedDocument.getPage(signatureImage.pageIndex);\n if (stampObjects != '') {\n var imageUrl = (stampObjects.toString()).split(',')[1];\n var left = this.convertPixelToPoint(boundsObject.left);\n var top_2 = this.convertPixelToPoint(boundsObject.top);\n var width = this.convertPixelToPoint(boundsObject.width);\n var height = this.convertPixelToPoint(boundsObject.height);\n var rectangle = new Rect(left, top_2, width, height);\n var rubberStampAnnotation = new PdfRubberStampAnnotation(left, top_2, width, height);\n var bitmap = new PdfBitmap(imageUrl);\n var graphics = page.graphics;\n var appearance = rubberStampAnnotation.appearance.normal;\n rubberStampAnnotation._dictionary.set('NM', signatureImage.signatureName.toString());\n if (isAnnotationFlattern) {\n var rotationAngle = this.getRotateAngle(page.rotation);\n rubberStampAnnotation.rotationAngle = Math.abs(rotationAngle);\n rubberStampAnnotation.flatten = true;\n }\n if (!isAnnotationFlattern) {\n var state = graphics.save();\n appearance.graphics.drawImage(bitmap, 0, 0, width, height);\n appearance.graphics.restore(state);\n }\n else {\n appearance.graphics.drawImage(bitmap, 0, 0, width, height);\n }\n page.annotations.add(rubberStampAnnotation);\n }\n };\n /**\n * @private\n * @param jsonObject\n */\n FormFieldsBase.prototype.saveFormFieldsDesignerData = function (jsonObject) {\n if (jsonObject.hasOwnProperty(\"formDesigner\")) {\n var formFields = jsonObject[\"formDesigner\"];\n if (!isNullOrUndefined(formFields)) {\n var data = JSON.parse(formFields);\n var myList = [];\n var formFieldsPageList = jsonObject.hasOwnProperty(\"formFieldsPageList\") ? JSON.parse(jsonObject[\"formFieldsPageList\"]) : myList;\n //Removing form fields from the page.\n if (!isNullOrUndefined(this.formFieldLoadedDocument.form)) {\n var initialCount = this.formFieldLoadedDocument.form._fields.length;\n //Get the loaded form.\n var loadedForm = this.formFieldLoadedDocument.form;\n for (var k = initialCount - 1; k >= 0; k--) {\n var formFieldPage = loadedForm.fieldAt(k);\n var pageNumber = formFieldPage.page._pageIndex;\n var signField = null;\n if (formFieldPage instanceof PdfSignatureField) {\n signField = formFieldPage;\n }\n var signed = !isNullOrUndefined(signField) ? signField.isSigned : true;\n //Removing the formfields from a page\n if (formFieldsPageList.includes(pageNumber + 1) && (signField == null || !signed)) {\n loadedForm.removeField(loadedForm.fieldAt(k));\n }\n }\n }\n for (var i = 0; i < data.length; i++) {\n this.addFormFieldsToDocument(data[parseInt(i.toString(), 10)].FormField);\n }\n }\n if (!isNullOrUndefined(this.formFieldLoadedDocument.form)) {\n this.formFieldLoadedDocument.form.setDefaultAppearance(false);\n }\n }\n };\n /**\n * @private\n * @param jsonObject\n */\n FormFieldsBase.prototype.saveFormFieldsData = function (jsonObject) {\n if (jsonObject.hasOwnProperty(\"fieldsData\")) {\n var formFields = jsonObject[\"fieldsData\"];\n var data = JSON.parse(formFields);\n if (!isNullOrUndefined(data) && Object.keys(data).length > 0 && !isNullOrUndefined(this.formFieldLoadedDocument.form)) {\n if (this.formFieldLoadedDocument.form._fields.length > 0) {\n this.formFieldLoadedDocument.form.setDefaultAppearance(false);\n }\n for (var i = 0; i < this.formFieldLoadedDocument.form._fields.length; i++) {\n var currentField = this.formFieldLoadedDocument.form.fieldAt(i);\n var currentFieldName = \"\";\n var actualFieldName = \"\";\n if (!isNullOrUndefined(currentField.name)) {\n currentFieldName = currentField.name.replace(/[^0-9a-zA-Z]+/g, \"\").replace(/\\s+/g, \"\");\n actualFieldName = currentField.name;\n }\n if (currentField instanceof PdfTextBoxField) {\n if (!currentField.password) {\n if ((data.hasOwnProperty(currentFieldName) && !isNullOrUndefined(data[\"\" + currentFieldName])) || (data.hasOwnProperty(actualFieldName) && !isNullOrUndefined(data[\"\" + actualFieldName]))) {\n if (data.hasOwnProperty(actualFieldName)) {\n currentFieldName = actualFieldName;\n }\n var field = data[\"\" + currentFieldName];\n if (!isNullOrUndefined(field) && field.hasOwnProperty(\"isReadOnly\")) {\n currentField.text = field[\"fieldValue\"];\n currentField.readOnly = field[\"isReadOnly\"] === 'true' ? true : false;\n }\n }\n }\n else {\n if ((data.hasOwnProperty(currentFieldName) && !isNullOrUndefined(data[\"\" + currentFieldName])) || (data.hasOwnProperty(actualFieldName) && !isNullOrUndefined(data[\"\" + actualFieldName]))) {\n if (data.hasOwnProperty(actualFieldName)) {\n currentFieldName = actualFieldName;\n }\n var field = data[\"\" + currentFieldName];\n if (!isNullOrUndefined(field) && field.hasOwnProperty(\"isReadOnly\")) {\n currentField.text = field[\"fieldValue\"];\n currentField.readOnly = field[\"isReadOnly\"] === 'true' ? true : false;\n }\n }\n }\n }\n else if (currentField instanceof PdfComboBoxField) {\n if ((data.hasOwnProperty(currentFieldName) && !isNullOrUndefined(data[\"\" + currentFieldName])) || (data.hasOwnProperty(actualFieldName) && !isNullOrUndefined(data[\"\" + actualFieldName]))) {\n if (data.hasOwnProperty(actualFieldName)) {\n currentFieldName = actualFieldName;\n }\n var field = data[\"\" + currentFieldName];\n var count = currentField.itemsCount;\n var fieldName = '';\n if (!isNullOrUndefined(field)) {\n if (field.hasOwnProperty('isReadOnly')) {\n currentField.readOnly = field[\"isReadOnly\"] === 'true' ? true : false;\n }\n if (!isNullOrUndefined(field[\"fieldValue\"])) {\n fieldName = field[\"fieldValue\"];\n }\n }\n var isExists = false;\n for (var j = 0; j < count; j++) {\n var optionArray = void 0;\n var text = void 0;\n if (currentField._dictionary.has('Opt')) {\n optionArray = currentField._dictionary.get('Opt');\n text = optionArray[parseInt(j.toString(), 10)];\n }\n else if (!isNullOrUndefined(currentField.itemAt(j))) {\n text = currentField.itemAt(j).text;\n }\n if (text === fieldName) {\n currentField.selectedIndex = j;\n isExists = true;\n }\n }\n if (currentField.editable && !isExists) {\n currentField.selectedValue = fieldName;\n }\n }\n }\n else if (currentField instanceof PdfCheckBoxField) {\n if ((data.hasOwnProperty(currentFieldName) && !isNullOrUndefined(data[\"\" + currentFieldName])) || (data.hasOwnProperty(actualFieldName) && !isNullOrUndefined(data[\"\" + actualFieldName]))) {\n if (data.hasOwnProperty(actualFieldName)) {\n currentFieldName = actualFieldName;\n }\n var field = data[\"\" + currentFieldName];\n var fields = field[\"isSelected\"];\n var fieldValueString = fields.toString();\n var fieldValue = field[\"fieldValue\"];\n if (!isNullOrUndefined(fieldValue)) {\n currentField._dictionary.set(\"ExportValue\", fieldValue);\n }\n if (fieldValueString.toLowerCase() === \"true\" || fieldValueString.toLowerCase() === \"false\") {\n currentField.checked = fields;\n if (!isNullOrUndefined(field) && field.hasOwnProperty(\"isReadOnly\")) {\n currentField.readOnly = field.readonly;\n }\n if (fieldValueString.toLowerCase() === \"false\") {\n var checkBoxField = currentField;\n for (var k = 0; k < checkBoxField.itemsCount; k++) {\n checkBoxField.itemAt(k).checked = false;\n }\n currentField.checked = false;\n }\n }\n else {\n var integerValue = isNullOrUndefined(fields) ? -1 : 0;\n var checkBoxField_1 = currentField;\n if (checkBoxField_1.itemsCount > 0) {\n if (integerValue == -1) {\n for (var n = 0; n < checkBoxField_1.itemsCount; n++) {\n checkBoxField_1.itemAt(n).checked = false;\n }\n currentField.checked = false;\n }\n else if (!isNullOrUndefined(checkBoxField_1.itemAt(integerValue))) {\n checkBoxField_1.itemAt(integerValue).checked = true;\n }\n }\n }\n }\n }\n else if (currentField instanceof PdfListBoxField) {\n if ((data.hasOwnProperty(currentFieldName) && !isNullOrUndefined(data[\"\" + currentFieldName])) || (data.hasOwnProperty(actualFieldName) && !isNullOrUndefined(data[\"\" + actualFieldName]))) {\n if (data.hasOwnProperty(actualFieldName)) {\n currentFieldName = actualFieldName;\n }\n var table = data[\"\" + currentFieldName];\n var count = currentField.itemsCount;\n var fieldName = '';\n if (!isNullOrUndefined(table)) {\n if (table.hasOwnProperty('fieldValue') && !isNullOrUndefined(table[\"fieldValue\"])) {\n fieldName = table[\"fieldValue\"];\n }\n if (table.hasOwnProperty('isReadOnly')) {\n currentField.readOnly = table[\"isReadOnly\"] === 'true' ? true : false;\n }\n }\n fieldName = JSON.parse(fieldName)[0].replace(/[^0-9a-zA-Z]+/g, '');\n var selectedIndexes = [];\n for (var k = 0; k < count; k++) {\n var text = currentField.itemAt(k).text;\n if (text === fieldName) {\n selectedIndexes.push(k);\n }\n }\n currentField.selectedIndex = selectedIndexes;\n }\n }\n else if (currentField instanceof PdfRadioButtonListField) {\n if ((data.hasOwnProperty(currentFieldName) && !isNullOrUndefined(data[\"\" + currentFieldName])) || (data.hasOwnProperty(actualFieldName) && !isNullOrUndefined(data[\"\" + actualFieldName]))) {\n if (data.hasOwnProperty(actualFieldName)) {\n currentFieldName = actualFieldName;\n }\n var field = data[\"\" + currentFieldName];\n if (!isNullOrUndefined(field) && field.hasOwnProperty('isReadOnly')) {\n var selectedValue = field[\"fieldValue\"];\n if (selectedValue) {\n for (var i_1 = 0; i_1 < currentField.itemsCount; i_1++) {\n var item = currentField.itemAt(i_1);\n if (item && (item.value === selectedValue || item._optionValue === selectedValue)) {\n currentField.selectedIndex = i_1;\n break;\n }\n }\n }\n currentField.readOnly = field['isReadOnly'] === 'true' ? true : false;\n }\n }\n }\n else if (currentField instanceof PdfSignatureField) {\n if ((data.hasOwnProperty(currentFieldName) && !isNullOrUndefined(data[\"\" + currentFieldName])) || (data.hasOwnProperty(actualFieldName) && !isNullOrUndefined(data[\"\" + actualFieldName]))) {\n if (data.hasOwnProperty(actualFieldName)) {\n currentFieldName = actualFieldName;\n }\n var signatureFields = currentField;\n if (data.hasOwnProperty(currentFieldName + \"fontName\")) {\n this.drawFieldFreeTextAnnotations(data[\"\" + currentFieldName], signatureFields, currentFieldName, data[currentFieldName + \"bounds\"], data[currentFieldName + \"fontName\"], data[currentFieldName + \"fontSize\"]);\n }\n else if (data.hasOwnProperty(currentFieldName + \"ImageData\")) {\n this.drawFieldImage(data[\"\" + currentFieldName], signatureFields, currentFieldName, data[currentFieldName + \"bounds\"]);\n }\n else if (data.hasOwnProperty(currentFieldName + \"bounds\")) {\n this.drawFieldPath(data[\"\" + currentFieldName], signatureFields, currentFieldName, data[currentFieldName + \"bounds\"]);\n }\n var signatureFieldListCount = signatureFields.itemsCount;\n if (signatureFieldListCount > 0) {\n for (var k = 0; k < signatureFieldListCount; k++) {\n if (data.hasOwnProperty(currentFieldName + \"fontName\" + \"_\" + k)) {\n this.drawFieldFreeTextAnnotations(data[\"\" + currentFieldName], signatureFields, currentFieldName, data[currentFieldName + \"bounds\" + \"_\" + k], data[currentFieldName + \"fontName\" + \"_\" + k], data[currentFieldName + \"fontSize\" + \"_\" + k]);\n }\n else if (data.hasOwnProperty(currentFieldName + \"ImageData\" + \"_\" + k)) {\n this.drawFieldImage(data[\"\" + currentFieldName], signatureFields, currentFieldName, data[currentFieldName + \"bounds\" + \"_\" + k]);\n }\n else if (data.hasOwnProperty(currentFieldName + \"bounds\" + \"_\" + k)) {\n this.drawFieldPath(data[\"\" + currentFieldName], signatureFields, currentFieldName, data[currentFieldName + \"bounds\" + \"_\" + k]);\n }\n }\n }\n }\n if (data.hasOwnProperty(currentFieldName + \"isReadOnly\") || data.hasOwnProperty(actualFieldName + \"isReadOnly\")) {\n if (data.hasOwnProperty(actualFieldName + \"isReadOnly\")) {\n currentFieldName = actualFieldName;\n }\n currentField.readOnly = data[\"isReadOnly\"] === 'true' ? true : false;\n }\n }\n }\n }\n }\n };\n FormFieldsBase.prototype.addFormFieldsToDocument = function (formFieldAttributes) {\n var loadedPage = this.formFieldLoadedDocument.getPage(formFieldAttributes.pageNumber - 1);\n var field;\n switch (formFieldAttributes.formFieldAnnotationType) {\n case \"Textbox\":\n case \"PasswordField\":\n //Create a password and text box field for name\n field = this.saveTextBoxField(loadedPage, formFieldAttributes);\n break;\n case \"Checkbox\":\n // Create Check Box field.\n field = this.SaveCheckBoxField(loadedPage, formFieldAttributes);\n break;\n case \"RadioButton\":\n field = this.saveRadioButtonField(formFieldAttributes);\n break;\n case \"DropdownList\":\n // Create Drop Down field.\n field = this.saveDropDownField(loadedPage, formFieldAttributes);\n break;\n case \"ListBox\":\n field = this.saveListBoxField(loadedPage, formFieldAttributes);\n break;\n case \"SignatureField\":\n case \"InitialField\":\n //Create PDF Signature and Initial field.\n field = this.saveSignatureField(loadedPage, formFieldAttributes);\n break;\n }\n if (field) {\n this.formFieldLoadedDocument.form.add(field);\n }\n };\n FormFieldsBase.prototype.saveTextBoxField = function (loadedPage, formFieldAttributes) {\n var textboxName = isNullOrUndefined(formFieldAttributes.name) ? formFieldAttributes.type === 'Password' ? 'passwordTextbox' : \"textbox\" : formFieldAttributes.name;\n var textBounds = this.convertFieldBounds(formFieldAttributes);\n var rotationAngle = loadedPage.rotation;\n var isFieldRotated = false;\n if (formFieldAttributes.rotation !== 0) {\n isFieldRotated = true;\n }\n var fieldBounds = this.getBounds(textBounds, loadedPage.size[1], loadedPage.size[0], rotationAngle, isFieldRotated);\n var bound = { x: fieldBounds.X, y: fieldBounds.Y, width: fieldBounds.Width, height: fieldBounds.Height };\n //Create a new text box field\n var textbox = new PdfTextBoxField(loadedPage, textboxName, bound);\n textbox.backColor = [formFieldAttributes.backgroundColor.r, formFieldAttributes.backgroundColor.g, formFieldAttributes.backgroundColor.b];\n if (formFieldAttributes.backgroundColor.r == 0 && formFieldAttributes.backgroundColor.g == 0 && formFieldAttributes.backgroundColor.b == 0 && formFieldAttributes.backgroundColor.a == 0) {\n textbox.backColor = [formFieldAttributes.backgroundColor.r, formFieldAttributes.backgroundColor.g, formFieldAttributes.backgroundColor.b, formFieldAttributes.backgroundColor.a];\n }\n textbox.maxLength = formFieldAttributes.maxLength;\n textbox.insertSpaces = formFieldAttributes.insertSpaces;\n textbox.readOnly = formFieldAttributes.isReadonly;\n textbox.required = formFieldAttributes.isRequired;\n textbox.textAlignment = this.getTextAlignment(formFieldAttributes.textAlign);\n textbox.visibility = this.getFormFieldsVisibility(formFieldAttributes.visibility);\n textbox.text = isNullOrUndefined(formFieldAttributes.value) ? \"\" : formFieldAttributes.value;\n textbox.toolTip = isNullOrUndefined(formFieldAttributes.tooltip) ? \"\" : formFieldAttributes.tooltip;\n textbox.color = [formFieldAttributes.fontColor.r, formFieldAttributes.fontColor.g, formFieldAttributes.fontColor.b];\n textbox.borderColor = [formFieldAttributes.borderColor.r, formFieldAttributes.borderColor.g, formFieldAttributes.borderColor.b];\n textbox.border.width = formFieldAttributes.thickness;\n textbox.multiLine = formFieldAttributes.Multiline;\n var pdfFontStyle = this.getFontStyle(formFieldAttributes);\n textbox._dictionary.set('FontStyle', pdfFontStyle);\n var hasUnicode = /[^\\u0000-\\u007F]/.test(textbox.text);\n if (hasUnicode) {\n textbox.font = this.getTrueFont(formFieldAttributes.fontSize, pdfFontStyle);\n }\n else {\n textbox.font = new PdfStandardFont(this.getFontFamily(formFieldAttributes.FontFamily), this.convertPixelToPoint(formFieldAttributes.fontSize), pdfFontStyle);\n }\n if (formFieldAttributes.formFieldAnnotationType === 'PasswordField') {\n textbox.password = true;\n }\n if (!isFieldRotated) {\n textbox.rotate = this.getFormfieldRotation(loadedPage.rotation);\n }\n return textbox;\n };\n FormFieldsBase.prototype.saveDropDownField = function (loadedPage, formFieldAttributes) {\n var dropdownListName = isNullOrUndefined(formFieldAttributes.name) ? 'dropdownList' : formFieldAttributes.name;\n var dropDownListbounds = this.convertFieldBounds(formFieldAttributes);\n var rotationAngle = loadedPage.rotation;\n var isFieldRotated = false;\n if (formFieldAttributes.rotation !== 0) {\n isFieldRotated = true;\n }\n var fieldBounds = this.getBounds(dropDownListbounds, loadedPage.size[1], loadedPage.size[0], rotationAngle, isFieldRotated);\n var bound = { x: fieldBounds.X, y: fieldBounds.Y, width: fieldBounds.Width, height: fieldBounds.Height };\n var comboBox = new PdfComboBoxField(loadedPage, dropdownListName, bound);\n var hasUnicode = false;\n for (var i = 0; i < formFieldAttributes.option.length; i++) {\n var item = new PdfListFieldItem(formFieldAttributes.option[parseInt(i.toString(), 10)].itemName, formFieldAttributes.option[parseInt(i.toString(), 10)].itemValue);\n comboBox.addItem(item);\n var flag = /[^\\u0000-\\u007F]/.test(formFieldAttributes.option[parseInt(i.toString(), 10)].itemName);\n if (flag) {\n hasUnicode = true;\n }\n }\n comboBox.textAlignment = this.getTextAlignment(formFieldAttributes.textAlign);\n var pdfFontStyle = this.getFontStyle(formFieldAttributes);\n comboBox._dictionary.set('FontStyle', pdfFontStyle);\n if (hasUnicode) {\n comboBox.font = this.getTrueFont(formFieldAttributes.FontSize, pdfFontStyle);\n }\n else {\n comboBox.font = new PdfStandardFont(this.getFontFamily(formFieldAttributes.FontFamily), this.convertPixelToPoint(formFieldAttributes.FontSize), pdfFontStyle);\n }\n if (comboBox.itemsCount > 0) {\n if (formFieldAttributes.selectedIndex.length > 0) {\n comboBox.selectedIndex = formFieldAttributes.selectedIndex[0];\n }\n else {\n comboBox.selectedIndex = 0;\n }\n }\n comboBox.required = formFieldAttributes.isRequired;\n comboBox.readOnly = formFieldAttributes.isReadonly;\n comboBox.visibility = this.getFormFieldsVisibility(formFieldAttributes.visibility);\n comboBox.backColor = [formFieldAttributes.backgroundColor.r, formFieldAttributes.backgroundColor.g, formFieldAttributes.backgroundColor.b];\n if (formFieldAttributes.backgroundColor.r == 0 && formFieldAttributes.backgroundColor.g == 0 && formFieldAttributes.backgroundColor.b == 0 && formFieldAttributes.backgroundColor.a == 0) {\n comboBox.backColor = [formFieldAttributes.backgroundColor.r, formFieldAttributes.backgroundColor.g, formFieldAttributes.backgroundColor.b, formFieldAttributes.backgroundColor.a];\n }\n comboBox.borderColor = [formFieldAttributes.borderColor.r, formFieldAttributes.borderColor.g, formFieldAttributes.borderColor.b];\n comboBox.border.width = formFieldAttributes.thickness;\n comboBox.color = [formFieldAttributes.fontColor.r, formFieldAttributes.fontColor.g, formFieldAttributes.fontColor.b];\n if (!isFieldRotated) {\n comboBox.rotate = this.getFormfieldRotation(loadedPage.rotation);\n }\n comboBox.toolTip = isNullOrUndefined(formFieldAttributes.tooltip) ? '' : formFieldAttributes.tooltip;\n comboBox._font = new PdfStandardFont(this.getFontFamily(formFieldAttributes.fontFamily), this.convertPixelToPoint(formFieldAttributes.fontSize), pdfFontStyle);\n return comboBox;\n };\n FormFieldsBase.prototype.SaveCheckBoxField = function (loadedPage, formFieldAttributes) {\n var checkboxFieldName = isNullOrUndefined(formFieldAttributes.name) && formFieldAttributes.name === '' ? \"checkboxField\" : formFieldAttributes.name;\n var checkBounds = this.convertFieldBounds(formFieldAttributes);\n var rotationAngle = loadedPage.rotation;\n var isFieldRotated = false;\n if (formFieldAttributes.rotation !== 0) {\n isFieldRotated = true;\n }\n var fieldBounds = this.getBounds(checkBounds, loadedPage.size[1], loadedPage.size[0], rotationAngle, isFieldRotated);\n var bound = { x: fieldBounds.X, y: fieldBounds.Y, width: fieldBounds.Width, height: fieldBounds.Height };\n //Create a new Check box field\n var checkBoxField = new PdfCheckBoxField(checkboxFieldName, bound, loadedPage);\n checkBoxField.readOnly = formFieldAttributes.isReadonly;\n checkBoxField.required = formFieldAttributes.isRequired;\n checkBoxField.checked = formFieldAttributes.isChecked;\n checkBoxField.visibility = this.getFormFieldsVisibility(formFieldAttributes.visibility);\n checkBoxField._dictionary.set('ExportValue', formFieldAttributes.value);\n checkBoxField.backColor = [formFieldAttributes.backgroundColor.r, formFieldAttributes.backgroundColor.g, formFieldAttributes.backgroundColor.b];\n if (formFieldAttributes.backgroundColor.r === 0 && formFieldAttributes.backgroundColor.g === 0 && formFieldAttributes.backgroundColor.b === 0 && formFieldAttributes.backgroundColor.a === 0) {\n checkBoxField.backColor = [formFieldAttributes.backgroundColor.r, formFieldAttributes.backgroundColor.g, formFieldAttributes.backgroundColor.b, formFieldAttributes.backgroundColor.a];\n }\n checkBoxField.borderColor = [formFieldAttributes.borderColor.r, formFieldAttributes.borderColor.g, formFieldAttributes.borderColor.b];\n checkBoxField.border.width = formFieldAttributes.thickness;\n checkBoxField.toolTip = isNullOrUndefined(formFieldAttributes.tooltip) ? \"\" : formFieldAttributes.tooltip;\n if (!isFieldRotated) {\n checkBoxField.rotate = this.getFormfieldRotation(loadedPage.rotation);\n }\n return checkBoxField;\n };\n FormFieldsBase.prototype.saveListBoxField = function (loadedPage, formFieldAttributes) {\n var listBoxName = isNullOrUndefined(formFieldAttributes.name) ? 'listBox' : formFieldAttributes.name;\n var listBounds = this.convertFieldBounds(formFieldAttributes);\n var rotationAngle = loadedPage.rotation;\n var isFieldRotated = false;\n if (formFieldAttributes.rotation !== 0) {\n isFieldRotated = true;\n }\n var fieldBounds = this.getBounds(listBounds, loadedPage.size[1], loadedPage.size[0], rotationAngle, isFieldRotated);\n var bound = { x: fieldBounds.X, y: fieldBounds.Y, width: fieldBounds.Width, height: fieldBounds.Height };\n var listBox = new PdfListBoxField(loadedPage, listBoxName, bound);\n var flag = false;\n var hasUnicode = false;\n for (var i = 0; i < formFieldAttributes.option.length; i++) {\n var item = new PdfListFieldItem(formFieldAttributes.option[parseInt(i.toString(), 10)].itemName, formFieldAttributes.option[parseInt(i.toString(), 10)].itemValue);\n listBox.addItem(item);\n var unicode = /[^\\u0000-\\u007F]/.test(formFieldAttributes.option[parseInt(i.toString(), 10)].itemName);\n if (unicode) {\n hasUnicode = true;\n }\n if (!isNullOrUndefined(item && item._dictionary && !flag)) {\n item.textAlignment = this.getTextAlignment(formFieldAttributes.textAlign);\n flag = true;\n }\n }\n if (listBox.itemsCount > 0) {\n var count = formFieldAttributes.selectedIndex.length;\n if (Array.isArray(formFieldAttributes.selectedIndex) && count > 0) {\n if (count === 1) {\n listBox.selectedIndex = formFieldAttributes.selectedIndex[0];\n }\n else {\n var selectedIndexes = [];\n for (var j = 0; j < count; j++) {\n selectedIndexes.push(formFieldAttributes.selectedIndex[parseInt(j.toString(), 10)]);\n }\n listBox.selectedIndex = selectedIndexes;\n }\n }\n else {\n listBox.selectedIndex = 0;\n }\n }\n listBox.textAlignment = this.getTextAlignment(formFieldAttributes.textAlign);\n listBox.multiSelect = true;\n listBox.backColor = [formFieldAttributes.backgroundColor.r, formFieldAttributes.backgroundColor.g, formFieldAttributes.backgroundColor.b];\n if (formFieldAttributes.backgroundColor.r == 0 && formFieldAttributes.backgroundColor.g == 0 && formFieldAttributes.backgroundColor.b == 0 && formFieldAttributes.backgroundColor.a == 0) {\n listBox.backColor = [formFieldAttributes.backgroundColor.r, formFieldAttributes.backgroundColor.g, formFieldAttributes.backgroundColor.b, formFieldAttributes.backgroundColor.a];\n }\n listBox.borderColor = [formFieldAttributes.borderColor.r, formFieldAttributes.borderColor.g, formFieldAttributes.borderColor.b];\n listBox.border.width = formFieldAttributes.thickness;\n var pdfFontStyle = this.getFontStyle(formFieldAttributes);\n listBox._dictionary.set('FontStyle', pdfFontStyle);\n if (hasUnicode) {\n listBox.font = this.getTrueFont(formFieldAttributes.FontSize, pdfFontStyle);\n }\n else {\n listBox.font = new PdfStandardFont(this.getFontFamily(formFieldAttributes.fontFamily), this.convertPixelToPoint(formFieldAttributes.fontSize), pdfFontStyle);\n }\n listBox.readOnly = formFieldAttributes.isReadonly;\n listBox.required = formFieldAttributes.isRequired;\n listBox.visibility = this.getFormFieldsVisibility(formFieldAttributes.visibility);\n listBox.toolTip = isNullOrUndefined(formFieldAttributes.tooltip) ? \"\" : formFieldAttributes.tooltip;\n if (!isFieldRotated) {\n listBox.rotate = this.getFormfieldRotation(loadedPage.rotation);\n }\n return listBox;\n };\n FormFieldsBase.prototype.saveRadioButtonField = function (formFieldAttributes) {\n var loadedPage = this.formFieldLoadedDocument.getPage(formFieldAttributes.pageNumber - 1);\n var fieldName = isNullOrUndefined(formFieldAttributes.name) ? 'radiobuttonField' : formFieldAttributes.name;\n var field = new PdfRadioButtonListField(loadedPage, fieldName);\n var selectedIndex = 0;\n var isSelectedItem = false;\n var isReadOnly = false;\n var isRequired = false;\n for (var i = 0; i < formFieldAttributes.radiobuttonItem.length; i++) {\n var radiobuttonItem = formFieldAttributes.radiobuttonItem[parseInt(i.toString(), 10)];\n var page = this.formFieldLoadedDocument.getPage(radiobuttonItem.pageNumber - 1);\n var radioButtonName = !(isNullOrUndefined(radiobuttonItem.value) || radiobuttonItem.value === '') ? radiobuttonItem.value : fieldName;\n var rotationAngle = this.getRotateAngle(page.rotation);\n var bounds = this.convertFieldBounds(radiobuttonItem);\n var isFieldRotated = false;\n if (formFieldAttributes.rotation != 0) {\n isFieldRotated = true;\n }\n var fieldBounds = this.getBounds(bounds, page.size[1], page.size[0], rotationAngle, isFieldRotated);\n var bound = { x: fieldBounds.X, y: fieldBounds.Y, width: fieldBounds.Width, height: fieldBounds.Height };\n var radioButtonItem = new PdfRadioButtonListItem(radioButtonName, bound, page);\n if (isFieldRotated) {\n radioButtonItem.rotationAngle = this.GetRotateAngle(page.rotation);\n }\n if (radiobuttonItem.isReadonly) {\n isReadOnly = true;\n }\n if (radiobuttonItem.isRequired) {\n isRequired = true;\n }\n radioButtonItem.borderColor = [radiobuttonItem.borderColor.r, radiobuttonItem.borderColor.g, radiobuttonItem.borderColor.b];\n radioButtonItem.border.width = radiobuttonItem.thickness;\n radioButtonItem.backColor = [radiobuttonItem.backgroundColor.r, radiobuttonItem.backgroundColor.g, radiobuttonItem.backgroundColor.b];\n if (radiobuttonItem.backgroundColor.r == 0 && radiobuttonItem.backgroundColor.g == 0 && radiobuttonItem.backgroundColor.b == 0 && radiobuttonItem.backgroundColor.a == 0) {\n radioButtonItem.backColor = [radiobuttonItem.backgroundColor.r, radiobuttonItem.backgroundColor.g, radiobuttonItem.backgroundColor.b, radiobuttonItem.backgroundColor.a];\n }\n radioButtonItem.visibility = this.getFormFieldsVisibility(radiobuttonItem.visibility);\n field.add(radioButtonItem);\n if (radiobuttonItem.isSelected) {\n selectedIndex = i;\n isSelectedItem = true;\n }\n }\n field.readOnly = isReadOnly;\n field.required = isRequired;\n field.toolTip = isNullOrUndefined(formFieldAttributes.tooltip) ? '' : formFieldAttributes.tooltip;\n if (isSelectedItem)\n field.selectedIndex = selectedIndex;\n return field;\n };\n FormFieldsBase.prototype.saveSignatureField = function (loadedPage, formFieldAttributes) {\n var signatureFieldName = isNullOrUndefined(formFieldAttributes.name) ? 'signatureField' : formFieldAttributes.name;\n var signatureFieldBounds = this.convertFieldBounds(formFieldAttributes);\n var rotationAngle = loadedPage.rotation;\n var isFieldRotated = false;\n if (formFieldAttributes.rotation !== 0) {\n isFieldRotated = true;\n }\n var fieldBounds = this.getBounds(signatureFieldBounds, loadedPage.size[1], loadedPage.size[0], rotationAngle, isFieldRotated);\n var bound = { x: fieldBounds.X, y: fieldBounds.Y, width: fieldBounds.Width, height: fieldBounds.Height };\n var signatureField = new PdfSignatureField(loadedPage, signatureFieldName, bound);\n //let page: PdfPage = signatureField.page;\n signatureField.toolTip = formFieldAttributes.tooltip;\n signatureField.required = formFieldAttributes.isRequired;\n signatureField.readOnly = formFieldAttributes.isReadonly;\n if (formFieldAttributes.formFieldAnnotationType === \"InitialField\") {\n signatureField._dictionary.set(\"InitialField\", true);\n }\n signatureField.borderColor = [formFieldAttributes.borderColor.r, formFieldAttributes.borderColor.g, formFieldAttributes.borderColor.b];\n signatureField.border.width = formFieldAttributes.thickness;\n if (formFieldAttributes.visibility === \"hidden\") {\n signatureField.visible = false;\n }\n else if (formFieldAttributes.visibility === \"visible\") {\n signatureField.visible = true;\n }\n if (formFieldAttributes.signatureType === \"Text\") {\n this.drawDesignerFieldFreeTextAnnotations(signatureField, signatureFieldName, formFieldAttributes);\n }\n else if (formFieldAttributes.signatureType === \"Image\") {\n this.drawDesignerFieldImage(signatureField, signatureFieldName, formFieldAttributes);\n }\n else if (formFieldAttributes.signatureType = \"Path\") {\n if (!isNullOrUndefined(formFieldAttributes.value) && formFieldAttributes.value !== \"\") {\n this.drawDesignerFieldPath(signatureField, signatureFieldName, formFieldAttributes);\n }\n }\n if (!isFieldRotated) {\n signatureField.rotate = this.getFormfieldRotation(loadedPage.rotation);\n }\n return signatureField;\n };\n FormFieldsBase.prototype.drawDesignerFieldFreeTextAnnotations = function (signatureField, currentFieldName, formFieldAttributes) {\n var boundsObjects = { X: formFieldAttributes.signatureBound.x, Y: formFieldAttributes.signatureBound.y, Width: formFieldAttributes.signatureBound.width, Height: formFieldAttributes.signatureBound.height };\n var page = signatureField.page;\n var pageRotationAngle = page.rotation;\n var zoomvalue = formFieldAttributes.zoomValue;\n var signBounds = { X: this.convertPixelToPoint(boundsObjects.X / zoomvalue), Y: this.convertPixelToPoint(boundsObjects.Y / zoomvalue), Width: this.convertPixelToPoint(boundsObjects.Width / zoomvalue), Height: this.convertPixelToPoint(boundsObjects.Height / zoomvalue) };\n var isFieldRotated = false;\n if (formFieldAttributes.rotation !== 0) {\n isFieldRotated = true;\n }\n signBounds = this.getBounds(signBounds, page.size[1], page.size[0], pageRotationAngle, isFieldRotated);\n if (!isNullOrUndefined(formFieldAttributes)) {\n var left = signBounds.X;\n var top_3 = signBounds.Y;\n var width = signBounds.Width;\n var height = signBounds.Height;\n var freeTextBounds = { X: left, Y: top_3, Width: width, Height: height };\n var annotation = new PdfFreeTextAnnotation(left, top_3, width, height);\n annotation.setAppearance(true);\n annotation._dictionary.set(\"T\", currentFieldName);\n var font = formFieldAttributes.fontSize;\n var fontFamilyEnum = PdfFontFamily.helvetica;\n if (!isNullOrUndefined(formFieldAttributes.fontFamily)) {\n fontFamilyEnum = this.getFontFamily(formFieldAttributes.fontFamily);\n }\n var fontStyle = this.getFontStyle(formFieldAttributes);\n var hasUnicode = /[^\\u0000-\\u007F]/.test(formFieldAttributes.value);\n if (hasUnicode) {\n annotation.font = this.getTrueFont(this.convertPixelToPoint(font), fontStyle);\n }\n else {\n annotation.font = new PdfStandardFont(fontFamilyEnum, this.convertPixelToPoint(formFieldAttributes.fontSize), fontStyle);\n }\n annotation.text = formFieldAttributes.value;\n this.setFontSize(this.convertPixelToPoint(font), annotation.font, formFieldAttributes.value, freeTextBounds, fontFamilyEnum, fontStyle);\n annotation.border.width = 0;\n annotation.textAlignment = PdfTextAlignment.center;\n annotation.flags = PdfAnnotationFlag.print;\n if (!isFieldRotated) {\n annotation.rotationAngle = Math.abs(this.getRotateAngle(page.rotation));\n }\n annotation.setValues(\"AnnotationType\", \"Signature\");\n annotation.setAppearance(true);\n page.annotations.add(annotation);\n }\n };\n FormFieldsBase.prototype.drawDesignerFieldImage = function (signatureField, currentFieldName, formFieldAttributes) {\n var boundsObjects = { X: formFieldAttributes.signatureBound.x, Y: formFieldAttributes.signatureBound.y, Width: formFieldAttributes.signatureBound.width, Height: formFieldAttributes.signatureBound.height };\n var page = signatureField.page;\n var pageRotationAngle = page.rotation;\n var zoomvalue = formFieldAttributes.zoomValue;\n var signBounds = { X: this.convertPixelToPoint(boundsObjects.X / zoomvalue), Y: this.convertPixelToPoint(boundsObjects.Y / zoomvalue), Width: this.convertPixelToPoint(boundsObjects.Width / zoomvalue), Height: this.convertPixelToPoint(boundsObjects.Height / zoomvalue) };\n var isFieldRotated = false;\n if (formFieldAttributes.rotation !== 0) {\n isFieldRotated = true;\n }\n signBounds = this.getBounds(signBounds, page.size[1], page.size[0], pageRotationAngle, isFieldRotated);\n if (!isNullOrUndefined(formFieldAttributes)) {\n var left = signBounds.X;\n var top_4 = signBounds.Y;\n var width = signBounds.Width;\n var height = signBounds.Height;\n var imageUrl = (formFieldAttributes.value.toString()).split(',')[1];\n var rubberStampAnnotation = new PdfRubberStampAnnotation(left, top_4, width, height);\n var bitmap = new PdfBitmap(imageUrl);\n rubberStampAnnotation.appearance.normal.graphics.drawImage(bitmap, 0, 0, width, height);\n if (!isFieldRotated) {\n rubberStampAnnotation.rotationAngle = Math.abs(this.getRotateAngle(page.rotation));\n }\n rubberStampAnnotation._dictionary.set(\"T\", currentFieldName);\n rubberStampAnnotation.flags = PdfAnnotationFlag.print;\n page.annotations.add(rubberStampAnnotation);\n }\n };\n FormFieldsBase.prototype.drawDesignerFieldPath = function (signatureField, currentFieldName, formFieldAttributes) {\n var stampObjects = JSON.parse(formFieldAttributes.value);\n var boundsObjects = { X: formFieldAttributes.signatureBound.x, Y: formFieldAttributes.signatureBound.y, Width: formFieldAttributes.signatureBound.width, Height: formFieldAttributes.signatureBound.height };\n var page = signatureField.page;\n var pageRotationAngle = page.rotation;\n var zoomvalue = formFieldAttributes.zoomValue;\n var signBounds = { X: this.convertPixelToPoint(boundsObjects.X / zoomvalue), Y: this.convertPixelToPoint(boundsObjects.Y / zoomvalue), Width: this.convertPixelToPoint(boundsObjects.Width / zoomvalue), Height: this.convertPixelToPoint(boundsObjects.Height / zoomvalue) };\n signBounds = this.getBounds(signBounds, page.size[1], page.size[0], pageRotationAngle, false);\n var pageNumber = 0;\n for (var k = 0; k < this.formFieldLoadedDocument.pageCount; k++) {\n if (page === this.formFieldLoadedDocument.getPage(k)) {\n break;\n }\n pageNumber++;\n }\n // Need to check and implement the logic of skia sharp to reduced the ink annotation thickness\n if (stampObjects.length > 0) {\n var left = signBounds.X;\n var top_5 = signBounds.Y;\n var width = signBounds.Width;\n var height = signBounds.Height;\n var minimumX = -1;\n var minimumY = -1;\n var maximumX = -1;\n var maximumY = -1;\n for (var p = 0; p < stampObjects.length; p++) {\n var value = stampObjects[parseInt(p.toString(), 10)];\n if (minimumX == -1) {\n minimumX = value.x;\n minimumY = value.y;\n maximumX = value.x;\n maximumY = value.x;\n }\n else {\n var point1 = value.x;\n var point2 = value.y;\n 0;\n if (minimumX >= point1) {\n minimumX = point1;\n }\n if (minimumY >= point2) {\n minimumY = point2;\n }\n if (maximumX <= point1) {\n maximumX = point1;\n }\n if (maximumY <= point2) {\n maximumY = point2;\n }\n }\n }\n var newDifferenceX = (maximumX - minimumX) / width;\n var newDifferenceY = (maximumY - minimumY) / height;\n var linePoints = [];\n var isNewValues = 0;\n if (pageRotationAngle !== 0) {\n for (var j = 0; j < stampObjects.length; j++) {\n var value = stampObjects[parseInt(j.toString(), 10)];\n var path = value.command.toString();\n if (path == \"M\" && j !== 0) {\n isNewValues = j;\n break;\n }\n linePoints.push(parseFloat(value.x));\n linePoints.push(parseFloat(value.y));\n }\n linePoints = [];\n for (var z = 0; z < stampObjects.length; z++) {\n var value = stampObjects[parseInt(z.toString(), 10)];\n linePoints.push(((parseFloat(value.x) - minimumX) / newDifferenceX) + left);\n linePoints.push(this.formFieldLoadedDocument.getPage(pageNumber).size[1] - ((parseFloat(value.y) - minimumY) / newDifferenceY) - top_5);\n }\n }\n else {\n for (var k = 0; k < stampObjects.length; k++) {\n var value = stampObjects[parseInt(k.toString(), 10)];\n var path = value.command.toString();\n if (path == \"M\" && k !== 0) {\n isNewValues = k;\n break;\n }\n linePoints.push(((parseFloat(value.x) - minimumX) / newDifferenceX) + left);\n var newX = ((parseFloat(value.y) - minimumY) / newDifferenceY);\n linePoints.push(this.formFieldLoadedDocument.getPage(pageNumber).size[1] - newX - top_5);\n }\n }\n var inkAnnotation = new PdfInkAnnotation([left, top_5, width, height], linePoints);\n inkAnnotation.flags = PdfAnnotationFlag.print;\n inkAnnotation.bounds = { x: signBounds.X, y: signBounds.Y, width: signBounds.Width, height: signBounds.Height };\n inkAnnotation.border.width = 0;\n inkAnnotation.color = [0, 0, 0];\n inkAnnotation.setValues(\"annotationSignature\", \"annotationSignature\");\n linePoints = [];\n if (pageRotationAngle !== 0) {\n var pathCollection = [];\n for (var t = isNewValues; t < stampObjects.length; t++) {\n var value = stampObjects[parseInt(t.toString(), 10)];\n var path = value.command.toString();\n if (path === \"M\" && t !== isNewValues) {\n pathCollection.push(linePoints);\n linePoints = [];\n }\n linePoints.push(parseFloat(value.x));\n linePoints.push(parseFloat(value.y));\n }\n if (linePoints.length > 0) {\n pathCollection.push(linePoints);\n }\n for (var w = 0; w < pathCollection.length; w++) {\n var pointsCollections = pathCollection[parseInt(w.toString(), 10)];\n linePoints = [];\n if (pointsCollections.length > 0) {\n for (var z = 0; z < stampObjects.length; z++) {\n var value = stampObjects[parseInt(z.toString(), 10)];\n linePoints.push(((parseFloat(value.x) - minimumX) / newDifferenceX) + left);\n linePoints.push(this.formFieldLoadedDocument.getPage(pageNumber).size[1] - ((parseFloat(value.y) - minimumY) / newDifferenceY) - top_5);\n }\n inkAnnotation.inkPointsCollection.push(linePoints);\n }\n linePoints = [];\n }\n }\n else {\n for (var r = 0; r < stampObjects.length; r++) {\n var value = stampObjects[parseInt(r.toString(), 10)];\n var path = value.command.toString();\n if (path == \"M\" && r !== 0) {\n inkAnnotation.inkPointsCollection.push(linePoints);\n linePoints = [];\n }\n linePoints.push(((parseFloat(value.x) - minimumX) / newDifferenceX) + left);\n var newX = ((parseFloat(value.y) - minimumY) / newDifferenceY);\n linePoints.push(this.formFieldLoadedDocument.getPage(pageNumber).size[1] - newX - top_5);\n }\n if (linePoints.length > 0) {\n inkAnnotation.inkPointsCollection.push(linePoints);\n }\n }\n inkAnnotation._dictionary.set(\"T\", currentFieldName);\n inkAnnotation.setAppearance(true);\n inkAnnotation.rotationAngle = Math.abs(this.getRotateAngle(page.rotation));\n this.formFieldLoadedDocument.getPage(pageNumber).annotations.add(inkAnnotation);\n }\n };\n FormFieldsBase.prototype.setFontSize = function (fontSize, font, text, freeTextBounds, fontFamilyEnum, fontStyle) {\n var minimumFontSize = 0.25;\n font = new PdfStandardFont(fontFamilyEnum, fontSize, fontStyle);\n do {\n fontSize = fontSize - 0.001;\n font._size = fontSize;\n if (fontSize < minimumFontSize) {\n font._size = minimumFontSize;\n break;\n }\n var sizeF = font.measureString(text);\n if (sizeF[0] < freeTextBounds.Width && sizeF[1] < freeTextBounds.height) {\n font._size = fontSize;\n break;\n }\n } while (fontSize > minimumFontSize);\n };\n FormFieldsBase.prototype.getTrueFont = function (fontSize, fontStyle) {\n var font = new PdfTrueTypeFont(getArialFontData(), this.convertPixelToPoint(fontSize), fontStyle);\n return font;\n };\n FormFieldsBase.prototype.convertFieldBounds = function (formFieldAttributes) {\n var zoomvalue = formFieldAttributes.zoomValue;\n return { X: this.convertPixelToPoint(formFieldAttributes.lineBound.X / zoomvalue),\n Y: this.convertPixelToPoint(formFieldAttributes.lineBound.Y / zoomvalue),\n Width: this.convertPixelToPoint(formFieldAttributes.lineBound.Width / zoomvalue),\n Height: this.convertPixelToPoint(formFieldAttributes.lineBound.Height / zoomvalue) };\n };\n FormFieldsBase.prototype.getFontFamily = function (font) {\n var fontFamily = PdfFontFamily.helvetica;\n switch (font) {\n case 'Courier':\n fontFamily = PdfFontFamily.courier;\n break;\n case 'Times New Roman':\n fontFamily = PdfFontFamily.timesRoman;\n break;\n case 'Symbol':\n fontFamily = PdfFontFamily.symbol;\n break;\n case 'ZapfDingbats':\n fontFamily = PdfFontFamily.zapfDingbats;\n break;\n }\n return fontFamily;\n };\n //Need to calculate bound for all rotation\n FormFieldsBase.prototype.getBounds = function (bounds, pageHeight, pageWidth, pageRotation, isFieldRotated) {\n var bound = {};\n if (pageRotation === 0) {\n bound = { X: bounds.X, Y: bounds.Y, Width: bounds.Width, Height: bounds.Height };\n }\n else if (pageRotation === 1) {\n if (isFieldRotated) {\n bound = { X: bounds.Y - (bounds.Width / 2 - bounds.Height / 2), Y: pageHeight - bounds.X - bounds.Height - (bounds.Width / 2 - bounds.Height / 2), Width: bounds.Width, Height: bounds.Height };\n }\n else {\n bound = { X: bounds.Y, Y: pageHeight - bounds.X - bounds.Width, Width: bounds.Height, Height: bounds.Width };\n }\n }\n else if (pageRotation === 2) {\n bound = { X: pageWidth - bounds.X - bounds.Width, Y: pageHeight - bounds.Y - bounds.Height, Width: bounds.Width, Height: bounds.Height };\n }\n else if (pageRotation === 3) {\n if (isFieldRotated) {\n bound = { X: pageWidth - bounds.Y - bounds.Height - (bounds.Width / 2 - bounds.Height / 2), Y: bounds.X + (bounds.Width / 2 - bounds.Height / 2), Width: bounds.Width, Height: bounds.Height };\n }\n else {\n bound = { X: pageWidth - bounds.Y - bounds.Height, Y: bounds.X, Width: bounds.Height, Height: bounds.Width };\n }\n }\n return bound;\n };\n FormFieldsBase.prototype.getFormfieldRotation = function (rotation) {\n var angle = 0;\n switch (rotation) {\n case 1:\n angle = 90;\n break;\n case 2:\n angle = 180;\n break;\n case 3:\n angle = 270;\n break;\n case 4:\n angle = 360;\n break;\n }\n return angle;\n };\n //Need to check the form field textAlignment property\n FormFieldsBase.prototype.getTextAlignment = function (alignment) {\n var textAlignment;\n switch (alignment) {\n case 'left':\n textAlignment = PdfTextAlignment.left;\n break;\n case 'right':\n textAlignment = PdfTextAlignment.right;\n break;\n case 'center':\n textAlignment = PdfTextAlignment.center;\n break;\n case 'justify':\n textAlignment = PdfTextAlignment.justify;\n break;\n }\n return textAlignment;\n };\n //Need to check the form field visibility property\n FormFieldsBase.prototype.getFormFieldsVisibility = function (visibility) {\n var fieldVisibility;\n switch (visibility) {\n case 'visible':\n fieldVisibility = PdfFormFieldVisibility.visible;\n break;\n case 'hidden':\n fieldVisibility = PdfFormFieldVisibility.hidden;\n break;\n case 'visibleNotPrintable':\n fieldVisibility = PdfFormFieldVisibility.visibleNotPrintable;\n break;\n case 'hiddenPrintable':\n fieldVisibility = PdfFormFieldVisibility.hiddenPrintable;\n break;\n }\n return fieldVisibility;\n };\n FormFieldsBase.prototype.getFontStyle = function (formFieldAttributes) {\n var fontStyle;\n fontStyle = PdfFontStyle.regular;\n if (!isNullOrUndefined(formFieldAttributes) && !isNullOrUndefined(formFieldAttributes.font)) {\n if (formFieldAttributes.font.isBold) {\n fontStyle |= PdfFontStyle.bold;\n }\n if (formFieldAttributes.font.isItalic) {\n fontStyle |= PdfFontStyle.italic;\n }\n if (formFieldAttributes.font.isUnderline) {\n fontStyle |= PdfFontStyle.underline;\n }\n if (formFieldAttributes.font.isStrikeout) {\n fontStyle |= PdfFontStyle.strikeout;\n }\n }\n return fontStyle;\n };\n FormFieldsBase.prototype.convertPixelToPoint = function (value) {\n return (value * 72 / 96);\n };\n FormFieldsBase.prototype.convertPointtoPixel = function (value) {\n return (value * 96 / 72);\n };\n FormFieldsBase.prototype.fontConvert = function (font) {\n return {\n Bold: font.isBold,\n FontFamily: this.getFontFamilyString(font.fontFamily),\n Height: font.height,\n Italic: font.isItalic,\n Name: this.getFontFamilyString(font.fontFamily).toString(),\n Size: font.size,\n Strikeout: font.isStrikeout,\n Underline: font.isUnderline,\n Style: font.style,\n };\n };\n FormFieldsBase.prototype.parseFontStyle = function (numberValue, fontObject) {\n if ((numberValue & PdfFontStyle.underline) > 0) {\n fontObject.Underline = true;\n }\n if ((numberValue & PdfFontStyle.strikeout) > 0) {\n fontObject.Strikeout = true;\n }\n if ((numberValue & PdfFontStyle.bold) > 0) {\n fontObject.Bold = true;\n }\n if ((numberValue & PdfFontStyle.italic) > 0) {\n fontObject.Italic = true;\n }\n return fontObject;\n };\n /**\n * @private\n */\n FormFieldsBase.prototype.GetFormFields = function () {\n this.PdfRenderedFormFields = [];\n var loadedForm = this.formFieldLoadedDocument.form;\n if (!isNullOrUndefined(loadedForm) && !isNullOrUndefined(loadedForm._fields)) {\n loadedForm.orderFormFields();\n for (var i = 0; i < loadedForm.count; i++) {\n var field = loadedForm.fieldAt(i);\n var page = field.page;\n var pageNumber = 0;\n for (var j = 0; j < this.formFieldLoadedDocument.pageCount; j++) {\n if (page === this.formFieldLoadedDocument.getPage(j)) {\n break;\n }\n pageNumber++;\n }\n if (!isNullOrUndefined(field.page)) {\n if (field instanceof PdfTextBoxField) {\n var textBox = field;\n if (textBox.itemsCount > 0) {\n this.addTextBoxFieldItems(textBox);\n }\n else {\n this.addTextBoxField(textBox, pageNumber, textBox.bounds, null);\n }\n }\n else if (field instanceof PdfComboBoxField) {\n var comboBoxField = loadedForm.fieldAt(i);\n this.addComboBoxField(comboBoxField, pageNumber);\n }\n else if (field instanceof PdfCheckBoxField) {\n var checkbox = field;\n if (checkbox.itemsCount > 1) {\n this.addCheckBoxFieldItems(checkbox);\n }\n else {\n this.addCheckBoxField(checkbox, pageNumber, checkbox.bounds, null);\n }\n }\n else if (field instanceof PdfListBoxField) {\n var listBoxField = field;\n this.addListBoxField(listBoxField, pageNumber);\n }\n else if (field instanceof PdfRadioButtonListField) {\n for (var i_2 = 0; i_2 < field.itemsCount; i_2++) {\n var item = field.itemAt(i_2);\n if (item) {\n var page_1 = item.page;\n if (page_1) {\n this.addRadioButtonField(item, page_1._pageIndex, field.name);\n }\n }\n }\n }\n else if (loadedForm.fieldAt(i) instanceof PdfSignatureField) {\n var signatureField = loadedForm.fieldAt(i);\n if (signatureField.isSigned && this.showDigitalSignatureAppearance) {\n this.m_isDigitalSignaturePresent = true;\n signatureField.flatten = true;\n }\n else if (!signatureField.isSigned || !this.hideEmptyDigitalSignatureFields) {\n if (signatureField.itemsCount > 0) {\n this.addSigntureFieldItems(signatureField);\n }\n else {\n this.addSignatureField(signatureField, pageNumber, signatureField.bounds);\n }\n }\n }\n }\n }\n }\n this.retrieveInkAnnotation(this.formFieldLoadedDocument);\n };\n FormFieldsBase.prototype.addTextBoxFieldItems = function (field) {\n if (field instanceof PdfTextBoxField) {\n var textBoxField = field;\n if (textBoxField.itemsCount > 0) {\n for (var i = 0; i < textBoxField.itemsCount; i++) {\n var item = textBoxField.itemAt(i).page;\n if (!isNullOrUndefined(item)) {\n var j = 0;\n for (var k = 0; k < this.formFieldLoadedDocument.pageCount; k++) {\n if (item == this.formFieldLoadedDocument.getPage(j)) {\n break;\n }\n j++;\n }\n this.addTextBoxField(textBoxField, j, textBoxField.itemAt(i).bounds, textBoxField.itemAt(i).font);\n }\n }\n }\n }\n };\n FormFieldsBase.prototype.addTextBoxField = function (textBox, pageNumber, bounds, font) {\n var formFields = new PdfRenderedFields();\n formFields.FieldName = textBox.name;\n formFields.ActualFieldName = textBox.name;\n if (textBox.password) {\n formFields.Name = \"Password\";\n }\n else {\n formFields.Name = \"Textbox\";\n }\n formFields.ToolTip = textBox.toolTip;\n if (!isNullOrUndefined(bounds)) {\n formFields.LineBounds = { X: bounds.x, Y: bounds.y, Width: bounds.width, Height: bounds.height };\n }\n else {\n formFields.LineBounds = { X: textBox.bounds.x, Y: textBox.bounds.y, Width: textBox.bounds.width, Height: textBox.bounds.height };\n }\n formFields.TabIndex = textBox.tabIndex;\n formFields.PageIndex = pageNumber;\n formFields.BorderWidth = textBox.border.width;\n formFields.BorderStyle = textBox.border.style;\n if (!isNullOrUndefined(textBox.backColor)) {\n formFields.BackColor = { R: textBox.backColor[0], G: textBox.backColor[1], B: textBox.backColor[2] };\n }\n else {\n formFields.IsTransparent = true;\n }\n formFields.Alignment = textBox.textAlignment;\n formFields.MaxLength = textBox.maxLength;\n formFields.Visible = textBox.visibility;\n formFields.InsertSpaces = textBox.insertSpaces;\n if (!isNullOrUndefined(font)) {\n formFields.Font = this.fontConvert(font);\n }\n else {\n formFields.Font = this.fontConvert(textBox.font);\n }\n if (textBox._dictionary.has(\"FontStyle\")) {\n var fontStyle = textBox._dictionary.get(\"FontStyle\");\n formFields.Font = this.parseFontStyle(fontStyle, formFields.Font);\n }\n formFields.Rotation = textBox.rotationAngle;\n formFields.IsReadonly = textBox.readOnly;\n formFields.IsRequired = textBox.required;\n if (!isNullOrUndefined(textBox.color)) {\n formFields.FontColor = { R: textBox.color[0], G: textBox.color[1], B: textBox.color[2] };\n ;\n }\n formFields.BorderColor = { R: textBox.borderColor[0], G: textBox.borderColor[1], B: textBox.borderColor[2] };\n formFields.Text = textBox.text ? textBox.text.replace(\"\\\"\", \"\") : '';\n formFields.Multiline = textBox.multiLine;\n formFields.RotationAngle = this.GetRotateAngle(textBox.page.rotation);\n formFields.TextList = [];\n this.PdfRenderedFormFields.push(formFields);\n };\n FormFieldsBase.prototype.addComboBoxField = function (comboBoxField, pageNumber) {\n var formFields = new PdfRenderedFields();\n formFields.Name = 'DropDown';\n formFields.ToolTip = comboBoxField.toolTip;\n formFields.FieldName = comboBoxField.name;\n formFields.Font = this.fontConvert(comboBoxField.font);\n formFields.IsAutoSize = comboBoxField._isAutoFontSize;\n formFields.Selected = comboBoxField.editable;\n if (comboBoxField._dictionary.has('FontStyle')) {\n var fontStyle = comboBoxField._dictionary.get('FontStyle');\n formFields.Font = this.parseFontStyle(fontStyle, formFields.Font);\n }\n formFields.ActualFieldName = comboBoxField.name;\n formFields.SelectedValue = comboBoxField.selectedValue;\n formFields.selectedIndex = comboBoxField.selectedIndex;\n formFields.LineBounds = { X: comboBoxField.bounds.x, Y: comboBoxField.bounds.y, Width: comboBoxField.bounds.width, Height: comboBoxField.bounds.height };\n formFields.TabIndex = comboBoxField.tabIndex;\n formFields.PageIndex = pageNumber;\n if (!isNullOrUndefined(comboBoxField.backColor)) {\n formFields.BackColor = { R: comboBoxField.backColor[0], G: comboBoxField.backColor[1], B: comboBoxField.backColor[2] };\n }\n else {\n formFields.IsTransparent = true;\n }\n formFields.BorderWidth = comboBoxField.border.width;\n formFields.BorderStyle = comboBoxField.border.style;\n formFields.BorderColor = { R: comboBoxField.borderColor[0], G: comboBoxField.borderColor[1], B: comboBoxField.borderColor[2] };\n formFields.FontColor = { R: comboBoxField.color[0], G: comboBoxField.color[1], B: comboBoxField.color[2] };\n formFields.Rotation = comboBoxField.rotationAngle;\n formFields.IsRequired = comboBoxField.required;\n formFields.IsReadonly = comboBoxField.readOnly;\n formFields.Visible = comboBoxField.visibility;\n formFields.RotationAngle = this.GetRotateAngle(comboBoxField.page.rotation);\n formFields.Alignment = comboBoxField.textAlignment;\n formFields.TextList = [];\n if (comboBoxField._dictionary.has('Opt')) {\n var options = comboBoxField._dictionary.get('Opt');\n if (options.length > 0) {\n formFields.TextList = options.map(function (item) { return (typeof item === \"string\" ? item : (typeof item === \"object\" ? item[0] : \"\")); });\n }\n }\n if (formFields.TextList.length === 0) {\n for (var i = 0; i < comboBoxField.itemsCount; i++) {\n var item = comboBoxField.itemAt(i);\n if (item) {\n formFields.TextList.push(item.text);\n if (i == 0) {\n formFields.Alignment = item.textAlignment;\n }\n }\n }\n }\n this.PdfRenderedFormFields.push(formFields);\n };\n FormFieldsBase.prototype.addCheckBoxFieldItems = function (field) {\n var page = field.page;\n if (field instanceof PdfCheckBoxField) {\n var checkBoxField = field;\n if (checkBoxField.itemsCount > 0) {\n for (var i = 0; i < checkBoxField.itemsCount; i++) {\n var item = checkBoxField.itemAt(i).page;\n if (!isNullOrUndefined(item)) {\n var j = 0;\n for (var k = 0; k < this.formFieldLoadedDocument.pageCount; k++) {\n if (item == this.formFieldLoadedDocument.getPage(j)) {\n break;\n }\n j++;\n }\n this.addCheckBoxField(checkBoxField, j, checkBoxField.itemAt(i).bounds, i.toString());\n }\n }\n }\n }\n };\n FormFieldsBase.prototype.addCheckBoxField = function (chkField, index, bounds, checkBoxIndex) {\n var formFields = new PdfRenderedFields();\n formFields.Name = \"CheckBox\";\n formFields.ToolTip = chkField.toolTip;\n if (!bounds.IsEmpty) {\n formFields.LineBounds = { X: bounds.x, Y: bounds.y, Width: bounds.width, Height: bounds.height };\n }\n else {\n formFields.LineBounds = { X: chkField.bounds.x, Y: chkField.bounds.y, Width: chkField.bounds.width, Height: chkField.bounds.height };\n }\n formFields.Selected = chkField.checked;\n formFields.TabIndex = chkField.tabIndex;\n formFields.GroupName = chkField.name.replace(/[^0-9a-zA-Z]+/g, \"\");\n formFields.ActualFieldName = chkField.name;\n formFields.PageIndex = index;\n formFields.BorderWidth = chkField.border.width;\n if (!isNullOrUndefined(chkField.backColor)) {\n formFields.BackColor = { R: chkField.backColor[0], G: chkField.backColor[1], B: chkField.backColor[2] };\n }\n else {\n formFields.IsTransparent = true;\n }\n formFields.BorderStyle = chkField.border.style;\n formFields.BorderColor = { R: chkField.borderColor[0], G: chkField.borderColor[1], B: chkField.borderColor[2] };\n formFields.RotationAngle = this.GetRotateAngle(chkField.page.rotation);\n formFields.IsReadonly = chkField.readOnly;\n formFields.IsRequired = chkField.required;\n formFields.Visible = chkField.visibility;\n var value = chkField._dictionary._get(\"ExportValue\");\n if (chkField._dictionary._get(\"ExportValue\") && !isNullOrUndefined(value)) {\n formFields.Value = value;\n }\n if (!isNullOrUndefined(checkBoxIndex)) {\n formFields.CheckBoxIndex = checkBoxIndex;\n var chekckboxField = chkField.itemAt(parseInt(checkBoxIndex));\n if (!isNullOrUndefined(chekckboxField)) {\n formFields.Selected = chekckboxField.checked;\n }\n }\n formFields.RotationAngle = this.GetRotateAngle(chkField.page.rotation);\n this.PdfRenderedFormFields.push(formFields);\n };\n FormFieldsBase.prototype.addListBoxField = function (listBoxField, pageNumber) {\n var formFields = new PdfRenderedFields();\n formFields.Name = 'ListBox';\n formFields.ToolTip = listBoxField.toolTip;\n formFields.Text = listBoxField.name.replace(/[^0-9a-zA-Z]+/g, '');\n formFields.ActualFieldName = listBoxField.name;\n var itemCount = listBoxField.itemsCount;\n if (itemCount > 0) {\n var selectedIndex = listBoxField.selectedIndex;\n if (Array.isArray(selectedIndex)) {\n for (var i = 0; i < selectedIndex.length; i++) {\n formFields.SelectedList.push(selectedIndex[parseInt(i.toString(), 10)]);\n }\n }\n else {\n formFields.SelectedList.push(selectedIndex);\n }\n }\n formFields.Font = this.fontConvert(listBoxField.font);\n if (listBoxField._dictionary.has('FontStyle')) {\n var fontStyle = listBoxField._dictionary.get('FontStyle');\n formFields.Font = this.parseFontStyle(fontStyle, formFields.Font);\n }\n formFields.LineBounds = { X: listBoxField.bounds.x, Y: listBoxField.bounds.y, Width: listBoxField.bounds.width, Height: listBoxField.bounds.height };\n formFields.TabIndex = listBoxField.tabIndex;\n formFields.PageIndex = pageNumber;\n formFields.BorderWidth = listBoxField.border.width;\n formFields.BorderStyle = listBoxField.border.style;\n if (!isNullOrUndefined(listBoxField.backColor)) {\n formFields.BackColor = { R: listBoxField.backColor[0], G: listBoxField.backColor[1], B: listBoxField.backColor[2] };\n }\n else {\n formFields.IsTransparent = true;\n }\n formFields.FontColor = { R: listBoxField.color[0], G: listBoxField.color[1], B: listBoxField.color[2] };\n formFields.BorderColor = { R: listBoxField.borderColor[0], G: listBoxField.borderColor[1], B: listBoxField.borderColor[2] };\n formFields.Rotation = listBoxField.rotationAngle;\n formFields.IsReadonly = listBoxField.readOnly;\n formFields.IsRequired = listBoxField.required;\n formFields.Visible = listBoxField.visibility;\n formFields.MultiSelect = listBoxField.multiSelect;\n //Need to implement selected value\n if (itemCount > 0) {\n if (Array.isArray(listBoxField.selectedIndex) && Array.isArray(listBoxField.selectedValue)) {\n formFields.selectedIndex = listBoxField.selectedIndex[0];\n formFields.SelectedValue = listBoxField.selectedValue[0];\n }\n }\n for (var i = 0; i < itemCount; i++) {\n var item = listBoxField.itemAt(i);\n if (item) {\n formFields.TextList.push(item.text);\n if (i === 0) {\n formFields.Alignment = listBoxField.textAlignment;\n }\n }\n }\n formFields.RotationAngle = this.GetRotateAngle(listBoxField.page.rotation);\n this.PdfRenderedFormFields.push(formFields);\n };\n FormFieldsBase.prototype.addRadioButtonField = function (item, index, radioButtonName) {\n var parent = item._field;\n var formFields = new PdfRenderedFields();\n formFields.Name = 'RadioButton';\n formFields.ToolTip = parent.toolTip;\n if (!isNullOrUndefined(parent.actualName)) {\n formFields.GroupName = parent.actualName.replace(/[^0-9a-zA-Z]+/g, '');\n formFields.ActualFieldName = radioButtonName;\n }\n formFields.TabIndex = parent.tabIndex;\n formFields.Selected = item.selected;\n formFields.LineBounds = { X: item.bounds.x, Y: item.bounds.y, Width: item.bounds.width, Height: item.bounds.height };\n formFields.Value = item.value;\n formFields.PageIndex = index;\n if (!isNullOrUndefined(item.backColor)) {\n formFields.BackColor = { R: item.backColor[0], G: item.backColor[1], B: item.backColor[2] };\n }\n else {\n formFields.IsTransparent = true;\n }\n formFields.BorderWidth = item.border.width;\n formFields.BorderStyle = item.border.style;\n formFields.BorderColor = { R: parent.borderColor[0], G: parent.borderColor[1], B: parent.borderColor[2] };\n formFields.Rotation = parent.rotationAngle;\n formFields.IsRequired = parent.required;\n formFields.IsReadonly = parent.readOnly;\n formFields.Visible = parent.visibility;\n formFields.RotationAngle = this.GetRotateAngle(item.page.rotation);\n this.PdfRenderedFormFields.push(formFields);\n };\n FormFieldsBase.prototype.checkTransparent = function (backColor) {\n var IsTransparent = false;\n if (backColor.R === 0 && backColor.G === 0 && backColor.B === 0) {\n IsTransparent = true;\n }\n return IsTransparent;\n };\n FormFieldsBase.prototype.GetRotateAngle = function (angleString) {\n var angle = 0;\n switch (angleString) {\n case 0:\n angle = 0;\n break;\n case 1:\n angle = -90;\n break;\n case 2:\n angle = -180;\n break;\n case 3:\n angle = -270;\n break;\n }\n return angle;\n };\n FormFieldsBase.prototype.drawFieldFreeTextAnnotations = function (resultObjects, signatureFields, currentFieldName, signatureBounds, fontName, fontSizes) {\n var stampObjects = JSON.parse(resultObjects);\n var boundsObjects = JSON.parse(signatureBounds);\n var page = signatureFields.page;\n var pageNumber = 0;\n for (var k = 0; k < this.formFieldLoadedDocument.pageCount; k++) {\n if (page == this.formFieldLoadedDocument.getPage(k)) {\n break;\n }\n pageNumber++;\n }\n if (!isNullOrUndefined(stampObjects) && stampObjects !== \"\") {\n var left = this.convertPixelToPoint(boundsObjects[\"x\"]);\n var top_6 = this.convertPixelToPoint(boundsObjects[\"y\"]);\n var width = this.convertPixelToPoint(boundsObjects[\"width\"]);\n var height = this.convertPixelToPoint(boundsObjects[\"height\"]);\n var annotation = new PdfFreeTextAnnotation(left, top_6, width, height);\n annotation.setAppearance(true);\n annotation._dictionary.set(\"T\", currentFieldName);\n var fontSize = fontSizes > 0 ? fontSizes : height / 2;\n var fontFamilyEnum = PdfFontFamily.helvetica;\n if (!isNullOrUndefined(fontName)) {\n var family = fontName;\n if (family.includes(\"Times New Roman\")) {\n fontFamilyEnum = PdfFontFamily.timesRoman;\n }\n else if (family.includes(\"Courier\")) {\n fontFamilyEnum = PdfFontFamily.courier;\n }\n else if (family.includes(\"Symbol\")) {\n fontFamilyEnum = PdfFontFamily.symbol;\n }\n else if (family.includes(\"ZapfDingbats\")) {\n fontFamilyEnum = PdfFontFamily.zapfDingbats;\n }\n }\n var fontStyle = this.getFontStyle();\n annotation.font = new PdfStandardFont(fontFamilyEnum, this.convertPixelToPoint(fontSize), fontStyle);\n annotation.text = stampObjects;\n annotation.rotationAngle = this.getRotateAngle(page.rotation);\n annotation.flags = PdfAnnotationFlag.print;\n annotation.setValues(\"AnnotationType\", \"Signature\");\n annotation.setAppearance(true);\n page.annotations.add(annotation);\n }\n };\n FormFieldsBase.prototype.drawFieldImage = function (resultObjects, signatureFields, currentFieldName, signatureBounds) {\n var stampObjects = JSON.parse(resultObjects);\n var boundsObjects = JSON.parse(signatureBounds);\n var page = signatureFields.page;\n var pageNumber = 0;\n for (var k = 0; k < this.formFieldLoadedDocument.pageCount; k++) {\n if (page == this.formFieldLoadedDocument.getPage(k)) {\n break;\n }\n pageNumber++;\n }\n if (!isNullOrUndefined(stampObjects) && stampObjects !== \"\") {\n var imageUrl = (stampObjects.toString()).split(',')[1];\n var left = this.convertPixelToPoint(boundsObjects[\"x\"]);\n var top_7 = this.convertPixelToPoint(boundsObjects[\"y\"]);\n var width = this.convertPixelToPoint(boundsObjects[\"width\"]);\n var height = this.convertPixelToPoint(boundsObjects[\"height\"]);\n var rubberStampAnnotation = new PdfRubberStampAnnotation(left, top_7, width, height);\n var bitmap = new PdfBitmap(imageUrl);\n rubberStampAnnotation.appearance.normal.graphics.drawImage(bitmap, 0, 0, width, height);\n rubberStampAnnotation.rotationAngle = this.getRotateAngle(page.rotation);\n rubberStampAnnotation._dictionary.set(\"T\", currentFieldName);\n rubberStampAnnotation.flags = PdfAnnotationFlag.print;\n rubberStampAnnotation.setAppearance(true);\n page.annotations.add(rubberStampAnnotation);\n }\n };\n FormFieldsBase.prototype.drawFieldPath = function (resultObjects, signatureFields, currentFieldName, signatureBounds) {\n var stampObjects = JSON.parse(resultObjects);\n var boundsObjects = JSON.parse(signatureBounds);\n var page = signatureFields.page;\n var pageNumber = 0;\n for (var k = 0; k < this.formFieldLoadedDocument.pageCount; k++) {\n if (page == this.formFieldLoadedDocument.getPage(k)) {\n break;\n }\n pageNumber++;\n }\n if (stampObjects.length > 0) {\n var rotationAngle = this.GetRotateAngle(page.rotation);\n var left = this.convertPixelToPoint(boundsObjects[\"x\"]);\n var top_8 = this.convertPixelToPoint(boundsObjects[\"y\"]);\n var width = this.convertPixelToPoint(boundsObjects[\"width\"]);\n var height = this.convertPixelToPoint(boundsObjects[\"height\"]);\n if (rotationAngle != 0) {\n left = this.convertPixelToPoint(signatureFields.bounds.x);\n top_8 = this.convertPixelToPoint(signatureFields.bounds.y);\n width = this.convertPixelToPoint(signatureFields.bounds.width);\n height = this.convertPixelToPoint(signatureFields.bounds.height);\n }\n var minimumX = -1;\n var minimumY = -1;\n var maximumX = -1;\n var maximumY = -1;\n for (var p = 0; p < stampObjects.length; p++) {\n var value = stampObjects[parseInt(p.toString(), 10)];\n if (minimumX == -1) {\n minimumX = value.x;\n minimumY = value.y;\n maximumX = value.x;\n maximumY = value.y;\n }\n else {\n var point1 = value.x;\n var point2 = value.y;\n if (minimumX >= point1) {\n minimumX = point1;\n }\n if (minimumY >= point2) {\n minimumY = point2;\n }\n if (maximumX <= point1) {\n maximumX = point1;\n }\n if (maximumY <= point2) {\n maximumY = point2;\n }\n }\n }\n var newDifferenceX = (maximumX - minimumX) / width;\n var newDifferenceY = (maximumY - minimumY) / height;\n var linePoints = [];\n var isNewValues = 0;\n if (rotationAngle !== 0) {\n for (var j = 0; j < stampObjects.length; j++) {\n var value = stampObjects[parseInt(j.toString(), 10)];\n var path = value.command.toString();\n if (path == \"M\" && j !== 0) {\n isNewValues = j;\n break;\n }\n linePoints.push(parseFloat(value.x));\n linePoints.push(parseFloat(value.y));\n }\n linePoints = [];\n for (var z = 0; z < stampObjects.length; z++) {\n var value = stampObjects[parseInt(z.toString(), 10)];\n linePoints.push(((parseFloat(value.x) - minimumX) / newDifferenceX) + left);\n linePoints.push(this.formFieldLoadedDocument.getPage(pageNumber).size[1] - ((parseFloat(value.y) - minimumY) / newDifferenceY) - top_8);\n }\n }\n else {\n for (var k = 0; k < stampObjects.length; k++) {\n var value = stampObjects[parseInt(k.toString(), 10)];\n var path = value.command.toString();\n if (path == \"M\" && k !== 0) {\n isNewValues = k;\n break;\n }\n linePoints.push(((parseFloat(value.x) - minimumX) / newDifferenceX) + left);\n var newX = ((parseFloat(value.y) - minimumY) / newDifferenceY);\n linePoints.push(this.formFieldLoadedDocument.getPage(pageNumber).size[1] - newX - top_8);\n }\n }\n var inkAnnotation = new PdfInkAnnotation([left, top_8, width, height], linePoints);\n inkAnnotation.flags = PdfAnnotationFlag.print;\n var bounds = { x: inkAnnotation.bounds.x, y: (page.size[1] - (inkAnnotation.bounds.y + inkAnnotation.bounds.height)), width: inkAnnotation.bounds.width, height: inkAnnotation.bounds.height };\n inkAnnotation.bounds = bounds;\n inkAnnotation.border.width = 0;\n inkAnnotation.color = inkAnnotation.color;\n linePoints = [];\n if (rotationAngle !== 0) {\n var pathCollection = [];\n for (var t = isNewValues; t < stampObjects.length; t++) {\n var value = stampObjects[parseInt(t.toString(), 10)];\n var path = value.command.toString();\n if (path === \"M\" && t !== isNewValues) {\n pathCollection.push(linePoints);\n linePoints = [];\n }\n linePoints.push(parseFloat(value.x));\n linePoints.push(parseFloat(value.y));\n }\n if (linePoints.length > 0) {\n pathCollection.push(linePoints);\n }\n for (var w = 0; w < pathCollection.length; w++) {\n var pointsCollections = pathCollection[parseInt(w.toString(), 10)];\n linePoints = [];\n if (pointsCollections.length > 0) {\n for (var z = 0; z < stampObjects.length; z++) {\n var value = stampObjects[parseInt(z.toString(), 10)];\n linePoints.push(((parseFloat(value.x) - minimumX) / newDifferenceX) + left);\n linePoints.push(this.formFieldLoadedDocument.getPage(pageNumber).size[1] - ((parseFloat(value.y) - minimumY) / newDifferenceY) - top_8);\n }\n inkAnnotation.inkPointsCollection.push(linePoints);\n }\n linePoints = [];\n }\n }\n else {\n for (var r = 0; r < stampObjects.length; r++) {\n var value = stampObjects[parseInt(r.toString(), 10)];\n var path = value.command.toString();\n if (path == \"M\" && r !== 0) {\n inkAnnotation.inkPointsCollection.push(linePoints);\n linePoints = [];\n }\n linePoints.push(((parseFloat(value.x) - minimumX) / newDifferenceX) + left);\n var newX = ((parseFloat(value.y) - minimumY) / newDifferenceY);\n linePoints.push(this.formFieldLoadedDocument.getPage(pageNumber).size[1] - newX - top_8);\n }\n if (linePoints.length > 0) {\n inkAnnotation.inkPointsCollection.push(linePoints);\n }\n }\n inkAnnotation._dictionary.set(\"T\", currentFieldName);\n inkAnnotation.setAppearance(true);\n this.formFieldLoadedDocument.getPage(pageNumber).annotations.add(inkAnnotation);\n }\n };\n FormFieldsBase.prototype.addSigntureFieldItems = function (field) {\n var page = field.page;\n if (field instanceof PdfSignatureField) {\n var signatureField = field;\n if (signatureField.itemsCount > 0) {\n for (var i = 0; i < signatureField.itemsCount; i++) {\n if (!isNullOrUndefined(signatureField.itemAt(i).page)) {\n var item = signatureField.itemAt(i).page;\n var j = 0;\n for (var k = 0; k < this.formFieldLoadedDocument.pageCount; k++) {\n if (item == this.formFieldLoadedDocument.getPage(j)) {\n break;\n }\n j++;\n }\n this.addSignatureField(signatureField, j, signatureField.itemAt(i).bounds);\n }\n }\n }\n }\n };\n FormFieldsBase.prototype.addSignatureField = function (signatureField, index, bounds) {\n var formFields = new PdfRenderedFields();\n formFields.Name = \"SignatureField\";\n formFields.ToolTip = signatureField.toolTip;\n formFields.FieldName = signatureField.name.replace(/[^0-9a-zA-Z]+/g, \"\");\n formFields.ActualFieldName = signatureField.name;\n if (!bounds.IsEmpty) {\n formFields.LineBounds = { X: bounds.x, Y: bounds.y, Width: bounds.width, Height: bounds.height };\n }\n else {\n formFields.LineBounds = { X: signatureField.bounds.x, Y: signatureField.bounds.y, Width: signatureField.bounds.width, Height: signatureField.bounds.height };\n }\n formFields.PageIndex = index;\n formFields.TabIndex = signatureField.tabIndex;\n formFields.BorderWidth = signatureField.border.width;\n formFields.BorderStyle = signatureField.border.style;\n formFields.IsReadonly = signatureField.readOnly;\n formFields.IsRequired = signatureField.required;\n formFields.Visible = signatureField.visibility;\n formFields.IsSignatureField = true;\n formFields.Rotation = signatureField.rotationAngle;\n formFields.RotationAngle = this.GetRotateAngle(signatureField.page.rotation);\n var initialField = signatureField._dictionary.get(\"InitialField\");\n if (!isNullOrUndefined(initialField)) {\n formFields.IsInitialField = initialField;\n }\n this.PdfRenderedFormFields.push(formFields);\n };\n FormFieldsBase.prototype.retrieveInkAnnotation = function (loadedDocument) {\n var count = 1;\n for (var i = 0; i < loadedDocument.pageCount; i++) {\n var loadedPage = loadedDocument.getPage(i);\n var oldPageAnnotations = loadedPage.annotations;\n var totalAnnotation = parseInt(oldPageAnnotations.count.toString(), 10);\n for (var j = 0; j < totalAnnotation; j++) {\n var annotation = oldPageAnnotations.at(j);\n if (annotation instanceof PdfInkAnnotation) {\n var outputstring = \"\";\n var inkAnnot = annotation;\n var inkListX = [];\n var inkListY = [];\n if (inkAnnot._dictionary.has(\"T\") && !inkAnnot._dictionary.has(\"NM\")) {\n var annotColor = inkAnnot.color;\n if (!isNullOrUndefined(inkAnnot.inkPointsCollection)) {\n for (var m = 0; m < inkAnnot.inkPointsCollection.length; m++) {\n var inkList = inkAnnot.inkPointsCollection[parseInt(m.toString(), 10)];\n for (var k = 0; k < inkList.length; k += 2) {\n var x = void 0;\n var y = void 0;\n if (loadedPage.rotation === PdfRotationAngle.angle90) {\n x = inkList[k + 1];\n y = inkList[parseInt(k.toString(), 10)];\n }\n else if (loadedPage.rotation === PdfRotationAngle.angle180) {\n x = loadedPage.size[0] - inkList[k + 1];\n y = inkList[k + 1];\n }\n else if (loadedPage.rotation === PdfRotationAngle.angle270) {\n x = loadedPage.size[0] - inkList[k + 1];\n y = loadedPage.size[1] - inkList[parseInt(k.toString(), 10)];\n }\n else {\n x = inkList[parseInt(k.toString(), 10)];\n y = loadedPage.size[1] - inkList[k + 1];\n }\n if (k == 0) {\n outputstring += \"M\" + x + \",\" + y + \" \";\n }\n else {\n outputstring += \"L\" + x + \",\" + y + \" \";\n }\n inkListX.push(x);\n inkListY.push(y);\n }\n }\n }\n var formFields = new PdfRenderedFields();\n if (inkAnnot._dictionary.has(\"T\")) {\n formFields.FieldName = inkAnnot._dictionary.get(\"T\");\n }\n formFields.FieldName = formFields.FieldName + \"_\" + count;\n formFields.Name = \"ink\";\n var rotationAngle = loadedPage.rotation;\n var isFieldRotated = false;\n if (annotation.rotationAngle !== 0) {\n isFieldRotated = true;\n }\n var bounds = { X: inkAnnot.bounds.x, Y: inkAnnot.bounds.y, Width: inkAnnot.bounds.width, Height: inkAnnot.bounds.height };\n formFields.LineBounds = this.getBounds(bounds, loadedPage.size[1], loadedPage.size[0], rotationAngle, !isFieldRotated);\n formFields.Value = outputstring;\n formFields.PageIndex = i;\n formFields.BorderColor = [inkAnnot.color[0], inkAnnot.color[1], inkAnnot.color[2]];\n formFields.Rotation = annotation.rotationAngle;\n this.PdfRenderedFormFields.push(formFields);\n count++;\n }\n }\n else if (annotation instanceof PdfFreeTextAnnotation) {\n var inkAnnot = annotation;\n if (inkAnnot._dictionary.has(\"T\") && !inkAnnot._dictionary.has(\"NM\") && !inkAnnot._dictionary.has(\"M\")) {\n var formFields = new PdfRenderedFields();\n formFields.FieldName = inkAnnot._dictionary.get(\"T\") + \"_\" + count;\n var bounds = { X: inkAnnot.bounds.x, Y: inkAnnot.bounds.y, Width: inkAnnot.bounds.width, Height: inkAnnot.bounds.height };\n formFields.LineBounds = bounds;\n formFields.Name = \"SignatureText\";\n formFields.FontFamily = this.getFontFamilyString(inkAnnot.font._fontFamily);\n formFields.FontSize = this.convertPointtoPixel(inkAnnot.font.size);\n formFields.Value = inkAnnot.text;\n formFields.PageIndex = i;\n formFields.BorderColor = inkAnnot.borderColor;\n this.PdfRenderedFormFields.push(formFields);\n count++;\n }\n }\n else if (annotation instanceof PdfRubberStampAnnotation) {\n var stampAnnotation = annotation;\n if (stampAnnotation._dictionary.has(\"T\") && !stampAnnotation._dictionary.has(\"NM\") && !stampAnnotation._dictionary.has(\"M\")) {\n var formFields = new PdfRenderedFields();\n formFields.FieldName = stampAnnotation._dictionary.get(\"T\") + \"_\" + count;\n var dictionary = annotation._dictionary.get(\"AP\");\n var pageRender = new PageRenderer(this.pdfViewer, this.pdfViewerBase);\n if (isNullOrUndefined(dictionary)) {\n var pdfReference = annotation._dictionary.get(\"AP\");\n if (!isNullOrUndefined(pdfReference) && !isNullOrUndefined(pdfReference.dictionary) && pdfReference.dictionary.has(\"N\")) {\n var ap_Dictionary = pdfReference.dictionary;\n if (!isNullOrUndefined(ap_Dictionary)) {\n pageRender.findStampImage(annotation);\n }\n }\n }\n else if (dictionary.has(\"N\")) {\n pageRender.findStampImage(annotation);\n }\n formFields.LineBounds = { X: stampAnnotation.bounds.x, Y: stampAnnotation.bounds.y, Width: stampAnnotation.bounds.width, Height: stampAnnotation.bounds.height };\n formFields.Value = pageRender.Imagedata;\n formFields.Name = \"SignatureImage\";\n formFields.PageIndex = i;\n this.PdfRenderedFormFields.push(formFields);\n count++;\n }\n }\n }\n }\n };\n FormFieldsBase.prototype.getFontFamilyString = function (fontFamily) {\n switch (fontFamily) {\n case PdfFontFamily.helvetica:\n return 'Helvetica';\n case PdfFontFamily.timesRoman:\n return 'TimesRoman';\n case PdfFontFamily.courier:\n return 'Courier';\n case PdfFontFamily.symbol:\n return 'Symbol';\n case PdfFontFamily.zapfDingbats:\n return 'ZapfDingbats';\n default:\n return 'Helvetica';\n }\n };\n return FormFieldsBase;\n}());\nexport { FormFieldsBase };\n/**\n * @private\n */\nvar PdfRenderedFields = /** @class */ (function () {\n function PdfRenderedFields() {\n this.ActualFieldName = null;\n this.FontColor = { R: 0, G: 0, B: 0 };\n this.BackColor = { R: 0, G: 0, B: 0 };\n this.BorderColor = { R: 0, G: 0, B: 0 };\n this.CheckBoxGroupName = null;\n this.Alignment = 0;\n this.BorderStyle = 0;\n this.BorderWidth = 0;\n this.CheckBoxGroupName = null;\n this.CheckBoxIndex = null;\n this.FieldName = null;\n this.Font = null;\n this.FontFamily = null;\n this.FontSize = 0;\n this.FontStyle = 0;\n this.GroupName = null;\n this.InsertSpaces = false;\n this.IsAutoSize = false,\n this.IsInitialField = false;\n this.IsReadonly = false;\n this.IsRequired = false;\n this.IsSignatureField = false;\n this.IsTransparent = false;\n this.MaxLength = 0;\n this.MultiSelect = false;\n this.Multiline = false;\n this.Name = null;\n this.PageIndex = 0;\n this.Rotation = 0;\n this.RotationAngle = 0;\n this.Selected = false;\n this.SelectedList = [];\n this.SelectedValue = null;\n this.TabIndex = 0;\n this.Text = null;\n this.TextList = [];\n this.ToolTip = null;\n this.Value = null;\n this.Visible = 0;\n }\n return PdfRenderedFields;\n}());\nexport { PdfRenderedFields };\n","import { isNullOrUndefined } from \"@syncfusion/ej2-base\";\nimport { FormFieldsBase } from './index';\nimport { PdfAnnotationFlag, PdfInkAnnotation, PdfPen, _PdfPath } from \"@syncfusion/ej2-pdf\";\nimport { Rect } from '@syncfusion/ej2-drawings';\n/**\n * SignatureBase\n *\n * @hidden\n */\nvar SignatureBase = /** @class */ (function () {\n function SignatureBase(pdfViewer, pdfViewerBase) {\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @private\n * @param jsonObject\n * @param loadedDocument\n */\n SignatureBase.prototype.saveSignatureData = function (jsonObject, loadedDocument) {\n var formfields = new FormFieldsBase(this.pdfViewer, this.pdfViewerBase);\n var signatureDetails = JSON.parse(jsonObject.signatureData);\n if (!isNullOrUndefined(signatureDetails)) {\n for (var i = 0; i < signatureDetails.length; i++) {\n var pageData = signatureDetails[parseInt(i.toString(), 10)];\n // Save signature as data\n if (pageData.length > 0) {\n for (var p = 0; p < pageData.length; p++) {\n var data = pageData[parseInt(p.toString(), 10)];\n var signatureType = data.hasOwnProperty(\"shapeAnnotationType\") && data[\"shapeAnnotationType\"] !== null\n ? data[\"shapeAnnotationType\"].toString()\n : null;\n if (signatureType !== null && signatureType === 'SignatureText') {\n formfields.drawFreeTextAnnotations(data, loadedDocument, true);\n }\n else if (signatureType !== null && signatureType === 'SignatureImage') {\n formfields.drawImage(data, loadedDocument, true);\n }\n else {\n var pageNumber = data.pageIndex;\n var page = loadedDocument.getPage(pageNumber);\n var rotateAngle = this.getRotateAngle(page.rotation.toString());\n var size = page.size;\n var pageWidth = size[0];\n var pageHeight = size[1];\n if (rotateAngle == 1 || rotateAngle == 3) {\n pageHeight = size[0];\n pageWidth = size[1];\n }\n else {\n pageHeight = size[0];\n pageWidth = size[1];\n }\n var bounds = JSON.parse(data.bounds);\n bounds = this.getSignatureBounds(bounds, this.convertPointToPixel(pageHeight), this.convertPointToPixel(pageWidth), rotateAngle);\n var stampObjects = JSON.parse(data.data);\n var left = this.convertPixelToPoint(bounds.left);\n var top_1 = this.convertPixelToPoint(bounds.top);\n var width = this.convertPixelToPoint(bounds.width);\n var height = this.convertPixelToPoint(bounds.height);\n var opacity = data.opacity;\n var thickness = data.thickness;\n var strokeColor = JSON.parse(data.strokeColor);\n var color = [strokeColor.r, strokeColor.g, strokeColor.b];\n var minimumX = -1;\n var minimumY = -1;\n var maximumX = -1;\n var maximumY = -1;\n for (var p_1 = 0; p_1 < stampObjects.length; p_1++) {\n var value = stampObjects[parseInt(p_1.toString(), 10)];\n if (minimumX == -1) {\n minimumX = value.x;\n minimumY = value.y;\n maximumX = value.x;\n maximumY = value.x;\n }\n else {\n var point1 = value.x;\n var point2 = value.y;\n if (minimumX >= point1) {\n minimumX = point1;\n }\n if (minimumY >= point2) {\n minimumY = point2;\n }\n if (maximumX <= point1) {\n maximumX = point1;\n }\n if (maximumY <= point2) {\n maximumY = point2;\n }\n }\n }\n var newDifferenceX = maximumX - minimumX;\n var newDifferenceY = maximumY - minimumY;\n var newPoint1 = [0, 0];\n var loadedPage = loadedDocument.getPage(pageNumber);\n var graphics = null;\n if (loadedPage != null) {\n graphics = loadedPage.graphics;\n graphics.save();\n graphics.setTransparency(opacity);\n graphics.translateTransform(left, top_1);\n }\n var colors = new PdfPen(color, width);\n colors._width = thickness;\n if (stampObjects.length > 0) {\n var dataPath = new _PdfPath();\n for (var j = 0; j < stampObjects.length; j++) {\n var value = stampObjects[parseInt(j.toString(), 10)];\n var path = value.command.toString();\n var differenceX = ((newDifferenceX) / width);\n var differenceY = ((newDifferenceY) / height);\n var newX = ((value.x - minimumX) / differenceX);\n var currentY = ((value.y - minimumY) / differenceY);\n if (path == \"M\") {\n if (j != 0) {\n page.graphics._drawPath(dataPath, colors, null);\n dataPath = new _PdfPath();\n }\n newPoint1 = [newX, currentY];\n if (!isNullOrUndefined(graphics)) {\n dataPath._addLine(newX, currentY, newX, currentY);\n }\n }\n else if (path = 'L') {\n var newPoint2 = [newX, currentY];\n if (graphics != null) {\n // Removed this line to fix the issue EJ2-60295\n // graphics.DrawLine(colors, newpoint1, newpoint2);\n dataPath._addLine(newPoint1[0], newPoint1[1], newPoint2[0], newPoint2[1]);\n }\n newPoint1 = newPoint2;\n }\n if (j == stampObjects.length - 1) {\n page.graphics._drawPath(dataPath, colors, null);\n }\n }\n }\n if (graphics != null) {\n graphics.restore();\n }\n }\n }\n }\n }\n }\n };\n /**\n * getSignatureBounds\n */\n SignatureBase.prototype.getSignatureBounds = function (bounds, pageHeight, pageWidth, rotateAngle) {\n var bound;\n if (rotateAngle == 0) {\n bound = { \"left\": bounds.left, \"top\": bounds.top, \"width\": bounds.width, \"height\": bounds.height };\n }\n else if (rotateAngle == 1) {\n bound = { \"left\": (pageWidth - bounds.top - bounds.height), \"top\": bounds.left, \"width\": bounds.height, \"height\": bounds.width };\n }\n else if (rotateAngle == 2) {\n bound = { \"left\": (pageWidth - bounds.left - bounds.width), \"top\": (pageHeight - bounds.top - bounds.height), \"width\": bounds.width, \"height\": bounds.height };\n }\n else if (rotateAngle == 3) {\n bound = { \"left\": bounds.top, \"top\": (pageHeight - bounds.width), \"width\": bounds.height, \"height\": bounds.width };\n }\n return bound;\n };\n /**\n * @private\n * @param jsonObject\n * @param loadedDocument\n */\n SignatureBase.prototype.saveSignatureAsAnnotatation = function (jsonObject, loadedDocument) {\n var formfields = new FormFieldsBase(this.pdfViewer, this.pdfViewerBase);\n var signatureDetails = JSON.parse(jsonObject.signatureData);\n if (!isNullOrUndefined(signatureDetails)) {\n for (var i = 0; i < signatureDetails.length; i++) {\n var pageData = signatureDetails[parseInt(i.toString(), 10)];\n // Save signature as data\n if (pageData.length > 0) {\n for (var p = 0; p < pageData.length; p++) {\n var formfields_1 = new FormFieldsBase(this.pdfViewer, this.pdfViewerBase);\n var signatureAnnotation = pageData[parseInt(p.toString(), 10)];\n var signatureType = signatureAnnotation.hasOwnProperty(\"shapeAnnotationType\") && signatureAnnotation[\"shapeAnnotationType\"] !== null\n ? signatureAnnotation[\"shapeAnnotationType\"].toString()\n : null;\n if (signatureType !== null && signatureType === 'SignatureText') {\n formfields_1.drawFreeTextAnnotations(signatureAnnotation, loadedDocument, false);\n }\n else if (signatureType !== null && signatureType === 'SignatureImage') {\n formfields_1.drawImage(signatureAnnotation, loadedDocument, false);\n }\n else {\n var bounds = JSON.parse(signatureAnnotation.bounds);\n var stampObjects = JSON.parse(signatureAnnotation.data);\n var left = this.convertPixelToPoint(bounds.left);\n var top_2 = this.convertPixelToPoint(bounds.top);\n var width = this.convertPixelToPoint(bounds.width);\n var height = this.convertPixelToPoint(bounds.height);\n var pageNumber = signatureAnnotation.pageIndex;\n var page = loadedDocument.getPage(pageNumber);\n // let cropX = 0;\n // let cropY = 0;\n // if(page.cropBox.x)\n var opacity = signatureAnnotation.opacity;\n var thickness = signatureAnnotation.thickness;\n var strokeColor = JSON.parse(signatureAnnotation.strokeColor);\n var color = [strokeColor.r, strokeColor.g, strokeColor.b];\n var minimumX = -1;\n var minimumY = -1;\n var maximumX = -1;\n var maximumY = -1;\n for (var p_2 = 0; p_2 < stampObjects.length; p_2++) {\n var value = stampObjects[parseInt(p_2.toString(), 10)];\n if (minimumX == -1) {\n minimumX = value.x;\n minimumY = value.y;\n maximumX = value.x;\n maximumY = value.x;\n }\n else {\n var point1 = value.x;\n var point2 = value.y;\n if (minimumX >= point1) {\n minimumX = point1;\n }\n if (minimumY >= point2) {\n minimumY = point2;\n }\n if (maximumX <= point1) {\n maximumX = point1;\n }\n if (maximumY <= point2) {\n maximumY = point2;\n }\n }\n }\n var newDifferenceX = maximumX - minimumX;\n var newDifferenceY = maximumY - minimumY;\n var linePoints = [];\n var isNewValues = 0;\n for (var j = 0; j < stampObjects.length; j++) {\n var element = stampObjects[parseInt(j.toString(), 10)];\n var value = stampObjects[parseInt(j.toString(), 10)];\n var path = value.command.toString();\n if (path == \"M\" && j !== 0) {\n isNewValues = j;\n break;\n }\n var differenceX = ((newDifferenceX) / width);\n var differenceY = ((newDifferenceY) / height);\n linePoints.push(((value.x - minimumX) / differenceX) + left);\n var newX = ((value.y - minimumY) / differenceY);\n linePoints.push(loadedDocument.getPage(pageNumber).size[1] - newX - top_2);\n }\n var highestY = 1;\n for (var k = 0; k < linePoints.length - 1; k++) {\n if (linePoints[parseInt(k.toString(), 10)] > highestY) {\n highestY = linePoints[parseInt(k.toString(), 10)];\n }\n }\n var rectangle = new Rect(left, top_2, width, height);\n var inkAnnotation = new PdfInkAnnotation([rectangle.x, rectangle.y, rectangle.width, rectangle.height], linePoints);\n var bound = new Rect(inkAnnotation.bounds.x, inkAnnotation.bounds.y, inkAnnotation.bounds.width, inkAnnotation.bounds.height);\n inkAnnotation.bounds = bound;\n inkAnnotation.color = color;\n linePoints = [];\n for (var i_1 = isNewValues; i_1 < stampObjects.length; i_1++) {\n var val = stampObjects[parseInt(i_1.toString(), 10)];\n var path = val[\"command\"].toString();\n if (path === \"M\" && i_1 !== isNewValues) {\n inkAnnotation.inkPointsCollection.push(linePoints);\n linePoints = [];\n }\n var differenceX = newDifferenceX / width;\n var differenceY = newDifferenceY / height;\n linePoints.push((parseFloat(val[\"x\"].toString()) - minimumX) / differenceX + left);\n var newX = (parseFloat(val[\"y\"].toString()) - minimumY) / differenceY;\n linePoints.push(loadedDocument.getPage(pageNumber).size[1] - newX - top_2);\n }\n if (linePoints.length > 0) {\n inkAnnotation.inkPointsCollection.push(linePoints);\n }\n inkAnnotation.border.width = thickness;\n inkAnnotation.opacity = opacity;\n inkAnnotation._dictionary.set('NM', signatureAnnotation.signatureName.toString());\n inkAnnotation._annotFlags = PdfAnnotationFlag.print;\n if (signatureAnnotation.hasOwnProperty('author') && signatureAnnotation['author'] !== null) {\n var author = signatureAnnotation['author'].toString();\n if (author !== 'Guest') {\n inkAnnotation.author = author;\n }\n }\n page.annotations.add(inkAnnotation);\n }\n }\n }\n }\n }\n };\n SignatureBase.prototype.convertPointToPixel = function (number) {\n return number * 96 / 72;\n };\n SignatureBase.prototype.convertPixelToPoint = function (value) {\n return (value * (72 / 96));\n };\n SignatureBase.prototype.getRotateAngle = function (angleString) {\n var angle = 0;\n switch (angleString) {\n case 'RotateAngle0':\n angle = 0;\n break;\n case 'RotateAngle180':\n angle = 2;\n break;\n case 'RotateAngle270':\n angle = 3;\n break;\n case 'RotateAngle90':\n angle = 1;\n break;\n }\n return angle;\n };\n return SignatureBase;\n}());\nexport { SignatureBase };\n","/**\n * @hidden\n */\nvar BookmarkBase = /** @class */ (function () {\n function BookmarkBase() {\n this.HasChild = false;\n }\n return BookmarkBase;\n}());\nexport { BookmarkBase };\n/**\n * @hidden\n */\nvar BookmarkDestination = /** @class */ (function () {\n function BookmarkDestination() {\n // constructor\n }\n return BookmarkDestination;\n}());\nexport { BookmarkDestination };\n/**\n * @hidden\n */\nvar BookmarkStyles = /** @class */ (function () {\n function BookmarkStyles() {\n // constructor\n }\n return BookmarkStyles;\n}());\nexport { BookmarkStyles };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _PdfBaseStream, _PdfStream } from './base-stream';\nvar _PdfDecodeStream = /** @class */ (function (_super) {\n __extends(_PdfDecodeStream, _super);\n function _PdfDecodeStream(maybeMinBufferLength) {\n var _this = _super.call(this) || this;\n _this._rawMinBufferLength = maybeMinBufferLength || 0;\n _this.offset = 0;\n _this.bufferLength = 0;\n _this.eof = false;\n _this.buffer = new Uint8Array(0);\n _this.minBufferLength = 512;\n if (maybeMinBufferLength) {\n while (_this.minBufferLength < maybeMinBufferLength) {\n _this.minBufferLength *= 2;\n }\n }\n return _this;\n }\n Object.defineProperty(_PdfDecodeStream.prototype, \"isEmpty\", {\n get: function () {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n return this.bufferLength === 0;\n },\n enumerable: true,\n configurable: true\n });\n _PdfDecodeStream.prototype.ensureBuffer = function (requested) {\n var buffer = this.buffer;\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n var size = this.minBufferLength;\n while (size < requested) {\n size *= 2;\n }\n var buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n this.buffer = buffer2;\n return this.buffer;\n };\n _PdfDecodeStream.prototype.getByte = function () {\n var position = this.offset;\n while (this.bufferLength <= position) {\n if (this.eof) {\n return -1;\n }\n this.readBlock();\n }\n return this.buffer[this.offset++];\n };\n _PdfDecodeStream.prototype.getBytes = function (length) {\n var position = this.offset;\n var end;\n if (length) {\n this.ensureBuffer(position + length);\n end = position + length;\n while (!this.eof && this.bufferLength < end) {\n this.readBlock();\n }\n var bufEnd = this.bufferLength;\n if (end > bufEnd) {\n end = bufEnd;\n }\n }\n else {\n while (!this.eof) {\n this.readBlock();\n }\n end = this.bufferLength;\n }\n this.offset = end;\n return this.buffer.subarray(position, end);\n };\n _PdfDecodeStream.prototype.reset = function () {\n this.offset = 0;\n };\n _PdfDecodeStream.prototype.makeSubStream = function (start, length, dictionary) {\n if (length === undefined) {\n while (!this.eof) {\n this.readBlock();\n }\n }\n else {\n var end = start + length;\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n }\n return new _PdfStream(this.buffer, dictionary, start, length);\n };\n _PdfDecodeStream.prototype.getBaseStreams = function () {\n return this.stream ? this.stream.getBaseStreams() : null;\n };\n _PdfDecodeStream.prototype.moveStart = function () {\n throw new Error('Invalid call from decode stream');\n };\n _PdfDecodeStream.prototype.getByteRange = function (begin, end) {\n throw new Error('Invalid call from decode stream. begin: ' + begin + ', end: ' + end);\n };\n _PdfDecodeStream.prototype.readBlock = function () {\n throw new Error('Invalid call from decode stream');\n };\n return _PdfDecodeStream;\n}(_PdfBaseStream));\nexport { _PdfDecodeStream };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _PdfDecodeStream } from './decode-stream';\nimport { _PdfDictionary } from './pdf-primitives';\nimport { FormatError } from './utils';\nvar PdfPredictorStream = /** @class */ (function (_super) {\n __extends(PdfPredictorStream, _super);\n function PdfPredictorStream(stream, maybeLength, params) {\n var _this = _super.call(this, maybeLength) || this;\n if (!(params instanceof _PdfDictionary)) {\n return stream;\n }\n var predictor = (_this.predictor = params.get('Predictor') || 1);\n if (predictor <= 1) {\n return stream;\n }\n if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n throw new FormatError(\"Unsupported predictor: \" + predictor);\n }\n if (predictor === 2) {\n _this.readBlock = _this.readBlockTiff;\n }\n else {\n _this.readBlock = _this.readBlockPng;\n }\n _this.stream = stream;\n _this.dictionary = stream.dictionary;\n var colors = (_this.colors = params.get('Colors') || 1);\n var bits = (_this.bits = params.get('BPC', 'BitsPerComponent') || 8);\n var columns = (_this.columns = params.get('Columns') || 1);\n _this.pixBytes = (colors * bits + 7) >> 3;\n _this.rowBytes = (columns * colors * bits + 7) >> 3;\n return _this;\n }\n PdfPredictorStream.prototype.readBlockTiff = function () {\n var rowBytes = this.rowBytes;\n var bufferLength = this.bufferLength;\n var buffer = this.ensureBuffer(bufferLength + rowBytes);\n var bits = this.bits;\n var colors = this.colors;\n var rawBytes = this.stream.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n var inbuf = 0;\n var outbuf = 0;\n var inbits = 0;\n var outbits = 0;\n var position = bufferLength;\n var i;\n if (bits === 1 && colors === 1) {\n for (i = 0; i < rowBytes; ++i) {\n var c = rawBytes[i] ^ inbuf; // eslint-disable-line\n c ^= c >> 1;\n c ^= c >> 2;\n c ^= c >> 4;\n inbuf = (c & 1) << 7;\n buffer[position++] = c;\n }\n }\n else if (bits === 8) {\n for (i = 0; i < colors; ++i) {\n buffer[position++] = rawBytes[i]; // eslint-disable-line\n }\n for (; i < rowBytes; ++i) {\n buffer[position] = buffer[position - colors] + rawBytes[i]; // eslint-disable-line\n position++;\n }\n }\n else if (bits === 16) {\n var bytesPerPixel = colors * 2;\n for (i = 0; i < bytesPerPixel; ++i) {\n buffer[position++] = rawBytes[i]; // eslint-disable-line\n }\n for (; i < rowBytes; i += 2) {\n var sum = ((rawBytes[i] & 0xff) << 8) + // eslint-disable-line\n (rawBytes[i + 1] & 0xff) +\n ((buffer[position - bytesPerPixel] & 0xff) << 8) +\n (buffer[position - bytesPerPixel + 1] & 0xff);\n buffer[position++] = (sum >> 8) & 0xff;\n buffer[position++] = sum & 0xff;\n }\n }\n else {\n var compArray = new Uint8Array(colors + 1);\n var bitMask = (1 << bits) - 1;\n var j = 0;\n var k = bufferLength;\n var columns = this.columns;\n for (i = 0; i < columns; ++i) {\n for (var kk = 0; kk < colors; ++kk) {\n if (inbits < bits) {\n inbuf = (inbuf << 8) | (rawBytes[j++] & 0xff);\n inbits += 8;\n }\n compArray[kk] = (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask; // eslint-disable-line\n inbits -= bits;\n outbuf = (outbuf << bits) | compArray[kk]; // eslint-disable-line\n outbits += bits;\n if (outbits >= 8) {\n buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\n outbits -= 8;\n }\n }\n }\n if (outbits > 0) {\n buffer[k++] = (outbuf << (8 - outbits)) + (inbuf & ((1 << (8 - outbits)) - 1));\n }\n }\n this.bufferLength += rowBytes;\n };\n PdfPredictorStream.prototype.readBlockPng = function () {\n var rowBytes = this.rowBytes;\n var pixBytes = this.pixBytes;\n var predictor = this.stream.getByte();\n var rawBytes = this.stream.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n var bufferLength = this.bufferLength;\n var buffer = this.ensureBuffer(bufferLength + rowBytes);\n var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n if (prevRow.length === 0) {\n prevRow = new Uint8Array(rowBytes);\n }\n var i;\n var j = bufferLength;\n var up;\n var c;\n switch (predictor) {\n case 0:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = rawBytes[i]; // eslint-disable-line\n }\n break;\n case 1:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = rawBytes[i]; // eslint-disable-line\n }\n for (; i < rowBytes; ++i) {\n buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff; // eslint-disable-line\n j++;\n }\n break;\n case 2:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff; // eslint-disable-line\n }\n break;\n case 3:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = (prevRow[i] >> 1) + rawBytes[i]; // eslint-disable-line\n }\n for (; i < rowBytes; ++i) {\n buffer[j] = (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff; // eslint-disable-line\n j++;\n }\n break;\n case 4:\n for (i = 0; i < pixBytes; ++i) {\n up = prevRow[i]; // eslint-disable-line\n c = rawBytes[i]; // eslint-disable-line\n buffer[j++] = up + c;\n }\n for (; i < rowBytes; ++i) {\n up = prevRow[i]; // eslint-disable-line\n var upLeft = prevRow[i - pixBytes];\n var left = buffer[j - pixBytes];\n var p = left + up - upLeft;\n var pa = p - left;\n if (pa < 0) {\n pa = -pa;\n }\n var pb = p - up;\n if (pb < 0) {\n pb = -pb;\n }\n var pc = p - upLeft;\n if (pc < 0) {\n pc = -pc;\n }\n c = rawBytes[i]; // eslint-disable-line\n if (pa <= pb && pa <= pc) {\n buffer[j++] = left + c;\n }\n else if (pb <= pc) {\n buffer[j++] = up + c;\n }\n else {\n buffer[j++] = upLeft + c;\n }\n }\n break;\n default:\n throw new FormatError(\"Unsupported predictor: \" + predictor);\n }\n this.bufferLength += rowBytes;\n };\n return PdfPredictorStream;\n}(_PdfDecodeStream));\nexport { PdfPredictorStream };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _PdfDecodeStream } from './decode-stream';\nimport { FormatError } from './utils';\nvar codeLenCodeMap = new Int32Array([\n 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15\n]);\nvar lengthDecode = new Int32Array([\n 0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102\n]);\nvar distDecode = new Int32Array([\n 0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001\n]);\nvar fixedLitCodeTab = [\n new Int32Array([\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff\n ]),\n 9\n];\nvar fixedDistCodeTab = [\n new Int32Array([\n 0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000\n ]),\n 5\n];\nvar _PdfFlateStream = /** @class */ (function (_super) {\n __extends(_PdfFlateStream, _super);\n function _PdfFlateStream(stream, maybeLength) {\n var _this = _super.call(this, maybeLength) || this;\n _this.stream = stream;\n _this.dictionary = stream.dictionary;\n var cmf = stream.getByte();\n var flg = stream.getByte();\n if ((cmf & 0x0f) !== 0x08) {\n throw new FormatError(\"Unknown compression method in flate stream: \" + cmf + \", \" + flg);\n }\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new FormatError(\"Bad flag check in flate stream: \" + cmf + \", \" + flg);\n }\n if (flg & 0x20) {\n throw new FormatError(\"Bad flag bit set in flate stream: \" + cmf + \", \" + flg);\n }\n _this.codeSize = 0;\n _this.codeBuffer = 0;\n return _this;\n }\n _PdfFlateStream.prototype.getBits = function (bits) {\n var stream = this.stream;\n var codeSize = this.codeSize;\n var codeBuffer = this.codeBuffer;\n var b;\n while (codeSize < bits) {\n b = stream.getByte();\n codeBuffer |= b << codeSize;\n codeSize += 8;\n }\n b = codeBuffer & ((1 << bits) - 1);\n this.codeBuffer = codeBuffer >> bits;\n this.codeSize = codeSize -= bits;\n return b;\n };\n _PdfFlateStream.prototype.getCode = function (table) {\n var stream = this.stream;\n var codes = table[0];\n var maxLen = table[1];\n var codeSize = this.codeSize;\n var codeBuffer = this.codeBuffer;\n var b;\n while (codeSize < maxLen) {\n b = stream.getByte();\n codeBuffer |= b << codeSize;\n codeSize += 8;\n }\n var code = codes[codeBuffer & ((1 << maxLen) - 1)];\n var codeLen = code >> 16;\n var codeVal = code & 0xffff;\n if (!(codeLen < 1 || codeSize < codeLen)) {\n this.codeBuffer = codeBuffer >> codeLen;\n this.codeSize = codeSize - codeLen;\n }\n return codeVal;\n };\n _PdfFlateStream.prototype.generateHuffmanTable = function (lengths) {\n var n = lengths.length;\n var maximumLength = 0;\n var i;\n for (i = 0; i < n; ++i) {\n if (lengths[i] > maximumLength) { // eslint-disable-line\n maximumLength = lengths[i]; // eslint-disable-line\n }\n }\n var size = 1 << maximumLength;\n var codes = new Int32Array(size);\n for (var len = 1, code = 0, skip = 2; len <= maximumLength; ++len, code <<= 1, skip <<= 1) {\n for (var val = 0; val < n; ++val) {\n if (lengths[val] === len) { // eslint-disable-line\n var code2 = 0;\n var t = code;\n for (i = 0; i < len; ++i) {\n code2 = (code2 << 1) | (t & 1);\n t >>= 1;\n }\n for (i = code2; i < size; i += skip) {\n codes[i] = (len << 16) | val; // eslint-disable-line\n }\n ++code;\n }\n }\n }\n return [codes, maximumLength];\n };\n _PdfFlateStream.prototype.readBlock = function () {\n var buffer;\n var length;\n var stream = this.stream;\n var hdr = this.getBits(3);\n if (hdr & 1) {\n this.eof = true;\n }\n hdr >>= 1;\n if (hdr === 0) {\n var b = stream.getByte();\n var blockLen = b;\n b = stream.getByte();\n blockLen |= b << 8;\n b = stream.getByte();\n var check = b;\n b = stream.getByte();\n check |= b << 8;\n if (!(check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0))) {\n this.codeBuffer = 0;\n this.codeSize = 0;\n var bufferLength = this.bufferLength;\n var end = bufferLength + blockLen;\n buffer = this.ensureBuffer(end);\n this.bufferLength = end;\n if (blockLen === 0) {\n if (stream.peekByte() === -1) {\n this.eof = true;\n }\n }\n else {\n var block = stream.getBytes(blockLen);\n buffer.set(block, bufferLength);\n if (block.length < blockLen) {\n this.eof = true;\n }\n }\n return;\n }\n }\n var litCodeTable;\n var distCodeTable;\n if (hdr === 1) {\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n }\n else if (hdr === 2) {\n var numLitCodes = this.getBits(5) + 257;\n var numDistCodes = this.getBits(5) + 1;\n var numCodeLenCodes = this.getBits(4) + 4;\n var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n var i = void 0;\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3); // eslint-disable-line\n }\n var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n length = 0;\n i = 0;\n var codes = numLitCodes + numDistCodes;\n var codeLengths = new Uint8Array(codes);\n var bitsLength = void 0;\n var bitsOffset = void 0;\n var what = void 0;\n while (i < codes) {\n var code = this.getCode(codeLenCodeTab);\n if (code === 16) {\n bitsLength = 2;\n bitsOffset = 3;\n what = length;\n }\n else if (code === 17) {\n bitsLength = 3;\n bitsOffset = 3;\n what = length = 0;\n }\n else if (code === 18) {\n bitsLength = 7;\n bitsOffset = 11;\n what = length = 0;\n }\n else {\n codeLengths[i++] = length = code;\n continue;\n }\n var repeatLength = this.getBits(bitsLength) + bitsOffset;\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));\n distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));\n }\n buffer = this.buffer;\n var limit = buffer ? buffer.length : 0;\n var position = this.bufferLength;\n while (true) { // eslint-disable-line\n var code1 = this.getCode(litCodeTable);\n if (code1 < 256) {\n if (position + 1 >= limit) {\n buffer = this.ensureBuffer(position + 1);\n limit = buffer.length;\n }\n buffer[position++] = code1;\n continue;\n }\n if (code1 === 256) {\n this.bufferLength = position;\n return;\n }\n code1 -= 257;\n code1 = lengthDecode[code1]; // eslint-disable-line\n var code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n length = (code1 & 0xffff) + code2;\n code1 = this.getCode(distCodeTable);\n code1 = distDecode[code1]; // eslint-disable-line\n code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n var dist = (code1 & 0xffff) + code2;\n if (position + length >= limit) {\n buffer = this.ensureBuffer(position + length);\n limit = buffer.length;\n }\n for (var k = 0; k < length; ++k, ++position) {\n buffer[position] = buffer[position - dist]; // eslint-disable-line\n }\n }\n };\n return _PdfFlateStream;\n}(_PdfDecodeStream));\nexport { _PdfFlateStream };\n","import { _PdfCommand, _PdfName, _PdfDictionary, _isCommand, _PdfReference } from './pdf-primitives';\nimport { _isWhiteSpace, FormatError, ParserEndOfFileException } from './utils';\nimport { _PdfNullStream } from './base-stream';\nimport { PdfPredictorStream } from './predictor-stream';\nimport { _PdfFlateStream } from './flate-stream';\nvar maxCacheLength = 1000;\nvar maxNumberLength = 5552;\nvar endOfFile = 'EOF';\nvar specialChars = [\n 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n];\nvar _PdfLexicalOperator = /** @class */ (function () {\n function _PdfLexicalOperator(stream) {\n this.stream = stream;\n this.nextChar();\n this.stringBuffer = [];\n this._hexStringNumber = 0;\n this.beginInlineImagePosition = -1;\n }\n _PdfLexicalOperator.prototype.nextChar = function () {\n return (this.currentChar = this.stream.getByte());\n };\n _PdfLexicalOperator.prototype.peekChar = function () {\n return this.stream.peekByte();\n };\n _PdfLexicalOperator.prototype.getNumber = function () {\n var ch = this.currentChar;\n var eNotation = false;\n var divideBy = 0;\n var sign = 0;\n if (ch === 0x2d) {\n sign = -1;\n ch = this.nextChar();\n if (ch === 0x2d) {\n ch = this.nextChar();\n }\n }\n else if (ch === 0x2b) {\n sign = 1;\n ch = this.nextChar();\n }\n if (ch === 0x0a || ch === 0x0d) {\n do {\n ch = this.nextChar();\n } while (ch === 0x0a || ch === 0x0d);\n }\n if (ch === 0x2e) {\n divideBy = 10;\n ch = this.nextChar();\n }\n if (ch < 0x30 || ch > 0x39) {\n if (_isWhiteSpace(ch) || ch === -1) {\n if (divideBy === 10 && sign === 0) {\n return 0;\n }\n if (divideBy === 0 && sign === -1) {\n return 0;\n }\n }\n throw new FormatError(\"Invalid number: \" + String.fromCharCode(ch) + \" (charCode \" + ch + \")\");\n }\n sign = sign || 1;\n var baseValue = ch - 0x30;\n var powerValue = 0;\n var powerValueSign = 1;\n ch = this.nextChar();\n while (ch >= 0) {\n if (ch >= 0x30 && ch <= 0x39) {\n var currentDigit = ch - 0x30;\n if (eNotation) {\n powerValue = powerValue * 10 + currentDigit;\n }\n else {\n if (divideBy !== 0) {\n divideBy *= 10;\n }\n baseValue = baseValue * 10 + currentDigit;\n }\n }\n else if (ch === 0x2e) {\n if (divideBy === 0) {\n divideBy = 1;\n }\n else {\n break;\n }\n }\n else if (ch === 0x2d) {\n ch = this.nextChar();\n continue;\n }\n else if (ch === 0x45 || ch === 0x65) {\n ch = this.peekChar();\n if (ch === 0x2b || ch === 0x2d) {\n powerValueSign = ch === 0x2d ? -1 : 1;\n this.nextChar();\n }\n else if (ch < 0x30 || ch > 0x39) {\n break;\n }\n eNotation = true;\n }\n else {\n break;\n }\n ch = this.nextChar();\n }\n if (divideBy !== 0) {\n baseValue /= divideBy;\n }\n if (eNotation) {\n baseValue *= Math.pow(10, (powerValueSign * powerValue));\n }\n return sign * baseValue;\n };\n _PdfLexicalOperator.prototype.getString = function () {\n var numParen = 1;\n var done = false;\n var stringBuffer = this.stringBuffer;\n stringBuffer.length = 0;\n var ch = this.nextChar();\n while (true) { // eslint-disable-line\n var charBuffered = false;\n switch (ch | 0) {\n case -1:\n done = true;\n break;\n case 0x28:\n ++numParen;\n stringBuffer.push('(');\n break;\n case 0x29:\n if (--numParen === 0) {\n this.nextChar();\n done = true;\n }\n else {\n stringBuffer.push(')');\n }\n break;\n case 0x5c:\n ch = this.nextChar();\n switch (ch) {\n case -1:\n done = true;\n break;\n case 0x6e:\n stringBuffer.push('\\n');\n break;\n case 0x72:\n stringBuffer.push('\\r');\n break;\n case 0x74:\n stringBuffer.push('\\t');\n break;\n case 0x62:\n stringBuffer.push('\\b');\n break;\n case 0x66:\n stringBuffer.push('\\f');\n break;\n case 0x5c:\n case 0x28:\n case 0x29:\n stringBuffer.push(String.fromCharCode(ch));\n break;\n case 0x30:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n var x = ch & 0x0f; // eslint-disable-line\n ch = this.nextChar();\n charBuffered = true;\n if (ch >= 0x30 && ch <= 0x37) {\n x = (x << 3) + (ch & 0x0f);\n ch = this.nextChar();\n if (ch >= 0x30 && ch <= 0x37) {\n charBuffered = false;\n x = (x << 3) + (ch & 0x0f);\n }\n }\n stringBuffer.push(String.fromCharCode(x));\n break;\n case 0x0d:\n if (this.peekChar() === 0x0a) {\n this.nextChar();\n }\n break;\n case 0x0a:\n break;\n default:\n stringBuffer.push(String.fromCharCode(ch));\n break;\n }\n break;\n default:\n stringBuffer.push(String.fromCharCode(ch));\n break;\n }\n if (done) {\n break;\n }\n if (!charBuffered) {\n ch = this.nextChar();\n }\n }\n return stringBuffer.join('');\n };\n _PdfLexicalOperator.prototype.getName = function () {\n var ch;\n var previousCh;\n var stringBuffer = this.stringBuffer;\n stringBuffer.length = 0;\n ch = this.nextChar();\n while (ch >= 0 && !specialChars[ch]) { // eslint-disable-line\n if (ch === 0x23) {\n ch = this.nextChar();\n if (specialChars[ch]) { // eslint-disable-line\n stringBuffer.push('#');\n break;\n }\n var x = this._toHexDigit(ch);\n if (x !== -1) {\n previousCh = ch;\n ch = this.nextChar();\n var x2 = this._toHexDigit(ch);\n if (x2 === -1) {\n stringBuffer.push('#', String.fromCharCode(previousCh));\n if (specialChars[ch]) { // eslint-disable-line\n break;\n }\n stringBuffer.push(String.fromCharCode(ch));\n ch = this.nextChar();\n continue;\n }\n stringBuffer.push(String.fromCharCode((x << 4) | x2));\n }\n else {\n stringBuffer.push('#', String.fromCharCode(ch));\n }\n }\n else {\n stringBuffer.push(String.fromCharCode(ch));\n }\n ch = this.nextChar();\n }\n return _PdfName.get(stringBuffer.join(''));\n };\n _PdfLexicalOperator.prototype.getHexString = function () {\n var stringBuffer = this.stringBuffer;\n stringBuffer.length = 0;\n var ch = this.currentChar;\n var isFirstHex = true;\n var firstDigit;\n var secondDigit;\n this._hexStringNumber = 0;\n while (true) { // eslint-disable-line\n if (ch < 0) {\n break;\n }\n else if (ch === 0x3e) {\n this.nextChar();\n break;\n }\n else if (specialChars[ch] === 1) { // eslint-disable-line\n ch = this.nextChar();\n continue;\n }\n else {\n if (isFirstHex) {\n firstDigit = this._toHexDigit(ch);\n if (firstDigit === -1) {\n ch = this.nextChar();\n continue;\n }\n }\n else {\n secondDigit = this._toHexDigit(ch);\n if (secondDigit === -1) {\n ch = this.nextChar();\n continue;\n }\n stringBuffer.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n }\n isFirstHex = !isFirstHex;\n ch = this.nextChar();\n }\n }\n return stringBuffer.join('');\n };\n _PdfLexicalOperator.prototype.getObject = function () {\n var comment = false;\n var ch = this.currentChar;\n while (true) { // eslint-disable-line\n if (ch < 0) {\n return endOfFile;\n }\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n }\n else if (ch === 0x25) {\n comment = true;\n }\n else if (specialChars[ch] !== 1) { // eslint-disable-line\n break;\n }\n ch = this.nextChar();\n }\n switch (ch | 0) {\n case 0x30:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n case 0x38:\n case 0x39:\n case 0x2b:\n case 0x2d:\n case 0x2e:\n return this.getNumber();\n case 0x28:\n return this.getString();\n case 0x2f:\n return this.getName();\n case 0x5b:\n this.nextChar();\n return _PdfCommand.get('[');\n case 0x5d:\n this.nextChar();\n return _PdfCommand.get(']');\n case 0x3c:\n ch = this.nextChar();\n if (ch === 0x3c) {\n this.nextChar();\n return _PdfCommand.get('<<');\n }\n return this.getHexString();\n case 0x3e:\n ch = this.nextChar();\n if (ch === 0x3e) {\n this.nextChar();\n return _PdfCommand.get('>>');\n }\n return _PdfCommand.get('>');\n case 0x7b:\n this.nextChar();\n return _PdfCommand.get('{');\n case 0x7d:\n this.nextChar();\n return _PdfCommand.get('}');\n case 0x29:\n this.nextChar();\n throw new FormatError(\"Illegal character: \" + ch);\n }\n var str = String.fromCharCode(ch);\n if (ch < 0x20 || ch > 0x7f) {\n var nextCh = this.peekChar();\n if (nextCh >= 0x20 && nextCh <= 0x7f) {\n this.nextChar();\n return _PdfCommand.get(str);\n }\n }\n ch = this.nextChar();\n while (ch >= 0 && !specialChars[ch]) { // eslint-disable-line\n var possibleCommand = str + String.fromCharCode(ch);\n if (str.length === 128) {\n throw new FormatError(\"Command token too long: \" + str.length);\n }\n str = possibleCommand;\n ch = this.nextChar();\n }\n if (str === 'true') {\n return true;\n }\n if (str === 'false') {\n return false;\n }\n if (str === 'null') {\n return null;\n }\n if (str === 'BI') {\n this.beginInlineImagePosition = this.stream.position;\n }\n return _PdfCommand.get(str);\n };\n _PdfLexicalOperator.prototype.peekObj = function () {\n var streamPos = this.stream.position;\n var currentChar = this.currentChar;\n var beginInlineImagePosition = this.beginInlineImagePosition;\n var nextObj; // eslint-disable-line\n try {\n nextObj = this.getObject();\n }\n catch (ex) { } // eslint-disable-line\n this.stream.position = streamPos;\n this.currentChar = currentChar;\n this.beginInlineImagePosition = beginInlineImagePosition;\n return nextObj;\n };\n _PdfLexicalOperator.prototype.skipToNextLine = function () {\n var ch = this.currentChar;\n while (ch >= 0) {\n if (ch === 0x0d) {\n ch = this.nextChar();\n if (ch === 0x0a) {\n this.nextChar();\n }\n break;\n }\n else if (ch === 0x0a) {\n this.nextChar();\n break;\n }\n ch = this.nextChar();\n }\n };\n _PdfLexicalOperator.prototype._toHexDigit = function (ch) {\n if (ch >= 0x30 && ch <= 0x39) {\n return ch & 0x0f;\n }\n if ((ch >= 0x41 && ch <= 0x46) || (ch >= 0x61 && ch <= 0x66)) {\n return (ch & 0x0f) + 9;\n }\n return -1;\n };\n return _PdfLexicalOperator;\n}());\nexport { _PdfLexicalOperator };\nvar _PdfParser = /** @class */ (function () {\n function _PdfParser(lexicalOperator, xref, allowStreams, recoveryMode) {\n if (allowStreams === void 0) { allowStreams = false; }\n if (recoveryMode === void 0) { recoveryMode = false; }\n this.lexicalOperator = lexicalOperator;\n this.xref = xref;\n this.allowStreams = allowStreams;\n this.recoveryMode = recoveryMode;\n this.imageCache = new Map();\n this.refill();\n }\n _PdfParser.prototype.refill = function () {\n this.first = this.lexicalOperator.getObject();\n this.second = this.lexicalOperator.getObject();\n };\n _PdfParser.prototype.shift = function () {\n if (this.second instanceof _PdfCommand && this.second.command === 'ID') {\n this.first = this.second;\n this.second = null;\n }\n else {\n this.first = this.second;\n this.second = this.lexicalOperator.getObject();\n }\n };\n _PdfParser.prototype.tryShift = function () {\n try {\n this.shift();\n return true;\n }\n catch (e) {\n return false;\n }\n };\n _PdfParser.prototype.getObject = function (cipherTransform) {\n var first = this.first; // eslint-disable-line\n this.shift();\n if (first instanceof _PdfCommand) {\n switch (first.command) {\n case 'BI':\n return this.makeInlineImage(cipherTransform);\n case '[':\n var array = []; // eslint-disable-line\n while (!_isCommand(this.first, ']') && this.first !== endOfFile) {\n array.push(this.getObject(cipherTransform));\n }\n if (this.first === endOfFile) {\n if (this.recoveryMode) {\n return array;\n }\n throw new ParserEndOfFileException('End of file inside array.');\n }\n this.shift();\n return array;\n case '<<':\n var dictionary = new _PdfDictionary(this.xref); // eslint-disable-line\n while (!_isCommand(this.first, '>>') && this.first !== endOfFile) {\n if (!(this.first instanceof _PdfName)) {\n this.shift();\n continue;\n }\n var key = this.first.name;\n this.shift();\n var isEnd = this._checkEnd();\n if (isEnd) {\n break;\n }\n dictionary.set(key, this.getObject(cipherTransform));\n }\n if (this.first === endOfFile) {\n if (this.recoveryMode) {\n return dictionary;\n }\n throw new ParserEndOfFileException('End of file inside dictionary.');\n }\n if (_isCommand(this.second, 'stream')) {\n if (this.allowStreams === true) {\n return this.makeStream(dictionary, cipherTransform);\n }\n else {\n return dictionary;\n }\n }\n this.shift();\n return dictionary;\n default:\n return first;\n }\n }\n if (Number.isInteger(first)) {\n if (Number.isInteger(this.first) && _isCommand(this.second, 'R')) {\n var ref = _PdfReference.get(first, this.first);\n this.shift();\n this.shift();\n return ref;\n }\n return first;\n }\n if (typeof first === 'string') {\n if (cipherTransform) {\n return cipherTransform.decryptString(first);\n }\n return first;\n }\n return first;\n };\n _PdfParser.prototype.findDiscreteDecodeInlineStreamEnd = function (stream) {\n var startPos = stream.position;\n var foundEnd = false;\n var b;\n var markerLength;\n b = stream.getByte();\n while (b !== -1) {\n if (b !== 0xff) {\n b = stream.getByte();\n continue;\n }\n switch (stream.getByte()) {\n case 0x00:\n break;\n case 0xff:\n stream.skip(-1);\n break;\n case 0xd9:\n foundEnd = true;\n break;\n case 0xc0:\n case 0xc1:\n case 0xc2:\n case 0xc3:\n case 0xc5:\n case 0xc6:\n case 0xc7:\n case 0xc9:\n case 0xca:\n case 0xcb:\n case 0xcd:\n case 0xce:\n case 0xcf:\n case 0xc4:\n case 0xcc:\n case 0xda:\n case 0xdb:\n case 0xdc:\n case 0xdd:\n case 0xde:\n case 0xdf:\n case 0xe0:\n case 0xe1:\n case 0xe2:\n case 0xe3:\n case 0xe4:\n case 0xe5:\n case 0xe6:\n case 0xe7:\n case 0xe8:\n case 0xe9:\n case 0xea:\n case 0xeb:\n case 0xec:\n case 0xed:\n case 0xee:\n case 0xef:\n case 0xfe:\n markerLength = stream.getUnsignedInteger16();\n if (markerLength > 2) {\n stream.skip(markerLength - 2);\n }\n else {\n stream.skip(-2);\n }\n break;\n }\n if (foundEnd) {\n break;\n }\n b = stream.getByte();\n }\n var length = stream.position - startPos;\n if (b === -1) {\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n };\n _PdfParser.prototype.findDecodeInlineStreamEnd = function (stream) {\n var startPos = stream.position;\n var ch;\n while ((ch = stream.getByte()) !== -1) { // eslint-disable-line\n if (ch === 0x7e) {\n var tildePos = stream.position;\n ch = stream.peekByte();\n while (_isWhiteSpace(ch)) {\n stream.skip();\n ch = stream.peekByte();\n }\n if (ch === 0x3e) {\n stream.skip();\n break;\n }\n if (stream.position > tildePos) {\n var maybeEI = stream.peekBytes(2);\n if (maybeEI[0] === 0x45 && maybeEI[1] === 0x49) {\n break;\n }\n }\n }\n }\n var length = stream.position - startPos;\n if (ch === -1) {\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n };\n _PdfParser.prototype.findHexDecodeInlineStreamEnd = function (stream) {\n var startPos = stream.position;\n var ch;\n ch = stream.getByte();\n while (ch !== -1) {\n if (ch === 0x3e) {\n break;\n }\n ch = stream.getByte();\n }\n var length = stream.position - startPos;\n if (ch === -1) {\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n };\n _PdfParser.prototype.inlineStreamSkipEI = function (stream) {\n var state = 0;\n var ch;\n ch = stream.getByte();\n while (ch !== -1) {\n if (state === 0) {\n state = ch === 0x45 ? 1 : 0;\n }\n else if (state === 1) {\n state = ch === 0x49 ? 2 : 0;\n }\n else if (state === 2) {\n break;\n }\n ch = stream.getByte();\n }\n };\n _PdfParser.prototype.makeInlineImage = function (cipherTransform) {\n var lexicalOperator = this.lexicalOperator;\n var stream = lexicalOperator.stream;\n var dictionary = new _PdfDictionary(this.xref);\n var dictLength;\n while (!_isCommand(this.first, 'ID') && this.first !== endOfFile) {\n if (!(this.first instanceof _PdfName)) {\n throw new FormatError('Dictionary key must be a name object');\n }\n var key = this.first.name;\n this.shift();\n if (this.first.name === endOfFile) {\n break;\n }\n dictionary.set(key, this.getObject(cipherTransform));\n }\n if (lexicalOperator.beginInlineImagePosition !== -1) {\n dictLength = stream.position - lexicalOperator.beginInlineImagePosition;\n }\n var filter = dictionary.get('F', 'Filter'); // eslint-disable-line\n var filterName;\n if (filter instanceof _PdfName) {\n filterName = filter.name;\n }\n else if (Array.isArray(filter)) {\n var reference = filter[0]; // eslint-disable-line\n var filterZero = (reference !== null && typeof reference !== 'undefined' && reference instanceof _PdfReference) ?\n this.xref._fetch(reference) :\n reference;\n if (filterZero) {\n filterName = filterZero.name;\n }\n }\n var startPos = stream.position;\n var length;\n switch (filterName) {\n case 'DCT':\n case 'DCTDecode':\n length = this.findDiscreteDecodeInlineStreamEnd(stream);\n break;\n case 'A85':\n case 'ASCII85Decode':\n length = this.findDecodeInlineStreamEnd(stream);\n break;\n case 'AHx':\n case 'ASCIIHexDecode':\n length = this.findHexDecodeInlineStreamEnd(stream);\n break;\n default:\n length = this.findDefaultInlineStreamEnd(stream);\n }\n var imageStream = stream.makeSubStream(startPos, length, dictionary); // eslint-disable-line\n var cacheKey;\n if (length < maxCacheLength && dictLength < maxNumberLength) {\n var imageBytes = imageStream.getBytes();\n imageStream.reset();\n var initialStreamPos = stream.position;\n stream.position = lexicalOperator.beginInlineImagePosition;\n var dictBytes = stream.getBytes(dictLength);\n stream.position = initialStreamPos;\n cacheKey = this._computeMaxNumber(imageBytes) + '_' + this._computeMaxNumber(dictBytes);\n var cacheEntry = this.imageCache.get(cacheKey);\n if (cacheEntry !== undefined) {\n this.second = _PdfCommand.get('EI');\n this.shift();\n cacheEntry.reset();\n return cacheEntry;\n }\n }\n if (cipherTransform) {\n imageStream = cipherTransform.createStream(imageStream, length);\n }\n imageStream = this.filter(imageStream, dictionary, length);\n imageStream.dictionary = dictionary;\n if (cacheKey !== undefined) {\n this.imageCache.set(cacheKey, imageStream);\n }\n this.second = _PdfCommand.get('EI');\n this.shift();\n return imageStream;\n };\n _PdfParser.prototype._computeMaxNumber = function (bytes) {\n var bytesLength = bytes.length;\n var a = 1;\n var b = 0;\n for (var i = 0; i < bytesLength; ++i) {\n a += bytes[i] & 0xff; // eslint-disable-line\n b += a;\n }\n return (b % 65521 << 16) | a % 65521;\n };\n _PdfParser.prototype.makeStream = function (dictionary, cipherTransform) {\n var lexicalOperator = this.lexicalOperator;\n var stream = lexicalOperator.stream; // eslint-disable-line\n lexicalOperator.skipToNextLine();\n var startPosition = stream.position - 1;\n var length = dictionary.get('Length');\n if (!Number.isInteger(length)) {\n length = 0;\n }\n stream.position = startPosition + length;\n lexicalOperator.nextChar();\n if (this.tryShift() && _isCommand(this.second, 'endstream')) {\n this.shift();\n }\n else {\n var endStreamSignature = new Uint8Array([0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d]);\n var actualLength = this._findStreamLength(startPosition, endStreamSignature);\n if (actualLength < 0) {\n var end = endStreamSignature.length - 1;\n var truncatedSignature = endStreamSignature.slice(0, end);\n var maybeLength = this._findStreamLength(startPosition, truncatedSignature);\n if (maybeLength >= 0) {\n var lastByte = stream.peekBytes(end + 1)[end]; // eslint-disable-line\n if (_isWhiteSpace(lastByte)) {\n actualLength = maybeLength;\n }\n }\n if (actualLength < 0) {\n throw new FormatError('Missing endstream command.');\n }\n }\n length = actualLength;\n lexicalOperator.nextChar();\n this.shift();\n this.shift();\n }\n this.shift();\n stream = stream.makeSubStream(startPosition, length, dictionary);\n if (cipherTransform) {\n stream = cipherTransform.createStream(stream, length);\n }\n stream = this.filter(stream, dictionary, length);\n stream.dictionary = dictionary;\n return stream;\n };\n _PdfParser.prototype.filter = function (stream, dictionary, length) {\n var filter = dictionary.get('F', 'Filter'); // eslint-disable-line\n var params = dictionary.get('DP', 'DecodeParms'); // eslint-disable-line\n if (filter instanceof _PdfName) {\n return this.makeFilter(stream, filter.name, length, params);\n }\n var maybeLength = length;\n if (Array.isArray(filter)) {\n var filterArray = filter; // eslint-disable-line\n var paramsArray = params; // eslint-disable-line\n for (var i = 0; i < filterArray.length; ++i) {\n var reference = filterArray[Number.parseInt(i.toString(), 10)]; // eslint-disable-line\n filter = reference instanceof _PdfReference ? this.xref._fetch(reference) : reference;\n if (!(filter instanceof _PdfName)) {\n throw new FormatError(\"Bad filter name '\" + filter + \"'\");\n }\n params = null;\n if (Array.isArray(paramsArray) && i in paramsArray) {\n var ref = paramsArray[Number.parseInt(i.toString(), 10)]; // eslint-disable-line\n params = ref instanceof _PdfReference ? this.xref._fetch(ref) : ref;\n }\n stream = this.makeFilter(stream, filter.name, maybeLength, params);\n maybeLength = null;\n }\n }\n return stream;\n };\n _PdfParser.prototype.makeFilter = function (stream, name, maybeLength, params) {\n if (maybeLength === 0) {\n return new _PdfNullStream();\n }\n try {\n if (name === 'Fl' || name === 'FlateDecode') {\n if (params) {\n return new PdfPredictorStream(new _PdfFlateStream(stream, maybeLength), maybeLength, params);\n }\n return new _PdfFlateStream(stream, maybeLength);\n }\n return stream;\n }\n catch (ex) {\n return new _PdfNullStream();\n }\n };\n _PdfParser.prototype._findStreamLength = function (startPosition, signature) {\n var stream = this.lexicalOperator.stream;\n stream.position = startPosition;\n var length = 2048;\n var signatureLength = signature.length;\n while (stream.position < stream.end) {\n var scanBytes = stream.peekBytes(length);\n var scanLength = scanBytes.length - signatureLength;\n if (scanLength <= 0) {\n break;\n }\n var position = 0;\n while (position < scanLength) {\n var j = 0;\n while (j < signatureLength && scanBytes[position + j] === signature[j]) { // eslint-disable-line\n j++;\n }\n if (j >= signatureLength) {\n stream.position += position;\n return stream.position - startPosition;\n }\n position++;\n }\n stream.position += scanLength;\n }\n return -1;\n };\n _PdfParser.prototype.findDefaultInlineStreamEnd = function (stream) {\n var startPosition = stream.position;\n var n = 10;\n var state = 0;\n var ch;\n var endImagePosition;\n ch = stream.getByte();\n while (ch !== -1) {\n if (state === 0) {\n state = ch === 0x45 ? 1 : 0;\n }\n else if (state === 1) {\n state = ch === 0x49 ? 2 : 0;\n }\n else {\n if (state !== 2) {\n throw new Error('findDefaultInlineStreamEnd - invalid state.');\n }\n if (ch === 0x20 || ch === 0xa || ch === 0xd) {\n endImagePosition = stream.position;\n var followingBytes = stream.peekBytes(n);\n for (var i = 0, ii = followingBytes.length; i < ii; i++) {\n ch = followingBytes[i]; // eslint-disable-line\n if (ch === 0x0 && followingBytes[i + 1] !== 0x0) {\n continue;\n }\n if (ch !== 0xa && ch !== 0xd && (ch < 0x20 || ch > 0x7f)) {\n state = 0;\n break;\n }\n }\n if (state !== 2) {\n ch = stream.getByte();\n continue;\n }\n if (state === 2) {\n break;\n }\n }\n else {\n state = 0;\n }\n }\n ch = stream.getByte();\n }\n if (ch === -1) {\n if (typeof endImagePosition !== 'undefined') {\n stream.skip(-(stream.position - endImagePosition));\n }\n }\n var endOffset = 4;\n stream.skip(-endOffset);\n ch = stream.peekByte();\n stream.skip(endOffset);\n if (!_isWhiteSpace(ch)) {\n endOffset--;\n }\n return stream.position - endOffset - startPosition;\n };\n _PdfParser.prototype._checkEnd = function () {\n if (this.first === endOfFile) {\n return true;\n }\n else {\n return false;\n }\n };\n return _PdfParser;\n}());\nexport { _PdfParser };\n/* eslint-disable */\nvar _Linearization = /** @class */ (function () {\n function _Linearization(stream) {\n this.isValid = false;\n var parser = new _PdfParser(new _PdfLexicalOperator(stream), null);\n var obj1 = parser.getObject();\n var obj2 = parser.getObject();\n var obj3 = parser.getObject();\n var dictionary = parser.getObject();\n this.isValid = Number.isInteger(obj1) && Number.isInteger(obj2) && _isCommand(obj3, 'obj') && typeof dictionary !== 'undefined';\n if (this.isValid) {\n var obj = dictionary.get('Linearized');\n this.isValid = typeof obj !== 'undefined' && obj > 0;\n }\n if (this.isValid) {\n var length_1 = this.getInt(dictionary, 'L');\n if (length_1 !== stream.length) {\n throw new Error('The L parameter in the linearization dictionary ' + 'does not equal the stream length.');\n }\n this.length = length_1;\n this.hints = this.getHints(dictionary);\n this.objectNumberFirst = this.getInt(dictionary, 'O');\n this.endFirst = this.getInt(dictionary, 'E');\n this.pageCount = this.getInt(dictionary, 'N');\n this.mainXRefEntriesOffset = this.getInt(dictionary, 'T');\n this.pageFirst = dictionary.has('P') ? this.getInt(dictionary, 'P', true) : 0;\n }\n }\n _Linearization.prototype.getInt = function (dictionary, name, allowZeroValue) {\n if (allowZeroValue === void 0) { allowZeroValue = false; }\n var obj = dictionary.get(name);\n if (typeof obj !== 'undefined' && Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n return obj;\n }\n throw new Error(\"The '\" + name + \"' parameter in the linearization \" + 'dictionary is invalid.');\n };\n _Linearization.prototype.getHints = function (dictionary) {\n var hints = dictionary.getArray('H');\n var hintsLength = hints.length;\n if (hints && (hintsLength === 2 || hintsLength === 4)) {\n for (var index = 0; index < hintsLength; index++) {\n var hint = hints[index];\n if (!(Number.isInteger(hint) && hint > 0)) {\n throw new Error(\"Hint (\" + index + \") in the linearization dictionary is invalid.\");\n }\n }\n return hints;\n }\n throw new Error('Hint array in the linearization dictionary is invalid.');\n };\n return _Linearization;\n}());\nexport { _Linearization };\n/* eslint-enable */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _PdfDecodeStream } from './decode-stream';\nvar _PdfDecryptStream = /** @class */ (function (_super) {\n __extends(_PdfDecryptStream, _super);\n function _PdfDecryptStream(stream, maybeLength, cipher) {\n var _this = _super.call(this, maybeLength) || this;\n _this._chunkSize = 512;\n _this.stream = stream;\n _this.dictionary = stream.dictionary;\n _this._cipher = cipher;\n _this._nextChunk = null;\n _this._initialized = false;\n return _this;\n }\n _PdfDecryptStream.prototype.readBlock = function () {\n var chunk;\n if (this._initialized) {\n chunk = this._nextChunk;\n }\n else {\n chunk = this.stream.getBytes(this._chunkSize);\n this._initialized = true;\n }\n if (!chunk || chunk.length === 0) {\n this.eof = true;\n return;\n }\n this._nextChunk = this.stream.getBytes(this._chunkSize);\n var hasMoreData = this._nextChunk && this._nextChunk.length > 0;\n chunk = this._cipher._decryptBlock(chunk, !hasMoreData);\n var bufferLength = this.bufferLength;\n var n = chunk.length;\n var buffer = this.ensureBuffer(bufferLength + n);\n for (var i = 0; i < n; i++) {\n buffer[bufferLength++] = chunk[Number.parseInt(i.toString(), 10)];\n }\n this.bufferLength = bufferLength;\n };\n return _PdfDecryptStream;\n}(_PdfDecodeStream));\nexport { _PdfDecryptStream };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _isName, _PdfName } from './../pdf-primitives';\nimport { FormatError, _stringToBytes, _areArrayEqual, _bytesToString } from './../utils';\nimport { _PdfDecryptStream } from './../decrypt-stream';\nvar _PdfEncryptor = /** @class */ (function () {\n function _PdfEncryptor(dictionary, id, password) {\n if (password === void 0) { password = ''; }\n this._isUserPassword = true;\n this._hasUserPasswordOnly = false;\n this._encryptOnlyAttachment = false;\n this._encryptMetaData = true;\n this._defaultPasswordBytes = new Uint8Array([0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff,\n 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a]);\n var filter = dictionary.get('Filter');\n if (!_isName(filter, 'Standard')) {\n throw new FormatError('unknown encryption method');\n }\n this._filterName = filter.name;\n this._dictionary = dictionary;\n var algorithm = dictionary.get('V');\n if (!Number.isInteger(algorithm) || (algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5)) {\n throw new FormatError('unsupported encryption algorithm');\n }\n this._algorithm = algorithm;\n var keyLength = dictionary.get('Length');\n if (!keyLength) {\n if (algorithm <= 3) {\n keyLength = 40;\n }\n else {\n var cfDictionary = dictionary.get('CF');\n var streamCryptoName = dictionary.get('StmF');\n if (cfDictionary && streamCryptoName) {\n cfDictionary.suppressEncryption = true;\n var handlerDictionary = cfDictionary.get(streamCryptoName.name);\n keyLength = (handlerDictionary && handlerDictionary.get('Length')) || 128;\n if (keyLength < 40) {\n keyLength <<= 3;\n }\n }\n }\n }\n if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {\n throw new FormatError('invalid key length');\n }\n var ownerPassword = _stringToBytes(dictionary.get('O')).subarray(0, 32);\n var userPassword = _stringToBytes(dictionary.get('U')).subarray(0, 32);\n var flag = dictionary.get('P');\n var revision = dictionary.get('R');\n this._encryptMetaData = (algorithm === 4 || algorithm === 5) && dictionary.get('EncryptMetadata') !== false;\n var fileIdBytes = _stringToBytes(id);\n var passwordBytes;\n if (password) {\n if (revision === 6) {\n password = encodeURIComponent(password);\n }\n passwordBytes = _stringToBytes(password);\n }\n var encryptionKey;\n if (algorithm !== 5) {\n encryptionKey = this._prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flag, revision, keyLength, this._encryptMetaData);\n if (encryptionKey) {\n this._isUserPassword = true;\n if (password) {\n var decodedPassword = this._decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);\n var ownerEncryptionKey = this._prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flag, revision, keyLength, this._encryptMetaData);\n if (ownerEncryptionKey && _areArrayEqual(ownerEncryptionKey, encryptionKey)) {\n this._hasUserPasswordOnly = true;\n }\n }\n }\n }\n else {\n var ownerValidationKey = _stringToBytes(dictionary.get('O'));\n var ownerValidationSalt = ownerValidationKey.subarray(32, 40);\n var ownerKeySalt = ownerValidationKey.subarray(40, 48);\n var userValidationKey = _stringToBytes(dictionary.get('U'));\n var uBytes = userValidationKey.subarray(0, 48);\n var userValidationSalt = userValidationKey.subarray(32, 40);\n var userKeySalt = userValidationKey.subarray(40, 48);\n var ownerEncryption = _stringToBytes(dictionary.get('OE'));\n var userEncryption = _stringToBytes(dictionary.get('UE'));\n var algorithm_1;\n if (revision === 6) {\n algorithm_1 = new _AdvancedEncryption();\n }\n else {\n algorithm_1 = new _BasicEncryption();\n }\n var p = void 0;\n if (passwordBytes) {\n p = passwordBytes.subarray(0, Math.min(127, passwordBytes.length));\n }\n else {\n p = new Uint8Array([]);\n }\n if (algorithm_1._checkUserPassword(p, userValidationSalt, userPassword)) {\n encryptionKey = this._createEncryptionKey(true, p, ownerKeySalt, uBytes, userKeySalt, ownerEncryption, userEncryption, algorithm_1);\n this._isUserPassword = true;\n if (password.length && algorithm_1._checkOwnerPassword(p, ownerValidationSalt, uBytes, ownerPassword)) {\n this._hasUserPasswordOnly = true;\n }\n }\n else if (password.length && algorithm_1._checkOwnerPassword(p, ownerValidationSalt, uBytes, ownerPassword)) {\n encryptionKey = this._createEncryptionKey(false, passwordBytes, ownerKeySalt, uBytes, userKeySalt, ownerEncryption, userEncryption, algorithm_1);\n this._isUserPassword = false;\n }\n }\n if (!encryptionKey) {\n if (password) {\n var decodedPassword = this._decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);\n encryptionKey = this._prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flag, revision, keyLength, this._encryptMetaData);\n this._isUserPassword = false;\n }\n else {\n throw new Error('Cannot open an encrypted document. The password is invalid.');\n }\n }\n if (algorithm >= 4) {\n var cipherDictionary = dictionary.get('CF');\n if (cipherDictionary) {\n cipherDictionary.suppressEncryption = true;\n if (cipherDictionary.has('StdCF')) {\n var standardCryptFilter = cipherDictionary.get('StdCF');\n if (standardCryptFilter && standardCryptFilter.has('AuthEvent')) {\n var event_1 = standardCryptFilter.get('AuthEvent');\n if (event_1 && event_1.name === 'EFOpen') {\n this._encryptOnlyAttachment = true;\n }\n }\n }\n }\n this._cipherDictionary = cipherDictionary;\n this._stream = dictionary.get('StmF') || _PdfName.get('Identity');\n this._string = dictionary.get('StrF') || _PdfName.get('Identity');\n this._eff = dictionary.get('EFF') || this._stream;\n }\n if (!encryptionKey && !this._encryptOnlyAttachment) {\n throw new Error('Cannot open an encrypted document. The password is invalid.');\n }\n this._encryptionKey = encryptionKey;\n }\n Object.defineProperty(_PdfEncryptor.prototype, \"_md5\", {\n get: function () {\n if (typeof this._messageDigest === 'undefined') {\n this._messageDigest = new _MD5();\n }\n return this._messageDigest;\n },\n enumerable: true,\n configurable: true\n });\n _PdfEncryptor.prototype._createEncryptionKey = function (isUserKey, password, ownerKeySalt, uBytes, userKeySalt, ownerEncryption, userEncryption, algorithm) {\n if (isUserKey) {\n return algorithm._getUserKey(password, userKeySalt, userEncryption);\n }\n else {\n return algorithm._getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);\n }\n };\n _PdfEncryptor.prototype._prepareKeyData = function (id, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetaData) {\n var hashData = new Uint8Array(40 + ownerPassword.length + id.length);\n var i = 0;\n var j = 0;\n var n;\n if (password) {\n n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[Number.parseInt(i.toString(), 10)] = password[Number.parseInt(i.toString(), 10)];\n }\n }\n while (i < 32) {\n hashData[i++] = this._defaultPasswordBytes[j++];\n }\n for (j = 0, n = ownerPassword.length; j < n; ++j) {\n hashData[i++] = ownerPassword[Number.parseInt(j.toString(), 10)];\n }\n hashData[i++] = flags & 0xff;\n hashData[i++] = (flags >> 8) & 0xff;\n hashData[i++] = (flags >> 16) & 0xff;\n hashData[i++] = (flags >>> 24) & 0xff;\n for (j = 0, n = id.length; j < n; ++j) {\n hashData[i++] = id[Number.parseInt(j.toString(), 10)];\n }\n if (revision >= 4 && !encryptMetaData) {\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n }\n var hash = this._md5.hash(hashData, 0, i);\n var keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = this._md5.hash(hash, 0, keyLengthInBytes);\n }\n }\n var encryptionKey = hash.subarray(0, keyLengthInBytes);\n var cipher;\n var checkData;\n if (revision >= 3) {\n for (i = 0; i < 32; ++i) {\n hashData[Number.parseInt(i.toString(), 10)] = this._defaultPasswordBytes[Number.parseInt(i.toString(), 10)];\n }\n for (j = 0, n = id.length; j < n; ++j) {\n hashData[i++] = id[Number.parseInt(j.toString(), 10)];\n }\n cipher = new _NormalCipherFour(encryptionKey);\n checkData = cipher._encryptBlock(this._md5.hash(hashData, 0, i));\n n = encryptionKey.length;\n var derivedKey = new Uint8Array(n);\n for (j = 1; j <= 19; ++j) {\n for (var k = 0; k < n; ++k) {\n derivedKey[Number.parseInt(k.toString(), 10)] = encryptionKey[Number.parseInt(k.toString(), 10)] ^ j;\n }\n cipher = new _NormalCipherFour(derivedKey);\n checkData = cipher._encryptBlock(checkData);\n }\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[Number.parseInt(j.toString(), 10)] !== checkData[Number.parseInt(j.toString(), 10)]) {\n return null;\n }\n }\n }\n else {\n cipher = new _NormalCipherFour(encryptionKey);\n checkData = cipher._encryptBlock(this._defaultPasswordBytes);\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[Number.parseInt(j.toString(), 10)] !== checkData[Number.parseInt(j.toString(), 10)]) {\n return null;\n }\n }\n }\n return encryptionKey;\n };\n _PdfEncryptor.prototype._decodeUserPassword = function (password, ownerPassword, revision, keyLength) {\n var hashData = new Uint8Array(32);\n var i = 0;\n var j = 0;\n var n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[Number.parseInt(i.toString(), 10)] = password[Number.parseInt(i.toString(), 10)];\n }\n while (i < 32) {\n hashData[i++] = this._defaultPasswordBytes[j++];\n }\n var hash = this._md5.hash(hashData, 0, i);\n var keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = this._md5.hash(hash, 0, hash.length);\n }\n }\n var cipher;\n var userPassword;\n if (revision >= 3) {\n userPassword = ownerPassword;\n var derivedKey = new Uint8Array(keyLengthInBytes);\n for (j = 19; j >= 0; j--) {\n for (var k = 0; k < keyLengthInBytes; ++k) {\n derivedKey[Number.parseInt(k.toString(), 10)] = hash[Number.parseInt(k.toString(), 10)] ^ j;\n }\n cipher = new _NormalCipherFour(derivedKey);\n userPassword = cipher._encryptBlock(userPassword);\n }\n }\n else {\n cipher = new _NormalCipherFour(hash.subarray(0, keyLengthInBytes));\n userPassword = cipher._encryptBlock(ownerPassword);\n }\n return userPassword;\n };\n _PdfEncryptor.prototype._createCipherTransform = function (objectNumber, generationNumber) {\n if (this._algorithm === 4 || this._algorithm === 5) {\n var stringCipher = this._buildCipherConstructor(this._cipherDictionary, this._string, objectNumber, generationNumber, this._encryptionKey);\n var streamCipher = this._buildCipherConstructor(this._cipherDictionary, this._stream, objectNumber, generationNumber, this._encryptionKey);\n return new _CipherTransform(stringCipher, streamCipher);\n }\n var key = this._buildObjectKey(objectNumber, generationNumber, this._encryptionKey, false);\n return new _CipherTransform(new _NormalCipherFour(key), new _NormalCipherFour(key));\n };\n _PdfEncryptor.prototype._buildCipherConstructor = function (cipherDictionary, name, objectNumber, generationNumber, key) {\n var cryptFilter = cipherDictionary.get(name.name);\n var cfm;\n if (cryptFilter) {\n cfm = cryptFilter.get('CFM');\n }\n if (!cfm) {\n return new _NullCipher();\n }\n switch (cfm.name) {\n case 'None':\n return new _NullCipher();\n case 'AESV2':\n return new _AdvancedEncryption128Cipher(this._buildObjectKey(objectNumber, generationNumber, key, true));\n case 'AESV3':\n return new _AdvancedEncryption256Cipher(key);\n case 'V2':\n return new _NormalCipherFour(this._buildObjectKey(objectNumber, generationNumber, key, false));\n }\n throw new FormatError('Unknown cryptography method');\n };\n _PdfEncryptor.prototype._buildObjectKey = function (objectNumber, generationNumber, encryptionKey, isAdvancedEncryption) {\n if (isAdvancedEncryption === void 0) { isAdvancedEncryption = false; }\n var key = new Uint8Array(encryptionKey.length + 9);\n var i;\n for (i = 0; i < encryptionKey.length; ++i) {\n key[Number.parseInt(i.toString(), 10)] = encryptionKey[Number.parseInt(i.toString(), 10)];\n }\n key[i++] = objectNumber & 0xff;\n key[i++] = (objectNumber >> 8) & 0xff;\n key[i++] = (objectNumber >> 16) & 0xff;\n key[i++] = generationNumber & 0xff;\n key[i++] = (generationNumber >> 8) & 0xff;\n if (isAdvancedEncryption) {\n key[i++] = 0x73;\n key[i++] = 0x41;\n key[i++] = 0x6c;\n key[i++] = 0x54;\n }\n var hash = this._md5.hash(key, 0, i);\n return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n };\n return _PdfEncryptor;\n}());\nexport { _PdfEncryptor };\nvar _MD5 = /** @class */ (function () {\n function _MD5() {\n this._r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9,\n 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21,\n 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);\n this._k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983,\n 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501,\n -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353,\n -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744,\n -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]);\n }\n _MD5.prototype.hash = function (data, offset, length) {\n var h0 = 1732584193;\n var h1 = -271733879;\n var h2 = -1732584194;\n var h3 = 271733878;\n var paddedLength = (length + 72) & ~63;\n var padded = new Uint8Array(paddedLength);\n var i = 0;\n var j = 0;\n for (; i < length; ++i) {\n padded[Number.parseInt(i.toString(), 10)] = data[offset++];\n }\n padded[i++] = 0x80;\n var n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = (length << 3) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n var w = new Int32Array(16);\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j, i += 4) {\n w[Number.parseInt(j.toString(), 10)] = padded[Number.parseInt(i.toString(), 10)] |\n (padded[i + 1] << 8) |\n (padded[i + 2] << 16) |\n (padded[i + 3] << 24);\n }\n var a = h0;\n var b = h1;\n var c = h2;\n var d = h3;\n var e = void 0;\n var f = void 0;\n for (j = 0; j < 64; ++j) {\n if (j < 16) {\n e = (b & c) | (~b & d);\n f = j;\n }\n else if (j < 32) {\n e = (d & b) | (~d & c);\n f = (5 * j + 1) & 15;\n }\n else if (j < 48) {\n e = b ^ c ^ d;\n f = (3 * j + 5) & 15;\n }\n else {\n e = c ^ (b | ~d);\n f = (7 * j) & 15;\n }\n var previous = d;\n var current = (a + e + this._k[Number.parseInt(j.toString(), 10)] + w[Number.parseInt(f.toString(), 10)]) | 0;\n var rotate = this._r[Number.parseInt(j.toString(), 10)];\n d = c;\n c = b;\n b = (b + ((current << rotate) | (current >>> (32 - rotate)))) | 0;\n a = previous;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n }\n return new Uint8Array([h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF, h1 & 0xFF,\n (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF, h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF,\n (h2 >>> 24) & 0xFF, h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n ]);\n };\n return _MD5;\n}());\nexport { _MD5 };\nvar _Sha256 = /** @class */ (function () {\n function _Sha256() {\n }\n _Sha256.prototype._rotateRight = function (x, n) {\n return (x >>> n) | (x << (32 - n));\n };\n _Sha256.prototype._sigma = function (x) {\n return this._rotateRight(x, 2) ^ this._rotateRight(x, 13) ^ this._rotateRight(x, 22);\n };\n _Sha256.prototype._sigmaPrime = function (x) {\n return this._rotateRight(x, 6) ^ this._rotateRight(x, 11) ^ this._rotateRight(x, 25);\n };\n _Sha256.prototype._littleSigma = function (x) {\n return this._rotateRight(x, 7) ^ this._rotateRight(x, 18) ^ (x >>> 3);\n };\n _Sha256.prototype._littleSigmaPrime = function (x) {\n return this._rotateRight(x, 17) ^ this._rotateRight(x, 19) ^ (x >>> 10);\n };\n _Sha256.prototype._hash = function (data, offset, length) {\n var h0 = 0x6a09e667;\n var h1 = 0xbb67ae85;\n var h2 = 0x3c6ef372;\n var h3 = 0xa54ff53a;\n var h4 = 0x510e527f;\n var h5 = 0x9b05688c;\n var h6 = 0x1f83d9ab;\n var h7 = 0x5be0cd19;\n var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98,\n 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6,\n 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3,\n 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e,\n 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116,\n 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814,\n 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n var paddedLength = Math.ceil((length + 9) / 64) * 64;\n var padded = new Uint8Array(paddedLength);\n var i = 0;\n var j;\n for (; i < length; ++i) {\n padded[Number.parseInt(i.toString(), 10)] = data[offset++];\n }\n padded[i++] = 0x80;\n var n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length << 3) & 0xff;\n var w = new Uint32Array(64);\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j) {\n w[Number.parseInt(j.toString(), 10)] = (padded[Number.parseInt(i.toString(), 10)] << 24) |\n (padded[i + 1] << 16) |\n (padded[i + 2] << 8) |\n padded[i + 3];\n i += 4;\n }\n for (j = 16; j < 64; ++j) {\n w[Number.parseInt(j.toString(), 10)] = (this._littleSigmaPrime(w[j - 2]) +\n w[j - 7] +\n this._littleSigma(w[j - 15]) + w[j - 16]) | 0;\n }\n var a = h0;\n var b = h1;\n var c = h2;\n var d = h3;\n var e = h4;\n var f = h5;\n var g = h6;\n var h = h7;\n var t1 = void 0;\n var t2 = void 0;\n for (j = 0; j < 64; ++j) {\n t1 = h +\n this._sigmaPrime(e) +\n ((e & f) ^ (~e & g)) +\n k[Number.parseInt(j.toString(), 10)] +\n w[Number.parseInt(j.toString(), 10)];\n t2 = this._sigma(a) + ((a & b) ^ (a & c) ^ (b & c));\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n }\n return new Uint8Array([(h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF, (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF,\n (h1 >> 8) & 0xFF, (h1) & 0xFF, (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF, (h3 >> 24) & 0xFF,\n (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF, (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF, (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF,\n (h6) & 0xFF, (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n ]);\n };\n return _Sha256;\n}());\nexport { _Sha256 };\nvar _Sha512 = /** @class */ (function () {\n function _Sha512() {\n this._k = [new _Word64(0x428a2f98, 0xd728ae22), new _Word64(0x71374491, 0x23ef65cd),\n new _Word64(0xb5c0fbcf, 0xec4d3b2f), new _Word64(0xe9b5dba5, 0x8189dbbc),\n new _Word64(0x3956c25b, 0xf348b538), new _Word64(0x59f111f1, 0xb605d019),\n new _Word64(0x923f82a4, 0xaf194f9b), new _Word64(0xab1c5ed5, 0xda6d8118),\n new _Word64(0xd807aa98, 0xa3030242), new _Word64(0x12835b01, 0x45706fbe),\n new _Word64(0x243185be, 0x4ee4b28c), new _Word64(0x550c7dc3, 0xd5ffb4e2),\n new _Word64(0x72be5d74, 0xf27b896f), new _Word64(0x80deb1fe, 0x3b1696b1),\n new _Word64(0x9bdc06a7, 0x25c71235), new _Word64(0xc19bf174, 0xcf692694),\n new _Word64(0xe49b69c1, 0x9ef14ad2), new _Word64(0xefbe4786, 0x384f25e3),\n new _Word64(0x0fc19dc6, 0x8b8cd5b5), new _Word64(0x240ca1cc, 0x77ac9c65),\n new _Word64(0x2de92c6f, 0x592b0275), new _Word64(0x4a7484aa, 0x6ea6e483),\n new _Word64(0x5cb0a9dc, 0xbd41fbd4), new _Word64(0x76f988da, 0x831153b5),\n new _Word64(0x983e5152, 0xee66dfab), new _Word64(0xa831c66d, 0x2db43210),\n new _Word64(0xb00327c8, 0x98fb213f), new _Word64(0xbf597fc7, 0xbeef0ee4),\n new _Word64(0xc6e00bf3, 0x3da88fc2), new _Word64(0xd5a79147, 0x930aa725),\n new _Word64(0x06ca6351, 0xe003826f), new _Word64(0x14292967, 0x0a0e6e70),\n new _Word64(0x27b70a85, 0x46d22ffc), new _Word64(0x2e1b2138, 0x5c26c926),\n new _Word64(0x4d2c6dfc, 0x5ac42aed), new _Word64(0x53380d13, 0x9d95b3df),\n new _Word64(0x650a7354, 0x8baf63de), new _Word64(0x766a0abb, 0x3c77b2a8),\n new _Word64(0x81c2c92e, 0x47edaee6), new _Word64(0x92722c85, 0x1482353b),\n new _Word64(0xa2bfe8a1, 0x4cf10364), new _Word64(0xa81a664b, 0xbc423001),\n new _Word64(0xc24b8b70, 0xd0f89791), new _Word64(0xc76c51a3, 0x0654be30),\n new _Word64(0xd192e819, 0xd6ef5218), new _Word64(0xd6990624, 0x5565a910),\n new _Word64(0xf40e3585, 0x5771202a), new _Word64(0x106aa070, 0x32bbd1b8),\n new _Word64(0x19a4c116, 0xb8d2d0c8), new _Word64(0x1e376c08, 0x5141ab53),\n new _Word64(0x2748774c, 0xdf8eeb99), new _Word64(0x34b0bcb5, 0xe19b48a8),\n new _Word64(0x391c0cb3, 0xc5c95a63), new _Word64(0x4ed8aa4a, 0xe3418acb),\n new _Word64(0x5b9cca4f, 0x7763e373), new _Word64(0x682e6ff3, 0xd6b2b8a3),\n new _Word64(0x748f82ee, 0x5defb2fc), new _Word64(0x78a5636f, 0x43172f60),\n new _Word64(0x84c87814, 0xa1f0ab72), new _Word64(0x8cc70208, 0x1a6439ec),\n new _Word64(0x90befffa, 0x23631e28), new _Word64(0xa4506ceb, 0xde82bde9),\n new _Word64(0xbef9a3f7, 0xb2c67915), new _Word64(0xc67178f2, 0xe372532b),\n new _Word64(0xca273ece, 0xea26619c), new _Word64(0xd186b8c7, 0x21c0c207),\n new _Word64(0xeada7dd6, 0xcde0eb1e), new _Word64(0xf57d4f7f, 0xee6ed178),\n new _Word64(0x06f067aa, 0x72176fba), new _Word64(0x0a637dc5, 0xa2c898a6),\n new _Word64(0x113f9804, 0xbef90dae), new _Word64(0x1b710b35, 0x131c471b),\n new _Word64(0x28db77f5, 0x23047d84), new _Word64(0x32caab7b, 0x40c72493),\n new _Word64(0x3c9ebe0a, 0x15c9bebc), new _Word64(0x431d67c4, 0x9c100d4c),\n new _Word64(0x4cc5d4be, 0xcb3e42b6), new _Word64(0x597f299c, 0xfc657e2a),\n new _Word64(0x5fcb6fab, 0x3ad6faec), new _Word64(0x6c44198c, 0x4a475817)];\n }\n _Sha512.prototype._sigma = function (result, x, buffer) {\n result.assign(x);\n result.rotateRight(28);\n buffer.assign(x);\n buffer.rotateRight(34);\n result.xor(buffer);\n buffer.assign(x);\n buffer.rotateRight(39);\n result.xor(buffer);\n };\n _Sha512.prototype._sigmaPrime = function (result, x, buffer) {\n result.assign(x);\n result.rotateRight(14);\n buffer.assign(x);\n buffer.rotateRight(18);\n result.xor(buffer);\n buffer.assign(x);\n buffer.rotateRight(41);\n result.xor(buffer);\n };\n _Sha512.prototype._littleSigma = function (result, x, buffer) {\n result.assign(x);\n result.rotateRight(1);\n buffer.assign(x);\n buffer.rotateRight(8);\n result.xor(buffer);\n buffer.assign(x);\n buffer.shiftRight(7);\n result.xor(buffer);\n };\n _Sha512.prototype._littleSigmaPrime = function (result, x, buffer) {\n result.assign(x);\n result.rotateRight(19);\n buffer.assign(x);\n buffer.rotateRight(61);\n result.xor(buffer);\n buffer.assign(x);\n buffer.shiftRight(6);\n result.xor(buffer);\n };\n _Sha512.prototype._hash = function (data, offset, length, isMode384) {\n if (isMode384 === void 0) { isMode384 = false; }\n var h0;\n var h1;\n var h2;\n var h3;\n var h4;\n var h5;\n var h6;\n var h7;\n if (isMode384) {\n h0 = new _Word64(0xcbbb9d5d, 0xc1059ed8);\n h1 = new _Word64(0x629a292a, 0x367cd507);\n h2 = new _Word64(0x9159015a, 0x3070dd17);\n h3 = new _Word64(0x152fecd8, 0xf70e5939);\n h4 = new _Word64(0x67332667, 0xffc00b31);\n h5 = new _Word64(0x8eb44a87, 0x68581511);\n h6 = new _Word64(0xdb0c2e0d, 0x64f98fa7);\n h7 = new _Word64(0x47b5481d, 0xbefa4fa4);\n }\n else {\n h0 = new _Word64(0x6a09e667, 0xf3bcc908);\n h1 = new _Word64(0xbb67ae85, 0x84caa73b);\n h2 = new _Word64(0x3c6ef372, 0xfe94f82b);\n h3 = new _Word64(0xa54ff53a, 0x5f1d36f1);\n h4 = new _Word64(0x510e527f, 0xade682d1);\n h5 = new _Word64(0x9b05688c, 0x2b3e6c1f);\n h6 = new _Word64(0x1f83d9ab, 0xfb41bd6b);\n h7 = new _Word64(0x5be0cd19, 0x137e2179);\n }\n var paddedLength = Math.ceil((length + 17) / 128) * 128;\n var padded = new Uint8Array(paddedLength);\n var i;\n for (i = 0; i < length; ++i) {\n padded[Number.parseInt(i.toString(), 10)] = data[offset++];\n }\n padded[i++] = 0x80;\n var n = paddedLength - 16;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length << 3) & 0xff;\n var w = new Array(80);\n for (i = 0; i < 80; i++) {\n w[Number.parseInt(i.toString(), 10)] = new _Word64(0, 0);\n }\n var a = new _Word64(0, 0);\n var b = new _Word64(0, 0);\n var c = new _Word64(0, 0);\n var d = new _Word64(0, 0);\n var e = new _Word64(0, 0);\n var f = new _Word64(0, 0);\n var g = new _Word64(0, 0);\n var h = new _Word64(0, 0);\n var t1 = new _Word64(0, 0);\n var t2 = new _Word64(0, 0);\n var buffer1 = new _Word64(0, 0);\n var buffer2 = new _Word64(0, 0);\n var buffer3;\n for (i = 0; i < paddedLength;) {\n var j = void 0;\n for (j = 0; j < 16; ++j) {\n w[Number.parseInt(j.toString(), 10)].high =\n (padded[Number.parseInt(i.toString(), 10)] << 24) |\n (padded[i + 1] << 16) |\n (padded[i + 2] << 8) |\n padded[i + 3];\n w[Number.parseInt(j.toString(), 10)].low =\n (padded[i + 4] << 24) |\n (padded[i + 5] << 16) |\n (padded[i + 6] << 8) |\n padded[i + 7];\n i += 8;\n }\n for (j = 16; j < 80; ++j) {\n buffer3 = w[Number.parseInt(j.toString(), 10)];\n this._littleSigmaPrime(buffer3, w[j - 2], buffer2);\n buffer3.add(w[j - 7]);\n this._littleSigma(buffer1, w[j - 15], buffer2);\n buffer3.add(buffer1);\n buffer3.add(w[j - 16]);\n }\n a.assign(h0);\n b.assign(h1);\n c.assign(h2);\n d.assign(h3);\n e.assign(h4);\n f.assign(h5);\n g.assign(h6);\n h.assign(h7);\n for (j = 0; j < 80; ++j) {\n t1.assign(h);\n this._sigmaPrime(buffer1, e, buffer2);\n t1.add(buffer1);\n buffer1.assign(e);\n buffer1.and(f);\n buffer2.assign(e);\n buffer2.not();\n buffer2.and(g);\n buffer1.xor(buffer2);\n t1.add(buffer1);\n t1.add(this._k[Number.parseInt(j.toString(), 10)]);\n t1.add(w[Number.parseInt(j.toString(), 10)]);\n this._sigma(t2, a, buffer2);\n buffer1.assign(a);\n buffer1.and(b);\n buffer2.assign(a);\n buffer2.and(c);\n buffer1.xor(buffer2);\n buffer2.assign(b);\n buffer2.and(c);\n buffer1.xor(buffer2);\n t2.add(buffer1);\n buffer3 = h;\n h = g;\n g = f;\n f = e;\n d.add(t1);\n e = d;\n d = c;\n c = b;\n b = a;\n buffer3.assign(t1);\n buffer3.add(t2);\n a = buffer3;\n }\n h0.add(a);\n h1.add(b);\n h2.add(c);\n h3.add(d);\n h4.add(e);\n h5.add(f);\n h6.add(g);\n h7.add(h);\n }\n var result;\n if (!isMode384) {\n result = new Uint8Array(64);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n h6.copyTo(result, 48);\n h7.copyTo(result, 56);\n }\n else {\n result = new Uint8Array(48);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n }\n return result;\n };\n return _Sha512;\n}());\nexport { _Sha512 };\nvar _Word64 = /** @class */ (function () {\n function _Word64(high, low) {\n this.high = high | 0;\n this.low = low | 0;\n }\n _Word64.prototype.and = function (word) {\n this.high &= word.high;\n this.low &= word.low;\n };\n _Word64.prototype.or = function (word) {\n this.high |= word.high;\n this.low |= word.low;\n };\n _Word64.prototype.not = function () {\n this.high = ~this.high;\n this.low = ~this.low;\n };\n _Word64.prototype.xor = function (word) {\n this.high ^= word.high;\n this.low ^= word.low;\n };\n _Word64.prototype.shiftRight = function (places) {\n if (places >= 32) {\n this.low = (this.high >>> (places - 32)) | 0;\n this.high = 0;\n }\n else {\n this.low = (this.low >>> places) | (this.high << (32 - places));\n this.high = (this.high >>> places) | 0;\n }\n };\n _Word64.prototype.shiftLeft = function (places) {\n if (places >= 32) {\n this.high = this.low << (places - 32);\n this.low = 0;\n }\n else {\n this.high = (this.high << places) | (this.low >>> (32 - places));\n this.low <<= places;\n }\n };\n _Word64.prototype.rotateRight = function (places) {\n var low;\n var high;\n if (places & 32) {\n high = this.low;\n low = this.high;\n }\n else {\n low = this.low;\n high = this.high;\n }\n places &= 31;\n this.low = (low >>> places) | (high << (32 - places));\n this.high = (high >>> places) | (low << (32 - places));\n };\n _Word64.prototype.add = function (word) {\n var lowAdd = (this.low >>> 0) + (word.low >>> 0);\n var highAdd = (this.high >>> 0) + (word.high >>> 0);\n if (lowAdd > 0xffffffff) {\n highAdd += 1;\n }\n this.low = lowAdd | 0;\n this.high = highAdd | 0;\n };\n _Word64.prototype.copyTo = function (bytes, offset) {\n bytes[Number.parseInt(offset.toString(), 10)] = (this.high >>> 24) & 0xff;\n bytes[offset + 1] = (this.high >> 16) & 0xff;\n bytes[offset + 2] = (this.high >> 8) & 0xff;\n bytes[offset + 3] = this.high & 0xff;\n bytes[offset + 4] = (this.low >>> 24) & 0xff;\n bytes[offset + 5] = (this.low >> 16) & 0xff;\n bytes[offset + 6] = (this.low >> 8) & 0xff;\n bytes[offset + 7] = this.low & 0xff;\n };\n _Word64.prototype.assign = function (word) {\n this.high = word.high;\n this.low = word.low;\n };\n return _Word64;\n}());\nexport { _Word64 };\nvar _EncryptionKey = /** @class */ (function () {\n function _EncryptionKey() {\n }\n Object.defineProperty(_EncryptionKey.prototype, \"_sha256\", {\n get: function () {\n if (typeof this._sha256Obj === 'undefined') {\n this._sha256Obj = new _Sha256();\n }\n return this._sha256Obj;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_EncryptionKey.prototype, \"_sha512\", {\n get: function () {\n if (typeof this._sha512Obj === 'undefined') {\n this._sha512Obj = new _Sha512();\n }\n return this._sha512Obj;\n },\n enumerable: true,\n configurable: true\n });\n return _EncryptionKey;\n}());\nexport { _EncryptionKey };\n// PDF17 encryption support\nvar _BasicEncryption = /** @class */ (function (_super) {\n __extends(_BasicEncryption, _super);\n function _BasicEncryption() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n _BasicEncryption.prototype._checkOwnerPassword = function (password, ownerValidationSalt, userBytes, ownerPassword) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n var result = this._sha256._hash(hashData, 0, hashData.length);\n return _areArrayEqual(result, ownerPassword);\n };\n _BasicEncryption.prototype._checkUserPassword = function (password, userValidationSalt, userPassword) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n var result = this._sha256._hash(hashData, 0, hashData.length);\n return _areArrayEqual(result, userPassword);\n };\n _BasicEncryption.prototype._getOwnerKey = function (password, ownerKeySalt, userBytes, ownerEncryption) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n var key = this._sha256._hash(hashData, 0, hashData.length);\n return (new _AdvancedEncryption256Cipher(key))._decryptBlock(ownerEncryption, false, new Uint8Array(16));\n };\n _BasicEncryption.prototype._getUserKey = function (password, userKeySalt, userEncryption) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n var key = this._sha256._hash(hashData, 0, hashData.length);\n return (new _AdvancedEncryption256Cipher(key))._decryptBlock(userEncryption, false, new Uint8Array(16));\n };\n return _BasicEncryption;\n}(_EncryptionKey));\nexport { _BasicEncryption };\n// PDF20 encryption support\nvar _AdvancedEncryption = /** @class */ (function (_super) {\n __extends(_AdvancedEncryption, _super);\n function _AdvancedEncryption() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n _AdvancedEncryption.prototype._checkOwnerPassword = function (password, ownerValidationSalt, userBytes, ownerPassword) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n var result = this._hash(password, hashData, userBytes);\n return _areArrayEqual(result, ownerPassword);\n };\n _AdvancedEncryption.prototype._checkUserPassword = function (password, userValidationSalt, userPassword) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n var result = this._hash(password, hashData, new Uint8Array([]));\n return _areArrayEqual(result, userPassword);\n };\n _AdvancedEncryption.prototype._getOwnerKey = function (password, ownerKeySalt, userBytes, ownerEncryption) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n var key = this._hash(password, hashData, userBytes);\n return (new _AdvancedEncryption256Cipher(key))._decryptBlock(ownerEncryption, false, new Uint8Array(16));\n };\n _AdvancedEncryption.prototype._getUserKey = function (password, userKeySalt, userEncryption) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n var key = this._hash(password, hashData, new Uint8Array([]));\n var cipher = new _AdvancedEncryption256Cipher(key);\n return cipher._decryptBlock(userEncryption, false, new Uint8Array(16));\n };\n _AdvancedEncryption.prototype._hash = function (password, input, userBytes) {\n var data = this._sha256._hash(input, 0, input.length).subarray(0, 32);\n var encrypted = new Uint8Array([0]);\n var i = 0;\n while (i < 64 || encrypted[encrypted.length - 1] > i - 32) {\n var combinedLength = password.length + data.length + userBytes.length;\n var combinedArray = new Uint8Array(combinedLength);\n var writeOffset = 0;\n combinedArray.set(password, writeOffset);\n writeOffset += password.length;\n combinedArray.set(data, writeOffset);\n writeOffset += data.length;\n combinedArray.set(userBytes, writeOffset);\n var k1 = new Uint8Array(combinedLength * 64);\n for (var j = 0, pos = 0; j < 64; j++) {\n k1.set(combinedArray, pos);\n pos += combinedLength;\n }\n var cipher = new _AdvancedEncryption128Cipher(data.subarray(0, 16));\n encrypted = cipher._encrypt(k1, data.subarray(16, 32));\n var remainder = 0;\n for (var z = 0; z < 16; z++) {\n remainder *= 256 % 3;\n remainder %= 3;\n remainder += (encrypted[Number.parseInt(z.toString(), 10)] >>> 0) % 3;\n remainder %= 3;\n }\n if (remainder === 2) {\n data = this._sha512._hash(encrypted, 0, encrypted.length);\n }\n else if (remainder === 1) {\n data = this._sha512._hash(encrypted, 0, encrypted.length, true);\n }\n else if (remainder === 0) {\n data = this._sha256._hash(encrypted, 0, encrypted.length);\n }\n i++;\n }\n return data.subarray(0, 32);\n };\n return _AdvancedEncryption;\n}(_EncryptionKey));\nexport { _AdvancedEncryption };\nvar _Cipher = /** @class */ (function () {\n function _Cipher() {\n }\n return _Cipher;\n}());\nexport { _Cipher };\nvar _NormalCipherFour = /** @class */ (function (_super) {\n __extends(_NormalCipherFour, _super);\n function _NormalCipherFour(key) {\n var _this = _super.call(this) || this;\n _this._a = 0;\n _this._b = 0;\n var s = new Uint8Array(256);\n for (var i = 0; i < 256; ++i) {\n s[Number.parseInt(i.toString(), 10)] = i;\n }\n var keyLength = key.length;\n for (var i = 0, j = 0; i < 256; ++i) {\n var buffer = s[Number.parseInt(i.toString(), 10)];\n j = (j + buffer + key[i % keyLength]) & 0xff;\n s[Number.parseInt(i.toString(), 10)] = s[Number.parseInt(j.toString(), 10)];\n s[Number.parseInt(j.toString(), 10)] = buffer;\n }\n _this._s = s;\n return _this;\n }\n _NormalCipherFour.prototype._encryptBlock = function (data) {\n var a = this._a;\n var b = this._b;\n var s = this._s;\n var n = data.length;\n var output = new Uint8Array(n);\n for (var i = 0; i < n; ++i) {\n a = (a + 1) & 0xff;\n var first = s[Number.parseInt(a.toString(), 10)];\n b = (b + first) & 0xff;\n var second = s[Number.parseInt(b.toString(), 10)];\n s[Number.parseInt(a.toString(), 10)] = second;\n s[Number.parseInt(b.toString(), 10)] = first;\n output[Number.parseInt(i.toString(), 10)] = data[Number.parseInt(i.toString(), 10)] ^ s[(first + second) & 0xff];\n }\n this._a = a;\n this._b = b;\n return output;\n };\n _NormalCipherFour.prototype._decryptBlock = function (data) {\n return this._encryptBlock(data);\n };\n _NormalCipherFour.prototype._encrypt = function (data) {\n return this._encryptBlock(data);\n };\n return _NormalCipherFour;\n}(_Cipher));\nexport { _NormalCipherFour };\nvar _AdvancedEncryptionBaseCipher = /** @class */ (function (_super) {\n __extends(_AdvancedEncryptionBaseCipher, _super);\n function _AdvancedEncryptionBaseCipher() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._buffer = new Uint8Array(16);\n _this._position = 0;\n _this._s = new Uint8Array([\n 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n 0xb0, 0x54, 0xbb, 0x16\n ]);\n _this._inverseS = new Uint8Array([\n 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n 0x55, 0x21, 0x0c, 0x7d\n ]);\n _this._mix = new Uint32Array([\n 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3\n ]);\n return _this;\n }\n Object.defineProperty(_AdvancedEncryptionBaseCipher.prototype, \"_mixCol\", {\n get: function () {\n if (typeof this._mixC === 'undefined') {\n this._mixC = new Uint8Array(256);\n for (var i = 0; i < 256; i++) {\n if (i < 128) {\n this._mixC[Number.parseInt(i.toString(), 10)] = i << 1;\n }\n else {\n this._mixC[Number.parseInt(i.toString(), 10)] = (i << 1) ^ 0x1b;\n }\n }\n }\n return this._mixC;\n },\n enumerable: true,\n configurable: true\n });\n _AdvancedEncryptionBaseCipher.prototype._decrypt = function (input, key) {\n var t;\n var u;\n var v;\n var state = new Uint8Array(16);\n state.set(input);\n for (var j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[Number.parseInt(j.toString(), 10)] ^= key[Number.parseInt(k.toString(), 10)];\n }\n for (var i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n for (var j = 0; j < 16; ++j) {\n state[Number.parseInt(j.toString(), 10)] = this._inverseS[state[Number.parseInt(j.toString(), 10)]];\n }\n for (var j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[Number.parseInt(j.toString(), 10)] ^= key[Number.parseInt(k.toString(), 10)];\n }\n for (var j = 0; j < 16; j += 4) {\n var s0 = this._mix[state[Number.parseInt(j.toString(), 10)]];\n var s1 = this._mix[state[j + 1]];\n var s2 = this._mix[state[j + 2]];\n var s3 = this._mix[state[j + 3]];\n t = s0 ^ (s1 >>> 8) ^ (s1 << 24) ^ (s2 >>> 16) ^ (s2 << 16) ^ (s3 >>> 24) ^ (s3 << 8);\n state[Number.parseInt(j.toString(), 10)] = (t >>> 24) & 0xff;\n state[j + 1] = (t >> 16) & 0xff;\n state[j + 2] = (t >> 8) & 0xff;\n state[j + 3] = t & 0xff;\n }\n }\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n for (var j = 0; j < 16; ++j) {\n state[Number.parseInt(j.toString(), 10)] = this._inverseS[state[Number.parseInt(j.toString(), 10)]];\n state[Number.parseInt(j.toString(), 10)] ^= key[Number.parseInt(j.toString(), 10)];\n }\n return state;\n };\n _AdvancedEncryptionBaseCipher.prototype._encryptBlock = function (input, key) {\n var s = this._s;\n var t;\n var u;\n var v;\n var state = new Uint8Array(16);\n state.set(input);\n for (var j = 0; j < 16; ++j) {\n state[Number.parseInt(j.toString(), 10)] ^= key[Number.parseInt(j.toString(), 10)];\n }\n for (var i = 1; i < this._cyclesOfRepetition; i++) {\n for (var j = 0; j < 16; ++j) {\n state[Number.parseInt(j.toString(), 10)] = s[state[Number.parseInt(j.toString(), 10)]];\n }\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n for (var j = 0; j < 16; j += 4) {\n var s0 = state[j + 0];\n var s1 = state[j + 1];\n var s2 = state[j + 2];\n var s3 = state[j + 3];\n t = s0 ^ s1 ^ s2 ^ s3;\n state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n }\n for (var j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[Number.parseInt(j.toString(), 10)] ^= key[Number.parseInt(k.toString(), 10)];\n }\n }\n for (var j = 0; j < 16; ++j) {\n state[Number.parseInt(j.toString(), 10)] = s[state[Number.parseInt(j.toString(), 10)]];\n }\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n for (var j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[Number.parseInt(j.toString(), 10)] ^= key[Number.parseInt(k.toString(), 10)];\n }\n return state;\n };\n _AdvancedEncryptionBaseCipher.prototype._decryptBlockHelper = function (data, finalize) {\n var sourceLength = data.length;\n var buffer = this._buffer;\n var bufferLength = this._position;\n var result = [];\n var iv = this._iv;\n for (var i = 0; i < sourceLength; ++i) {\n buffer[Number.parseInt(bufferLength.toString(), 10)] = data[Number.parseInt(i.toString(), 10)];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n var plain = this._decrypt(buffer, this._key);\n for (var j = 0; j < 16; ++j) {\n plain[Number.parseInt(j.toString(), 10)] ^= iv[Number.parseInt(j.toString(), 10)];\n }\n iv = buffer;\n result.push(plain);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n this._buffer = buffer;\n this._bufferLength = bufferLength;\n this._iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n var outputLength = 16 * result.length;\n if (finalize) {\n var lastBlock = result[result.length - 1];\n var length_1 = lastBlock[15];\n if (length_1 <= 16) {\n for (var i = 15, ii = 16 - length_1; i >= ii; --i) {\n if (lastBlock[Number.parseInt(i.toString(), 10)] !== length_1) {\n length_1 = 0;\n break;\n }\n }\n outputLength -= length_1;\n result[result.length - 1] = lastBlock.subarray(0, 16 - length_1);\n }\n }\n var output = new Uint8Array(outputLength);\n for (var i = 0, j = 0; i < result.length; ++i, j += 16) {\n output.set(result[Number.parseInt(i.toString(), 10)], j);\n }\n return output;\n };\n _AdvancedEncryptionBaseCipher.prototype._decryptBlock = function (data, finalize, iv) {\n var sourceLength = data.length;\n var buffer = this._buffer;\n var bufferLength = this._position;\n if (iv) {\n this._iv = iv;\n }\n else {\n for (var i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) {\n buffer[Number.parseInt(bufferLength.toString(), 10)] = data[Number.parseInt(i.toString(), 10)];\n }\n if (bufferLength < 16) {\n this._bufferLength = bufferLength;\n return new Uint8Array(0);\n }\n this._iv = buffer;\n data = data.subarray(16);\n }\n this._buffer = new Uint8Array(16);\n this._bufferLength = 0;\n this._decryptBlock = this._decryptBlockHelper;\n return this._decryptBlock(data, finalize);\n };\n _AdvancedEncryptionBaseCipher.prototype._encrypt = function (data, iv) {\n var sourceLength = data.length;\n var buffer = this._buffer;\n var bufferLength = this._position;\n var result = [];\n if (!iv) {\n iv = new Uint8Array(16);\n }\n for (var i = 0; i < sourceLength; ++i) {\n buffer[Number.parseInt(bufferLength.toString(), 10)] = data[Number.parseInt(i.toString(), 10)];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n for (var j = 0; j < 16; ++j) {\n buffer[Number.parseInt(j.toString(), 10)] ^= iv[Number.parseInt(j.toString(), 10)];\n }\n var cipher = this._encryptBlock(buffer, this._key);\n iv = cipher;\n result.push(cipher);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n this._buffer = buffer;\n this._bufferLength = bufferLength;\n this._iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n var outputLength = 16 * result.length;\n var output = new Uint8Array(outputLength);\n for (var i = 0, j = 0; i < result.length; ++i, j += 16) {\n output.set(result[Number.parseInt(i.toString(), 10)], j);\n }\n return output;\n };\n return _AdvancedEncryptionBaseCipher;\n}(_Cipher));\nexport { _AdvancedEncryptionBaseCipher };\nvar _AdvancedEncryption128Cipher = /** @class */ (function (_super) {\n __extends(_AdvancedEncryption128Cipher, _super);\n function _AdvancedEncryption128Cipher(key) {\n var _this = _super.call(this) || this;\n _this._cyclesOfRepetition = 10;\n _this._keySize = 160;\n _this._key = new Uint8Array([\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d\n ]);\n _this._key = _this._expandKey(key);\n return _this;\n }\n _AdvancedEncryption128Cipher.prototype._expandKey = function (cipherKey) {\n var count = 176;\n var s = this._s;\n var rcon = this._key;\n var result = new Uint8Array(count);\n result.set(cipherKey);\n for (var j = 16, i = 1; j < count; ++i) {\n var t1 = result[j - 3];\n var t2 = result[j - 2];\n var t3 = result[j - 1];\n var t4 = result[j - 4];\n t1 = s[Number.parseInt(t1.toString(), 10)];\n t2 = s[Number.parseInt(t2.toString(), 10)];\n t3 = s[Number.parseInt(t3.toString(), 10)];\n t4 = s[Number.parseInt(t4.toString(), 10)];\n t1 ^= rcon[Number.parseInt(i.toString(), 10)];\n for (var n = 0; n < 4; ++n) {\n result[Number.parseInt(j.toString(), 10)] = t1 ^= result[j - 16];\n result[j + 1] = t2 ^= result[j - 15];\n result[j + 2] = t3 ^= result[j - 14];\n result[j + 3] = t4 ^= result[j - 13];\n j += 4;\n }\n }\n return result;\n };\n return _AdvancedEncryption128Cipher;\n}(_AdvancedEncryptionBaseCipher));\nexport { _AdvancedEncryption128Cipher };\nvar _AdvancedEncryption256Cipher = /** @class */ (function (_super) {\n __extends(_AdvancedEncryption256Cipher, _super);\n function _AdvancedEncryption256Cipher(key) {\n var _this = _super.call(this) || this;\n _this._cyclesOfRepetition = 14;\n _this._keySize = 224;\n _this._key = _this._expandKey(key);\n return _this;\n }\n _AdvancedEncryption256Cipher.prototype._expandKey = function (cipherKey) {\n var count = 240;\n var s = this._s;\n var result = new Uint8Array(count);\n result.set(cipherKey);\n var r = 1;\n var t1;\n var t2;\n var t3;\n var t4;\n for (var j = 32, i = 1; j < count; ++i) {\n if (j % 32 === 16) {\n t1 = s[Number.parseInt(t1.toString(), 10)];\n t2 = s[Number.parseInt(t2.toString(), 10)];\n t3 = s[Number.parseInt(t3.toString(), 10)];\n t4 = s[Number.parseInt(t4.toString(), 10)];\n }\n else if (j % 32 === 0) {\n t1 = result[j - 3];\n t2 = result[j - 2];\n t3 = result[j - 1];\n t4 = result[j - 4];\n t1 = s[Number.parseInt(t1.toString(), 10)];\n t2 = s[Number.parseInt(t2.toString(), 10)];\n t3 = s[Number.parseInt(t3.toString(), 10)];\n t4 = s[Number.parseInt(t4.toString(), 10)];\n t1 ^= r;\n r = r << 1;\n if (r >= 256) {\n r = (r ^ 0x1b) & 0xff;\n }\n }\n for (var n = 0; n < 4; ++n) {\n result[Number.parseInt(j.toString(), 10)] = t1 ^= result[j - 32];\n result[j + 1] = t2 ^= result[j - 31];\n result[j + 2] = t3 ^= result[j - 30];\n result[j + 3] = t4 ^= result[j - 29];\n j += 4;\n }\n }\n return result;\n };\n return _AdvancedEncryption256Cipher;\n}(_AdvancedEncryptionBaseCipher));\nexport { _AdvancedEncryption256Cipher };\nvar _NullCipher = /** @class */ (function (_super) {\n __extends(_NullCipher, _super);\n function _NullCipher() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n _NullCipher.prototype._decryptBlock = function (data) {\n return data;\n };\n _NullCipher.prototype._encrypt = function (data) {\n return data;\n };\n return _NullCipher;\n}(_Cipher));\nexport { _NullCipher };\nvar _CipherTransform = /** @class */ (function () {\n function _CipherTransform(stringCipher, streamCipher) {\n this._stringCipher = stringCipher;\n this._streamCipher = streamCipher;\n }\n _CipherTransform.prototype.createStream = function (stream, length) {\n return new _PdfDecryptStream(stream, length, this._streamCipher);\n };\n _CipherTransform.prototype.decryptString = function (s) {\n return _bytesToString(this._stringCipher._decryptBlock(_stringToBytes(s), true));\n };\n _CipherTransform.prototype.encryptString = function (s) {\n if (this._stringCipher instanceof _AdvancedEncryptionBaseCipher) {\n var length_2 = s.length;\n var pad = 16 - (length_2 % 16);\n s += String.fromCharCode(pad).repeat(pad);\n var iv = new Uint8Array(16);\n if (typeof crypto !== 'undefined') {\n crypto.getRandomValues(iv);\n }\n else {\n for (var i = 0; i < 16; i++) {\n iv[Number.parseInt(i.toString(), 10)] = Math.floor(256 * Math.random());\n }\n }\n var data = this._stringCipher._encrypt(_stringToBytes(s), iv);\n var buffer = new Uint8Array(16 + data.length);\n buffer.set(iv);\n buffer.set(data, 16);\n return _bytesToString(buffer);\n }\n return _bytesToString(this._stringCipher._encrypt(_stringToBytes(s)));\n };\n return _CipherTransform;\n}());\nexport { _CipherTransform };\n","import { _PdfStream } from './base-stream';\nimport { _PdfDictionary, _PdfReferenceSet, _isCommand, _PdfReference, _PdfName } from './pdf-primitives';\nimport { BaseException, FormatError, _escapePdfName, _bytesToString, ParserEndOfFileException, _numberToString, _stringToPdfString } from './utils';\nimport { _PdfParser, _PdfLexicalOperator } from './pdf-parser';\nimport { _PdfBaseStream } from './base-stream';\nimport { PdfCrossReferenceType } from './enumerator';\nimport { _MD5, _PdfEncryptor } from './security/encryptor';\nimport { CompressedStreamWriter } from '@syncfusion/ej2-compression';\nvar _PdfCrossReference = /** @class */ (function () {\n function _PdfCrossReference(document, password) {\n this._version = '';\n this._newLine = '\\r\\n';\n this._password = password;\n this._document = document;\n this._stream = document._stream;\n this._entries = [];\n this._crossReferencePosition = Object.create(null);\n this._cacheMap = new Map(); // eslint-disable-line\n this._pendingRefs = new _PdfReferenceSet();\n }\n _PdfCrossReference.prototype._setStartXRef = function (startXRef) {\n this._startXRefQueue = [startXRef];\n this._prevStartXref = startXRef;\n };\n _PdfCrossReference.prototype._parse = function (recoveryMode) {\n var trailerDictionary;\n if (!recoveryMode) {\n trailerDictionary = this._readXRef();\n }\n else {\n trailerDictionary = this._indexObjects();\n }\n trailerDictionary.assignXref(this);\n this._nextReferenceNumber = trailerDictionary.get('Size');\n this._trailer = trailerDictionary;\n var encrypt = trailerDictionary.get('Encrypt');\n if (encrypt) {\n this._document._isEncrypted = true;\n this._ids = trailerDictionary.get('ID');\n this._permissionFlags = encrypt.get('P');\n var fileId = this._ids && this._ids.length ? this._ids[0] : '';\n encrypt.suppressEncryption = true;\n this._encrypt = new _PdfEncryptor(encrypt, fileId, this._password);\n this._document._fileStructure._crossReferenceType = PdfCrossReferenceType.stream;\n this._document._isUserPassword = this._encrypt._isUserPassword;\n this._document._encryptOnlyAttachment = this._encrypt._encryptOnlyAttachment;\n if (this._encrypt._encryptOnlyAttachment) {\n this._document._hasUserPasswordOnly = true;\n this._document._encryptMetaData = false;\n }\n else {\n this._document._hasUserPasswordOnly = this._encrypt._hasUserPasswordOnly;\n this._document._encryptMetaData = encrypt.has('EncryptMetadata') ? encrypt.get('EncryptMetadata') : true;\n }\n }\n var hasRoot = false;\n var root;\n try {\n root = trailerDictionary.get('Root');\n }\n catch (e) {\n throw new BaseException('Invalid cross reference', 'XRefParseException');\n }\n if (root) {\n try {\n var pagesEntry = root.get('Pages');\n if (pagesEntry) {\n this._root = root;\n hasRoot = true;\n }\n }\n catch (ex) {\n throw new BaseException('Invalid cross reference', 'InvalidXRef');\n }\n }\n if (!hasRoot) {\n if (!recoveryMode) {\n throw new BaseException('Invalid cross reference', 'XRefParseException');\n }\n else {\n throw new BaseException('Invalid cross reference', 'InvalidXRef');\n }\n }\n };\n _PdfCrossReference.prototype._getEntry = function (i) {\n var xrefEntry = this._entries[i]; // eslint-disable-line\n if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n return xrefEntry;\n }\n return null;\n };\n _PdfCrossReference.prototype._fetch = function (ref, suppressEncryption) {\n var entry; // eslint-disable-line\n if (!(ref instanceof _PdfReference)) {\n throw new Error('ref object is not a reference');\n }\n var objectNumber = ref.objectNumber;\n var cacheEntry = this._cacheMap.get(ref); // eslint-disable-line\n if (typeof cacheEntry !== 'undefined') {\n if (cacheEntry instanceof _PdfDictionary && !cacheEntry.objId) {\n cacheEntry.objId = objectNumber;\n }\n return cacheEntry;\n }\n var xrefEntry = this._getEntry(objectNumber);\n if (xrefEntry === null) {\n this._cacheMap.set(ref, xrefEntry);\n return xrefEntry;\n }\n if (this._pendingRefs.has(ref)) {\n this._pendingRefs.remove(ref);\n throw new Error('circular reference');\n }\n this._pendingRefs.put(ref);\n try {\n if (xrefEntry.uncompressed) {\n entry = this._fetchUncompressed(ref, xrefEntry, suppressEncryption);\n }\n else {\n entry = this._fetchCompressed(ref, xrefEntry);\n }\n this._pendingRefs.remove(ref);\n }\n catch (ex) {\n this._pendingRefs.remove(ref);\n throw ex;\n }\n return entry;\n };\n _PdfCrossReference.prototype._fetchUncompressed = function (reference, xrefEntry, suppressEncryption) {\n var generationNumber = reference.generationNumber;\n var objectNumber = reference.objectNumber;\n if (xrefEntry.gen !== generationNumber) {\n throw new BaseException(\"Inconsistent generation in XRef: \" + reference, 'XRefEntryException');\n }\n var stream = this._stream.makeSubStream(xrefEntry.offset + this._stream.start, undefined);\n var parser = new _PdfParser(new _PdfLexicalOperator(stream), this, true);\n var obj1 = parser.getObject();\n var obj2 = parser.getObject();\n var obj3 = parser.getObject();\n if (obj1 !== objectNumber || obj2 !== generationNumber || typeof obj3 === 'undefined') {\n throw new BaseException(\"Bad (uncompressed) XRef entry: \" + reference, 'XRefEntryException');\n }\n var entry; // eslint-disable-line\n if (this._encrypt && !suppressEncryption) {\n entry = parser.getObject(this._encrypt._createCipherTransform(reference.objectNumber, reference.generationNumber));\n }\n else {\n entry = parser.getObject();\n }\n if (!(entry instanceof _PdfBaseStream)) {\n this._cacheMap.set(reference, entry);\n }\n if (entry instanceof _PdfDictionary) {\n entry.objId = reference.toString();\n }\n else if (entry instanceof _PdfBaseStream) {\n entry.dictionary.objId = reference.toString();\n }\n return entry;\n };\n _PdfCrossReference.prototype._fetchCompressed = function (ref, xrefEntry) {\n var tableOffset = xrefEntry.offset;\n var stream = this._fetch(_PdfReference.get(tableOffset, 0));\n if (typeof stream === 'undefined') {\n throw new FormatError('bad ObjStm stream');\n }\n var first = stream.dictionary.get('First');\n var n = stream.dictionary.get('N');\n var gen = ref.generationNumber;\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError('invalid first and n parameters for ObjStm stream');\n }\n var parser = new _PdfParser(new _PdfLexicalOperator(stream), this, true);\n var nums = new Array(n);\n var offsets = new Array(n);\n for (var i = 0; i < n; ++i) {\n var value = parser.getObject();\n if (!Number.isInteger(value)) {\n throw new FormatError(\"invalid object number in the ObjStm stream: \" + value);\n }\n var offset = parser.getObject();\n if (!Number.isInteger(offset)) {\n throw new FormatError(\"invalid object offset in the ObjStm stream: \" + offset);\n }\n nums[i] = value; // eslint-disable-line\n offsets[i] = offset; // eslint-disable-line\n }\n var start = (stream.start || 0) + first;\n var entries = new Array(n); // eslint-disable-line\n for (var i = 0; i < n; ++i) {\n var length_1 = (i < n - 1 ? (offsets[i + 1] - offsets[i]) : undefined); // eslint-disable-line\n if (length_1 < 0) {\n throw new FormatError('Invalid offset in the ObjStm stream.');\n }\n parser = new _PdfParser(new _PdfLexicalOperator(stream.makeSubStream(start + offsets[i], length_1, stream.dictionary)), this, true); // eslint-disable-line\n var obj = parser.getObject(); // eslint-disable-line\n entries[i] = obj; // eslint-disable-line\n if (obj instanceof _PdfBaseStream) {\n continue;\n }\n var value = nums[i]; // eslint-disable-line\n var entry = this._entries[value]; // eslint-disable-line\n if (entry && entry.offset === tableOffset && entry.gen === i) {\n var objId = value + \" \" + gen;\n this._cacheMap.set(_PdfReference.get(value, gen), obj);\n if (obj instanceof _PdfDictionary) {\n obj.objId = objId;\n }\n }\n }\n var result = entries[xrefEntry.gen]; // eslint-disable-line\n if (typeof result === 'undefined') {\n throw new BaseException(\"Bad (compressed) XRef entry: \" + ref, 'XRefEntryException');\n }\n return result;\n };\n _PdfCrossReference.prototype._readXRef = function (recoveryMode) {\n if (recoveryMode === void 0) { recoveryMode = false; }\n var stream = this._stream;\n var startXRefParsedCache = new Set();\n try {\n while (this._startXRefQueue.length) {\n var startXRef = this._startXRefQueue[0];\n if (this._prevStartXref < startXRef) {\n this._prevStartXref = startXRef;\n }\n if (startXRefParsedCache.has(startXRef)) {\n this._startXRefQueue.shift();\n continue;\n }\n startXRefParsedCache.add(startXRef);\n stream.position = startXRef + stream.start;\n var parser = new _PdfParser(new _PdfLexicalOperator(stream), this, true);\n var obj = parser.getObject(); // eslint-disable-line\n var dictionary = void 0;\n if (_isCommand(obj, 'xref')) {\n if (typeof this._document._fileStructure._crossReferenceType === 'undefined') {\n this._document._fileStructure._crossReferenceType = PdfCrossReferenceType.table;\n }\n dictionary = this._processXRefTable(parser);\n if (!this._topDictionary) {\n this._topDictionary = dictionary;\n }\n obj = dictionary.get('XRefStm');\n if (Number.isInteger(obj)) {\n var position = obj; // eslint-disable-line\n if (!(position in this._crossReferencePosition)) {\n this._crossReferencePosition[position] = 1; // eslint-disable-line\n this._startXRefQueue.push(position);\n }\n }\n }\n else if (Number.isInteger(obj)) {\n if (typeof this._document._fileStructure._crossReferenceType === 'undefined') {\n this._document._fileStructure._crossReferenceType = PdfCrossReferenceType.stream;\n }\n var gen = parser.getObject();\n var command = parser.getObject();\n obj = parser.getObject();\n if (typeof gen === 'undefined' ||\n !Number.isInteger(gen) ||\n !_isCommand(command, 'obj') ||\n !(obj instanceof _PdfBaseStream)) {\n throw new FormatError('Invalid cross reference stream');\n }\n dictionary = this._processXRefStream(obj);\n if (!this._topDictionary) {\n this._topDictionary = dictionary;\n }\n if (!dictionary) {\n throw new FormatError('Failed to read XRef stream');\n }\n }\n else {\n throw new FormatError('Invalid XRef stream header');\n }\n obj = dictionary.get('Prev');\n if (Number.isInteger(obj)) {\n this._startXRefQueue.push(obj);\n }\n else if (obj instanceof _PdfReference) {\n this._startXRefQueue.push(obj.objectNumber);\n }\n this._startXRefQueue.shift();\n }\n return this._topDictionary;\n }\n catch (e) {\n this._startXRefQueue.shift();\n }\n if (recoveryMode) {\n return undefined;\n }\n throw new BaseException('Invalid cross reference', 'XRefParseException');\n };\n _PdfCrossReference.prototype._readToken = function (data, offset) {\n var lf = 0xa;\n var cr = 0xd;\n var lt = 0x3c;\n var token = '';\n var ch = data[offset]; // eslint-disable-line\n while (ch !== lf && ch !== cr && ch !== lt) {\n if (++offset >= data.length) {\n break;\n }\n token += String.fromCharCode(ch);\n ch = data[offset]; // eslint-disable-line\n }\n return token;\n };\n _PdfCrossReference.prototype._skipUntil = function (data, offset, what) {\n var length = what.length;\n var dataLength = data.length;\n var skipped = 0;\n while (offset < dataLength) {\n var i = 0;\n while (i < length && data[offset + i] === what[i]) { // eslint-disable-line\n ++i;\n }\n if (i >= length) {\n break;\n }\n offset++;\n skipped++;\n }\n return skipped;\n };\n _PdfCrossReference.prototype._indexObjects = function () {\n var tab = 0x9;\n var lf = 0xa;\n var cr = 0xd;\n var space = 0x20;\n var percent = 0x25;\n var objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n var endobjRegExp = /\\bendobj[\\b\\s]$/;\n var nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n var checkContentLength = 25;\n var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]);\n var objBytes = new Uint8Array([111, 98, 106]);\n var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n this._entries.length = 0;\n this._cacheMap.clear();\n var stream = this._stream;\n stream.position = 0;\n var buffer = stream.getBytes();\n var length = buffer.length;\n var position = stream.start;\n var trailers = [];\n var crossReferencePosition = [];\n while (position < length) {\n var ch = buffer[position]; // eslint-disable-line\n if (ch === tab || ch === lf || ch === cr || ch === space) {\n ++position;\n continue;\n }\n if (ch === percent) {\n do {\n ++position;\n if (position >= length) {\n break;\n }\n ch = buffer[position]; // eslint-disable-line\n } while (ch !== lf && ch !== cr);\n continue;\n }\n var token = this._readToken(buffer, position);\n var m = void 0; // eslint-disable-line\n if (token.startsWith('xref') && (token.length === 4 || /\\s/.test(token[4]))) {\n position += this._skipUntil(buffer, position, trailerBytes);\n trailers.push(position);\n position += this._skipUntil(buffer, position, startxrefBytes);\n }\n else {\n m = objRegExp.exec(token);\n if (m) {\n var objectNumber = Number.parseInt(m[1]) | 0; // eslint-disable-line\n var gen = Number.parseInt(m[2]) | 0; // eslint-disable-line\n var contentLength = void 0;\n var startPos = position + token.length;\n var updateEntries = false;\n if (!this._entries[objectNumber]) { // eslint-disable-line\n updateEntries = true;\n }\n else if (this._entries[objectNumber].gen === gen) { // eslint-disable-line\n try {\n var subStream = stream.makeSubStream(startPos, stream.length - startPos);\n var lexicalOperator = new _PdfLexicalOperator(subStream);\n var parser = new _PdfParser(lexicalOperator, null);\n parser.getObject();\n updateEntries = true;\n }\n catch (ex) {\n updateEntries = !(ex instanceof ParserEndOfFileException);\n }\n }\n if (updateEntries) {\n var info = new _PdfObjectInformation();\n info.offset = position - stream.start;\n info.gen = gen;\n info.uncompressed = true;\n this._entries[objectNumber] = info; // eslint-disable-line\n }\n while (startPos < buffer.length) {\n var endPos = startPos + this._skipUntil(buffer, startPos, objBytes) + 4;\n contentLength = endPos - position;\n var checkPos = Math.max(endPos - checkContentLength, startPos);\n var tokenStr = _bytesToString(buffer.subarray(checkPos, endPos));\n if (endobjRegExp.test(tokenStr)) {\n break;\n }\n else {\n var objToken = nestedObjRegExp.exec(tokenStr); // eslint-disable-line\n if (objToken && objToken[1]) {\n contentLength -= objToken[1].length;\n break;\n }\n }\n startPos = endPos;\n }\n var content = buffer.subarray(position, position + contentLength);\n var xrefTagOffset = this._skipUntil(content, 0, xrefBytes);\n if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n crossReferencePosition.push(position - stream.start);\n this._crossReferencePosition[position - stream.start] = 1;\n }\n position += contentLength;\n }\n else if (token.startsWith('trailer') && (token.length === 7 || /\\s/.test(token[7]))) {\n trailers.push(position);\n position += this._skipUntil(buffer, position, startxrefBytes);\n }\n else {\n position += token.length + 1;\n }\n }\n }\n for (var i = 0; i < crossReferencePosition.length; ++i) {\n this._startXRefQueue.push(crossReferencePosition[i]); // eslint-disable-line\n this._readXRef(true);\n }\n var trailerDict;\n for (var i = 0; i < trailers.length; ++i) {\n stream.position = trailers[i]; // eslint-disable-line\n var parser = new _PdfParser(new _PdfLexicalOperator(stream), this, true, true);\n var obj = parser.getObject(); // eslint-disable-line\n if (!_isCommand(obj, 'trailer')) {\n continue;\n }\n var dictionary = parser.getObject(); // eslint-disable-line\n if (!(dictionary instanceof _PdfDictionary)) {\n continue;\n }\n try {\n var rootDict = dictionary.get('Root'); // eslint-disable-line\n if (!(rootDict instanceof _PdfDictionary)) {\n continue;\n }\n var pagesDict = rootDict.get('Pages'); // eslint-disable-line\n if (!(pagesDict instanceof _PdfDictionary)) {\n continue;\n }\n var pagesCount = pagesDict.get('Count');\n if (typeof pagesCount === 'undefined' || !Number.isInteger(pagesCount)) {\n continue;\n }\n }\n catch (ex) {\n continue;\n }\n if (dictionary.has('ID')) {\n return dictionary;\n }\n trailerDict = dictionary;\n }\n if (trailerDict) {\n return trailerDict;\n }\n if (this._topDictionary) {\n return this._topDictionary;\n }\n throw new BaseException('Invalid PDF structure.', 'InvalidPDFException');\n };\n _PdfCrossReference.prototype._processXRefTable = function (parser) {\n if (typeof this._tableState === 'undefined') {\n var tableState = new _PdfCrossTableState();\n tableState.entryNum = 0;\n tableState.streamPos = parser.lexicalOperator.stream.position;\n tableState.parserBuf1 = parser.first;\n tableState.parserBuf2 = parser.second;\n this._tableState = tableState;\n }\n var obj = this._readXRefTable(parser);\n if (!_isCommand(obj, 'trailer')) {\n throw new FormatError('Invalid XRef table: could not find trailer dictionary');\n }\n var topDictionary = parser.getObject(); // eslint-disable-line\n var dictionary;\n if (topDictionary) {\n if (topDictionary instanceof _PdfDictionary) {\n dictionary = topDictionary;\n }\n else if (topDictionary instanceof _PdfBaseStream && topDictionary.dictionary) {\n dictionary = topDictionary.dictionary;\n }\n }\n if (!dictionary) {\n throw new FormatError('Invalid cross reference: could not parse trailer dictionary');\n }\n this._tableState = undefined;\n return dictionary;\n };\n _PdfCrossReference.prototype._readXRefTable = function (parser) {\n var stream = parser.lexicalOperator.stream;\n stream.position = this._tableState.streamPos;\n parser.first = this._tableState.parserBuf1;\n parser.second = this._tableState.parserBuf2;\n var obj; // eslint-disable-line\n while (true) { // eslint-disable-line\n if (typeof this._tableState.firstEntryNum === 'undefined' || typeof this._tableState.entryCount === 'undefined') {\n obj = parser.getObject();\n if (_isCommand(obj, 'trailer')) {\n break;\n }\n this._tableState.firstEntryNum = obj;\n this._tableState.entryCount = parser.getObject();\n }\n var first = this._tableState.firstEntryNum;\n var count = this._tableState.entryCount;\n if (!Number.isInteger(first) || !Number.isInteger(count)) {\n throw new FormatError('Invalid cross reference: wrong types in subsection header');\n }\n for (var i = this._tableState.entryNum; i < count; i++) {\n this._tableState.streamPos = stream.position;\n this._tableState.entryNum = i;\n this._tableState.parserBuf1 = parser.first;\n this._tableState.parserBuf2 = parser.second;\n var entry = new _PdfObjectInformation();\n entry.offset = parser.getObject();\n entry.gen = parser.getObject();\n var type = parser.getObject();\n if (type) {\n switch (type.command) {\n case 'f':\n entry.free = true;\n break;\n case 'n':\n entry.uncompressed = true;\n break;\n }\n }\n if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) {\n throw new FormatError(\"Invalid entry in cross reference subsection: \" + first + \", \" + count);\n }\n if (i === 0 && entry.free && first === 1) {\n first = 0;\n }\n if (!this._entries[i + first]) {\n this._entries[i + first] = entry;\n }\n }\n this._tableState.entryNum = 0;\n this._tableState.streamPos = stream.position;\n this._tableState.parserBuf1 = parser.first;\n this._tableState.parserBuf2 = parser.second;\n this._tableState.firstEntryNum = undefined;\n this._tableState.entryCount = undefined;\n }\n if (this._entries[0] && !this._entries[0].free) {\n throw new FormatError('Invalid XRef table: unexpected first object');\n }\n return obj;\n };\n _PdfCrossReference.prototype._processXRefStream = function (stream) {\n if (typeof this._streamState === 'undefined') {\n var streamParameters = stream.dictionary;\n var streamState = new _PdfStreamState();\n var index = streamParameters.getArray('Index');\n if (!index) {\n index = [0, streamParameters.get('Size')];\n }\n streamState.entryRanges = index;\n streamState.byteWidths = streamParameters.getArray('W');\n streamState.entryNum = 0;\n streamState.streamPos = stream.position;\n this._streamState = streamState;\n }\n this._readXRefStream(stream);\n this._streamState = undefined;\n return stream.dictionary;\n };\n _PdfCrossReference.prototype._readXRefStream = function (stream) {\n stream.position = this._streamState.streamPos;\n var typeFieldWidth = this._streamState.byteWidths[0];\n var offsetFieldWidth = this._streamState.byteWidths[1];\n var generationFieldWidth = this._streamState.byteWidths[2];\n var entryRanges = this._streamState.entryRanges;\n while (entryRanges.length > 0) {\n var first = entryRanges[0];\n var n = entryRanges[1];\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(\"Invalid XRef range fields: \" + first + \", \" + n);\n }\n if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) {\n throw new FormatError(\"Invalid XRef entry fields length: \" + first + \", \" + n);\n }\n for (var i = this._streamState.entryNum; i < n; ++i) {\n this._streamState.entryNum = i;\n this._streamState.streamPos = stream.position;\n var type = 0;\n var offset = 0;\n var generation = 0;\n for (var j = 0; j < typeFieldWidth; ++j) {\n var typeByte = stream.getByte();\n if (typeByte === -1) {\n throw new FormatError('invalid cross reference byte width type.');\n }\n type = (type << 8) | typeByte;\n }\n if (typeFieldWidth === 0) {\n type = 1;\n }\n for (var j = 0; j < offsetFieldWidth; ++j) {\n var offsetByte = stream.getByte();\n if (offsetByte === -1) {\n throw new FormatError('invalid cross reference byte width offset.');\n }\n offset = (offset << 8) | offsetByte;\n }\n for (var j = 0; j < generationFieldWidth; ++j) {\n var generationByte = stream.getByte();\n if (generationByte === -1) {\n throw new FormatError('invalid cross reference byte width generation.');\n }\n generation = (generation << 8) | generationByte;\n }\n var entry = new _PdfObjectInformation();\n entry.offset = offset;\n entry.gen = generation;\n switch (type) {\n case 0:\n entry.free = true;\n break;\n case 1:\n entry.uncompressed = true;\n break;\n case 2:\n break;\n default:\n throw new FormatError(\"Invalid XRef entry type: \" + type);\n }\n if (!this._entries[first + i]) {\n this._entries[first + i] = entry;\n }\n }\n this._streamState.entryNum = 0;\n this._streamState.streamPos = stream.position;\n entryRanges.splice(0, 2);\n }\n };\n _PdfCrossReference.prototype._getCatalogObj = function () {\n return this._root;\n };\n _PdfCrossReference.prototype._save = function () {\n var _this = this;\n var currentLength = this._stream.length;\n var buffer = [this._newLine.charCodeAt(0), this._newLine.charCodeAt(1), 37, 80, 68, 70, 45];\n this._writeString(\"\" + this._version + this._newLine, buffer);\n buffer.push(0x25, 0x83, 0x92, 0xfa, 0xfe);\n this._writeString(this._newLine, buffer);\n var updatedCount = 0;\n var uncompressedCount = 0;\n if (this._document._fileStructure._crossReferenceType === PdfCrossReferenceType.stream) {\n var data = [];\n var updatedStream_1 = [];\n var archiveXRef_1 = '';\n var indexes_1 = [];\n indexes_1.push(0, 1);\n var collection_1 = [];\n var uncompressedOffsets_1 = [];\n this._cacheMap.forEach(function (value, key) {\n var dictionary;\n if (value instanceof _PdfBaseStream) {\n dictionary = value.dictionary;\n }\n if (dictionary && dictionary._updated && (!dictionary.isCatalog || _this._allowCatalog)) {\n indexes_1.push(key.objectNumber, 1);\n uncompressedOffsets_1.push(currentLength + buffer.length);\n var cipher_1;\n if (_this._encrypt) {\n cipher_1 = _this._encrypt._createCipherTransform(key.objectNumber, key.generationNumber);\n }\n _this._writeObject(value, buffer, key, cipher_1);\n uncompressedCount++;\n dictionary._updated = false;\n }\n });\n this._cacheMap.forEach(function (value, key) {\n if (value instanceof _PdfDictionary) {\n if (value._updated && (!value.isCatalog || _this._allowCatalog)) {\n archiveXRef_1 += key.objectNumber + \" \" + updatedStream_1.length + _this._newLine;\n collection_1.push(key.objectNumber, 1);\n updatedCount++;\n _this._writeObject(value, updatedStream_1);\n }\n }\n else if (value instanceof _PdfBaseStream) {\n var dictionary = value.dictionary;\n if (dictionary && dictionary._updated && (!dictionary.isCatalog || _this._allowCatalog)) {\n indexes_1.push(key.objectNumber, 1);\n uncompressedOffsets_1.push(currentLength + buffer.length);\n _this._writeObject(value, buffer, key);\n uncompressedCount++;\n dictionary._updated = false;\n }\n }\n });\n for (var i = 0; i < collection_1.length; i++) {\n indexes_1.push(collection_1[parseInt(i.toString(), 10)]);\n }\n var archiveOffset = void 0;\n var archiveRef = void 0;\n if (updatedCount > 0) {\n archiveRef = this._getNextReference();\n indexes_1.push(archiveRef.objectNumber, 2);\n this._writeString(archiveXRef_1, data);\n this._writeBytes(updatedStream_1, data);\n var newDict = new _PdfDictionary(this);\n newDict.set('Type', _PdfName.get('ObjStm'));\n newDict.set('N', updatedCount);\n newDict.set('First', archiveXRef_1.length);\n newDict.set('Length', data.length);\n var archiveStream = new _PdfStream(data, newDict, 0, data.length);\n archiveOffset = currentLength + buffer.length;\n var cipher_2;\n if (this._encrypt) {\n cipher_2 = this._encrypt._createCipherTransform(archiveRef.objectNumber, archiveRef.generationNumber);\n }\n this._writeObject(archiveStream, buffer, archiveRef, cipher_2);\n }\n var newRef = this._getNextReference();\n var newStartXref = currentLength + buffer.length;\n var newXref = new _PdfDictionary(this);\n newXref.set('Type', _PdfName.get('XRef'));\n newXref.set('Index', indexes_1);\n newXref.set('W', [1, 3, 1]);\n this._copyTrailer(newXref);\n if (this._ids && this._ids.length > 0) {\n newXref.update('ID', [this._ids[0], this._computeMessageDigest(newStartXref)]);\n }\n var newXrefData = [];\n this._writeLong(0, 1, newXrefData);\n this._writeLong(1, 3, newXrefData);\n this._writeLong(-1, 1, newXrefData);\n if (uncompressedCount > 0) {\n for (var index = 0; index < uncompressedCount; index++) {\n this._writeLong(1, 1, newXrefData);\n this._writeLong(uncompressedOffsets_1[index], 3, newXrefData); // eslint-disable-line\n this._writeLong(0, 1, newXrefData);\n }\n }\n if (updatedCount > 0) {\n for (var index = 0; index < updatedCount; index++) {\n this._writeLong(2, 1, newXrefData);\n this._writeLong(archiveRef.objectNumber, 3, newXrefData);\n this._writeLong(index, 1, newXrefData);\n }\n this._writeLong(1, 1, newXrefData);\n this._writeLong(archiveOffset, 3, newXrefData);\n this._writeLong(0, 1, newXrefData);\n }\n this._writeLong(1, 1, newXrefData);\n this._writeLong(newStartXref, 3, newXrefData);\n this._writeLong(0, 1, newXrefData);\n newXref.set('Length', newXrefData.length);\n var newXrefStream = new _PdfStream(newXrefData, newXref, 0, newXrefData.length);\n var cipher = void 0;\n if (this._encrypt) {\n cipher = this._encrypt._createCipherTransform(newRef.objectNumber, newRef.generationNumber);\n }\n this._writeObject(newXrefStream, buffer, newRef, cipher, true);\n this._writeString(\"startxref\" + this._newLine + newStartXref + this._newLine + \"%%EOF\" + this._newLine, buffer);\n }\n else {\n var tempBuffer_1 = '';\n this._cacheMap.forEach(function (value, key) {\n var dictionary;\n if (value instanceof _PdfDictionary) {\n dictionary = value;\n }\n else if (value instanceof _PdfBaseStream) {\n dictionary = value.dictionary;\n }\n if (dictionary && dictionary._updated && (!dictionary.isCatalog || _this._allowCatalog)) {\n var offsetString = (currentLength + buffer.length).toString();\n while (offsetString.length < 10) {\n offsetString = '0' + offsetString;\n }\n var genString = key.generationNumber.toString();\n while (genString.length < 5) {\n genString = '0' + genString;\n }\n tempBuffer_1 += key.objectNumber + \" 1\" + _this._newLine + offsetString + \" \" + genString + \" n\" + _this._newLine;\n updatedCount++;\n _this._writeObject(value, buffer, key);\n }\n });\n var newStartXref = buffer.length + currentLength;\n this._writeString(\"xref\" + this._newLine + \"0 1\" + this._newLine + \"0000000000 65535 f\" + this._newLine, buffer);\n if (updatedCount > 0) {\n this._writeString(tempBuffer_1, buffer);\n }\n this._writeString(\"trailer\" + this._newLine, buffer);\n var newXref = new _PdfDictionary(this);\n this._copyTrailer(newXref);\n this._writeDictionary(newXref, buffer, this._newLine);\n this._writeString(\"startxref\" + this._newLine + newStartXref + this._newLine + \"%%EOF\" + this._newLine, buffer);\n }\n var array = new Uint8Array(this._stream.length + buffer.length);\n array.set(this._stream.bytes);\n array.set(buffer, this._stream.length);\n return array;\n };\n _PdfCrossReference.prototype._copyTrailer = function (newXref) {\n newXref.set('Size', this._nextReferenceNumber);\n newXref.set('Prev', this._prevStartXref);\n var root = this._trailer.getRaw('Root'); // eslint-disable-line\n if (typeof root !== 'undefined' && root !== null) {\n newXref.set('Root', root);\n }\n var info = this._trailer.getRaw('Info'); // eslint-disable-line\n if (typeof info !== 'undefined' && info !== null) {\n newXref.set('Info', info);\n }\n var encrypt = this._trailer.getRaw('Encrypt'); // eslint-disable-line\n if (typeof encrypt !== 'undefined' && encrypt !== null) {\n newXref.set('Encrypt', encrypt);\n }\n };\n _PdfCrossReference.prototype._computeMessageDigest = function (size) {\n var _this = this;\n var time = Math.floor(Date.now() / 1000);\n var buffer = [time.toString(), '', size.toString()];\n var info = this._trailer.getRaw('Info');\n var crossReferenceInfo = new _PdfDictionary();\n if (info && info instanceof _PdfDictionary) {\n info.forEach(function (key, value) {\n if (value && typeof value === 'string') {\n crossReferenceInfo.set(key, _stringToPdfString(value));\n }\n });\n }\n crossReferenceInfo.forEach(function (key, value) {\n buffer.push(value);\n });\n var array = [];\n buffer.forEach(function (str) {\n _this._writeString(str, array);\n });\n return _bytesToString((new _MD5().hash(new Uint8Array(array))));\n };\n _PdfCrossReference.prototype._getNextReference = function () {\n var reference = new _PdfReference(this._nextReferenceNumber++, 0);\n reference._isNew = true;\n return reference;\n };\n _PdfCrossReference.prototype._writeObject = function (obj, buffer, reference, transform, isCrossReference) {\n if (reference && reference instanceof _PdfReference) {\n this._writeString(reference.objectNumber + \" \" + reference.generationNumber + \" obj\" + this._newLine, buffer);\n }\n if (obj instanceof _PdfDictionary) {\n this._writeDictionary(obj, buffer, this._newLine, transform, isCrossReference);\n }\n else if (obj instanceof _PdfBaseStream) {\n this._writeStream(obj, buffer, transform, isCrossReference);\n }\n if (reference && reference instanceof _PdfReference) {\n this._writeString(\"endobj\" + this._newLine, buffer);\n }\n };\n _PdfCrossReference.prototype._writeDictionary = function (dictionary, buffer, spaceChar, transform, isCrossReference) {\n var _this = this;\n if (dictionary._currentObj) {\n dictionary._currentObj._beginSave();\n }\n if (dictionary._isFont) {\n this._writeFontDictionary(dictionary);\n }\n this._writeString(\"<<\" + spaceChar, buffer);\n dictionary.forEach(function (key, value) {\n _this._writeString(\"/\" + _escapePdfName(key) + \" \", buffer);\n _this._writeValue(value, buffer, transform, isCrossReference);\n _this._writeString(spaceChar, buffer);\n });\n this._writeString(\">>\" + this._newLine, buffer);\n };\n _PdfCrossReference.prototype._writeFontDictionary = function (dictionary) {\n if (dictionary.has('DescendantFonts')) {\n var fonts = dictionary.get('DescendantFonts'); // eslint-disable-line\n var reference = this._getNextReference();\n this._cacheMap.set(reference, fonts);\n dictionary.update('DescendantFonts', [reference]);\n }\n if (dictionary.has('ToUnicode')) {\n var fonts = dictionary.get('ToUnicode'); // eslint-disable-line\n var reference = this._getNextReference();\n this._cacheMap.set(reference, fonts);\n dictionary.update('ToUnicode', reference);\n }\n if (dictionary.has('FontFile2')) {\n var fonts = dictionary.get('FontFile2'); // eslint-disable-line\n var reference = this._getNextReference();\n this._cacheMap.set(reference, fonts);\n dictionary.update('FontFile2', reference);\n }\n if (dictionary.has('FontDescriptor')) {\n var fonts = dictionary.get('FontDescriptor'); // eslint-disable-line\n var reference = this._getNextReference();\n this._cacheMap.set(reference, fonts);\n dictionary.update('FontDescriptor', reference);\n }\n };\n _PdfCrossReference.prototype._writeStream = function (stream, buffer, transform, isCrossReference) {\n var streamBuffer = [];\n var value = stream.getString();\n if (!isCrossReference) {\n var byteArray = [];\n for (var i = 0; i < value.length; i++) {\n byteArray.push(value.charCodeAt(i));\n }\n if (stream._isCompress) {\n var dataArray = new Uint8Array(byteArray);\n var sw = new CompressedStreamWriter();\n sw.write(dataArray, 0, dataArray.length);\n sw.close();\n value = sw.getCompressedString;\n stream.dictionary.update('Filter', _PdfName.get('FlateDecode'));\n }\n if (transform) {\n value = transform.encryptString(value);\n }\n }\n this._writeString(value, streamBuffer);\n stream.dictionary.update('Length', streamBuffer.length);\n this._writeDictionary(stream.dictionary, buffer, this._newLine, transform, isCrossReference);\n this._writeString(\"stream\" + this._newLine, buffer);\n this._writeBytes(streamBuffer, buffer);\n this._writeString(this._newLine + \"endstream\" + this._newLine, buffer);\n };\n _PdfCrossReference.prototype._writeValue = function (value, buffer, transform, isCrossReference) {\n if (value instanceof _PdfName) {\n this._writeString(\"/\" + value.name, buffer);\n }\n else if (value instanceof _PdfReference) {\n this._writeString(value.toString() + \" R\", buffer);\n }\n else if (Array.isArray(value)) {\n this._writeString('[', buffer);\n var first = true;\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n if (!first) {\n this._writeString(' ', buffer);\n }\n else {\n first = false;\n }\n this._writeValue(val, buffer, transform, isCrossReference);\n }\n this._writeString(']', buffer);\n }\n else if (typeof value === 'string') {\n if (!isCrossReference && transform) {\n value = transform.encryptString(value);\n }\n this._writeString(\"(\" + this._escapeString(value) + \")\", buffer);\n }\n else if (typeof value === 'number') {\n this._writeString(_numberToString(value), buffer);\n }\n else if (typeof value === 'boolean') {\n this._writeString(value.toString(), buffer);\n }\n else if (value instanceof _PdfDictionary) {\n this._writeDictionary(value, buffer, this._newLine, transform, isCrossReference);\n }\n else if (value instanceof _PdfBaseStream) {\n this._writeStream(value, buffer, transform, isCrossReference);\n }\n else if (value === null) {\n this._writeString('null', buffer);\n }\n };\n _PdfCrossReference.prototype._writeString = function (value, buffer) {\n for (var i = 0; i < value.length; i++) {\n buffer.push(value.charCodeAt(i) & 0xff);\n }\n };\n _PdfCrossReference.prototype._writeBytes = function (data, buffer) {\n for (var i = 0; i < data.length; i++) {\n buffer.push(data[i]); // eslint-disable-line\n }\n };\n _PdfCrossReference.prototype._writeLong = function (value, count, buffer) {\n for (var i = count - 1; i >= 0; --i) {\n buffer.push(value >> (i << 3) & 0xff);\n }\n };\n _PdfCrossReference.prototype._escapeString = function (value) {\n return value.replace(/([()\\\\\\n\\r])/g, function (substring) {\n if (substring === '\\n') {\n return '\\\\n';\n }\n else if (substring === '\\r') {\n return '\\\\r';\n }\n return \"\\\\\" + substring;\n });\n };\n _PdfCrossReference.prototype._destroy = function () {\n this._entries = undefined;\n this._pendingRefs.clear();\n this._pendingRefs = undefined;\n this._cacheMap.clear();\n this._pendingRefs = undefined;\n this._root = undefined;\n this._startXRefQueue = [];\n this._startXRefQueue = undefined;\n this._stream = undefined;\n this._streamState = undefined;\n this._tableState = undefined;\n this._topDictionary = undefined;\n this._trailer = undefined;\n this._version = undefined;\n this._crossReferencePosition = undefined;\n };\n return _PdfCrossReference;\n}());\nexport { _PdfCrossReference };\nvar _PdfObjectInformation = /** @class */ (function () {\n function _PdfObjectInformation() {\n }\n return _PdfObjectInformation;\n}());\nvar _PdfCrossTableState = /** @class */ (function () {\n function _PdfCrossTableState() {\n }\n return _PdfCrossTableState;\n}());\nvar _PdfStreamState = /** @class */ (function () {\n function _PdfStreamState() {\n }\n return _PdfStreamState;\n}());\n","import { _PdfDictionary, _PdfReferenceSet, _PdfReferenceSetCache, _PdfReference, _isName } from './pdf-primitives';\nimport { FormatError } from './utils';\nvar _PdfCatalog = /** @class */ (function () {\n function _PdfCatalog(xref) {\n this._crossReference = xref;\n this._catalogDictionary = xref._getCatalogObj();\n if (!(this._catalogDictionary instanceof _PdfDictionary)) {\n throw new FormatError('Catalog object is not a dictionary.');\n }\n else {\n this._catalogDictionary.isCatalog = true;\n }\n this._topPagesDictionary = this._catalogDictionary.get('Pages');\n this.pageKidsCountCache = new _PdfReferenceSetCache();\n this.pageIndexCache = new _PdfReferenceSetCache();\n }\n Object.defineProperty(_PdfCatalog.prototype, \"version\", {\n get: function () {\n var value;\n if (this._catalogDictionary.has('Version')) {\n var version = this._catalogDictionary.get('Version');\n if (version) {\n value = version.name;\n }\n }\n return value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_PdfCatalog.prototype, \"pageCount\", {\n get: function () {\n var obj = this._topPagesDictionary.get('Count');\n if (typeof obj === 'undefined' || !Number.isInteger(obj)) {\n throw new FormatError('Invalid page count');\n }\n return obj;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_PdfCatalog.prototype, \"acroForm\", {\n get: function () {\n var form;\n if (this._catalogDictionary.has('AcroForm')) {\n form = this._catalogDictionary.get('AcroForm');\n }\n if (form === null || typeof form === 'undefined') {\n form = this._createForm();\n }\n return form;\n },\n enumerable: true,\n configurable: true\n });\n /* eslint-disable */\n _PdfCatalog.prototype._createForm = function () {\n var form = new _PdfDictionary(this._crossReference);\n var ref = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(ref, form);\n this._catalogDictionary.set('AcroForm', ref);\n this._catalogDictionary._updated = true;\n return form;\n };\n _PdfCatalog.prototype.getPageDictionary = function (pageIndex) {\n var nodesToVisit = [this._topPagesDictionary];\n var visitedNodes = new _PdfReferenceSet();\n var pagesRef = this._catalogDictionary.getRaw('Pages');\n if (pagesRef instanceof _PdfReference) {\n visitedNodes.put(pagesRef);\n }\n var xref = this._crossReference;\n var pageKidsCountCache = this.pageKidsCountCache;\n var pageIndexCache = this.pageIndexCache;\n var currentPageIndex = 0;\n while (nodesToVisit.length > 0) {\n var currentNode = nodesToVisit.pop();\n if (currentNode !== null && typeof currentNode !== 'undefined' && currentNode instanceof _PdfReference) {\n var count_1 = pageKidsCountCache.get(currentNode);\n if (count_1 >= 0 && currentPageIndex + count_1 <= pageIndex) {\n currentPageIndex += count_1;\n continue;\n }\n if (visitedNodes.has(currentNode)) {\n throw new FormatError('Pages tree contains circular reference.');\n }\n visitedNodes.put(currentNode);\n var obj = xref._fetch(currentNode);\n if (obj instanceof _PdfDictionary) {\n var type = obj.getRaw('Type');\n if (type !== null && typeof type !== 'undefined' && type instanceof _PdfReference) {\n type = xref._fetch(type);\n }\n if (_isName(type, 'Page') || !obj.has('Kids')) {\n if (!pageKidsCountCache.has(currentNode)) {\n pageKidsCountCache.put(currentNode, 1);\n }\n if (!pageIndexCache.has(currentNode)) {\n pageIndexCache.put(currentNode, currentPageIndex);\n }\n if (currentPageIndex === pageIndex) {\n return { dictionary: obj, reference: currentNode };\n }\n currentPageIndex++;\n continue;\n }\n }\n nodesToVisit.push(obj);\n continue;\n }\n if (!(currentNode instanceof _PdfDictionary)) {\n throw new FormatError('Page dictionary kid reference points to wrong type of object.');\n }\n var objId = currentNode.objId;\n var count = currentNode.get('Count');\n if (count !== null && typeof count !== 'undefined' && count instanceof _PdfReference) {\n count = xref._fetch(count);\n }\n if (count !== null && typeof count !== 'undefined' && Number.isInteger(count) && count >= 0) {\n if (objId && !pageKidsCountCache.has(objId)) {\n pageKidsCountCache.set(objId, count);\n }\n if (currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n }\n var kids = currentNode.getRaw('Kids');\n if (kids !== null && typeof kids !== 'undefined' && kids instanceof _PdfReference) {\n kids = xref._fetch(kids);\n }\n if (!Array.isArray(kids)) {\n var type = currentNode.getRaw('Type');\n if (type !== null && typeof type !== 'undefined' && type instanceof _PdfReference) {\n type = xref._fetch(type);\n }\n if (_isName(type, 'Page') || !currentNode.has('Kids')) {\n if (currentPageIndex === pageIndex) {\n return { dictionary: currentNode, reference: null };\n }\n currentPageIndex++;\n continue;\n }\n throw new FormatError('Page dictionary kids object is not an array.');\n }\n for (var last = kids.length - 1; last >= 0; last--) {\n nodesToVisit.push(kids[last]);\n }\n }\n throw new Error(\"Page index \" + pageIndex + \" not found.\");\n };\n _PdfCatalog.prototype._destroy = function () {\n if (this._catalogDictionary) {\n this._catalogDictionary = undefined;\n }\n if (this._topPagesDictionary) {\n this._topPagesDictionary = undefined;\n }\n if (this.pageIndexCache) {\n this.pageIndexCache.clear();\n this.pageIndexCache = undefined;\n }\n if (this.pageKidsCountCache) {\n this.pageKidsCountCache.clear();\n this.pageKidsCountCache = undefined;\n }\n };\n return _PdfCatalog;\n}());\nexport { _PdfCatalog };\n","import { _PdfDictionary, _PdfName, _PdfReference } from './../pdf-primitives';\nimport { PdfField, PdfTextBoxField, PdfButtonField, PdfCheckBoxField, PdfRadioButtonListField, PdfComboBoxField, PdfListBoxField, PdfSignatureField } from './field';\nimport { _getInheritableProperty, _getPageIndex } from './../utils';\nimport { PdfFormFieldsTabOrder, _FieldFlag, _SignatureFlag } from './../enumerator';\nimport { PdfPage } from './../pdf-page';\n/**\n * Represents a PDF form.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the form of the PDF document\n * let form: PdfForm = document.form;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfForm = /** @class */ (function () {\n /**\n * Represents a loaded from the PDF document.\n *\n * @private\n * @param {_PdfDictionary} dictionary Form dictionary.\n * @param {_PdfCrossReference} crossReference Cross reference object.\n */\n function PdfForm(dictionary, crossReference) {\n this._hasKids = false;\n this._setAppearance = false;\n this._exportEmptyFields = false;\n this._fieldCollection = [];\n this._signFlag = _SignatureFlag.none;\n this._dictionary = dictionary;\n this._crossReference = crossReference;\n this._parsedFields = new Map();\n this._fields = [];\n this._createFields();\n }\n Object.defineProperty(PdfForm.prototype, \"count\", {\n /**\n * Gets the fields count (Read only).\n *\n * @returns {number} Fields count.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access loaded form\n * let form: PdfForm = document.form;\n * // Gets the fields count\n * let count: number = form.count;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._fields.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfForm.prototype, \"needAppearances\", {\n /**\n * Gets a value indicating whether need appearances (Read only).\n *\n * @returns {boolean} Need appearances.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access loaded form\n * let form: PdfForm = document.form;\n * // Gets the boolean flag indicating need appearances\n * let needAppearances: number = form.needAppearances;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('NeedAppearances')) {\n this._needAppearances = this._dictionary.get('NeedAppearances');\n }\n return this._needAppearances;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfForm.prototype, \"exportEmptyFields\", {\n /**\n * Gets a value indicating whether allow to export empty fields or not.\n *\n * @returns {boolean} Export empty fields.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access loaded form\n * let form: PdfForm = document.form;\n * // Gets a value indicating whether allow to export empty fields or not.\n * let exportEmptyFields: boolean = form.exportEmptyFields;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._exportEmptyFields;\n },\n /**\n * Sets a value indicating whether allow to export empty fields or not.\n *\n * @param {boolean} value Export empty fields.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access loaded form\n * let form: PdfForm = document.form;\n * // Sets a value indicating whether allow to export empty fields or not.\n * form.exportEmptyFields = false;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._exportEmptyFields = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfForm.prototype, \"_signatureFlag\", {\n get: function () {\n return this._signFlag;\n },\n set: function (value) {\n if (value !== this._signFlag) {\n this._signFlag = value;\n this._dictionary.update('SigFlags', value);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `PdfField` at the specified index.\n *\n * @param {number} index Field index.\n * @returns {PdfField} Loaded PDF form field at the specified index.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the loaded form field\n * let field: PdfField = document.form.fieldAt(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfForm.prototype.fieldAt = function (index) {\n if (index < 0 || index >= this._fields.length) {\n throw Error('Index out of range.');\n }\n var field;\n if (this._parsedFields.has(index)) {\n field = this._parsedFields.get(index);\n }\n else {\n var dictionary = void 0;\n var ref = this._fields[index]; // eslint-disable-line\n if (ref && ref instanceof _PdfReference) {\n dictionary = this._crossReference._fetch(ref);\n }\n if (dictionary) {\n var key = _getInheritableProperty(dictionary, 'FT', false, true, 'Parent');\n var fieldFlags = 0;\n var flag = _getInheritableProperty(dictionary, 'Ff', false, true, 'Parent');\n if (typeof flag !== 'undefined') {\n fieldFlags = flag;\n }\n if (key) {\n switch (key.name.toLowerCase()) {\n case 'tx':\n field = PdfTextBoxField._load(this, dictionary, this._crossReference, ref);\n break;\n case 'btn':\n if ((fieldFlags & _FieldFlag.pushButton) !== 0) {\n field = PdfButtonField._load(this, dictionary, this._crossReference, ref);\n }\n else if ((fieldFlags & _FieldFlag.radio) !== 0) {\n field = PdfRadioButtonListField._load(this, dictionary, this._crossReference, ref);\n }\n else {\n field = PdfCheckBoxField._load(this, dictionary, this._crossReference, ref);\n }\n break;\n case 'ch':\n if ((fieldFlags & _FieldFlag.combo) !== 0) {\n field = PdfComboBoxField._load(this, dictionary, this._crossReference, ref);\n }\n else {\n field = PdfListBoxField._load(this, dictionary, this._crossReference, ref);\n }\n break;\n case 'sig':\n field = PdfSignatureField._load(this, dictionary, this._crossReference, ref);\n break;\n }\n }\n this._parsedFields.set(index, field);\n if (field && field instanceof PdfField) {\n field._annotationIndex = index;\n }\n }\n }\n return field;\n };\n /**\n * Add a new `PdfField`.\n *\n * @param {PdfField} field Field object to add.\n * @returns {number} Field index.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Add a new form field\n * let index: number = document.form.add(field);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfForm.prototype.add = function (field) {\n this._fields.push(field._ref);\n this._dictionary.update('Fields', this._fields);\n this._parsedFields.set(this._fields.length - 1, field);\n field._form = this;\n this._crossReference._allowCatalog = true;\n this._crossReference._root._updated = true;\n if (field._kidsCount > 0) {\n for (var i = 0; i < field._kidsCount; i++) {\n var item = field.itemAt(i);\n var page = item._page;\n page.annotations._annotations.push(item._ref);\n page._pageDictionary.set('Annots', page.annotations._annotations);\n page._pageDictionary._updated = true;\n }\n }\n else if (field._dictionary.has('Subtype') && field._dictionary.get('Subtype').name === 'Widget') {\n var page = field._page;\n page.annotations._annotations.push(field._ref);\n field._page._pageDictionary.set('Annots', field.page.annotations._annotations);\n field._page._pageDictionary._updated = true;\n }\n if (field instanceof PdfSignatureField) {\n field._form._signatureFlag = _SignatureFlag.signatureExists | _SignatureFlag.appendOnly;\n }\n return (this._fields.length - 1);\n };\n /**\n * Remove the specified PDF form field.\n *\n * @param {PdfField} field Field object to remove.\n * @returns {void} Nothing.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the loaded form field\n * let field: PdfField = document.form.fieldAt(3);\n * // Remove the form field\n * document.form.removeField(field);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfForm.prototype.removeField = function (field) {\n var index = this._fields.indexOf(field._ref);\n if (index >= 0) {\n this.removeFieldAt(index);\n }\n };\n /**\n * Remove the PDF form field from specified index.\n *\n * @param {number} index Field index to remove.\n * @returns {void} Nothing.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Remove the form field from the specified index\n * document.form.removeFieldAt(3);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfForm.prototype.removeFieldAt = function (index) {\n var field = this.fieldAt(index);\n if (field) {\n if (field._kidsCount > 0) {\n for (var i = field._kidsCount - 1; i >= 0; i--) {\n var item = field.itemAt(i);\n var page = item._getPage();\n if (page) {\n page._removeAnnotation(item._ref);\n }\n }\n }\n else if (field._dictionary.has('Subtype') && field._dictionary.get('Subtype').name === 'Widget') {\n var page = field.page;\n if (page) {\n page._removeAnnotation(field._ref);\n }\n }\n this._parsedFields.delete(index);\n }\n this._fields.splice(index, 1);\n this._dictionary.set('Fields', this._fields);\n this._dictionary._updated = true;\n };\n /**\n * Sets the flag to indicate the new appearance creation\n * If true, appearance will not be created. Default appearance has been considered.\n * If false, new appearance stream has been created from field values and updated as normal appearance.\n *\n * @param {boolean} value Set default appearance.\n * @returns {void} Nothing.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Set boolean flag to create a new appearance stream for form fields.\n * document.form.setDefaultAppearance(false);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfForm.prototype.setDefaultAppearance = function (value) {\n this._setAppearance = !value;\n this._needAppearances = value;\n this._dictionary.update('NeedAppearances', value);\n };\n PdfForm.prototype.orderFormFields = function (tabOrder) {\n var _this = this;\n if (tabOrder === null || typeof tabOrder === 'undefined') {\n this.orderFormFields(new Map());\n }\n else {\n var tab = void 0;\n var document_1 = this._crossReference._document;\n var value = void 0;\n if (tabOrder && tabOrder instanceof Map) {\n var setTabOrder = true;\n if (tabOrder.size > 0) {\n this._tabCollection = tabOrder;\n }\n else {\n setTabOrder = false;\n this._tabCollection = tabOrder;\n }\n var fieldCollection = new Map();\n this._fieldCollection = this._getFields();\n if (this._fieldCollection && this._fieldCollection.length > 0) {\n var page = this._fieldCollection[0].page;\n if (page && document_1) {\n for (var i = 0; i < this._fieldCollection.length; i++) {\n var field = this._fieldCollection[Number.parseInt(i.toString(), 10)];\n if (field.page) {\n var index = _getPageIndex(document_1, this._sortItemByPageIndex(field, true)._pageDictionary);\n if (index >= 0) {\n if (fieldCollection.has(index)) {\n value = fieldCollection.get(index);\n value.push(field);\n }\n else {\n value = [];\n value.push(field);\n fieldCollection.set(index, value);\n }\n var page_1 = document_1.getPage(index);\n if (!this._tabCollection.has(index)) {\n this._tabCollection.set(index, page_1.tabOrder);\n }\n if (setTabOrder) {\n page_1.tabOrder = this._tabCollection.get(index);\n }\n }\n }\n }\n var fieldsCount_1 = 0;\n fieldCollection.forEach(function (value, key) {\n _this._tabOrder = _this._tabCollection.get(key);\n if (_this._tabOrder !== PdfFormFieldsTabOrder.structure) {\n var fields = value;\n fields.sort(function (pdfField1, pdfField2) {\n return _this._compareFields(pdfField1, pdfField2);\n });\n for (var j = 0; j < fields.length; j++) {\n var fieldIndex = _this._fieldCollection.indexOf(fields[Number.parseInt(j.toString(), 10)]);\n if (fieldIndex !== -1 && fieldIndex !== fieldsCount_1 + j) {\n var field = _this._fieldCollection[Number.parseInt(fieldIndex.toString(), 10)];\n _this._fieldCollection.splice(fieldIndex, 1);\n _this._fieldCollection.splice(fieldsCount_1 + j, 0, field);\n }\n }\n }\n fieldsCount_1 += value.length;\n });\n }\n }\n }\n else {\n this._tabOrder = tabOrder;\n tab = this._getOrder(this._tabOrder);\n this._fieldCollection = this._getFields();\n this._fieldCollection.sort(function (pdfField1, pdfField2) {\n return _this._compareFields(pdfField1, pdfField2);\n });\n }\n this._parsedFields.clear();\n for (var i = 0; i < this._fieldCollection.length; i++) {\n this._parsedFields.set(Number.parseInt(i.toString(), 10), this._fieldCollection[Number.parseInt(i.toString(), 10)]);\n this._fields[Number.parseInt(i.toString(), 10)] = this._fieldCollection[Number.parseInt(i.toString(), 10)]._ref;\n if (tab) {\n this._fieldCollection[Number.parseInt(i.toString(), 10)].page._pageDictionary.update('Tabs', tab);\n }\n }\n this._dictionary.update('Fields', this._fields);\n }\n };\n PdfForm.prototype._createFields = function () {\n var fields; // eslint-disable-line\n if (this._dictionary.has('Fields')) {\n fields = this._dictionary.get('Fields');\n }\n var count = 0;\n var nodes = []; // eslint-disable-line\n while (typeof fields !== 'undefined' && fields !== null) {\n for (; count < fields.length; count++) {\n var ref = fields[count]; // eslint-disable-line\n var fieldDictionary = void 0;\n if (ref && ref instanceof _PdfReference) {\n fieldDictionary = this._crossReference._fetch(ref);\n }\n var fieldKids = void 0;\n if (fieldDictionary && fieldDictionary.has('Kids')) {\n fieldKids = fieldDictionary.get('Kids');\n if (typeof fieldKids !== 'undefined' && fieldKids.length > 0) {\n for (var i = 0; i < fieldKids.length; i++) {\n var reference = fieldKids[Number.parseInt(i.toString(), 10)];\n if (reference && reference instanceof _PdfReference) {\n var kidsDict = this._crossReference._fetch(reference);\n if (typeof kidsDict !== 'undefined' && !kidsDict.has('Parent')) {\n kidsDict.update('Parent', ref);\n }\n }\n }\n }\n }\n if (typeof fieldKids === 'undefined') {\n if (typeof fieldDictionary !== 'undefined') {\n if (this._fields.indexOf(ref) === -1) {\n this._fields.push(ref);\n }\n }\n }\n else {\n var isNode = (!fieldDictionary.has('FT')) || this._isNode(fieldKids);\n if (isNode) {\n nodes.push({ fields: fields, count: count });\n this._hasKids = true;\n count = -1;\n fields = fieldKids;\n }\n else {\n this._fields.push(ref);\n }\n }\n }\n if (nodes.length === 0) {\n break;\n }\n var entry = nodes.pop(); // eslint-disable-line\n fields = entry.fields;\n count = entry.count + 1;\n }\n };\n PdfForm.prototype._isNode = function (kids) {\n var isNode = false;\n if (typeof kids !== 'undefined' && kids.length > 0) {\n var entry = kids[0]; // eslint-disable-line\n var dictionary = void 0;\n if (typeof entry !== 'undefined' && entry !== null) {\n if (entry instanceof _PdfDictionary) {\n dictionary = entry;\n }\n else if (entry instanceof _PdfReference) {\n dictionary = this._crossReference._fetch(entry);\n }\n }\n if (typeof dictionary !== 'undefined' && dictionary.has('Subtype')) {\n var subtype = dictionary.get('Subtype');\n if (subtype && subtype.name !== 'Widget') {\n isNode = true;\n }\n }\n }\n return isNode;\n };\n PdfForm.prototype._parseWidgetReferences = function () {\n var _this = this;\n if (typeof this._widgetReferences === 'undefined' && this.count > 0) {\n this._widgetReferences = [];\n this._fields.forEach(function (fieldReference) {\n var dictionary = _this._crossReference._fetch(fieldReference);\n if (dictionary) {\n if (dictionary.has('Kids')) {\n var fieldKids = dictionary.get('Kids');\n if (fieldKids && fieldKids.length > 0) {\n fieldKids.forEach(function (kidReference) {\n var kidDictionary;\n if (kidReference instanceof _PdfDictionary) {\n kidDictionary = kidReference;\n }\n else if (kidReference instanceof _PdfReference) {\n kidDictionary = _this._crossReference._fetch(kidReference);\n }\n if (typeof kidDictionary !== 'undefined' && kidDictionary.has('Subtype')) {\n var subtype = kidDictionary.get('Subtype');\n if (subtype && subtype.name === 'Widget') {\n _this._widgetReferences.push(kidReference);\n }\n }\n });\n }\n }\n else {\n _this._widgetReferences.push(fieldReference);\n }\n }\n });\n }\n return this._widgetReferences;\n };\n PdfForm.prototype._doPostProcess = function (isFlatten) {\n for (var i = this.count - 1; i >= 0; i--) {\n var field = this.fieldAt(i);\n if (field) {\n field._doPostProcess(isFlatten || field.flatten);\n if (!isFlatten && field.flatten) {\n this.removeFieldAt(i);\n }\n }\n }\n };\n PdfForm.prototype._getFieldIndex = function (name) {\n var index = -1;\n if (this.count > 0) {\n if (!this._fieldNames) {\n this._fieldNames = [];\n }\n if (!this._indexedFieldNames) {\n this._indexedFieldNames = [];\n }\n if (!this._actualFieldNames) {\n this._actualFieldNames = [];\n }\n if (!this._indexedActualFieldNames) {\n this._indexedActualFieldNames = [];\n }\n for (var i = 0; i < this.count; i++) {\n var field = this.fieldAt(i);\n if (field) {\n var fieldName = field.name;\n if (fieldName) {\n this._fieldNames.push(fieldName);\n this._indexedFieldNames.push(fieldName.split('[')[0]);\n }\n var actualName = field.actualName;\n if (actualName) {\n this._actualFieldNames.push(actualName);\n this._indexedActualFieldNames.push(actualName.split('[')[0]);\n }\n }\n }\n var nameIndex = this._fieldNames.indexOf(name);\n if (nameIndex !== -1) {\n index = nameIndex;\n }\n else {\n nameIndex = this._indexedFieldNames.indexOf(name);\n if (nameIndex !== -1) {\n index = nameIndex;\n }\n else {\n nameIndex = this._actualFieldNames.indexOf(name);\n if (nameIndex !== -1) {\n index = nameIndex;\n }\n else {\n nameIndex = this._indexedActualFieldNames.indexOf(name);\n if (nameIndex !== -1) {\n index = nameIndex;\n }\n }\n }\n }\n }\n return index;\n };\n PdfForm.prototype._getFields = function () {\n var fields = [];\n for (var i = 0; i < this._fields.length; i++) {\n var field = this.fieldAt(i);\n if (field && field instanceof PdfField) {\n fields.push(field);\n }\n }\n return fields;\n };\n PdfForm.prototype._getOrder = function (tabOrder) {\n if (tabOrder !== PdfFormFieldsTabOrder.none) {\n var tabs = '';\n if (tabOrder === PdfFormFieldsTabOrder.row) {\n tabs = 'R';\n }\n else if (tabOrder === PdfFormFieldsTabOrder.column) {\n tabs = 'C';\n }\n else if (tabOrder === PdfFormFieldsTabOrder.structure) {\n tabs = 'S';\n }\n return _PdfName.get(tabs);\n }\n return null;\n };\n PdfForm.prototype._compareFields = function (field1, field2) {\n var result = 0;\n var xdiff;\n var index;\n var page1 = field1.page;\n var page2 = field2.page;\n if (page1 && page1 instanceof PdfPage && page2 && page2 instanceof PdfPage) {\n var page1Index = this._sortItemByPageIndex(field1, false)._pageIndex;\n var page2Index = this._sortItemByPageIndex(field2, false)._pageIndex;\n var rectangle1 = void 0;\n if (field1._dictionary.has('Kids')) {\n rectangle1 = this._getItemRectangle(field1);\n }\n else {\n rectangle1 = this._getRectangle(field1._dictionary);\n }\n var rectangle2 = void 0;\n if (field2._dictionary.has('Kids')) {\n rectangle2 = this._getItemRectangle(field2);\n }\n else {\n rectangle2 = this._getRectangle(field2._dictionary);\n }\n var firstHeight = rectangle1[3] - rectangle1[1];\n var secondHeight = rectangle2[3] - rectangle2[1];\n if (rectangle1 && rectangle1.length >= 2 && rectangle2 && rectangle2.length >= 2) {\n var x1 = rectangle1[0];\n var y1 = rectangle1[1];\n var x2 = rectangle2[0];\n var y2 = rectangle2[1];\n if (typeof x1 === 'number' && typeof x2 === 'number' &&\n typeof y1 === 'number' && typeof y2 === 'number') {\n index = page1Index - page2Index;\n if (this._tabOrder === PdfFormFieldsTabOrder.row) {\n xdiff = this._compare(y2, y1);\n if (xdiff !== 0) {\n var isValid = xdiff === -1 && y1 > y2 && (y1 - firstHeight / 2) < y2;\n isValid = isValid || (xdiff === 1 && y2 > y1 && (y2 - secondHeight / 2) < y1);\n if (isValid) {\n xdiff = 0;\n }\n }\n if (index !== 0) {\n result = index;\n }\n else if (xdiff !== 0) {\n result = xdiff;\n }\n else {\n result = this._compare(x1, x2);\n }\n }\n else if (this._tabOrder === PdfFormFieldsTabOrder.column) {\n xdiff = this._compare(x1, x2);\n if (index !== 0) {\n result = index;\n }\n else if (xdiff !== 0) {\n result = xdiff;\n }\n else {\n result = this._compare(y2, y1);\n }\n }\n else if (this._tabOrder === PdfFormFieldsTabOrder.manual ||\n this._tabOrder === PdfFormFieldsTabOrder.none || this._tabOrder === PdfFormFieldsTabOrder.structure) {\n if (field1 instanceof PdfField && field2 instanceof PdfField) {\n var field1Index = field1.tabIndex;\n var field2Index = field2.tabIndex;\n xdiff = this._compare(field1Index, field2Index);\n if (index !== 0) {\n result = index;\n }\n else {\n result = xdiff;\n }\n }\n }\n }\n }\n }\n return result;\n };\n PdfForm.prototype._getRectangle = function (dictionary) {\n var rect;\n if (dictionary.has('Rect')) {\n rect = dictionary.getArray('Rect');\n }\n return rect;\n };\n PdfForm.prototype._getItemRectangle = function (field) {\n var result;\n var dictionary = field._dictionary;\n if (dictionary.has('Kids')) {\n var kids = dictionary.getArray('Kids');\n if (kids && kids.length >= 1) {\n if (kids.length === 1) {\n result = this._getRectangle(kids[0]);\n }\n else {\n if (field && field.itemsCount > 1) {\n result = this._getRectangle(field.itemAt(0)._dictionary);\n }\n else {\n result = this._getRectangle(kids[0]);\n }\n }\n }\n }\n return result;\n };\n PdfForm.prototype._compare = function (x, y) {\n if (x > y) {\n return 1;\n }\n else if (x < y) {\n return -1;\n }\n else {\n return 0;\n }\n };\n PdfForm.prototype._compareKidsElement = function (x, y) {\n var xDictionary = this._crossReference._fetch(x);\n var yDictionary = this._crossReference._fetch(y);\n var xRect = this._getRectangle(xDictionary);\n var yRect = this._getRectangle(yDictionary);\n var result;\n if (xRect && xRect.length >= 2 && yRect && yRect.length >= 2) {\n var x1 = xRect[0];\n var y1 = xRect[1];\n var x2 = yRect[0];\n var y2 = yRect[1];\n if (typeof x1 === 'number' && typeof x2 === 'number' &&\n typeof y1 === 'number' && typeof y2 === 'number') {\n var xdiff = void 0;\n if (this._tabOrder === PdfFormFieldsTabOrder.row) {\n xdiff = this._compare(y2, y1);\n if (xdiff !== 0) {\n result = xdiff;\n }\n else {\n result = this._compare(x1, x2);\n }\n }\n else if (this._tabOrder === PdfFormFieldsTabOrder.column) {\n xdiff = this._compare(x1, x2);\n if (xdiff !== 0) {\n result = xdiff;\n }\n else {\n result = this._compare(y2, y1);\n }\n }\n else {\n result = 0;\n }\n return result;\n }\n }\n return result;\n };\n PdfForm.prototype._sortItemByPageIndex = function (field, hasPageTabOrder) {\n var page = field.page;\n var tabOrder = this._tabOrder;\n this._tabOrder = hasPageTabOrder ? field.page.tabOrder : tabOrder;\n this._sortFieldItems(field);\n if (field._isLoaded && field._kidsCount > 1) {\n page = field.itemAt(0).page;\n }\n this._tabOrder = tabOrder;\n if (typeof page === 'undefined') {\n page = field.page;\n }\n return page;\n };\n PdfForm.prototype._sortFieldItems = function (field) {\n var _this = this;\n if (field._isLoaded && (field instanceof PdfTextBoxField ||\n field instanceof PdfListBoxField ||\n field instanceof PdfCheckBoxField ||\n field instanceof PdfRadioButtonListField)) {\n var collection = field._parseItems(); // eslint-disable-line\n collection.sort(function (item1, item2) {\n return _this._compareFieldItem(item1, item2);\n });\n field._parsedItems.clear();\n for (var i = 0; i < collection.length; i++) {\n field._parsedItems.set(i, collection[Number.parseInt(i.toString(), 10)]);\n }\n }\n };\n PdfForm.prototype._compareFieldItem = function (item1, item2) {\n var result = 0;\n if (typeof item1 !== 'undefined' && typeof item2 !== 'undefined') {\n var page1 = item1.page;\n var page2 = item2.page;\n var array1 = this._getRectangle(item1._dictionary);\n var array2 = this._getRectangle(item2._dictionary);\n if (array1 && array2) {\n var x1 = array1[0];\n var y1 = array1[1];\n var x2 = array2[0];\n var y2 = array2[1];\n var xdiff = void 0;\n if (this._tabOrder === PdfFormFieldsTabOrder.row) {\n xdiff = this._compare(page1._pageIndex, page2._pageIndex);\n if (xdiff !== 0) {\n result = xdiff;\n }\n else {\n xdiff = this._compare(y2, y1);\n if (xdiff !== 0) {\n result = xdiff;\n }\n else {\n result = this._compare(x1, x2);\n }\n }\n }\n else if (this._tabOrder === PdfFormFieldsTabOrder.column) {\n xdiff = this._compare(page1._pageIndex, page2._pageIndex);\n if (xdiff !== 0) {\n result = xdiff;\n }\n else {\n xdiff = this._compare(x1, x2);\n if (xdiff !== 0) {\n result = xdiff;\n }\n else {\n result = this._compare(y2, y1);\n }\n }\n }\n }\n }\n return result;\n };\n PdfForm.prototype._clear = function () {\n this._fields = [];\n this._parsedFields = new Map();\n };\n return PdfForm;\n}());\nexport { PdfForm };\n","import { _stringToBytes } from './../utils';\nvar _XmlWriter = /** @class */ (function () {\n function _XmlWriter(isAppearance) {\n if (isAppearance === void 0) { isAppearance = false; }\n this._position = 0;\n this._bufferText = '';\n this._buffer = new Uint8Array(0);\n this._namespaceStack = [];\n this._elementStack = [];\n if (!isAppearance) {\n this._currentState = 'Initial';\n this._namespaceStack.push(new _Namespace());\n this._elementStack.push(new _XmlElement());\n this._namespaceStack[0]._set('xmlns', 'http://www.w3.org/2000/xmlns/', 'Special');\n this._namespaceStack.push(new _Namespace());\n this._namespaceStack[1]._set('xml', 'http://www.w3.org/XML/1998/namespace', 'Special');\n this._namespaceStack.push(new _Namespace());\n this._namespaceStack[2]._set('', '', 'Implied');\n this._elementStack[0]._set('', '', '', this._namespaceStack.length - 1);\n }\n else {\n this._currentState = 'StartDocument';\n this._skipNamespace = true;\n }\n this._attributeStack = [];\n }\n Object.defineProperty(_XmlWriter.prototype, \"buffer\", {\n get: function () {\n this._flush();\n return this._buffer;\n },\n enumerable: true,\n configurable: true\n });\n _XmlWriter.prototype._writeStartDocument = function (standalone) {\n if (this._currentState !== 'Initial' || typeof this._buffer === 'undefined') {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n this._currentState = 'StartDocument';\n this._rawText('');\n };\n _XmlWriter.prototype._writeStartElement = function (localName, prefix, namespace) {\n if (typeof this._buffer === 'undefined') {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n if (typeof localName === 'undefined' || localName === null || localName.length === 0) {\n throw new Error('ArgumentException: localName cannot be undefined, null or empty');\n }\n this._checkName(localName);\n if (this._currentState === 'Initial') {\n this._writeStartDocument();\n }\n if (this._currentState === 'StartElement') {\n this._startElementContent();\n }\n this._currentState = 'StartElement';\n if (typeof prefix === 'undefined' || prefix === null) {\n if (typeof namespace !== 'undefined' && namespace !== null) {\n prefix = this._lookupPrefix(namespace);\n }\n if (typeof prefix === 'undefined' || prefix === null) {\n prefix = '';\n }\n }\n else if (prefix.length > 0) {\n if (typeof namespace === 'undefined' || namespace === null) {\n namespace = this._lookupNamespace(prefix);\n }\n if (typeof namespace === 'undefined' || namespace === null || (typeof namespace !== 'undefined' && namespace.length === 0)) {\n throw new Error('ArgumentException: Cannot use a prefix with an empty namespace');\n }\n }\n if (typeof namespace === 'undefined' || namespace === null) {\n namespace = this._lookupNamespace(prefix);\n }\n this._writeStartElementInternal(prefix, localName, namespace);\n };\n _XmlWriter.prototype._writeEndElement = function () {\n if (this._currentState === 'StartElement') {\n this._startElementContent();\n this._currentState = 'ElementContent';\n }\n else if (this._currentState === 'ElementContent') {\n this._currentState = 'ElementContent';\n }\n this._currentState = 'EndElement';\n var top = this._elementStack.length - 1;\n this._writeEndElementInternal(this._elementStack[Number.parseInt(top.toString(), 10)]._prefix, this._elementStack[Number.parseInt(top.toString(), 10)]._localName);\n this._namespaceStack.splice(this._elementStack[Number.parseInt(top.toString(), 10)]._previousTop + 1);\n this._elementStack.splice(top);\n // if (this._bufferText.length > 10240) {\n // this._flush();\n // }\n };\n _XmlWriter.prototype._writeElementString = function (localName, value, prefix, namespace) {\n this._writeStartElement(localName, prefix, namespace);\n if (typeof value !== 'undefined' && value !== null && value.length !== 0) {\n this._writeString(value);\n }\n this._writeEndElement();\n };\n _XmlWriter.prototype._writeAttributeString = function (localName, value, prefix, namespace) {\n this._writeStartAttribute(localName, value, prefix, namespace);\n this._writeStringInternal(value, true);\n this._writeEndAttribute();\n };\n _XmlWriter.prototype._writeString = function (text) {\n this._writeInternal(text, false);\n };\n _XmlWriter.prototype._writeRaw = function (text) {\n this._writeInternal(text, true);\n };\n _XmlWriter.prototype._writeInternal = function (text, isRawString) {\n if (text !== null && typeof text !== 'undefined') {\n if (this._currentState !== 'StartElement' && this._currentState !== 'ElementContent') {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n if (this._currentState === 'StartElement') {\n this._startElementContent();\n }\n this._currentState = 'ElementContent';\n if (isRawString) {\n this._rawText(text);\n }\n else {\n this._writeStringInternal(text, false);\n }\n }\n };\n _XmlWriter.prototype._save = function () {\n while (this._elementStack.length - 1 > 0) {\n this._writeEndElement();\n }\n if (this._bufferText !== '') {\n this._flush();\n }\n return this._buffer;\n };\n _XmlWriter.prototype._destroy = function () {\n this._buffer = undefined;\n for (var i = 0; i < this._namespaceStack.length; i++) {\n this._namespaceStack[Number.parseInt(i.toString(), 10)]._destroy();\n }\n this._namespaceStack = [];\n for (var i = 0; i < this._elementStack.length; i++) {\n this._elementStack[Number.parseInt(i.toString(), 10)]._destroy();\n }\n this._elementStack = [];\n this._bufferText = '';\n this._position = 0;\n };\n _XmlWriter.prototype._flush = function () {\n if (this._buffer && this._bufferText && this._bufferText !== '') {\n if (this._buffer.length > 0) {\n var buffer = new Array(this._bufferText.length);\n for (var i = 0; i < this._bufferText.length; i++) {\n buffer[Number.parseInt(i.toString(), 10)] = this._bufferText.charCodeAt(i) & 0xff;\n }\n var array = new Uint8Array(this._buffer.length + buffer.length);\n array.set(this._buffer);\n array.set(buffer, this._buffer.length);\n this._buffer = array;\n }\n else {\n this._buffer = _stringToBytes(this._bufferText);\n }\n this._bufferText = '';\n }\n };\n _XmlWriter.prototype._writeStartAttribute = function (localName, value, prefix, namespace) {\n if (typeof localName === 'undefined' || localName === null || localName.length === 0) {\n if (prefix === 'xmlns') {\n localName = 'xmlns';\n prefix = '';\n }\n else {\n throw new Error('ArgumentException: localName cannot be undefined, null or empty');\n }\n }\n if (this._currentState !== 'StartElement') {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n this._checkName(localName);\n this._writeStartAttributePrefixAndNameSpace(localName, value, prefix, namespace);\n };\n _XmlWriter.prototype._writeStartAttributePrefixAndNameSpace = function (localName, value, prefix, namespace) {\n if (typeof prefix === 'undefined' || prefix === null) {\n if (typeof namespace !== 'undefined' && namespace !== null) {\n if (!(localName === 'xmlns' && namespace === 'http://www.w3.org/2000/xmlns/')) {\n prefix = this._lookupPrefix(namespace);\n }\n }\n if (typeof prefix === 'undefined' || prefix === null) {\n prefix = '';\n }\n }\n if (typeof namespace === 'undefined' || namespace === null) {\n if (typeof prefix !== 'undefined' && prefix !== null && prefix.length > 0) {\n namespace = this._lookupNamespace(prefix);\n }\n if (typeof namespace === 'undefined' || namespace === null) {\n namespace = '';\n }\n }\n this._writeStartAttributeSpecialAttribute(prefix, localName, namespace, value);\n };\n _XmlWriter.prototype._writeStartAttributeSpecialAttribute = function (prefix, localName, namespace, value) {\n if (prefix.length === 0) {\n if (localName[0] === 'x' && localName === 'xmlns') {\n this._skipPushAndWrite(prefix, localName, namespace);\n this._pushNamespaceExplicit('', value);\n return;\n }\n else if (namespace.length > 0) {\n prefix = this._lookupPrefix(namespace);\n }\n }\n else {\n if (prefix[0] === 'x') {\n if (prefix === 'xmlns') {\n this._skipPushAndWrite(prefix, localName, namespace);\n this._pushNamespaceExplicit(localName, value);\n return;\n }\n else if (prefix === 'xml') {\n if (localName === 'space' || localName === 'lang') {\n this._skipPushAndWrite(prefix, localName, namespace);\n return;\n }\n }\n }\n if (namespace.length === 0) {\n prefix = '';\n }\n }\n if (typeof prefix !== 'undefined' && prefix !== null && prefix.length !== 0) {\n this._pushNamespaceImplicit(prefix, namespace);\n }\n this._skipPushAndWrite(prefix, localName, namespace);\n };\n _XmlWriter.prototype._writeEndAttribute = function () {\n this._currentState = 'StartElement';\n this._bufferText += '\"';\n };\n _XmlWriter.prototype._writeStartElementInternal = function (prefix, localName, namespace) {\n this._bufferText += '<';\n if (prefix.length > 0) {\n this._rawText(prefix);\n this._bufferText += ':';\n }\n this._rawText(localName);\n var top = this._elementStack.length;\n this._elementStack.push(new _XmlElement());\n this._elementStack[Number.parseInt(top.toString(), 10)]._set(prefix, localName, namespace, this._namespaceStack.length - 1);\n this._pushNamespaceImplicit(prefix, namespace);\n for (var i = 0; i < this._attributeStack.length; i++) {\n this._attributeStack[Number.parseInt(i.toString(), 10)]._destroy();\n }\n this._attributeStack = [];\n };\n _XmlWriter.prototype._writeEndElementInternal = function (prefix, localName) {\n if (this._position !== this._bufferText.length + 1) {\n this._bufferText += '';\n }\n else {\n this._bufferText = this._bufferText.substring(0, this._bufferText.length - 1);\n this._bufferText += ' />';\n }\n };\n _XmlWriter.prototype._writeStartAttributeInternal = function (prefix, localName) {\n this._bufferText += ' ';\n if (typeof prefix !== 'undefined' && prefix !== null && prefix.length > 0) {\n this._rawText(prefix);\n this._bufferText += ':';\n }\n this._rawText(localName);\n this._bufferText += '=\"';\n };\n _XmlWriter.prototype._writeNamespaceDeclaration = function (prefix, namespaceUri) {\n if (!this._skipNamespace) {\n this._writeStartNamespaceDeclaration(prefix);\n this._writeStringInternal(namespaceUri, true);\n this._bufferText += '\"';\n }\n };\n _XmlWriter.prototype._writeStartNamespaceDeclaration = function (prefix) {\n if (typeof prefix === 'undefined' || prefix === null || prefix.length === 0) {\n this._rawText(' xmlns=\"');\n }\n else {\n this._rawText(' xmlns:');\n this._rawText(prefix);\n this._bufferText += '=';\n this._bufferText += '\"';\n }\n };\n _XmlWriter.prototype._writeStringInternal = function (text, inAttributeValue) {\n if (typeof text === 'undefined' || text === null) {\n text = '';\n }\n text = text.replace(/\\&/g, '&'); // eslint-disable-line\n text = text.replace(/\\/g, '>'); // eslint-disable-line\n if (inAttributeValue) {\n text = text.replace(/\\\"/g, '"'); // eslint-disable-line\n }\n this._bufferText += text;\n if (!inAttributeValue) {\n this._position = 0;\n }\n };\n _XmlWriter.prototype._startElementContent = function () {\n var start = this._elementStack[this._elementStack.length - 1]._previousTop;\n for (var i = this._namespaceStack.length - 1; i > start; i--) {\n if (this._namespaceStack[Number.parseInt(i.toString(), 10)]._kind === 'NeedToWrite') {\n this._writeNamespaceDeclaration(this._namespaceStack[Number.parseInt(i.toString(), 10)]._prefix, this._namespaceStack[Number.parseInt(i.toString(), 10)]._namespaceUri);\n }\n }\n this._bufferText += '>';\n this._position = this._bufferText.length + 1;\n };\n _XmlWriter.prototype._rawText = function (text) {\n this._bufferText += text;\n };\n _XmlWriter.prototype._addNamespace = function (prefix, ns, kind) {\n var top = this._namespaceStack.length;\n this._namespaceStack.push(new _Namespace());\n this._namespaceStack[Number.parseInt(top.toString(), 10)]._set(prefix, ns, kind);\n };\n _XmlWriter.prototype._lookupPrefix = function (namespace) {\n for (var i = this._namespaceStack.length - 1; i >= 0; i--) {\n if (this._namespaceStack[Number.parseInt(i.toString(), 10)]._namespaceUri === namespace) {\n return this._namespaceStack[Number.parseInt(i.toString(), 10)]._prefix;\n }\n }\n return undefined;\n };\n _XmlWriter.prototype._lookupNamespace = function (prefix) {\n for (var i = this._namespaceStack.length - 1; i >= 0; i--) {\n if (this._namespaceStack[Number.parseInt(i.toString(), 10)]._prefix === prefix) {\n return this._namespaceStack[Number.parseInt(i.toString(), 10)]._namespaceUri;\n }\n }\n return undefined;\n };\n _XmlWriter.prototype._lookupNamespaceIndex = function (prefix) {\n for (var i = this._namespaceStack.length - 1; i >= 0; i--) {\n if (this._namespaceStack[Number.parseInt(i.toString(), 10)]._prefix === prefix) {\n return i;\n }\n }\n return -1;\n };\n _XmlWriter.prototype._pushNamespaceImplicit = function (prefix, ns) {\n var kind;\n var existingNsIndex = this._lookupNamespaceIndex(prefix);\n var isValid = true;\n if (existingNsIndex !== -1) {\n if (existingNsIndex > this._elementStack[this._elementStack.length - 1]._previousTop) {\n if (this._namespaceStack[Number.parseInt(existingNsIndex.toString(), 10)]._namespaceUri !== ns) {\n throw new Error('XmlException namespace Uri needs to be the same as the one that is already declared');\n }\n isValid = false;\n }\n else {\n if (this._namespaceStack[Number.parseInt(existingNsIndex.toString(), 10)]._kind === 'Special') {\n if (prefix === 'xml') {\n if (ns !== this._namespaceStack[Number.parseInt(existingNsIndex.toString(), 10)]._namespaceUri) {\n throw new Error('InvalidArgumentException: Xml String');\n }\n else {\n kind = 'Implied';\n }\n }\n else {\n throw new Error('InvalidArgumentException: Prefix \"xmlns\" is reserved for use by XML.');\n }\n }\n else {\n kind = (this._namespaceStack[Number.parseInt(existingNsIndex.toString(), 10)]._namespaceUri === ns) ?\n 'Implied' :\n 'NeedToWrite';\n }\n }\n }\n else {\n if ((ns === 'http://www.w3.org/XML/1998/namespace' && prefix !== 'xml') ||\n (ns === 'http://www.w3.org/2000/xmlns/' && prefix !== 'xmlns')) {\n throw new Error('InvalidArgumentException');\n }\n kind = 'NeedToWrite';\n }\n if (isValid) {\n this._addNamespace(prefix, ns, kind);\n }\n };\n _XmlWriter.prototype._pushNamespaceExplicit = function (prefix, ns) {\n var existingNsIndex = this._lookupNamespaceIndex(prefix);\n if (existingNsIndex !== -1) {\n if (existingNsIndex > this._elementStack[this._elementStack.length - 1]._previousTop) {\n this._namespaceStack[Number.parseInt(existingNsIndex.toString(), 10)]._kind = 'Written';\n return;\n }\n }\n this._addNamespace(prefix, ns, 'Written');\n return;\n };\n _XmlWriter.prototype._addAttribute = function (prefix, localName, namespaceName) {\n var top = this._attributeStack.length;\n this._attributeStack.push(new _XmlAttribute());\n this._attributeStack[Number.parseInt(top.toString(), 10)]._set(prefix, localName, namespaceName);\n for (var i = 0; i < top; i++) {\n if (this._attributeStack[Number.parseInt(i.toString(), 10)]._isDuplicate(prefix, localName, namespaceName)) {\n throw new Error('XmlException: duplicate attribute name');\n }\n }\n };\n _XmlWriter.prototype._skipPushAndWrite = function (prefix, localName, namespace) {\n this._addAttribute(prefix, localName, namespace);\n this._writeStartAttributeInternal(prefix, localName);\n };\n _XmlWriter.prototype._checkName = function (text) {\n var format = /[ !@#$%^&*()+\\=\\[\\]{};':\"\\\\|,<>\\/?]/; // eslint-disable-line\n if (format.test(text)) {\n throw new Error('InvalidArgumentException: invalid name character');\n }\n };\n return _XmlWriter;\n}());\nexport { _XmlWriter };\nvar _Namespace = /** @class */ (function () {\n function _Namespace() {\n }\n _Namespace.prototype._set = function (prefix, namespaceUri, kind) {\n this._prefix = prefix;\n this._namespaceUri = namespaceUri;\n this._kind = kind;\n };\n _Namespace.prototype._destroy = function () {\n this._prefix = undefined;\n this._namespaceUri = undefined;\n this._kind = undefined;\n };\n return _Namespace;\n}());\nexport { _Namespace };\nvar _XmlElement = /** @class */ (function () {\n function _XmlElement() {\n }\n _XmlElement.prototype._set = function (prefix, localName, namespaceUri, previousTop) {\n this._previousTop = previousTop;\n this._prefix = prefix;\n this._namespaceUri = namespaceUri;\n this._localName = localName;\n };\n _XmlElement.prototype._destroy = function () {\n this._previousTop = undefined;\n this._prefix = undefined;\n this._localName = undefined;\n this._namespaceUri = undefined;\n };\n return _XmlElement;\n}());\nexport { _XmlElement };\nvar _XmlAttribute = /** @class */ (function () {\n function _XmlAttribute() {\n }\n _XmlAttribute.prototype._set = function (prefix, localName, namespaceUri) {\n this._prefix = prefix;\n this._namespaceUri = namespaceUri;\n this._localName = localName;\n };\n _XmlAttribute.prototype._isDuplicate = function (prefix, localName, namespaceUri) {\n return ((this._localName === localName) && ((this._prefix === prefix) || (this._namespaceUri === namespaceUri)));\n };\n _XmlAttribute.prototype._destroy = function () {\n this._prefix = undefined;\n this._namespaceUri = undefined;\n this._localName = undefined;\n };\n return _XmlAttribute;\n}());\nexport { _XmlAttribute };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _XmlWriter } from './xml-writer';\nimport { PdfAnnotation, PdfFileLinkAnnotation, PdfTextWebLinkAnnotation, PdfDocumentLinkAnnotation, PdfUriAnnotation } from './../annotations/annotation';\nimport { PdfAnnotationFlag } from './../enumerator';\nimport { _PdfDictionary, _PdfName, _PdfReference } from './../pdf-primitives';\nimport { _PdfBaseStream, _PdfContentStream } from './../base-stream';\nimport { _hexStringToByteArray, _stringToAnnotationFlags, _convertToColor, _bytesToString, _hexStringToString, _getSpecialCharacter, _getLatinCharacter, _getInheritableProperty, _getNewGuidString, _byteArrayToHexString, _stringToBytes, _annotationFlagsToString, _encode } from './../utils';\nimport { PdfCheckBoxField, PdfComboBoxField, PdfListBoxField, PdfRadioButtonListField, PdfTextBoxField, PdfListField } from './../form/field';\nvar _ExportHelper = /** @class */ (function () {\n function _ExportHelper() {\n this._asPerSpecification = false;\n this._fileName = '';\n this._formKey = '';\n this._exportEmptyFields = false;\n this._groupReferences = new Map();\n this._groupHolders = [];\n this._richTextPrefix = '';\n this._table = new Map(); // eslint-disable-line\n this._fields = new Map();\n this._richTextValues = new Map();\n this._jsonData = [];\n this._openingBrace = 123;\n this._openingBracket = 91;\n this._closingBrace = 125;\n this._closingBracket = 93;\n this._colon = 58;\n this._doubleQuotes = 34;\n this._comma = 44;\n this._space = 32;\n this.fdfString = '';\n this._xmlImport = false;\n }\n _ExportHelper.prototype._exportFormFieldsData = function (field) {\n var textValue = '';\n if (field !== null && typeof field !== 'undefined' && field.export) {\n var type = _getInheritableProperty(field._dictionary, 'FT', false, true, 'Parent');\n if (type && type.name !== null && typeof type.name !== 'undefined') {\n var font = this._getEncodedFontDictionary(field._dictionary);\n var fieldName = field.name;\n if (font !== null && typeof font !== 'undefined') {\n fieldName = this._getEncodedValue(fieldName, font);\n }\n var value = void 0; // eslint-disable-line\n var selectedValue = void 0;\n switch (type.name) {\n case 'Tx':\n textValue = _getInheritableProperty(field._dictionary, 'V', false, true, 'Parent');\n if (textValue !== null && typeof textValue !== 'undefined') {\n textValue = this._getEncodedValue(textValue, font);\n this._table.set(fieldName, textValue);\n }\n else if (this._exportEmptyFields) {\n textValue = '';\n this._table.set(fieldName, textValue);\n }\n break;\n case 'Ch':\n value = _getInheritableProperty(field._dictionary, 'V', true, true, 'Parent');\n if (value !== null && typeof value !== 'undefined') {\n selectedValue = this._getExportValue(value);\n }\n if (!value && field._dictionary.has('I') && (field instanceof PdfListBoxField || field instanceof PdfComboBoxField)) {\n selectedValue = field._obtainSelectedValue();\n }\n if (selectedValue !== null && typeof selectedValue !== 'undefined') {\n if (typeof selectedValue === 'string' && selectedValue !== '') {\n selectedValue = this._getEncodedValue(selectedValue, font);\n textValue = selectedValue;\n this._table.set(fieldName, textValue);\n }\n else if (selectedValue instanceof Array && selectedValue.length > 0) {\n var values = [];\n for (var i = 0; i < selectedValue.length; i++) {\n values.push(this._getEncodedValue(selectedValue[Number.parseInt(i.toString(), 10)], font));\n }\n this._table.set(fieldName, values);\n return values;\n }\n }\n else if (this._exportEmptyFields) {\n textValue = '';\n this._table.set(fieldName, textValue);\n }\n break;\n case 'Btn':\n value = _getInheritableProperty(field._dictionary, 'V', false, true, 'Parent');\n if (value !== null && typeof value !== 'undefined') {\n var text = this._getExportValue(value, field);\n if (text !== null && typeof text !== 'undefined' && text !== '') {\n var radioButton = void 0;\n if (field instanceof PdfRadioButtonListField) {\n radioButton = field;\n }\n if (!field._dictionary.has('Opt') ||\n (radioButton !== null &&\n typeof radioButton !== 'undefined'\n && radioButton.selectedIndex === -1)) {\n text = this._getEncodedValue(text, font);\n textValue = text;\n this._table.set(fieldName, textValue);\n }\n else {\n if (field._dictionary.has('Opt')) {\n var options = field._dictionary.getArray('Opt');\n var index = Number.parseInt(text, 10);\n if (index === null || typeof index === 'undefined' || Number.isNaN(index)) {\n index = 0;\n }\n if (options !== null && typeof options !== 'undefined') {\n var current = void 0;\n if (radioButton) {\n current = options[radioButton.selectedIndex];\n }\n else {\n current = options[Number.parseInt(index.toString(), 10)];\n }\n if (current !== null && typeof current !== 'undefined') {\n text = current;\n }\n if (text !== null && typeof text !== 'undefined' && text !== '') {\n text = this._getEncodedValue(text, font);\n textValue = text;\n this._table.set(fieldName, textValue);\n }\n }\n }\n }\n }\n else if (field instanceof PdfRadioButtonListField || field instanceof PdfCheckBoxField) {\n if (this._exportEmptyFields) {\n textValue = text;\n }\n else {\n textValue = 'Off';\n }\n this._table.set(fieldName, textValue);\n }\n }\n else {\n if (field instanceof PdfRadioButtonListField) {\n textValue = field._getAppearanceStateValue();\n if (!textValue) {\n if (this._exportEmptyFields) {\n textValue = '';\n }\n else {\n textValue = 'Off';\n }\n }\n this._table.set(fieldName, textValue);\n }\n else {\n var widget = field.itemAt(field._defaultIndex);\n var dictionary = void 0;\n if (widget) {\n dictionary = widget._dictionary;\n }\n else {\n dictionary = field._dictionary;\n }\n if (dictionary && dictionary.has('AS')) {\n textValue = dictionary.get('AS').name;\n this._table.set(fieldName, textValue);\n }\n else if (this._exportEmptyFields) {\n textValue = '';\n this._table.set(fieldName, textValue);\n }\n }\n }\n break;\n }\n }\n }\n return textValue;\n };\n _ExportHelper.prototype._exportFormFieldData = function (field) {\n var type = _getInheritableProperty(field._dictionary, 'FT', false, true, 'Parent');\n if (type && type.name !== null && typeof type.name !== 'undefined') {\n var font = this._getEncodedFontDictionary(field._dictionary);\n var fieldName = field.name;\n if (font !== null && typeof font !== 'undefined') {\n fieldName = this._getEncodedValue(fieldName, font);\n }\n var textValue = void 0;\n var value = void 0; // eslint-disable-line\n switch (type.name) {\n case 'Tx':\n textValue = _getInheritableProperty(field._dictionary, 'V', false, true, 'Parent');\n if (this._asPerSpecification) {\n if (field._dictionary.has('RV')) {\n textValue = _getInheritableProperty(field._dictionary, 'RV', false, true, 'Parent');\n if (textValue !== null && typeof textValue !== 'undefined') {\n textValue += this._key;\n this._formKey = this._key;\n this._table.set(fieldName, textValue);\n }\n }\n else if (textValue !== null && typeof textValue !== 'undefined') {\n textValue = this._getEncodedValue(textValue, font);\n var replaceValue = textValue;\n if (field instanceof PdfTextBoxField && field.multiLine) {\n replaceValue = replaceValue.replace('\\n', '');\n replaceValue = replaceValue.replace('\\r', '\\r\\n');\n textValue = replaceValue;\n }\n this._table.set(fieldName, textValue);\n }\n }\n else {\n if (textValue !== null && typeof textValue !== 'undefined') {\n textValue = this._getEncodedValue(textValue, font);\n this._table.set(fieldName, textValue);\n }\n else if (this._exportEmptyFields) {\n this._table.set(fieldName, '');\n }\n }\n break;\n case 'Ch':\n value = _getInheritableProperty(field._dictionary, 'V', true, true, 'Parent');\n if (this._asPerSpecification) {\n if (field instanceof PdfListField) {\n if (Array.isArray(value)) {\n this._table.set(fieldName, value);\n }\n else {\n if (typeof value === 'string') {\n value = this._getEncodedValue(value, font);\n this._table.set(fieldName, value);\n }\n else if ((value === null || typeof value === 'undefined') && field._dictionary.has('I')) {\n var selectedValue = field._obtainSelectedValue();\n if (selectedValue !== null && typeof selectedValue !== 'undefined') {\n if (typeof selectedValue === 'string' && selectedValue !== '') {\n selectedValue = this._getEncodedValue(selectedValue, font);\n this._table.set(fieldName, textValue);\n }\n else if (selectedValue instanceof Array && selectedValue.length > 0) {\n var values = [];\n for (var i = 0; i < selectedValue.length; i++) {\n values.push(this._getEncodedValue(selectedValue[Number.parseInt(i.toString(), 10)], font));\n }\n this._table.set(fieldName, values);\n }\n }\n }\n }\n }\n }\n else {\n var selectedValue = void 0;\n if (value !== null && typeof value !== 'undefined') {\n selectedValue = this._getExportValue(value);\n }\n if (!value && field._dictionary.has('I') && (field instanceof PdfListBoxField || field instanceof PdfComboBoxField)) {\n selectedValue = field._obtainSelectedValue();\n }\n if (selectedValue !== null && typeof selectedValue !== 'undefined') {\n if (typeof selectedValue === 'string' && selectedValue !== '') {\n selectedValue = this._getEncodedValue(selectedValue, font);\n this._table.set(fieldName, selectedValue);\n }\n else if (selectedValue instanceof Array && selectedValue.length > 0) {\n var values = [];\n for (var i = 0; i < selectedValue.length; i++) {\n values.push(this._getEncodedValue(selectedValue[Number.parseInt(i.toString(), 10)], font));\n }\n this._table.set(fieldName, values);\n }\n else if (this._exportEmptyFields) {\n this._table.set(fieldName, '');\n }\n }\n else if (this._exportEmptyFields) {\n this._table.set(fieldName, '');\n }\n }\n break;\n case 'Btn':\n value = _getInheritableProperty(field._dictionary, 'V', false, true, 'Parent');\n if (value !== null && typeof value !== 'undefined') {\n var text = this._getExportValue(value, field);\n if (text !== null && typeof text !== 'undefined' && text !== '') {\n if (this._asPerSpecification && this._format !== 'XML') {\n text = _hexStringToString(text);\n }\n var radioButton = void 0;\n if (field instanceof PdfRadioButtonListField) {\n radioButton = field;\n }\n if (!field._dictionary.has('Opt') ||\n (radioButton !== null &&\n typeof radioButton !== 'undefined'\n && radioButton.selectedIndex === -1)) {\n text = this._getEncodedValue(text, font);\n this._table.set(fieldName, text);\n }\n else {\n if (field._dictionary.has('Opt')) {\n var options = field._dictionary.getArray('Opt');\n var index = Number.parseInt(text, 10);\n if (index === null || typeof index === 'undefined' || Number.isNaN(index)) {\n index = 0;\n }\n if (options !== null && typeof options !== 'undefined') {\n var current = void 0;\n if (radioButton) {\n current = options[radioButton.selectedIndex];\n }\n else {\n current = options[Number.parseInt(index.toString(), 10)];\n }\n if (current !== null && typeof current !== 'undefined') {\n text = current;\n }\n if (text !== null && typeof text !== 'undefined' && text !== '') {\n text = this._getEncodedValue(text, font);\n this._table.set(fieldName, text);\n }\n }\n }\n }\n }\n else if (field instanceof PdfRadioButtonListField || field instanceof PdfCheckBoxField) {\n if (this._exportEmptyFields) {\n this._table.set(fieldName, text);\n }\n else {\n this._table.set(fieldName, 'Off');\n }\n }\n }\n else {\n if (field instanceof PdfRadioButtonListField) {\n var text = field._getAppearanceStateValue();\n if (!text) {\n if (this._exportEmptyFields) {\n text = '';\n }\n else {\n text = 'Off';\n }\n }\n this._table.set(fieldName, text);\n }\n else {\n var widget = field.itemAt(field._defaultIndex);\n var dictionary = void 0;\n if (widget) {\n dictionary = widget._dictionary;\n }\n else {\n dictionary = field._dictionary;\n }\n if (dictionary && dictionary.has('AS')) {\n this._table.set(fieldName, dictionary.get('AS').name);\n }\n else if (this._exportEmptyFields) {\n this._table.set(fieldName, '');\n }\n }\n }\n break;\n }\n }\n };\n _ExportHelper.prototype._getAnnotationType = function (dictionary) {\n var type = '';\n if (dictionary.has('Subtype')) {\n var subtype = dictionary.get('Subtype');\n if (subtype) {\n type = subtype.name;\n }\n }\n return type;\n };\n _ExportHelper.prototype._getValue = function (primitive, isJson) {\n if (isJson === void 0) { isJson = false; }\n var value = '';\n if (typeof primitive !== 'undefined' && primitive !== null) {\n if (primitive instanceof _PdfName) {\n value = primitive.name;\n }\n else if (typeof primitive === 'boolean') {\n value = primitive ? isJson ? 'true' : 'yes' : isJson ? 'false' : 'no';\n }\n else if (typeof primitive === 'string') {\n value = this._getValidString(primitive);\n }\n else if (Array.isArray(primitive)) {\n var colorArray = primitive; // eslint-disable-line\n if (colorArray.length > 0) {\n value = this._getValue(colorArray[0], isJson);\n }\n for (var i = 1; i < colorArray.length; i++) {\n value += ',' + this._getValue(colorArray[Number.parseInt(i.toString(), 10)], isJson);\n }\n }\n else if (typeof primitive === 'number') {\n value = primitive.toString();\n }\n }\n return value;\n };\n _ExportHelper.prototype._getColor = function (primitive) {\n var color = '';\n if (primitive && Array.isArray(primitive) && primitive.length >= 3) {\n var r = Math.round(primitive[0] * 255).toString(16).toUpperCase();\n var g = Math.round(primitive[1] * 255).toString(16).toUpperCase();\n var b = Math.round(primitive[2] * 255).toString(16).toUpperCase();\n color = '#' + (r.length === 1 ? ('0' + r) : r) + (g.length === 1 ? ('0' + g) : g) + (b.length === 1 ? ('0' + b) : b);\n }\n return color;\n };\n _ExportHelper.prototype._getValidString = function (value) {\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/\\n/g, '\\\\n');\n }\n if (value.indexOf('\\r') !== -1) {\n value = value.replace(/\\r/g, '\\\\r');\n }\n return value;\n };\n _ExportHelper.prototype._getEncodedFontDictionary = function (source) {\n var font;\n var kids; // eslint-disable-line\n if (source.has('Kids') && !source.has('AP')) {\n kids = source.getArray('Kids');\n }\n if (source.has('AP') || (kids !== null && typeof kids !== 'undefined' && Array.isArray(kids))) {\n var appearance = void 0;\n if (kids !== null && typeof kids !== 'undefined' && kids.length > 0) {\n var kid = kids[0];\n if (kid !== null && typeof kid !== 'undefined' && kid.has('AP')) {\n appearance = kid.get('AP');\n }\n }\n else {\n appearance = source.get('AP');\n }\n if (appearance !== null && typeof appearance !== 'undefined' && appearance.has('N')) {\n var normal = appearance.get('N');\n if (normal !== null && typeof normal !== 'undefined' && normal instanceof _PdfBaseStream && normal.dictionary.has('Resources')) {\n var resource = normal.dictionary.get('Resources');\n if (resource !== null && typeof resource !== 'undefined' && resource.has('Font')) {\n font = resource.get('Font');\n }\n }\n }\n }\n return font;\n };\n _ExportHelper.prototype._getEncodedValue = function (value, dictionary) {\n var _this = this;\n var text = value;\n var structure;\n if (this._encodeDictionary !== null && typeof this._encodeDictionary !== 'undefined') {\n structure = new _FontStructure(this._encodeDictionary);\n return this._replaceNotUsedCharacters(text, structure);\n }\n else {\n var root = this._document.form._dictionary;\n if (root !== null && typeof root !== 'undefined' && root.has('DR')) {\n var resource = root.get('DR');\n if (resource !== null && typeof resource !== 'undefined' && resource.has('Encoding')) {\n var encoding = resource.get('Encoding');\n if (encoding !== null && typeof encoding !== 'undefined' && encoding.has('PDFDocEncoding')) {\n var pdfEncoding = encoding.get('PDFDocEncoding');\n if (pdfEncoding !== null && typeof pdfEncoding !== 'undefined' && pdfEncoding.has('Differences')) {\n var encodingDictionary = new _PdfDictionary(this._crossReference);\n encodingDictionary.set('Differences', pdfEncoding.get('Differences'));\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, encodingDictionary);\n var fontEncodeDictionary = new _PdfDictionary(this._crossReference);\n fontEncodeDictionary.set('Subtype', _PdfName.get('Type1'));\n fontEncodeDictionary.set('Encoding', reference);\n structure = new _FontStructure(fontEncodeDictionary);\n if (structure !== null &&\n typeof structure !== 'undefined' &&\n structure.differencesDictionary !== null &&\n typeof structure.differencesDictionary !== 'undefined' &&\n structure.differencesDictionary.size > 0) {\n this._encodeDictionary = fontEncodeDictionary;\n return this._replaceNotUsedCharacters(text, structure);\n }\n }\n }\n }\n }\n if (value !== null &&\n typeof value !== 'undefined' &&\n dictionary !== null &&\n typeof dictionary !== 'undefined' &&\n dictionary.size > 0) {\n var result_1;\n var isSkip_1 = false;\n dictionary.forEach(function (key, value) {\n if (!isSkip_1 && value !== null && typeof value !== 'undefined') {\n var fontDictionary = void 0;\n if (value instanceof _PdfDictionary) {\n fontDictionary = value;\n }\n else if (value instanceof _PdfReference) {\n var holder = _this._crossReference._fetch(value); // eslint-disable-line\n if (holder !== null && typeof holder !== 'undefined' && holder instanceof _PdfDictionary) {\n fontDictionary = holder;\n }\n }\n if (fontDictionary) {\n structure = new _FontStructure(fontDictionary);\n result_1 = _this._replaceNotUsedCharacters(text, structure);\n isSkip_1 = true;\n }\n }\n });\n if (!isSkip_1) {\n return result_1;\n }\n }\n return text;\n }\n };\n _ExportHelper.prototype._replaceNotUsedCharacters = function (input, structure) {\n var updatedString = '';\n var differencesDictionary = structure.differencesDictionary;\n for (var i = 0; i < input.length; i++) {\n var text = input[Number.parseInt(i.toString(), 10)];\n var code = input.charCodeAt(i);\n if (differencesDictionary.has(text)) {\n var difference = differencesDictionary.get(text);\n if ((difference.length > 1 && structure._fontType !== 'Type3') ||\n (code > 127 && code <= 255 && structure._fontType === 'Type1' &&\n structure._baseFontEncoding !== 'WinAnsiEncoding' &&\n structure._fontEncoding === 'Encoding' && structure._fontName === 'ZapfDingbats')) {\n updatedString += text;\n }\n else {\n updatedString += difference;\n }\n }\n else {\n updatedString += text;\n }\n }\n return updatedString;\n };\n _ExportHelper.prototype._getExportValue = function (primitive, field) {\n var value;\n if (primitive !== null && typeof primitive !== 'undefined') {\n if (field !== null && typeof field !== 'undefined') {\n if (primitive instanceof _PdfName) {\n value = primitive.name;\n }\n else if (typeof primitive === 'string') {\n value = primitive;\n }\n if (value !== null &&\n typeof value !== 'undefined' &&\n value !== '' &&\n field instanceof PdfRadioButtonListField &&\n field.selectedIndex !== -1) {\n var item = field.itemAt(field.selectedIndex);\n if (item !== null && typeof item !== 'undefined' && item.value === value) {\n value = item.value;\n }\n }\n }\n else {\n if (primitive instanceof _PdfName) {\n value = primitive.name;\n }\n else if (typeof primitive === 'string') {\n value = primitive;\n }\n else if (Array.isArray(primitive)) {\n var values = [];\n for (var i = 0; i < primitive.length; i++) {\n var element = primitive[Number.parseInt(i.toString(), 10)]; // eslint-disable-line\n if (element instanceof _PdfName) {\n values.push(element.name);\n }\n else if (typeof element === 'string') {\n values.push(element);\n }\n }\n return values;\n }\n }\n }\n return value;\n };\n _ExportHelper.prototype._addReferenceToGroup = function (reference, dictionary) {\n var name = dictionary.get('NM');\n if (name && name !== '') {\n this._groupReferences.set(name, reference);\n if (dictionary.has('IRT')) {\n this._groupHolders.push(dictionary);\n }\n }\n else if (!name && dictionary.has('IRT')) {\n name = dictionary.get('IRT');\n if (name && name !== '' && this._groupReferences.has(name)) {\n dictionary.update('IRT', this._groupReferences.get(name));\n }\n }\n };\n _ExportHelper.prototype._handlePopup = function (annotations, reference, annotationDictionary, pageDictionary) {\n if (annotationDictionary.has('Popup')) {\n var popupReference = annotationDictionary.getRaw('Popup');\n var popup = annotationDictionary.get('Popup');\n if (popup instanceof _PdfDictionary) {\n if (popupReference && popup) {\n popup.update('Parent', reference);\n }\n var popupAnnotation = annotations._parseAnnotation(popup);\n var index = annotations._annotations.length;\n annotations._annotations.push(reference);\n pageDictionary.set('Annots', annotations._annotations);\n pageDictionary._updated = true;\n annotations._parsedAnnotations.set(index, popupAnnotation);\n }\n }\n };\n _ExportHelper.prototype._importField = function () {\n var _this = this;\n var form = this._document.form;\n var count = form.count;\n if (count) {\n this._fields.forEach(function (value, key) {\n var richTextValue;\n if (_this._richTextValues.size > 0 && _this._richTextValues.has(key)) {\n richTextValue = _this._richTextValues.get(key);\n }\n var index = form._getFieldIndex(key);\n if (index !== -1 && index < count) {\n var field = form.fieldAt(index);\n if (field && field !== null && typeof field !== 'undefined') {\n if (richTextValue && richTextValue !== '') {\n field._dictionary.update('RV', richTextValue);\n }\n _this._importFieldData(field, value);\n }\n }\n });\n }\n };\n _ExportHelper.prototype._importFieldData = function (field, values) {\n if (values !== null &&\n typeof values !== 'undefined' &&\n values.length > 0 &&\n field !== null &&\n typeof field !== 'undefined' &&\n !field.readOnly) {\n var value = values[0];\n if (field instanceof PdfTextBoxField) {\n if (value !== null && typeof value !== 'undefined') {\n if (field instanceof PdfTextBoxField && field.multiLine) {\n value = value.replace('\\r\\n', '\\r');\n value = value.replace('\\n', '\\r');\n }\n field.text = value;\n }\n }\n else if (field instanceof PdfListBoxField || field instanceof PdfComboBoxField) {\n var selectedValues_1;\n if (values.length > 1) {\n selectedValues_1 = values;\n }\n else {\n if (this._xmlImport) {\n selectedValues_1 = (value.indexOf(',') !== -1 ? value.split(',') : [value]);\n }\n else {\n selectedValues_1 = [value.indexOf(',') !== -1 ? value.split(',')[0] : value];\n }\n }\n var indexes_1 = [];\n var options_1 = field._options;\n if (options_1 && options_1.length > 0) {\n options_1.forEach(function (option) {\n if (selectedValues_1.indexOf(option[0]) !== -1 || selectedValues_1.indexOf(option[1]) !== -1) {\n indexes_1.push(options_1.indexOf(option));\n }\n });\n }\n if (indexes_1.length > 0) {\n field.selectedIndex = indexes_1;\n if (field instanceof PdfComboBoxField && this._asPerSpecification && field._dictionary.has('AP')) {\n delete field._dictionary._map.AP;\n field._dictionary._updated = true;\n }\n }\n }\n else if (field instanceof PdfCheckBoxField) {\n var lowerCase = value.toLowerCase();\n if (this._containsExportValue(value, field) || lowerCase === 'on' || lowerCase === 'yes') {\n field.checked = true;\n }\n else {\n field.checked = false;\n }\n }\n else if (field instanceof PdfRadioButtonListField) {\n var index = -1;\n for (var i = 0; i < field._kidsCount; i++) {\n var item = field.itemAt(i);\n if (item && item.value && item.value === value) {\n index = i;\n break;\n }\n }\n if (index !== -1 && field.selectedIndex !== index) {\n field.selectedIndex = index;\n }\n }\n }\n };\n _ExportHelper.prototype._containsExportValue = function (value, field) {\n var result = false;\n if (field._kidsCount > 0) {\n for (var i = 0; i < field._kidsCount; i++) {\n var kid = field.itemAt(i);\n if (kid && this._checkSelected(kid._dictionary, value)) {\n return true;\n }\n }\n }\n else {\n result = this._checkSelected(field._dictionary, value);\n if (!result && this._asPerSpecification && field._dictionary.has('AS')) {\n var asEntry = field._dictionary.get('AS');\n if (asEntry && (asEntry.name === 'Off' || asEntry.name === 'No')) {\n if (field._dictionary.has('Opt')) {\n var options = field._dictionary.getArray('Opt');\n if (options && options.length > 0) {\n options.forEach(function (option) {\n if (option === value) {\n result = true;\n }\n });\n }\n }\n }\n else {\n result = true;\n }\n }\n }\n return result;\n };\n _ExportHelper.prototype._checkSelected = function (dictionary, value) {\n if (dictionary && dictionary.has('AP')) {\n var appearance = dictionary.get('AP');\n if (appearance && appearance instanceof _PdfDictionary && appearance.has('N')) {\n var normalTemplate = appearance.get('N');\n if (normalTemplate &&\n normalTemplate instanceof _PdfDictionary &&\n normalTemplate.has(value) &&\n !(value.toLocaleLowerCase() === 'off' || value.toLocaleLowerCase() === 'no')) {\n return true;\n }\n }\n }\n return false;\n };\n _ExportHelper.prototype._dispose = function () {\n this.exportAppearance = undefined;\n this._asPerSpecification = undefined;\n this._skipBorderStyle = undefined;\n this._fileName = undefined;\n this._document = undefined;\n this._crossReference = undefined;\n this._isAnnotationExport = undefined;\n this._isAnnotationImport = undefined;\n this._key = undefined;\n this._formKey = undefined;\n this._exportEmptyFields = undefined;\n this._groupReferences = undefined;\n this._groupHolders = undefined;\n this._encodeDictionary = undefined;\n this._annotationTypes = undefined;\n this._annotationAttributes = undefined;\n this._xmlDocument = undefined;\n this._parser = undefined;\n this._table = undefined;\n this._fields = undefined;\n this._richTextValues = undefined;\n this._jsonData = undefined;\n };\n return _ExportHelper;\n}());\nexport { _ExportHelper };\nvar _XfdfDocument = /** @class */ (function (_super) {\n __extends(_XfdfDocument, _super);\n function _XfdfDocument(fileName) {\n var _this = _super.call(this) || this;\n if (fileName !== null && typeof fileName !== 'undefined') {\n _this._fileName = fileName;\n }\n return _this;\n }\n // #region Export Annotations\n _XfdfDocument.prototype._exportAnnotations = function (document) {\n this._document = document;\n this._crossReference = document._crossReference;\n this._isAnnotationExport = true;\n return this._save();\n };\n _XfdfDocument.prototype._exportFormFields = function (document) {\n this._document = document;\n this._crossReference = document._crossReference;\n this._isAnnotationExport = false;\n this._key = _getNewGuidString();\n return this._save();\n };\n _XfdfDocument.prototype._save = function () {\n var writer = new _XmlWriter();\n writer._writeStartDocument();\n writer._writeStartElement('xfdf');\n writer._writeAttributeString(null, 'http://ns.adobe.com/xfdf/', 'xmlns', null);\n writer._writeAttributeString('space', 'preserve', 'xml', null);\n if (this._isAnnotationExport) {\n writer._writeStartElement('annots');\n if (this._document) {\n for (var i = 0; i < this._document.pageCount; i++) {\n var page = this._document.getPage(i);\n var annotations = page.annotations;\n for (var j = 0; j < annotations.count; j++) {\n var annotation = annotations.at(j);\n if (annotation && (!this._annotationTypes ||\n this._annotationTypes.length === 0 ||\n (this._annotationTypes && this._annotationTypes.length > 0 && this._checkAnnotationType(annotation)))) {\n this._exportAnnotationData(annotation, writer, i);\n }\n }\n }\n }\n writer._writeEndElement();\n }\n else {\n var form = this._document.form;\n if (form !== null && typeof form !== 'undefined') {\n this._exportEmptyFields = form.exportEmptyFields;\n var count = this._document.form.count;\n for (var i = 0; i < count; i++) {\n var field = this._document.form.fieldAt(i);\n if (field !== null && typeof field !== 'undefined' && field.export) {\n this._exportFormFieldData(field);\n }\n }\n this._writeFormFieldData(writer, this._asPerSpecification);\n }\n }\n if (!this._asPerSpecification) {\n writer._writeStartElement('f');\n writer._writeAttributeString('href', this._fileName);\n }\n var result = writer._save();\n writer._destroy();\n return result;\n };\n _XfdfDocument.prototype._writeFormFieldData = function (writer, isAcrobat) {\n var _this = this;\n if (isAcrobat === void 0) { isAcrobat = false; }\n if (isAcrobat) {\n writer._writeStartElement('f');\n writer._writeAttributeString('href', this._fileName);\n writer._writeEndElement();\n var elements = this._getElements(this._table); // eslint-disable-line\n if (elements && elements.size > 0) {\n writer._writeStartElement('fields');\n var flag_1 = false;\n elements.forEach(function (value, key) {\n writer._writeStartElement('field');\n writer._writeAttributeString('name', key.toString());\n if (Array.isArray(value)) {\n value.forEach(function (item) {\n writer._writeStartElement('value');\n writer._writeString(item.toString());\n writer._writeEndElement();\n flag_1 = true;\n });\n }\n if (value instanceof Map) {\n _this._writeFieldName(value, writer);\n }\n else if (!flag_1 && !value.toString().endsWith(_this._formKey) || (!flag_1 && _this._formKey === '')) {\n writer._writeStartElement('value');\n writer._writeString(value.toString());\n writer._writeEndElement();\n }\n else if (_this._formKey !== '' && value.toString().endsWith(_this._formKey)) {\n writer._writeStartElement('value-richtext');\n var text = value.toString();\n if (text.startsWith('')) {\n text = text.substring(21);\n }\n var start = text.length - _this._formKey.length;\n text = text.substring(0, start) + text.substring(start + _this._formKey.length);\n writer._writeRaw(text);\n writer._writeEndElement();\n }\n writer._writeEndElement();\n flag_1 = false;\n });\n writer._writeEndElement();\n }\n writer._writeStartElement('ids');\n var hasId = false;\n if (this._crossReference._root.has('ID')) {\n var id = this._crossReference._root.getArray('ID');\n if (id && id.length >= 1) {\n writer._writeAttributeString('original', id[0]);\n writer._writeAttributeString('modified', id[1]);\n hasId = true;\n }\n }\n if (!hasId) {\n writer._writeAttributeString('original', '');\n writer._writeAttributeString('modified', '');\n }\n writer._writeEndElement();\n }\n else {\n writer._writeStartElement('fields');\n this._table.forEach(function (value, key) {\n writer._writeStartElement('field');\n writer._writeAttributeString('name', key.toString());\n if (Array.isArray(value)) {\n value.forEach(function (item) {\n writer._writeStartElement('value');\n writer._writeString(item.toString());\n writer._writeEndElement();\n });\n }\n else {\n writer._writeStartElement('value');\n writer._writeString(value.toString());\n writer._writeEndElement();\n }\n writer._writeEndElement();\n });\n writer._writeEndElement();\n }\n };\n _XfdfDocument.prototype._writeFieldName = function (value, writer) {\n var _this = this;\n value.forEach(function (value, key) {\n if (value instanceof Map) {\n writer._writeStartElement('field');\n writer._writeAttributeString('name', key.toString());\n _this._writeFieldName(value, writer);\n writer._writeEndElement();\n }\n else {\n writer._writeStartElement('field');\n writer._writeAttributeString('name', key.toString());\n if (Array.isArray(value)) {\n value.forEach(function (item) {\n writer._writeStartElement('value');\n writer._writeString(item.toString());\n writer._writeEndElement();\n });\n }\n else {\n if (!value.toString().endsWith(_this._formKey) || _this._formKey === '') {\n writer._writeStartElement('value');\n writer._writeString(value.toString());\n }\n else {\n writer._writeStartElement('value-richtext');\n var text = value.toString();\n if (text.startsWith('')) {\n text = text.substring(21);\n }\n var start = text.length - _this._formKey.length;\n text = text.substring(0, start) + text.substring(start + _this._formKey.length);\n writer._writeRaw(text);\n }\n writer._writeEndElement();\n }\n writer._writeEndElement();\n }\n });\n };\n _XfdfDocument.prototype._getElements = function (table) {\n var _this = this;\n var elements = new Map(); // eslint-disable-line\n table.forEach(function (value, key) {\n var parentElements = elements; // eslint-disable-line\n if (key.toString().indexOf('.') !== -1) {\n var values = key.toString().split('.');\n for (var i = 0; i < values.length; i++) {\n var element = values[Number.parseInt(i.toString(), 10)];\n if (parentElements.has(element)) {\n _this._getElements(parentElements[element]); // eslint-disable-line\n parentElements = parentElements[element]; // eslint-disable-line\n }\n else {\n if (i === values.length - 1) {\n parentElements.set(element, value);\n }\n else {\n var newTable = new Map(); // eslint-disable-line\n parentElements.set(element, newTable);\n parentElements = newTable;\n }\n }\n }\n }\n else {\n parentElements.set(key, value);\n }\n });\n return elements;\n };\n _XfdfDocument.prototype._checkAnnotationType = function (annotation) {\n return (typeof annotation._type !== 'undefined' && this._annotationTypes.indexOf(annotation._type) !== -1);\n };\n _XfdfDocument.prototype._exportAnnotationData = function (annotation, writer, pageIndex) {\n if (annotation._dictionary &&\n !(annotation instanceof PdfFileLinkAnnotation ||\n annotation instanceof PdfTextWebLinkAnnotation ||\n annotation instanceof PdfDocumentLinkAnnotation ||\n annotation instanceof PdfUriAnnotation)) {\n this._writeAnnotationData(writer, pageIndex, annotation);\n }\n };\n _XfdfDocument.prototype._writeAnnotationData = function (writer, pageIndex, source) {\n var hasAppearance = false;\n var annotation;\n var dictionary;\n if (source instanceof PdfAnnotation) {\n annotation = source;\n dictionary = source._dictionary;\n }\n else {\n dictionary = source;\n }\n var type = this._getAnnotationType(dictionary);\n this._skipBorderStyle = false;\n if (type && type !== '') {\n if (!this._annotationAttributes) {\n this._annotationAttributes = [];\n }\n writer._writeStartElement(type.toLowerCase());\n writer._writeAttributeString('page', pageIndex.toString());\n var lineAnnotation = void 0;\n var points = void 0;\n switch (type) {\n case 'Line':\n lineAnnotation = annotation;\n points = lineAnnotation.linePoints;\n writer._writeAttributeString('start', points[0].toString() + ',' + points[1].toString());\n writer._writeAttributeString('end', points[2].toString() + ',' + points[3].toString());\n break;\n case 'Stamp':\n hasAppearance = true;\n break;\n case 'Square':\n hasAppearance = true;\n break;\n }\n if (dictionary && dictionary.has('BE') && dictionary.has('BS')) {\n var borderEffect = dictionary.get('BE');\n if (borderEffect && borderEffect.has('S')) {\n this._skipBorderStyle = true;\n }\n }\n this._writeDictionary(dictionary, pageIndex, writer, hasAppearance);\n writer._writeEndElement();\n this._annotationAttributes = [];\n }\n };\n _XfdfDocument.prototype._writeDictionary = function (dictionary, pageIndex, writer, hasAppearance) {\n var _this = this;\n var isBorderStyle = false;\n if (dictionary.has('Type')) {\n var type = dictionary.get('Type');\n isBorderStyle = (type && type.name === 'Border' && this._skipBorderStyle);\n }\n dictionary.forEach(function (key, value) {\n if (!((!hasAppearance && key === 'AP') || key === 'P' || key === 'Parent')) {\n var entry = void 0; // eslint-disable-line\n if (value instanceof _PdfReference) {\n entry = dictionary.get(key);\n }\n if (entry && entry instanceof _PdfDictionary) {\n switch (key) {\n case 'BS':\n _this._writeDictionary(entry, pageIndex, writer, false);\n break;\n case 'BE':\n _this._writeDictionary(entry, pageIndex, writer, false);\n break;\n case 'IRT':\n if (entry.has('NM')) {\n writer._writeAttributeString('inreplyto', _this._getValue(entry.get('NM')));\n }\n break;\n }\n }\n else if (value instanceof _PdfDictionary) {\n _this._writeDictionary(value, pageIndex, writer, false);\n }\n else if ((!isBorderStyle) || (isBorderStyle && key !== 'S')) {\n _this._writeAttribute(writer, key, value);\n }\n }\n });\n if ((this.exportAppearance || hasAppearance) && dictionary.has('AP')) {\n var stream = this._getAppearanceString(dictionary.get('AP'));\n if (stream && stream.length > 0) {\n writer._writeStartElement('appearance');\n writer._writeRaw(_encode(stream));\n writer._writeEndElement();\n }\n }\n if (dictionary.has('Measure')) {\n this._exportMeasureDictionary(dictionary.get('Measure'), writer);\n }\n if (dictionary.has('Sound')) {\n var sound = dictionary.get('Sound');\n if (sound && sound.dictionary) {\n var soundDictionary = sound.dictionary;\n if (soundDictionary.has('B')) {\n writer._writeAttributeString('bits', this._getValue(soundDictionary.get('B')));\n }\n if (soundDictionary.has('C')) {\n writer._writeAttributeString('channels', this._getValue(soundDictionary.get('C')));\n }\n if (soundDictionary.has('E')) {\n writer._writeAttributeString('encoding', this._getValue(soundDictionary.get('E')));\n }\n if (soundDictionary.has('R')) {\n writer._writeAttributeString('rate', this._getValue(soundDictionary.get('R')));\n }\n if (soundDictionary.has('Length') && soundDictionary.get('Length') > 0) {\n var data = _byteArrayToHexString(sound.getBytes());\n if (data && data !== '') {\n writer._writeStartElement('data');\n writer._writeAttributeString('MODE', 'raw');\n writer._writeAttributeString('encoding', 'hex');\n if (soundDictionary.has('Length')) {\n writer._writeAttributeString('length', this._getValue(soundDictionary.get('Length')));\n }\n if (soundDictionary.has('Filter')) {\n writer._writeAttributeString('filter', this._getValue(soundDictionary.get('Filter')));\n }\n writer._writeRaw(data);\n writer._writeEndElement();\n }\n }\n }\n }\n else if (dictionary.has('FS')) {\n var fsDictionary = dictionary.get('FS');\n if (fsDictionary) {\n if (fsDictionary.has('F')) {\n writer._writeAttributeString('file', this._getValue(fsDictionary.get('F')));\n }\n if (fsDictionary.has('EF')) {\n var efDictionary = fsDictionary.get('EF');\n if (efDictionary && efDictionary.has('F')) {\n var fStream = efDictionary.get('F');\n if (fStream && fStream.dictionary) {\n var fDictionary = fStream.dictionary;\n if (fDictionary.has('Params')) {\n var paramsDictionary = fDictionary.get('Params');\n if (paramsDictionary) {\n if (paramsDictionary.has('CreationDate')) {\n var value = this._getValue(paramsDictionary.get('CreationDate'));\n writer._writeAttributeString('creation', value);\n }\n if (paramsDictionary.has('ModificationDate')) {\n var value = this._getValue(paramsDictionary.get('ModificationDate'));\n writer._writeAttributeString('modification', value);\n }\n if (paramsDictionary.has('Size')) {\n writer._writeAttributeString('size', this._getValue(paramsDictionary.get('Size')));\n }\n if (paramsDictionary.has('CheckSum')) {\n var value = this._getValue(paramsDictionary.get('CheckSum'));\n var checksum = _stringToBytes(value);\n var hexString = _byteArrayToHexString(checksum);\n writer._writeAttributeString('checksum', hexString);\n }\n }\n }\n var data = _byteArrayToHexString(fStream.getBytes());\n if (data && data !== '') {\n writer._writeStartElement('data');\n writer._writeAttributeString('MODE', 'raw');\n writer._writeAttributeString('encoding', 'hex');\n if (fDictionary.has('Length')) {\n writer._writeAttributeString('length', this._getValue(fDictionary.get('Length')));\n }\n if (fDictionary.has('Filter')) {\n writer._writeAttributeString('filter', this._getValue(fDictionary.get('Filter')));\n }\n writer._writeRaw(data);\n writer._writeEndElement();\n }\n }\n }\n }\n }\n }\n if (dictionary.has('Vertices')) {\n writer._writeStartElement('vertices');\n var vertices = dictionary.getArray('Vertices');\n if (vertices && vertices.length > 0) {\n var elementCount = vertices.length;\n if (elementCount % 2 === 0) {\n var value = '';\n for (var i = 0; i < elementCount - 1; i++) {\n value += this._getValue(vertices[Number.parseInt(i.toString(), 10)]) + (i % 2 !== 0 ? ';' : ',');\n }\n value += this._getValue(vertices[elementCount - 1]);\n if (value && value !== '') {\n writer._writeRaw(value);\n }\n }\n }\n writer._writeEndElement();\n }\n if (dictionary.has('Popup')) {\n var popup = dictionary.get('Popup');\n if (popup) {\n this._writeAnnotationData(writer, pageIndex, popup);\n }\n }\n if (dictionary.has('DA')) {\n var defaultAppearance = dictionary.get('DA');\n if (defaultAppearance) {\n this._writeRawData(writer, 'defaultappearance', defaultAppearance);\n }\n }\n if (dictionary.has('DS')) {\n var defaultStyle = dictionary.get('DS');\n if (defaultStyle) {\n this._writeRawData(writer, 'defaultstyle', defaultStyle);\n }\n }\n if (dictionary.has('InkList')) {\n var inkList = dictionary.getArray('InkList');\n if (inkList && inkList.length > 0) {\n writer._writeStartElement('inklist');\n for (var j = 0; j < inkList.length; j++) {\n writer._writeElementString('gesture', this._getValue(inkList[Number.parseInt(j.toString(), 10)]));\n }\n writer._writeEndElement();\n }\n }\n if (dictionary.has('RC')) {\n var value = dictionary.get('RC');\n if (value && value !== '') {\n var index = value.indexOf(' 0) {\n value = value.substring(index);\n }\n this._writeRawData(writer, 'contents-richtext', value);\n }\n }\n if (dictionary.has('Contents')) {\n var value = dictionary.get('Contents');\n if (value && value.length > 0) {\n writer._writeStartElement('contents');\n writer._writeString(value);\n writer._writeEndElement();\n }\n }\n };\n _XfdfDocument.prototype._getAppearanceString = function (appearance) {\n var textWriter = new _XmlWriter(true);\n textWriter._writeStartElement('DICT');\n textWriter._writeAttributeString('KEY', 'AP');\n this._writeAppearanceDictionary(textWriter, appearance);\n textWriter._writeEndElement();\n var buffer = textWriter.buffer;\n textWriter._destroy();\n return buffer;\n };\n _XfdfDocument.prototype._writeAppearanceDictionary = function (writer, dictionary) {\n var _this = this;\n if (dictionary && dictionary.size > 0) {\n dictionary.forEach(function (key, value) {\n _this._writeObject(writer, value instanceof _PdfReference ? dictionary.get(key) : value, dictionary, key);\n });\n }\n };\n _XfdfDocument.prototype._writeObject = function (writer, primitive, dictionary, key) {\n if (primitive !== null && typeof primitive !== 'undefined') {\n if (primitive instanceof _PdfName) {\n this._writePrefix(writer, 'NAME', key);\n writer._writeAttributeString('VAL', primitive.name);\n writer._writeEndElement();\n }\n else if (Array.isArray(primitive)) {\n this._writePrefix(writer, 'ARRAY', key);\n this._writeArray(writer, dictionary.getArray(key), dictionary);\n writer._writeEndElement();\n }\n else if (typeof primitive === 'string') {\n this._writePrefix(writer, 'STRING', key);\n writer._writeAttributeString('VAL', primitive);\n writer._writeEndElement();\n }\n else if (typeof primitive === 'number') {\n if (Number.isInteger(primitive)) {\n this._writePrefix(writer, 'INT', key);\n writer._writeAttributeString('VAL', primitive.toString());\n }\n else {\n this._writePrefix(writer, 'FIXED', key);\n writer._writeAttributeString('VAL', primitive.toFixed(6));\n }\n writer._writeEndElement();\n }\n else if (typeof primitive === 'boolean') {\n this._writePrefix(writer, 'BOOL', key);\n writer._writeAttributeString('VAL', primitive ? 'true' : 'false');\n writer._writeEndElement();\n }\n else if (primitive instanceof _PdfDictionary) {\n this._writePrefix(writer, 'DICT', key);\n this._writeAppearanceDictionary(writer, primitive);\n writer._writeEndElement();\n }\n else if (primitive === null) {\n this._writePrefix(writer, 'NULL', key);\n writer._writeEndElement();\n }\n else if (primitive instanceof _PdfBaseStream && primitive.dictionary) {\n var streamDictionary = primitive.dictionary;\n this._writePrefix(writer, 'STREAM', key);\n writer._writeAttributeString('DEFINE', '');\n if ((streamDictionary.has('Subtype') &&\n this._getValue(streamDictionary.get('Subtype')) === 'Image') ||\n (!streamDictionary.has('Type') && !streamDictionary.has('Subtype'))) {\n var data = primitive.getString(true);\n if (!streamDictionary.has('Length') && data && data !== '') {\n streamDictionary.update('Length', primitive.length);\n }\n this._writeAppearanceDictionary(writer, streamDictionary);\n writer._writeStartElement('DATA');\n writer._writeAttributeString('MODE', 'RAW');\n writer._writeAttributeString('ENCODING', 'HEX');\n if (data && data !== '') {\n writer._writeRaw(data);\n }\n }\n else {\n var data = primitive.getString();\n if (!streamDictionary.has('Length') && data && data !== '') {\n streamDictionary.update('Length', primitive.length);\n }\n this._writeAppearanceDictionary(writer, streamDictionary);\n writer._writeStartElement('DATA');\n writer._writeAttributeString('MODE', 'FILTERED');\n writer._writeAttributeString('ENCODING', 'ASCII');\n if (data && data !== '') {\n writer._writeRaw(data);\n }\n }\n writer._writeEndElement();\n writer._writeEndElement();\n }\n else if (primitive instanceof _PdfReference && this._crossReference) {\n this._writeObject(writer, this._crossReference._fetch(primitive), dictionary, key);\n }\n }\n };\n _XfdfDocument.prototype._writePrefix = function (writer, name, key) {\n writer._writeStartElement(name);\n if (key) {\n writer._writeAttributeString('KEY', key);\n }\n };\n _XfdfDocument.prototype._writeArray = function (writer, array, dictionary) {\n var _this = this;\n array.forEach(function (entry) {\n _this._writeObject(writer, entry, dictionary);\n });\n };\n _XfdfDocument.prototype._getFormatedString = function (value, isParsing) {\n if (isParsing === void 0) { isParsing = false; }\n if (isParsing) {\n value = value.replace('&', '&');\n value = value.replace('<', '<');\n value = value.replace('>', '>');\n }\n else {\n value = value.replace('&', '&');\n value = value.replace('<', '<');\n value = value.replace('>', '>');\n }\n return value;\n };\n _XfdfDocument.prototype._writeAttribute = function (writer, key, primitive) {\n if (this._annotationAttributes && this._annotationAttributes.indexOf(key) === -1) {\n switch (key) {\n case 'C':\n this._writeColor(writer, primitive, 'color', 'c');\n break;\n case 'IC':\n this._writeColor(writer, primitive, 'interior-color');\n break;\n case 'M':\n this._writeAttributeString(writer, 'date', primitive);\n break;\n case 'NM':\n this._writeAttributeString(writer, 'name', primitive);\n break;\n case 'Name':\n this._writeAttributeString(writer, 'icon', primitive);\n break;\n case 'Subj':\n this._writeAttributeString(writer, 'subject', primitive);\n break;\n case 'T':\n this._writeAttributeString(writer, 'title', primitive);\n break;\n case 'Rotate':\n this._writeAttributeString(writer, 'rotation', primitive);\n break;\n case 'W':\n this._writeAttributeString(writer, 'width', primitive);\n break;\n case 'LE':\n if (primitive && Array.isArray(primitive)) {\n if (primitive.length === 2) {\n writer._writeAttributeString('head', this._getValue(primitive[0]));\n writer._writeAttributeString('tail', this._getValue(primitive[1]));\n }\n }\n else if (primitive instanceof _PdfName) {\n this._writeAttributeString(writer, 'head', primitive);\n }\n break;\n case 'S':\n if (this._annotationAttributes.indexOf('style') === -1) {\n switch (this._getValue(primitive)) {\n case 'D':\n writer._writeAttributeString('style', 'dash');\n break;\n case 'C':\n writer._writeAttributeString('style', 'cloudy');\n break;\n case 'S':\n writer._writeAttributeString('style', 'solid');\n break;\n case 'B':\n writer._writeAttributeString('style', 'bevelled');\n break;\n case 'I':\n writer._writeAttributeString('style', 'inset');\n break;\n case 'U':\n writer._writeAttributeString('style', 'underline');\n break;\n }\n this._annotationAttributes.push('style');\n }\n break;\n case 'D':\n this._writeAttributeString(writer, 'dashes', primitive);\n break;\n case 'I':\n this._writeAttributeString(writer, 'intensity', primitive);\n break;\n case 'RD':\n this._writeAttributeString(writer, 'fringe', primitive);\n break;\n case 'IT':\n this._writeAttributeString(writer, 'IT', primitive);\n break;\n case 'RT':\n this._writeAttributeString(writer, 'replyType', primitive, true);\n break;\n case 'LL':\n this._writeAttributeString(writer, 'leaderLength', primitive);\n break;\n case 'LLE':\n this._writeAttributeString(writer, 'leaderExtend', primitive);\n break;\n case 'Cap':\n this._writeAttributeString(writer, 'caption', primitive);\n break;\n case 'Q':\n this._writeAttributeString(writer, 'justification', primitive);\n break;\n case 'CP':\n this._writeAttributeString(writer, 'caption-style', primitive);\n break;\n case 'CL':\n this._writeAttributeString(writer, 'callout', primitive);\n break;\n case 'QuadPoints':\n this._writeAttributeString(writer, 'coords', primitive);\n break;\n case 'CA':\n this._writeAttributeString(writer, 'opacity', primitive);\n break;\n case 'F':\n if (typeof primitive === 'number' && this._annotationAttributes.indexOf('flags') === -1) {\n var flag = _annotationFlagsToString(primitive);\n writer._writeAttributeString('flags', flag);\n this._annotationAttributes.push('flags');\n }\n break;\n case 'InkList':\n case 'Type':\n case 'Subtype':\n case 'P':\n case 'Parent':\n case 'L':\n case 'Contents':\n case 'RC':\n case 'DA':\n case 'DS':\n case 'FS':\n case 'MeasurementTypes':\n case 'Vertices':\n case 'GroupNesting':\n case 'ITEx':\n case 'TextMarkupContent':\n break;\n default:\n this._writeAttributeString(writer, key.toLowerCase(), primitive);\n break;\n }\n }\n };\n _XfdfDocument.prototype._writeAttributeString = function (writer, attribute, primitive, isLowerCase) {\n if (isLowerCase === void 0) { isLowerCase = false; }\n if (this._annotationAttributes.indexOf(attribute) === -1) {\n var value = this._getValue(primitive);\n writer._writeAttributeString(attribute, isLowerCase ? value.toLowerCase() : value);\n this._annotationAttributes.push(attribute);\n }\n };\n _XfdfDocument.prototype._writeRawData = function (writer, name, value) {\n if (value && value !== '') {\n writer._writeStartElement(name);\n writer._writeRaw(value);\n writer._writeEndElement();\n }\n };\n _XfdfDocument.prototype._writeColor = function (writer, primitive, attribute, tag) {\n var color = this._getColor(primitive);\n if (typeof primitive === 'number' && tag) {\n var c = this._getValue(primitive);\n if (c && c !== '' && this._annotationAttributes.indexOf(tag) === -1) {\n writer._writeAttributeString(tag, c);\n this._annotationAttributes.push(tag);\n }\n }\n if (color && color !== '' && this._annotationAttributes.indexOf(attribute) === -1) {\n writer._writeAttributeString(attribute, color);\n this._annotationAttributes.push(attribute);\n }\n };\n _XfdfDocument.prototype._exportMeasureDictionary = function (dictionary, writer) {\n writer._writeStartElement('measure');\n if (dictionary) {\n if (dictionary.has('R')) {\n writer._writeAttributeString('rateValue', this._getValue(dictionary.get('R')));\n }\n if (dictionary.has('A')) {\n var array = dictionary.getArray('A');\n writer._writeStartElement('area');\n this._exportMeasureFormatDetails(array[0], writer);\n writer._writeEndElement();\n }\n if (dictionary.has('D')) {\n var array = dictionary.getArray('D');\n writer._writeStartElement('distance');\n this._exportMeasureFormatDetails(array[0], writer);\n writer._writeEndElement();\n }\n if (dictionary.has('X')) {\n var array = dictionary.getArray('X');\n writer._writeStartElement('xformat');\n this._exportMeasureFormatDetails(array[0], writer);\n writer._writeEndElement();\n }\n }\n writer._writeEndElement();\n };\n _XfdfDocument.prototype._exportMeasureFormatDetails = function (measurementDetails, writer) {\n if (measurementDetails.has('C')) {\n writer._writeAttributeString('c', this._getValue(measurementDetails.get('C')));\n }\n if (measurementDetails.has('F')) {\n writer._writeAttributeString('f', this._getValue(measurementDetails.get('F')));\n }\n if (measurementDetails.has('D')) {\n writer._writeAttributeString('d', this._getValue(measurementDetails.get('D')));\n }\n if (measurementDetails.has('RD')) {\n writer._writeAttributeString('rd', this._getValue(measurementDetails.get('RD')));\n }\n if (measurementDetails.has('U')) {\n writer._writeAttributeString('u', this._getValue(measurementDetails.get('U')));\n }\n if (measurementDetails.has('RT')) {\n writer._writeAttributeString('rt', this._getValue(measurementDetails.get('RT')));\n }\n if (measurementDetails.has('SS')) {\n writer._writeAttributeString('ss', this._getValue(measurementDetails.get('SS')));\n }\n if (measurementDetails.has('FD')) {\n writer._writeAttributeString('fd', this._getValue(measurementDetails.get('FD')));\n }\n };\n //#endregion Export Annotations\n //#region Import Annotations\n _XfdfDocument.prototype._importAnnotations = function (document, data) {\n this._document = document;\n this._crossReference = document._crossReference;\n this._isAnnotationExport = false;\n var xml = _bytesToString(data);\n this._xmlDocument = (new DOMParser()).parseFromString(xml, 'text/xml');\n this._isAnnotationImport = true;\n this._readXmlData(this._xmlDocument.documentElement);\n };\n _XfdfDocument.prototype._importFormData = function (document, data) {\n this._document = document;\n this._crossReference = document._crossReference;\n this._isAnnotationExport = false;\n this._xmlDocument = (new DOMParser()).parseFromString(_bytesToString(data), 'text/xml');\n this._readXmlData(this._xmlDocument.documentElement);\n };\n _XfdfDocument.prototype._readXmlData = function (root) {\n if (root && root.nodeType === 1) {\n this._checkXfdf(root);\n if (this._isAnnotationImport) {\n var xList = root.getElementsByTagName('annots');\n if (xList && xList.length > 0) {\n for (var i = 0; i < xList.length; i++) {\n var child = xList.item(i);\n if (child && child.localName === 'annots' && child.hasChildNodes()) {\n var childeNodes = child.childNodes;\n for (var j = 0; j < childeNodes.length; j++) {\n var childNode = childeNodes.item(j);\n if (childNode && childNode.nodeType === 1) {\n var element = childNode;\n if (element && element.nodeType === 1) {\n this._parseAnnotationData(element);\n }\n }\n }\n }\n }\n }\n if (this._groupHolders.length > 0) {\n for (var i = 0; i < this._groupHolders.length; i++) {\n var dictionary = this._groupHolders[Number.parseInt(i.toString(), 10)];\n var inReplyTo = dictionary.get('IRT');\n if (inReplyTo && inReplyTo !== '') {\n if (this._groupReferences.has(inReplyTo)) {\n dictionary.update('IRT', this._groupReferences.get(inReplyTo));\n }\n else {\n delete dictionary._map.IRT;\n }\n }\n }\n }\n this._groupHolders = [];\n this._groupReferences = new Map();\n }\n else {\n this._parseFormData(root);\n }\n }\n this._dispose();\n };\n _XfdfDocument.prototype._checkXfdf = function (element) {\n if (element.nodeName !== 'xfdf') {\n throw new Error('Invalid XFDF file.');\n }\n };\n _XfdfDocument.prototype._parseFormData = function (root) {\n var list = root.getElementsByTagName('f');\n if (list && list.length > 0) {\n var fileNameElement = list.item(0);\n if (fileNameElement && fileNameElement.localName === 'f' && fileNameElement.hasAttribute('href')) {\n var fileName = fileNameElement.getAttribute('href');\n if (fileName && fileName !== '') {\n this._fileName = fileName;\n }\n }\n }\n list = root.getElementsByTagName('ids');\n if (list && list.length > 0) {\n this._asPerSpecification = true;\n }\n var child = root.childNodes;\n if (child && child.length > 0) {\n for (var i = 0; i < child.length; i++) {\n var childNode = child.item(i);\n if (childNode && childNode.nodeType === 1) {\n var element = childNode;\n if (element && element.localName === 'fields' && element.hasChildNodes()) {\n var fieldList = element.childNodes;\n var elements = [];\n for (var j = 0; j < fieldList.length; j++) {\n var field = fieldList.item(j);\n if (field && field.nodeType === 1) {\n var filedElement = field;\n if (filedElement && filedElement.localName === 'field') {\n elements.push(filedElement);\n }\n }\n }\n this._importFormNodes(elements);\n }\n }\n }\n }\n this._importField();\n };\n _XfdfDocument.prototype._importFormNodes = function (list) {\n for (var i = 0; i < list.length; i++) {\n var child = list[Number.parseInt(i.toString(), 10)];\n var fieldName = '';\n if (child) {\n if (child.hasAttribute('name')) {\n fieldName = child.getAttribute('name');\n }\n if (fieldName && fieldName !== '') {\n var values = child.getElementsByTagName('value');\n if (values && values.length > 0) {\n var node = child;\n var textName = '';\n while (node.localName !== 'fields') {\n if (textName.length > 0) {\n textName = '.' + textName;\n }\n var skip = false;\n if (node.hasAttribute('name')) {\n var name_1 = node.getAttribute('name');\n if (name_1 && name_1 !== '') {\n textName = name_1 + textName;\n skip = true;\n }\n }\n if (!skip) {\n textName += node.localName;\n }\n node = node.parentElement;\n }\n fieldName = textName;\n var dataValues = void 0;\n if (this._fields.has(fieldName)) {\n dataValues = this._fields.get(fieldName);\n }\n else {\n dataValues = [];\n }\n for (var j = 0; j < values.length; j++) {\n dataValues.push(values.item(j).textContent);\n }\n this._fields.set(fieldName, dataValues);\n }\n else {\n values = child.getElementsByTagName('value-richtext');\n if (values && values.length > 0) {\n var element = values.item(0);\n if (element) {\n var node = child;\n var textName = '';\n while (node.localName !== 'fields') {\n if (textName.length > 0) {\n textName = '.' + textName;\n }\n var skip = false;\n if (node.hasAttribute('name')) {\n var name_2 = node.getAttribute('name');\n if (name_2 && name_2 !== '') {\n textName = name_2 + textName;\n skip = true;\n }\n }\n if (!skip) {\n textName += node.localName;\n }\n node = node.parentElement;\n }\n fieldName = textName;\n var richText = element.textContent;\n if (element.childNodes && element.childNodes.length > 0) {\n var childNode = element.childNodes[0];\n if (childNode && childNode.hasChildNodes()) {\n richText = '';\n var childNodes = childNode.childNodes;\n for (var j = void 0; j < childNodes.length; j++) {\n richText += childNodes.item(j).textContent + '\\r';\n }\n if (richText.length > 0) {\n richText = richText.substring(0, richText.length - 1);\n }\n else {\n richText = element.textContent;\n }\n }\n }\n var dataValues = void 0;\n if (this._fields.has(fieldName)) {\n dataValues = this._fields.get(fieldName);\n }\n else {\n dataValues = [];\n }\n for (var j = 0; j < values.length; j++) {\n dataValues.push(richText);\n }\n this._fields.set(fieldName, dataValues);\n if (!this._richTextValues.has(fieldName)) {\n this._richTextValues.set(fieldName, element.innerHTML);\n }\n }\n }\n }\n }\n }\n }\n };\n _XfdfDocument.prototype._parseAnnotationData = function (element) {\n if (element) {\n var pageIndex = -1;\n if (element.hasAttributes && element.hasAttribute('page')) {\n pageIndex = Number.parseInt(element.getAttribute('page'), 10);\n if (pageIndex >= 0 && pageIndex < this._document.pageCount) {\n var page = this._document.getPage(pageIndex);\n var annotationDictionary = this._getAnnotationDictionary(page, element);\n if (annotationDictionary && annotationDictionary.size > 0) {\n var pageDictionary = page._pageDictionary;\n if (pageDictionary) {\n var annotations = page.annotations;\n var annotation = annotations._parseAnnotation(annotationDictionary);\n if (annotation) {\n annotation._isImported = true;\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, annotationDictionary);\n if (annotationDictionary.has('NM') || annotationDictionary.has('IRT')) {\n this._addReferenceToGroup(reference, annotationDictionary);\n }\n annotation._ref = reference;\n var index = annotations._annotations.length;\n annotations._annotations.push(reference);\n pageDictionary.set('Annots', annotations._annotations);\n pageDictionary._updated = true;\n annotations._parsedAnnotations.set(index, annotation);\n this._handlePopup(annotations, reference, annotationDictionary, pageDictionary);\n }\n }\n }\n }\n }\n }\n };\n _XfdfDocument.prototype._getAnnotationDictionary = function (page, element) {\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary.update('Type', _PdfName.get('Annot'));\n var isValidType = true;\n switch (element.localName.toLowerCase()) {\n case 'line':\n dictionary.update('Subtype', _PdfName.get('Line'));\n if (element.hasAttribute('start') && element.hasAttribute('end')) {\n var points_1 = [];\n element.getAttribute('start').split(',').forEach(function (value) {\n points_1.push(Number.parseFloat(value));\n });\n element.getAttribute('end').split(',').forEach(function (value) {\n points_1.push(Number.parseFloat(value));\n });\n if (points_1.length === 4) {\n dictionary.update('L', points_1);\n }\n }\n this._addLineEndStyle(dictionary, element);\n break;\n case 'circle':\n dictionary.update('Subtype', _PdfName.get('Circle'));\n break;\n case 'square':\n dictionary.update('Subtype', _PdfName.get('Square'));\n break;\n case 'polyline':\n dictionary.update('Subtype', _PdfName.get('PolyLine'));\n this._addLineEndStyle(dictionary, element);\n break;\n case 'polygon':\n dictionary.update('Subtype', _PdfName.get('Polygon'));\n this._addLineEndStyle(dictionary, element);\n break;\n case 'ink':\n dictionary.update('Subtype', _PdfName.get('Ink'));\n break;\n case 'popup':\n dictionary.update('Subtype', _PdfName.get('Popup'));\n break;\n case 'text':\n dictionary.update('Subtype', _PdfName.get('Text'));\n break;\n case 'freetext':\n dictionary.update('Subtype', _PdfName.get('FreeText'));\n this._addLineEndStyle(dictionary, element);\n break;\n case 'stamp':\n dictionary.update('Subtype', _PdfName.get('Stamp'));\n break;\n case 'highlight':\n dictionary.update('Subtype', _PdfName.get('Highlight'));\n break;\n case 'squiggly':\n dictionary.update('Subtype', _PdfName.get('Squiggly'));\n break;\n case 'underline':\n dictionary.update('Subtype', _PdfName.get('Underline'));\n break;\n case 'strikeout':\n dictionary.update('Subtype', _PdfName.get('StrikeOut'));\n break;\n case 'fileattachment':\n dictionary.update('Subtype', _PdfName.get('FileAttachment'));\n break;\n case 'sound':\n dictionary.update('Subtype', _PdfName.get('Sound'));\n break;\n case 'caret':\n dictionary.update('Subtype', _PdfName.get('Caret'));\n break;\n case 'redact':\n dictionary.update('Subtype', _PdfName.get('Redact'));\n break;\n default:\n isValidType = false;\n break;\n }\n if (isValidType) {\n this._addAnnotationData(dictionary, element, page);\n }\n return dictionary;\n };\n _XfdfDocument.prototype._addAnnotationData = function (dictionary, element, page) {\n this._addBorderStyle(dictionary, element);\n this._applyAttributeValues(dictionary, element.attributes);\n this._parseInnerElements(dictionary, element, page);\n this._addMeasureDictionary(dictionary, element);\n };\n _XfdfDocument.prototype._addBorderStyle = function (dictionary, element) {\n var borderEffectDictionary = new _PdfDictionary(this._crossReference);\n var borderStyleDictionary = new _PdfDictionary(this._crossReference);\n if (element.hasAttribute('width')) {\n borderStyleDictionary.update('W', Number.parseFloat(element.getAttribute('width')));\n }\n var isBasicStyle = true;\n if (element.hasAttribute('style')) {\n var style = '';\n switch (element.getAttribute('style')) {\n case 'dash':\n style = 'D';\n break;\n case 'solid':\n style = 'S';\n break;\n case 'bevelled':\n style = 'B';\n break;\n case 'inset':\n style = 'I';\n break;\n case 'underline':\n style = 'U';\n break;\n case 'cloudy':\n style = 'C';\n isBasicStyle = false;\n break;\n }\n if (style !== '') {\n (isBasicStyle ? borderStyleDictionary : borderEffectDictionary).update('S', _PdfName.get(style));\n if (!isBasicStyle && element.hasAttribute('intensity')) {\n borderEffectDictionary.update('I', Number.parseFloat(element.getAttribute('intensity')));\n }\n else if (element.hasAttribute('dashes')) {\n var dashes_1 = [];\n element.getAttribute('dashes').split(',').forEach(function (value) {\n dashes_1.push(Number.parseFloat(value));\n });\n borderStyleDictionary.update('D', dashes_1);\n }\n }\n }\n if (borderEffectDictionary.size > 0) {\n dictionary.update('BE', borderEffectDictionary);\n }\n if (borderStyleDictionary.size > 0) {\n borderStyleDictionary.update('Type', 'Border');\n dictionary.update('BS', borderStyleDictionary);\n }\n };\n _XfdfDocument.prototype._applyAttributeValues = function (dictionary, attributes) {\n for (var i = 0; i < attributes.length; i++) {\n var attribute = attributes[Number.parseInt(i.toString(), 10)];\n var value = attribute.value;\n var values = void 0;\n var leaderExtend = void 0;\n switch (attribute.name.toLowerCase()) {\n case 'page':\n case 'start':\n case 'end':\n case 'width':\n case 'head':\n case 'tail':\n case 'style':\n case 'intensity':\n case 'itex':\n break;\n case 'state':\n this._addString(dictionary, 'State', value);\n break;\n case 'statemodel':\n this._addString(dictionary, 'StateModel', value);\n break;\n case 'replytype':\n if (value === 'group') {\n dictionary.update('RT', _PdfName.get('Group'));\n }\n break;\n case 'inreplyto':\n this._addString(dictionary, 'IRT', value);\n break;\n case 'rect':\n values = this._obtainPoints(value);\n if (values && values.length === 4) {\n dictionary.update('Rect', values);\n }\n break;\n case 'color':\n values = _convertToColor(value);\n if (values && values.length === 3) {\n dictionary.update('C', [values[0] / 255, values[1] / 255, values[2] / 255]);\n }\n break;\n case 'interior-color':\n values = _convertToColor(value);\n if (values && values.length === 3) {\n dictionary.update('IC', [values[0] / 255, values[1] / 255, values[2] / 255]);\n }\n break;\n case 'date':\n this._addString(dictionary, 'M', value);\n break;\n case 'creationdate':\n this._addString(dictionary, 'CreationDate', value);\n break;\n case 'name':\n this._addString(dictionary, 'NM', value);\n break;\n case 'icon':\n if (value && value !== '') {\n dictionary.update('Name', _PdfName.get(value));\n }\n break;\n case 'subject':\n this._addString(dictionary, 'Subj', this._getFormatedString(value, true));\n break;\n case 'title':\n this._addString(dictionary, 'T', this._getFormatedString(value, true));\n break;\n case 'rotation':\n this._addInt(dictionary, 'Rotate', value);\n break;\n case 'justification':\n this._addInt(dictionary, 'Q', value);\n break;\n case 'fringe':\n this._addFloatPoints(dictionary, this._obtainPoints(value), 'RD');\n break;\n case 'it':\n if (value && value !== '') {\n dictionary.update('IT', _PdfName.get(value));\n }\n break;\n case 'leaderlength':\n this._addFloat(dictionary, 'LL', value);\n break;\n case 'leaderextend':\n leaderExtend = Number.parseFloat(value);\n if (typeof leaderExtend !== 'undefined') {\n dictionary.update('LLE', leaderExtend);\n }\n break;\n case 'caption':\n if (value && value !== '') {\n dictionary.update('Cap', value.toLowerCase() === 'yes' ? true : false);\n }\n break;\n case 'caption-style':\n if (value && value !== '') {\n dictionary.update('CP', _PdfName.get(value));\n }\n break;\n case 'callout':\n this._addFloatPoints(dictionary, this._obtainPoints(value), 'CL');\n break;\n case 'coords':\n this._addFloatPoints(dictionary, this._obtainPoints(value), 'QuadPoints');\n break;\n case 'border':\n this._addFloatPoints(dictionary, this._obtainPoints(value), 'Border');\n break;\n case 'opacity':\n this._addFloat(dictionary, 'CA', value);\n break;\n case 'flags':\n if (value && value !== '') {\n var annotFlag = PdfAnnotationFlag.default;\n var flags = value.split(',');\n for (var i_1 = 0; i_1 < flags.length; i_1++) {\n var flagType = _stringToAnnotationFlags(flags[Number.parseInt(i_1.toString(), 10)]);\n if (i_1 === 0) {\n annotFlag = flagType;\n }\n else {\n annotFlag |= flagType;\n }\n }\n dictionary.update('F', annotFlag);\n }\n break;\n case 'open':\n if (value && value !== '') {\n dictionary.update('Open', (value === 'true' || value === 'yes') ? true : false);\n }\n break;\n case 'calibrate':\n this._addString(dictionary, 'Calibrate', value);\n break;\n case 'customdata':\n this._addString(dictionary, 'CustomData', value);\n break;\n case 'overlaytext':\n dictionary.update('OverlayText', value);\n break;\n case 'repeat':\n dictionary.update('Repeat', (value === 'true' || value === 'yes') ? true : false);\n break;\n default:\n if (this._document._allowImportCustomData) {\n this._addString(dictionary, attribute.name, value);\n }\n break;\n }\n }\n };\n _XfdfDocument.prototype._obtainPoints = function (value) {\n var points = [];\n value.split(',').forEach(function (value) {\n points.push(Number.parseFloat(value));\n });\n return points;\n };\n _XfdfDocument.prototype._parseInnerElements = function (dictionary, element, page) {\n if (element.hasChildNodes) {\n var children = element.childNodes;\n var _loop_1 = function (index) {\n var child = children[Number.parseInt(index.toString(), 10)];\n if (child.nodeType === 1) {\n var childElement = child;\n var textContent = child.textContent;\n var innerHTML = childElement.innerHTML;\n switch (child.nodeName.toLowerCase()) {\n case 'popup':\n if (childElement && childElement.hasAttributes) {\n var popupDictionary = this_1._getAnnotationDictionary(page, childElement);\n if (popupDictionary.size > 0) {\n var reference = this_1._crossReference._getNextReference();\n this_1._crossReference._cacheMap.set(reference, popupDictionary);\n dictionary.update('Popup', reference);\n if (popupDictionary.has('NM')) {\n this_1._addReferenceToGroup(reference, popupDictionary);\n }\n }\n }\n break;\n case 'contents':\n if (textContent && textContent !== '') {\n dictionary.update('Contents', this_1._getFormatedString(textContent, true));\n }\n break;\n case 'contents-richtext':\n if (innerHTML && innerHTML !== '') {\n dictionary.update('RC', this_1._richTextPrefix + innerHTML);\n }\n break;\n case 'defaultstyle':\n this_1._addString(dictionary, 'DS', textContent);\n break;\n case 'defaultappearance':\n this_1._addString(dictionary, 'DA', textContent);\n break;\n case 'vertices':\n if (textContent && textContent !== '') {\n var vertices_1 = [];\n textContent.split(',').forEach(function (value) {\n if (value.indexOf(';') !== -1) {\n value.split(';').forEach(function (innerValue) {\n vertices_1.push(innerValue);\n });\n }\n else {\n vertices_1.push(value);\n }\n });\n if (vertices_1.length > 0) {\n var verticesArray_1 = [];\n vertices_1.forEach(function (value) {\n verticesArray_1.push(Number.parseFloat(value));\n });\n dictionary.update('Vertices', verticesArray_1);\n }\n }\n break;\n case 'appearance':\n this_1._addAppearanceData(child, dictionary);\n break;\n case 'inklist':\n if (child.hasChildNodes) {\n var inkListCollection = [];\n var childNodes = child.childNodes;\n var _loop_2 = function (i) {\n var inkChild = childNodes[Number.parseInt(i.toString(), 10)];\n if (inkChild && inkChild.nodeType === 1) {\n var inkChildElement = inkChild;\n if (inkChildElement.nodeName.toLowerCase() === 'gesture') {\n if (inkChildElement.textContent && inkChildElement.textContent !== '') {\n var points_2 = [];\n inkChildElement.textContent.split(',').forEach(function (value) {\n if (value.indexOf(';') !== -1) {\n value.split(';').forEach(function (innerValue) {\n points_2.push(innerValue);\n });\n }\n else {\n points_2.push(value);\n }\n });\n if (points_2.length > 0) {\n var pointsArray_1 = [];\n points_2.forEach(function (value) {\n pointsArray_1.push(Number.parseFloat(value));\n });\n inkListCollection.push(pointsArray_1);\n }\n }\n }\n }\n };\n for (var i = 0; i < childNodes.length; i++) {\n _loop_2(i);\n }\n dictionary.update('InkList', inkListCollection);\n }\n break;\n case 'data':\n this_1._addStreamData(child, dictionary, element);\n break;\n }\n }\n };\n var this_1 = this;\n for (var index = 0; index < children.length; index++) {\n _loop_1(index);\n }\n }\n };\n _XfdfDocument.prototype._addStreamData = function (child, dictionary, parent) {\n if (child && child.textContent && child.textContent !== '') {\n var raw = _hexStringToByteArray(child.textContent, true);\n if (raw && raw.length > 0) {\n if (dictionary.has('Subtype')) {\n var subtype = dictionary.get('Subtype');\n if (subtype && subtype.name === 'FileAttachment') {\n this._addFileAttachment(dictionary, parent, raw);\n }\n else if (subtype && subtype.name === 'Sound') {\n this._addSound(dictionary, parent, raw);\n }\n }\n }\n }\n };\n _XfdfDocument.prototype._addSound = function (dictionary, element, raw) {\n var soundStream = new _PdfContentStream(raw);\n soundStream.dictionary._crossReference = this._crossReference;\n soundStream.dictionary.update('Type', _PdfName.get('Sound'));\n if (element.hasAttribute('bits')) {\n this._addInt(soundStream.dictionary, 'B', element.getAttribute('bits'));\n }\n if (element.hasAttribute('rate')) {\n this._addInt(soundStream.dictionary, 'R', element.getAttribute('rate'));\n }\n if (element.hasAttribute('channels')) {\n this._addInt(soundStream.dictionary, 'C', element.getAttribute('channels'));\n }\n if (element.hasAttribute('encoding')) {\n var value = element.getAttribute('encoding');\n if (value && value !== '') {\n soundStream.dictionary.update('E', _PdfName.get(value));\n }\n }\n if (element.hasAttribute('filter')) {\n soundStream.dictionary.update('Filter', _PdfName.get('FlateDecode'));\n }\n var soundReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(soundReference, soundStream);\n dictionary.update('Sound', soundReference);\n };\n _XfdfDocument.prototype._addFileAttachment = function (dictionary, element, raw) {\n var fileDictionary = new _PdfDictionary(this._crossReference);\n fileDictionary.update('Type', _PdfName.get('Filespec'));\n if (element.hasAttribute('file')) {\n var value = element.getAttribute('file');\n this._addString(fileDictionary, 'F', value);\n this._addString(fileDictionary, 'UF', value);\n }\n var fileStream = new _PdfContentStream(raw);\n fileStream.dictionary._crossReference = this._crossReference;\n var param = new _PdfDictionary(this._crossReference);\n if (element.hasAttribute('size')) {\n var size = Number.parseInt(element.getAttribute('size'), 10);\n if (typeof size !== 'undefined') {\n param.update('Size', size);\n fileStream.dictionary.update('DL', size);\n }\n }\n if (element.hasAttribute('modification')) {\n this._addString(param, 'ModDate', element.getAttribute('modification'));\n }\n if (element.hasAttribute('creation')) {\n this._addString(param, 'CreationDate', element.getAttribute('creation'));\n }\n fileStream.dictionary.update('Params', param);\n if (element.hasAttribute('mimetype')) {\n this._addString(fileStream.dictionary, 'Subtype', element.getAttribute('mimetype'));\n }\n fileStream.dictionary.update('Filter', _PdfName.get('FlateDecode'));\n var embeddedFile = new _PdfDictionary(this._crossReference);\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, fileStream);\n embeddedFile.update('F', reference);\n fileDictionary.update('EF', embeddedFile);\n var fileReference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(fileReference, fileDictionary);\n dictionary.update('FS', fileReference);\n };\n _XfdfDocument.prototype._addAppearanceData = function (element, dictionary) {\n var innerText = element.textContent;\n if (innerText && innerText !== '') {\n var document_1 = (new DOMParser()).parseFromString(atob(innerText), 'text/xml');\n if (document_1 && document_1.hasChildNodes) {\n var childNodes = document_1.childNodes;\n if (childNodes && childNodes.length === 1) {\n var rootNode = childNodes[0];\n if (rootNode && rootNode.nodeType === 1) {\n var rootElement = rootNode;\n if (rootElement.nodeName.toUpperCase() === 'DICT' && rootElement.hasAttribute('KEY')) {\n var key = rootElement.getAttribute('KEY');\n if (key && key === 'AP' && rootElement.hasChildNodes) {\n var appearance = new _PdfDictionary(this._crossReference);\n childNodes = rootElement.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n this._getAppearance(appearance, childNodes[Number.parseInt(i.toString(), 10)]);\n }\n if (appearance.size > 0) {\n dictionary.update('AP', appearance);\n }\n }\n }\n }\n }\n }\n }\n };\n _XfdfDocument.prototype._getAppearance = function (source, child) {\n var appearance = source instanceof _PdfDictionary ? source : source.dictionary;\n if (child && child.nodeType === 1) {\n var element = child;\n if (element && element.localName) {\n var stream = void 0;\n var dictionary = void 0;\n var data = void 0;\n switch (element.localName) {\n case 'STREAM':\n stream = this._getStream(element);\n if (stream) {\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, stream);\n this._addKey(reference, appearance, element);\n }\n break;\n case 'DICT':\n dictionary = this._getDictionary(element);\n if (dictionary) {\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, dictionary);\n this._addKey(reference, appearance, element);\n }\n break;\n case 'ARRAY':\n this._addKey(this._getArray(element), appearance, element);\n break;\n case 'FIXED':\n this._addKey(this._getFixed(element), appearance, element);\n break;\n case 'INT':\n this._addKey(this._getInt(element), appearance, element);\n break;\n case 'STRING':\n this._addKey(this._getString(element), appearance, element);\n break;\n case 'NAME':\n this._addKey(this._getName(element), appearance, element);\n break;\n case 'BOOL':\n this._addKey(this._getBoolean(element), appearance, element);\n break;\n case 'DATA':\n data = this._getData(element);\n if (data && data.length > 0 && source instanceof _PdfContentStream) {\n source._bytes = data;\n var isImage = false;\n if (appearance && appearance.has('Subtype')) {\n var type = appearance.get('Subtype');\n isImage = type && type.name === 'Image';\n }\n if (isImage) {\n source._isCompress = false;\n }\n else {\n if (source.dictionary.has('Length')) {\n delete source.dictionary._map.Length;\n }\n if (source.dictionary.has('Filter')) {\n delete source.dictionary._map.Filter;\n }\n }\n }\n break;\n }\n }\n }\n };\n _XfdfDocument.prototype._getStream = function (element) {\n var stream = new _PdfContentStream([]);\n stream.dictionary._crossReference = this._crossReference;\n if (element.hasChildNodes) {\n var childNodes = element.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[Number.parseInt(i.toString(), 10)];\n if (child && child.nodeType === 1) {\n this._getAppearance(stream, child);\n }\n }\n }\n return stream;\n };\n _XfdfDocument.prototype._getDictionary = function (element) {\n var dictionary = new _PdfDictionary(this._crossReference);\n if (element.hasChildNodes) {\n var childNodes = element.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[Number.parseInt(i.toString(), 10)];\n if (child && child.nodeType === 1) {\n this._getAppearance(dictionary, child);\n }\n }\n }\n return dictionary;\n };\n _XfdfDocument.prototype._getArray = function (element) {\n var array = []; // eslint-disable-line\n if (element.hasChildNodes) {\n var childNodes = element.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[Number.parseInt(i.toString(), 10)];\n if (child && child.nodeType === 1) {\n this._addArrayElements(array, child);\n }\n }\n }\n return array;\n };\n _XfdfDocument.prototype._getData = function (element) {\n var data = [];\n if (element && element.textContent &&\n element.textContent !== '' &&\n element.hasAttribute('MODE') && element.hasAttribute('ENCODING')) {\n var mode = element.getAttribute('MODE');\n var encoding = element.getAttribute('ENCODING');\n if (mode && encoding) {\n var innerText = this._getFormatedString(element.textContent, true);\n if (mode === 'FILTERED' && encoding === 'ASCII') {\n data = _stringToBytes(innerText, true);\n }\n else if (mode === 'RAW' && encoding === 'HEX') {\n data = _hexStringToByteArray(innerText, true);\n }\n }\n }\n return data;\n };\n _XfdfDocument.prototype._addArrayElements = function (array, child) {\n if (child && child.nodeType === 1) {\n var element = child;\n var stream = void 0;\n var dictionary = void 0;\n var value = void 0; // eslint-disable-line\n var floatValue = void 0;\n var intValue = void 0;\n var name_3;\n var bool = void 0;\n switch (element.localName) {\n case 'STREAM':\n stream = this._getStream(element);\n if (stream) {\n var reference = this._crossReference._getNextReference();\n stream.reference = reference;\n this._crossReference._cacheMap.set(reference, stream);\n array.push(reference);\n }\n break;\n case 'DICT':\n dictionary = this._getDictionary(element);\n if (dictionary) {\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, dictionary);\n array.push(reference);\n }\n break;\n case 'ARRAY':\n value = this._getArray(element);\n if (value) {\n array.push(value);\n }\n break;\n case 'FIXED':\n floatValue = this._getFixed(element);\n if (typeof floatValue !== 'undefined' && !isNaN(floatValue)) {\n array.push(floatValue);\n }\n break;\n case 'INT':\n intValue = this._getInt(element);\n if (typeof intValue !== 'undefined' && !isNaN(intValue)) {\n array.push(intValue);\n }\n break;\n case 'NAME':\n name_3 = this._getName(element);\n if (name_3) {\n array.push(name_3);\n }\n break;\n case 'BOOL':\n bool = this._getBoolean(element);\n if (typeof bool !== 'undefined' && bool !== null) {\n array.push(bool);\n }\n break;\n }\n }\n };\n _XfdfDocument.prototype._getFixed = function (element) {\n var value;\n if (element && element.hasAttribute('VAL')) {\n value = Number.parseFloat(element.getAttribute('VAL'));\n }\n return value;\n };\n _XfdfDocument.prototype._getInt = function (element) {\n var value;\n if (element && element.hasAttribute('VAL')) {\n value = Number.parseInt(element.getAttribute('VAL'), 10);\n }\n return value;\n };\n _XfdfDocument.prototype._getString = function (element) {\n var value;\n if (element && element.hasAttribute('VAL')) {\n value = element.getAttribute('VAL');\n }\n return value;\n };\n _XfdfDocument.prototype._getName = function (element) {\n var value;\n if (element && element.hasAttribute('VAL')) {\n value = _PdfName.get(element.getAttribute('VAL'));\n }\n return value;\n };\n _XfdfDocument.prototype._getBoolean = function (element) {\n var value;\n if (element && element.hasAttribute('VAL')) {\n value = element.getAttribute('VAL') === 'true' ? true : false;\n }\n return value;\n };\n _XfdfDocument.prototype._addMeasureDictionary = function (dictionary, element) {\n var measurement;\n var area;\n var distance;\n var xformat;\n if (element.hasChildNodes) {\n var childNodes = element.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var childElement = childNodes[Number.parseInt(i.toString(), 10)];\n if (childElement && childElement.localName === 'measure') {\n measurement = childElement;\n break;\n }\n }\n }\n var measureDictionary = new _PdfDictionary(this._crossReference);\n var dDict = new _PdfDictionary(this._crossReference);\n var aDict = new _PdfDictionary(this._crossReference);\n var xDict = new _PdfDictionary(this._crossReference);\n var dArray = [];\n var aArray = [];\n var xArray = [];\n if (measurement) {\n measureDictionary.update('Type', _PdfName.get('Measure'));\n if (measurement.hasAttribute('rateValue')) {\n var attribute = measurement.getAttribute('rateValue');\n if (attribute && attribute !== '') {\n measureDictionary.update('R', attribute);\n }\n }\n if (measurement.hasChildNodes) {\n var childNodes = measurement.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[Number.parseInt(i.toString(), 10)];\n if (child && child.nodeType === 1) {\n var childElement = child;\n switch (childElement.nodeName.toLowerCase()) {\n case 'distance':\n distance = childElement;\n break;\n case 'area':\n area = childElement;\n break;\n case 'xformat':\n xformat = childElement;\n break;\n }\n }\n }\n }\n }\n if (xformat) {\n this._addElements(xformat, xDict);\n xArray.push(xDict);\n }\n if (distance) {\n this._addElements(distance, dDict);\n dArray.push(dDict);\n }\n if (area) {\n this._addElements(area, aDict);\n aArray.push(aDict);\n }\n measureDictionary.set('A', aArray);\n measureDictionary.set('D', dArray);\n measureDictionary.set('X', xArray);\n if (measureDictionary.size > 0 && measureDictionary.has('Type')) {\n var reference = this._crossReference._getNextReference();\n this._crossReference._cacheMap.set(reference, measureDictionary);\n dictionary.update('Measure', reference);\n }\n };\n _XfdfDocument.prototype._addElements = function (element, dictionary) {\n if (element.hasAttribute('d')) {\n this._addFloat(dictionary, 'D', element.getAttribute('d'));\n }\n if (element.hasAttribute('c')) {\n this._addFloat(dictionary, 'C', element.getAttribute('c'));\n }\n if (element.hasAttribute('rt')) {\n dictionary.update('RT', element.getAttribute('rt'));\n }\n if (element.hasAttribute('rd')) {\n dictionary.update('RD', element.getAttribute('rt'));\n }\n if (element.hasAttribute('ss')) {\n dictionary.update('SS', element.getAttribute('ss'));\n }\n if (element.hasAttribute('u')) {\n dictionary.update('U', element.getAttribute('u'));\n }\n if (element.hasAttribute('f')) {\n dictionary.update('F', _PdfName.get(element.getAttribute('f')));\n }\n if (element.hasAttribute('fd')) {\n dictionary.update('FD', element.getAttribute('fd') === 'yes' ? true : false);\n }\n };\n _XfdfDocument.prototype._addString = function (dictionary, key, value) {\n if (value && value !== '') {\n dictionary.update(key, value);\n }\n };\n _XfdfDocument.prototype._addInt = function (dictionary, key, value) {\n var intValue = Number.parseInt(value, 10);\n if (typeof intValue !== 'undefined') {\n dictionary.update(key, intValue);\n }\n };\n _XfdfDocument.prototype._addFloat = function (dictionary, key, value) {\n var floatValue = Number.parseFloat(value);\n if (typeof floatValue !== 'undefined') {\n dictionary.update(key, floatValue);\n }\n };\n _XfdfDocument.prototype._addFloatPoints = function (dictionary, points, key) {\n if (points && points.length > 0) {\n dictionary.update(key, points);\n }\n };\n _XfdfDocument.prototype._addKey = function (primitive, dictionary, element) {\n if (typeof primitive !== 'undefined' && primitive !== null && element.hasAttribute('KEY')) {\n dictionary.update(element.getAttribute('KEY'), primitive);\n }\n };\n _XfdfDocument.prototype._addLineEndStyle = function (dictionary, element) {\n var beginLineStyle = '';\n if (element.hasAttribute('head')) {\n beginLineStyle = element.getAttribute('head');\n }\n var endLineStyle = '';\n if (element.hasAttribute('tail')) {\n endLineStyle = element.getAttribute('tail');\n }\n if (beginLineStyle && beginLineStyle !== '') {\n if (endLineStyle && endLineStyle !== '') {\n var lineEndingStyles = [];\n lineEndingStyles.push(_PdfName.get(beginLineStyle));\n lineEndingStyles.push(_PdfName.get(endLineStyle));\n dictionary.update('LE', lineEndingStyles);\n }\n else {\n dictionary.update('LE', _PdfName.get(beginLineStyle));\n }\n }\n else if (endLineStyle && endLineStyle !== '') {\n dictionary.update('LE', _PdfName.get(endLineStyle));\n }\n };\n return _XfdfDocument;\n}(_ExportHelper));\nexport { _XfdfDocument };\nvar _FontStructure = /** @class */ (function () {\n function _FontStructure(dictionary) {\n this._baseFontEncoding = '';\n this._dictionary = dictionary;\n this._fontType = this._dictionary.get('Subtype').name;\n }\n Object.defineProperty(_FontStructure.prototype, \"differencesDictionary\", {\n get: function () {\n if (!this._differencesDictionary) {\n this._differencesDictionary = this._getDifferencesDictionary();\n }\n return this._differencesDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_FontStructure.prototype, \"baseFontEncoding\", {\n get: function () {\n return this._baseFontEncoding;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_FontStructure.prototype, \"fontEncoding\", {\n get: function () {\n if (!this._fontEncoding) {\n this._fontEncoding = this._getFontEncoding();\n }\n return this._fontEncoding;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_FontStructure.prototype, \"fontName\", {\n get: function () {\n if (!this._fontName) {\n this._fontName = this._getFontName();\n }\n return this._fontName;\n },\n enumerable: true,\n configurable: true\n });\n _FontStructure.prototype._getFontEncoding = function () {\n var encoding = '';\n if (this._dictionary !== null && typeof this._dictionary !== 'undefined' && this._dictionary.has('Encoding')) {\n var baseFont = this._dictionary.get('Encoding'); // eslint-disable-line\n if (baseFont instanceof _PdfName) {\n encoding = baseFont.name;\n }\n else if (baseFont instanceof _PdfDictionary) {\n if (baseFont.has('BaseEncoding')) {\n var baseFontEncoding = baseFont.get('BaseEncoding');\n if (baseFontEncoding && baseFontEncoding instanceof _PdfName) {\n this._baseFontEncoding = baseFontEncoding.name;\n }\n }\n if (baseFont.has('Type')) {\n var fontEncoding = baseFont.get('Type');\n if (fontEncoding !== null && typeof fontEncoding !== 'undefined') {\n encoding = fontEncoding.name;\n }\n }\n }\n }\n if (encoding.toString() === 'identity#2dh' || encoding === 'CMap') {\n encoding = 'Identity-H';\n }\n return encoding;\n };\n _FontStructure.prototype._getDifferencesDictionary = function () {\n var result = new Map();\n if (this._dictionary !== null && typeof this._dictionary !== 'undefined' && this._dictionary.has('Encoding')) {\n var encoding = this._dictionary.get('Encoding');\n if (encoding !== null &&\n typeof encoding !== 'undefined' &&\n encoding instanceof _PdfDictionary &&\n encoding.has('Differences')) {\n var differences = encoding.getArray('Differences'); // eslint-disable-line\n var count = 0;\n if (differences !== null && typeof differences !== 'undefined') {\n for (var i = 0; i < differences.length; i++) {\n var text = '';\n var item = differences[Number.parseInt(i.toString(), 10)]; // eslint-disable-line\n if (typeof item === 'number') {\n text = item.toString();\n count = Number.parseInt(text, 10);\n }\n else if (item instanceof _PdfName) {\n text = item.name;\n if (this._fontType === 'Type1' && text === '.notdef') {\n text = ' ';\n result.set(count.toString(), _getLatinCharacter(text));\n }\n else {\n text = _getLatinCharacter(text);\n text = _getSpecialCharacter(text);\n if (!result.has(count.toString())) {\n result.set(count.toString(), _getLatinCharacter(text));\n }\n count++;\n }\n }\n }\n }\n }\n }\n return result;\n };\n _FontStructure.prototype._getFontName = function () {\n var fontName = '';\n if (this._dictionary !== null && typeof this._dictionary !== 'undefined' && this._dictionary.has('BaseFont')) {\n var baseFont = this._dictionary.get('BaseFont');\n var font = baseFont.name;\n if (font.indexOf('#20') !== -1 && font.indexOf('+') === -1) {\n var index = font.lastIndexOf('#20');\n font = font.substring(0, index);\n font += '+';\n }\n if (baseFont.name.indexOf('+') !== -1) {\n fontName = baseFont.name.split('+')[1];\n }\n else {\n fontName = baseFont.name;\n }\n if (fontName.indexOf('-') !== -1) {\n fontName = fontName.split('-')[0];\n }\n else if (fontName.indexOf(',') !== -1) {\n fontName = fontName.split(',')[0];\n }\n if (fontName.indexOf('MT') !== -1) {\n fontName = fontName.replace('MT', '');\n }\n if (fontName.indexOf('#20') !== -1) {\n fontName = fontName.replace('#20', ' ');\n }\n if (fontName.indexOf('#') !== -1) {\n fontName = this._decodeHexFontName(fontName);\n }\n }\n return fontName;\n };\n _FontStructure.prototype._decodeHexFontName = function (fontName) {\n var result = fontName;\n for (var i = 0; i < fontName.length; i++) {\n if (fontName[Number.parseInt(i.toString(), 10)] === '#') {\n var hexValue = fontName[i + 1] + fontName[i + 2];\n var value = Number.parseInt(hexValue, 16);\n if (value !== 0) {\n result = result.replace(\"#\" + hexValue, String.fromCharCode(value));\n i += 2;\n }\n if (result.indexOf('#') === -1) {\n break;\n }\n }\n }\n return result;\n };\n return _FontStructure;\n}());\nexport { _FontStructure };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _ExportHelper } from './xfdf-document';\nimport { _stringToAnnotationFlags, _convertToColor, _encode, _byteArrayToHexString, _stringToBytes, _annotationFlagsToString, _convertStringToBytes, _bytesToString, _hexStringToByteArray, _decode } from './../utils';\nimport { _PdfDictionary, _PdfName, _PdfReference } from './../pdf-primitives';\nimport { _PdfBaseStream, _PdfContentStream } from './../base-stream';\nimport { PdfAnnotationFlag } from './../enumerator';\nvar _JsonDocument = /** @class */ (function (_super) {\n __extends(_JsonDocument, _super);\n function _JsonDocument(fileName) {\n var _this = _super.call(this) || this;\n if (fileName !== null && typeof fileName !== 'undefined') {\n _this._fileName = fileName;\n }\n return _this;\n }\n // #region Export Annotations\n _JsonDocument.prototype._exportAnnotations = function (document) {\n this._document = document;\n this._crossReference = document._crossReference;\n this._isAnnotationExport = true;\n this._exportAnnotationData(document, document.pageCount);\n return this._save();\n };\n _JsonDocument.prototype._exportFormFields = function (document) {\n this._document = document;\n this._crossReference = document._crossReference;\n this._isAnnotationExport = false;\n var form = this._document.form;\n if (form !== null && typeof form !== 'undefined') {\n this._exportEmptyFields = form.exportEmptyFields;\n var count = this._document.form.count;\n for (var i = 0; i < count; i++) {\n var field = this._document.form.fieldAt(i);\n this._exportFormFieldsData(field);\n }\n this._writeFormFieldData();\n }\n return this._save();\n };\n _JsonDocument.prototype._save = function () {\n var result = new Uint8Array(this._jsonData);\n this._jsonData = [];\n return result;\n };\n _JsonDocument.prototype._writeFormFieldData = function () {\n var _this = this;\n this._jsonData.push(this._openingBrace);\n var index = 0;\n this._table.forEach(function (value, key) {\n key = _this._getValidString(key);\n _this._jsonData.push(_this._doubleQuotes);\n for (var i = 0; i < key.length; i++) {\n _this._jsonData.push(key.charCodeAt(i));\n }\n if (typeof value === 'string' || (Array.isArray(value) && value.length === 1)) {\n value = _this._getValidString(typeof value === 'string' ? value : value[0]);\n _this._jsonData.push(_this._doubleQuotes, _this._colon, _this._doubleQuotes);\n for (var i = 0; i < value.length; i++) {\n _this._jsonData.push(value.charCodeAt(i));\n }\n _this._jsonData.push(_this._doubleQuotes);\n }\n else {\n _this._jsonData.push(_this._doubleQuotes, _this._colon, _this._openingBracket);\n for (var j = 0; j < value.length; j++) {\n _this._jsonData.push(_this._doubleQuotes);\n var entry = value[Number.parseInt(j.toString(), 10)];\n for (var k = 0; k < entry.length; k++) {\n _this._jsonData.push(entry.charCodeAt(k));\n }\n _this._jsonData.push(_this._doubleQuotes);\n if (j < value.length - 1) {\n _this._jsonData.push(_this._comma);\n }\n }\n _this._jsonData.push(_this._closingBracket);\n }\n if (index < _this._table.size - 1) {\n _this._jsonData.push(_this._comma);\n }\n index++;\n });\n this._jsonData.push(this._closingBrace);\n };\n _JsonDocument.prototype._exportAnnotationData = function (document, pageCount) {\n var _this = this;\n var isAnnotationAdded = false;\n this._jsonData.push(this._openingBrace, this._doubleQuotes, 112, 100, 102, 65, 110, 110, 111, 116, 97, 116, 105, 111, 110, this._doubleQuotes, this._colon, this._openingBrace);\n for (var i = 0; i < pageCount; i++) {\n var page = document.getPage(i);\n if (page && page.annotations.count > 0) {\n this._jsonData.push(i !== 0 && isAnnotationAdded ? this._comma : this._space, this._doubleQuotes);\n var pageNumber = _convertStringToBytes(i.toString(), []);\n pageNumber.forEach(function (entry) {\n _this._jsonData.push(entry);\n });\n this._jsonData.push(this._doubleQuotes, this._colon, this._openingBrace, this._doubleQuotes, 115, 104, 97, 112, 101, 65, 110, 110, 111, 116, 97, 116, 105, 111, 110, this._doubleQuotes, this._colon, this._openingBracket);\n isAnnotationAdded = true;\n }\n for (var k = 0; k < page.annotations.count; k++) {\n var annotation = page.annotations.at(k);\n if (annotation) {\n this._exportAnnotation(annotation, i);\n this._jsonData = _convertStringToBytes(this._convertToJson(this._table), this._jsonData);\n if (k < page.annotations.count - 1) {\n this._jsonData.push(this._comma);\n }\n this._table.clear();\n }\n }\n if (page && page.annotations.count > 0) {\n this._jsonData.push(this._closingBracket, this._closingBrace);\n }\n }\n this._jsonData.push(this._closingBrace, this._closingBrace);\n };\n _JsonDocument.prototype._exportAnnotation = function (annotation, index) {\n var hasAppearance = false;\n var dictionary = annotation._dictionary;\n var type = this._getAnnotationType(annotation._dictionary);\n this._skipBorderStyle = false;\n if (type && type !== '') {\n this._table.set('type', type);\n this._table.set('page', index.toString());\n var lineAnnotation = void 0;\n var points = void 0;\n switch (type) {\n case 'Line':\n lineAnnotation = annotation;\n points = lineAnnotation.linePoints;\n this._table.set('start', points[0].toString() + ',' + points[1].toString());\n this._table.set('end', points[2].toString() + ',' + points[3].toString());\n break;\n case 'Stamp':\n hasAppearance = true;\n break;\n case 'Square':\n hasAppearance = true;\n break;\n }\n if (dictionary && dictionary.has('BE') && dictionary.has('BS')) {\n var borderEffect = dictionary.get('BE');\n if (borderEffect && borderEffect.has('S')) {\n this._skipBorderStyle = true;\n }\n }\n this._writeDictionary(dictionary, index, hasAppearance);\n }\n };\n _JsonDocument.prototype._writeDictionary = function (dictionary, pageIndex, hasAppearance) {\n var _this = this;\n var isBorderStyle = false;\n if (dictionary.has('Type')) {\n var type = dictionary.get('Type');\n isBorderStyle = (type && type.name === 'Border' && this._skipBorderStyle);\n }\n dictionary.forEach(function (key, value) {\n if (!((!hasAppearance && key === 'AP') || key === 'P' || key === 'Parent')) {\n var entry = void 0; // eslint-disable-line\n if (value instanceof _PdfReference) {\n entry = dictionary.get(key);\n }\n if (entry && entry instanceof _PdfDictionary) {\n switch (key) {\n case 'BS':\n case 'BE':\n _this._writeDictionary(entry, pageIndex, false);\n break;\n case 'IRT':\n if (entry.has('NM')) {\n _this._table.set('inreplyto', _this._getValue(entry.get('NM'), true));\n }\n break;\n }\n }\n else if (value instanceof _PdfDictionary) {\n _this._writeDictionary(value, pageIndex, false);\n }\n else if ((!isBorderStyle) || (isBorderStyle && key !== 'S')) {\n _this._writeAttribute(key, value, dictionary);\n }\n }\n });\n if (dictionary.has('Measure')) {\n this._exportMeasureDictionary(dictionary.get('Measure'));\n }\n if ((this.exportAppearance || hasAppearance) && dictionary.has('AP')) {\n var stream = this._getAppearanceString(dictionary.get('AP'));\n if (stream && stream.length > 0) {\n this._table.set('appearance', _encode(stream));\n }\n }\n if (dictionary.has('Sound')) {\n var sound = dictionary.get('Sound');\n if (sound && sound.dictionary) {\n var soundDictionary = sound.dictionary;\n if (soundDictionary.has('B')) {\n this._table.set('bits', this._getValue(soundDictionary.get('B'), true));\n }\n if (soundDictionary.has('C')) {\n this._table.set('channels', this._getValue(soundDictionary.get('C'), true));\n }\n if (soundDictionary.has('E')) {\n this._table.set('encoding', this._getValue(soundDictionary.get('E'), true));\n }\n if (soundDictionary.has('R')) {\n this._table.set('rate', this._getValue(soundDictionary.get('R'), true));\n }\n if (soundDictionary.has('Length') && soundDictionary.get('Length') > 0) {\n var data = _byteArrayToHexString(sound.getBytes());\n if (data && data !== '') {\n this._table.set('MODE', 'raw');\n this._table.set('encoding', 'hex');\n if (soundDictionary.has('Length')) {\n this._table.set('length', this._getValue(soundDictionary.get('Length'), true));\n }\n if (soundDictionary.has('Filter')) {\n this._table.set('filter', this._getValue(soundDictionary.get('Filter'), true));\n }\n this._table.set('data', data);\n }\n }\n }\n }\n else if (dictionary.has('FS')) {\n var fsDictionary = dictionary.get('FS');\n if (fsDictionary) {\n if (fsDictionary.has('F')) {\n this._table.set('file', this._getValue(fsDictionary.get('F'), true));\n }\n if (fsDictionary.has('EF')) {\n var efDictionary = fsDictionary.get('EF');\n if (efDictionary && efDictionary.has('F')) {\n var fStream = efDictionary.get('F');\n if (fStream && fStream.dictionary) {\n var fDictionary = fStream.dictionary;\n if (fDictionary.has('Params')) {\n var paramsDictionary = fDictionary.get('Params');\n if (paramsDictionary) {\n if (paramsDictionary.has('CreationDate')) {\n var value = this._getValue(paramsDictionary.get('CreationDate'), true);\n this._table.set('creation', value);\n }\n if (paramsDictionary.has('ModificationDate')) {\n var value = this._getValue(paramsDictionary.get('ModificationDate'), true);\n this._table.set('modification', value);\n }\n if (paramsDictionary.has('Size')) {\n this._table.set('size', this._getValue(paramsDictionary.get('Size'), true));\n }\n if (paramsDictionary.has('CheckSum')) {\n var value = this._getValue(paramsDictionary.get('CheckSum'), true);\n var checksum = _stringToBytes(value);\n var hexString = _byteArrayToHexString(checksum);\n this._table.set('checksum', hexString);\n }\n }\n }\n var data = _byteArrayToHexString(fStream.getBytes());\n if (data && data !== '') {\n this._table.set('MODE', 'raw');\n this._table.set('encoding', 'hex');\n if (fDictionary.has('Length')) {\n this._table.set('length', this._getValue(fDictionary.get('Length'), true));\n }\n if (fDictionary.has('Filter')) {\n this._table.set('filter', this._getValue(fDictionary.get('Filter'), true));\n }\n this._table.set('data', data);\n }\n }\n }\n }\n }\n }\n };\n _JsonDocument.prototype._writeColor = function (primitive, attribute, tag) {\n var color = this._getColor(primitive);\n if (typeof primitive === 'number' && tag) {\n var c = this._getValue(primitive, true);\n if (c && c !== '') {\n this._table.set(tag, c);\n }\n }\n if (color && color !== '') {\n this._table.set(attribute, color);\n }\n };\n _JsonDocument.prototype._writeAttributeString = function (attribute, primitive, isLowerCase) {\n if (isLowerCase === void 0) { isLowerCase = false; }\n var value = this._getValue(primitive, true);\n this._table.set(attribute, isLowerCase ? value.toLowerCase() : value);\n };\n _JsonDocument.prototype._writeAttribute = function (key, primitive, dictionary) {\n var value;\n switch (key) {\n case 'C':\n this._writeColor(primitive, 'color', 'c');\n break;\n case 'IC':\n this._writeColor(primitive, 'interior-color');\n break;\n case 'DA':\n value = dictionary.get('DA');\n if (value) {\n this._table.set('defaultappearance', value);\n }\n break;\n case 'M':\n this._writeAttributeString('date', primitive);\n break;\n case 'NM':\n this._table.set('name', primitive);\n break;\n case 'Name':\n this._writeAttributeString('icon', primitive);\n break;\n case 'Subj':\n this._writeAttributeString('subject', primitive);\n break;\n case 'T':\n this._writeAttributeString('title', primitive);\n break;\n case 'Rect':\n value = this._getValue(primitive, true);\n if (value) {\n var rectArray = value.split(',');\n var subTable = new Map();\n subTable.set('x', rectArray[0]);\n subTable.set('y', rectArray[1]);\n subTable.set('width', rectArray[2]);\n subTable.set('height', rectArray[3]);\n this._table.set(key.toLowerCase(), this._convertToJson(subTable));\n }\n break;\n case 'CreationDate':\n this._writeAttributeString('creationdate', primitive);\n break;\n case 'Rotate':\n this._writeAttributeString('rotation', primitive);\n break;\n case 'W':\n this._writeAttributeString('width', primitive);\n break;\n case 'LE':\n if (primitive && Array.isArray(primitive)) {\n if (primitive.length === 2) {\n this._table.set('head', this._getValue(primitive[0], true));\n this._table.set('tail', this._getValue(primitive[1], true));\n }\n }\n else if (primitive instanceof _PdfName) {\n this._writeAttributeString('head', primitive);\n }\n break;\n case 'S':\n switch (this._getValue(primitive, true)) {\n case 'D':\n this._table.set('style', 'dash');\n break;\n case 'C':\n this._table.set('style', 'cloudy');\n break;\n case 'S':\n this._table.set('style', 'solid');\n break;\n case 'B':\n this._table.set('style', 'bevelled');\n break;\n case 'I':\n this._table.set('style', 'inset');\n break;\n case 'U':\n this._table.set('style', 'underline');\n break;\n }\n break;\n case 'D':\n this._writeAttributeString('dashes', primitive);\n break;\n case 'I':\n this._writeAttributeString('intensity', primitive);\n break;\n case 'RD':\n this._writeAttributeString('fringe', primitive);\n break;\n case 'IT':\n this._writeAttributeString('IT', primitive);\n break;\n case 'RT':\n this._writeAttributeString('replyType', primitive, true);\n break;\n case 'LL':\n this._writeAttributeString('leaderLength', primitive);\n break;\n case 'LLE':\n this._writeAttributeString('leaderExtend', primitive);\n break;\n case 'Cap':\n this._writeAttributeString('caption', primitive);\n break;\n case 'CP':\n this._writeAttributeString('caption-style', primitive);\n break;\n case 'CL':\n this._writeAttributeString('callout', primitive);\n break;\n case 'QuadPoints':\n this._writeAttributeString('coords', primitive);\n break;\n case 'CA':\n this._writeAttributeString('opacity', primitive);\n break;\n case 'F':\n if (typeof primitive === 'number') {\n var flag = _annotationFlagsToString(primitive);\n this._table.set('flags', flag);\n }\n break;\n case 'Contents':\n value = dictionary.get('Contents');\n if (value && value.length > 0) {\n this._table.set('contents', this._getValidString(value));\n }\n break;\n case 'InkList':\n this._writeInkList(dictionary);\n break;\n case 'Vertices':\n this._writeVertices(dictionary);\n break;\n case 'DS':\n value = dictionary.get('DS');\n if (value) {\n var styleTable = new Map();\n var textStyle = value.split(';');\n for (var i = 0; i < textStyle.length; i++) {\n var text = textStyle[Number.parseInt(i.toString(), 10)].split(':');\n if (text && text.length > 0 && text[0] && text[0].length > 1 && text[0].startsWith(' ')) {\n text[0] = text[0].substring(1);\n }\n styleTable.set(text[0], text[1]);\n }\n this._table.set('defaultStyle', this._convertToJson(styleTable));\n }\n break;\n case 'AllowedInteractions':\n if (primitive.indexOf('\"') !== -1) {\n primitive = primitive.replace(/\"/g, '\\\\\"');\n }\n this._table.set(key, primitive);\n break;\n case 'Type':\n case 'Subtype':\n case 'P':\n case 'Parent':\n case 'L':\n case 'RC':\n case 'FS':\n case 'MeasurementTypes':\n case 'GroupNesting':\n case 'ITEx':\n case 'TextMarkupContent':\n break;\n case 'Border':\n case 'A':\n case 'R':\n case 'X':\n case 'ca':\n this._writeAttributeString(key.toLowerCase(), primitive);\n break;\n case 'CustomData':\n if (primitive && primitive.length > 2 && primitive.startsWith('{') && primitive.endsWith('}')) {\n this._table.set(key, primitive);\n }\n else {\n this._writeAttributeString(key, primitive);\n }\n break;\n default:\n this._writeAttributeString(key, primitive);\n break;\n }\n };\n _JsonDocument.prototype._writeVertices = function (dictionary) {\n var vertices = dictionary.getArray('Vertices');\n if (vertices && vertices.length > 0) {\n var elementCount = vertices.length;\n if (elementCount % 2 === 0) {\n var vertice = '';\n for (var i = 0; i < elementCount - 1; i++) {\n vertice += this._getValue(vertices[Number.parseInt(i.toString(), 10)], true) + (i % 2 !== 0 ? ';' : ',');\n }\n vertice += this._getValue(vertices[elementCount - 1], true);\n if (vertice && vertice !== '') {\n this._table.set('vertices', vertice);\n }\n }\n }\n };\n _JsonDocument.prototype._writeInkList = function (dictionary) {\n var inkList = dictionary.getArray('InkList');\n if (inkList && inkList.length > 0) {\n var points = new Map();\n var json = '[';\n for (var j = 0; j < inkList.length; j++) {\n json += '[' + this._getValue(inkList[Number.parseInt(j.toString(), 10)], true) + ']';\n if (j < inkList.length - 1) {\n json += ',';\n }\n }\n json += ']';\n points.set('gesture', json);\n this._table.set('inklist', this._convertToJson(points));\n }\n };\n _JsonDocument.prototype._exportMeasureDictionary = function (dictionary) {\n if (dictionary) {\n if (dictionary.has('Type')) {\n this._table.set('type1', 'Measure');\n }\n if (dictionary.has('R')) {\n this._table.set('ratevalue', this._getValue(dictionary.get('R'), true));\n }\n if (dictionary.has('SubType')) {\n this._table.set('SubType', this._getValue(dictionary.get('SubType'), true));\n }\n if (dictionary.has('TargetUnitConversion')) {\n this._table.set('TargetUnitConversion', this._getValue(dictionary.get('TargetUnitConversion'), true));\n }\n if (dictionary.has('A')) {\n var array = dictionary.getArray('A');\n this._exportMeasureFormatDetails('area', array[0]);\n }\n if (dictionary.has('D')) {\n var array = dictionary.getArray('D');\n this._exportMeasureFormatDetails('distance', array[0]);\n }\n if (dictionary.has('X')) {\n var array = dictionary.getArray('X');\n this._exportMeasureFormatDetails('xformat', array[0]);\n }\n if (dictionary.has('T')) {\n var array = dictionary.getArray('T');\n this._exportMeasureFormatDetails('tformat', array[0]);\n }\n if (dictionary.has('V')) {\n var array = dictionary.getArray('V');\n this._exportMeasureFormatDetails('vformat', array[0]);\n }\n }\n };\n _JsonDocument.prototype._exportMeasureFormatDetails = function (key, measurementDetails) {\n var details = new Map();\n if (measurementDetails.has('C')) {\n details.set('c', this._getValue(measurementDetails.get('C'), true));\n }\n if (measurementDetails.has('F')) {\n details.set('f', this._getValue(measurementDetails.get('F'), true));\n }\n if (measurementDetails.has('D')) {\n details.set('d', this._getValue(measurementDetails.get('D'), true));\n }\n if (measurementDetails.has('RD')) {\n details.set('rd', this._getValue(measurementDetails.get('RD'), true));\n }\n if (measurementDetails.has('U')) {\n details.set('u', this._getValue(measurementDetails.get('U'), true));\n }\n if (measurementDetails.has('RT')) {\n details.set('rt', this._getValue(measurementDetails.get('RT'), true));\n }\n if (measurementDetails.has('SS')) {\n details.set('ss', this._getValue(measurementDetails.get('SS'), true));\n }\n if (measurementDetails.has('FD')) {\n details.set('fd', this._getValue(measurementDetails.get('FD'), true));\n }\n this._table.set(key, this._convertToJson(details));\n };\n _JsonDocument.prototype._getAppearanceString = function (appearance) {\n var parentTable = new Map();\n var appearanceTable = new Map();\n this._writeAppearanceDictionary(appearanceTable, appearance);\n parentTable.set('ap', this._convertToJson(appearanceTable));\n return _stringToBytes(this._convertToJson(parentTable));\n };\n _JsonDocument.prototype._writeAppearanceDictionary = function (table, dictionary) {\n var _this = this;\n if (dictionary && dictionary.size > 0) {\n dictionary.forEach(function (key, value) {\n _this._writeObject(table, ((value instanceof _PdfReference) ? dictionary.get(key) : value), dictionary, key);\n });\n }\n };\n _JsonDocument.prototype._writeObject = function (table, value, dictionary, key, array) {\n if (value instanceof _PdfName) {\n this._writeTable('name', value.name, table, key, array);\n }\n else if (Array.isArray(value)) {\n var array_1 = [];\n this._writeArray(array_1, value, dictionary);\n this._writeTable('array', this._convertToJsonArray(array_1), table, key, array_1);\n }\n else if (typeof value === 'string') {\n this._writeTable('string', value, table, key, array);\n }\n else if (typeof value === 'number') {\n this._writeTable(Number.isInteger(value) ? 'int' : 'fixed', value.toString(), table, key, array);\n }\n else if (typeof value === 'boolean') {\n this._writeTable('boolean', value ? 'true' : 'false', table, key, array);\n }\n else if (value instanceof _PdfDictionary) {\n var subTable = new Map();\n this._writeAppearanceDictionary(subTable, value);\n this._writeTable('dict', this._convertToJson(subTable), table, key, array);\n }\n else if (value instanceof _PdfBaseStream && value.dictionary) {\n var dataTable = new Map(); // eslint-disable-line\n var streamTable = new Map(); // eslint-disable-line\n var streamDictionary = value.dictionary;\n var data = value.getString(true);\n if (!streamDictionary.has('Length') && data && data !== '') {\n streamDictionary.update('Length', value.length);\n }\n this._writeAppearanceDictionary(streamTable, streamDictionary);\n var type = void 0;\n if (streamDictionary.has('Subtype')) {\n type = this._getValue(streamDictionary.get('Subtype'));\n }\n if ((!streamDictionary.has('Type') && !streamDictionary.has('Subtype')) ||\n (streamDictionary.has('Subtype') &&\n (type === 'Image' || type === 'Form' || type === 'CIDFontType0C' || type === 'OpenType'))) {\n dataTable.set('mode', 'raw');\n dataTable.set('encoding', 'hex');\n }\n else {\n dataTable.set('mode', 'filtered');\n dataTable.set('encoding', 'ascii');\n }\n if (data && data !== '') {\n dataTable.set('bytes', data);\n }\n streamTable.set('data', this._convertToJson(dataTable));\n this._writeTable('stream', this._convertToJson(streamTable), table, key, array);\n }\n else if (value instanceof _PdfReference && this._crossReference) {\n this._writeObject(table, this._crossReference._fetch(value), dictionary, key);\n }\n else if (value === null || typeof value === 'undefined') {\n this._writeTable('null', 'null', table, key, array);\n }\n };\n _JsonDocument.prototype._writeTable = function (tableKey, value, table, key, array) {\n var map = new Map();\n map.set(tableKey, value);\n if (key) {\n table.set(key, this._convertToJson(map));\n }\n else if (array) {\n array.push(map);\n }\n };\n _JsonDocument.prototype._writeArray = function (array, value, dictionary) {\n for (var i = 0; i < value.length; i++) {\n this._writeObject(null, value[Number.parseInt(i.toString(), 10)], dictionary, null, array);\n }\n };\n _JsonDocument.prototype._convertToJson = function (table) {\n var j = 0;\n var json = '{';\n table.forEach(function (value, key) {\n if (value.startsWith('{') || value.startsWith('[')) {\n if (key === 'AllowedInteractions') {\n json += '\"' + key + '\":\"' + value + '\"';\n }\n else {\n json += '\"' + key + '\":' + value;\n }\n }\n else {\n if (value.startsWith(' ') && value.length > 1 && (value[1] === '[' || value[1] === '{')) {\n value = value.substring(1);\n }\n json += '\"' + key + '\":\"' + value + '\"';\n }\n if (j < table.size - 1) {\n json += ',';\n }\n j++;\n });\n return json + '}';\n };\n _JsonDocument.prototype._convertToJsonArray = function (array) {\n var json = '[';\n for (var i = 0; i < array.length; i++) {\n json += this._convertToJson(array[Number.parseInt(i.toString(), 10)]);\n if (i < array.length - 1) {\n json += ',';\n }\n }\n return json + ']';\n };\n // #import\n _JsonDocument.prototype._parseJson = function (document, data) {\n this._document = document;\n this._crossReference = document._crossReference;\n var stringData = _bytesToString(data);\n if (stringData.startsWith('{') && !stringData.endsWith('}')) {\n while (stringData.length > 0 && !stringData.endsWith('}')) {\n stringData = stringData.substring(0, stringData.length - 1);\n }\n }\n return JSON.parse(stringData);\n };\n _JsonDocument.prototype._importFormData = function (document, data) {\n var _this = this;\n var json = this._parseJson(document, data); // eslint-disable-line\n if (json) {\n var keys = Object.keys(json);\n if (keys && keys.length > 0) {\n var _loop_1 = function (i) {\n var key = keys[Number.parseInt(i.toString(), 10)];\n var value = json[key]; // eslint-disable-line\n if (Array.isArray(value)) {\n if (this_1._fields.has('key')) {\n value.forEach(function (entry) {\n _this._fields.get(key).push(entry);\n });\n }\n else {\n this_1._fields.set(key, value);\n }\n }\n else {\n if (this_1._fields.has('key')) {\n this_1._fields.get(key).push(value);\n }\n else {\n this_1._fields.set(key, [value]);\n }\n }\n };\n var this_1 = this;\n for (var i = 0; i < keys.length; i++) {\n _loop_1(i);\n }\n this._importField();\n }\n }\n };\n _JsonDocument.prototype._importAnnotations = function (document, data) {\n var _this = this;\n var json = this._parseJson(document, data); // eslint-disable-line\n if (json) {\n var keys = Object.keys(json);\n if (keys.indexOf('pdfAnnotation') !== -1) {\n var pageAnnotations_1 = json.pdfAnnotation; // eslint-disable-line\n var pageCount_1 = document.pageCount;\n var pageKeys = Object.keys(pageAnnotations_1);\n if (pageKeys && pageKeys.length > 0) {\n pageKeys.forEach(function (key) {\n var pageIndex = Number.parseInt(key, 10);\n if (typeof pageIndex !== 'undefined' && pageIndex < pageCount_1) {\n var page_1 = document.getPage(pageIndex);\n var pageAnnotation = pageAnnotations_1[key]; // eslint-disable-line\n if (pageAnnotation) {\n var pageAnnotationKeys = Object.keys(pageAnnotation);\n if (pageAnnotationKeys && pageAnnotationKeys.length > 0 && pageAnnotationKeys.indexOf('shapeAnnotation') !== -1) {\n var annotations = pageAnnotation['shapeAnnotation']; // eslint-disable-line\n if (annotations && annotations.length > 0) {\n annotations.forEach(function (annotation) {\n var annotationKeys = Object.keys(annotation);\n if (annotationKeys && annotationKeys.length > 0 && annotationKeys.indexOf('type') !== -1) {\n var dictionary = new _PdfDictionary(_this._crossReference);\n dictionary.update('Type', _PdfName.get('Annot'));\n var isValidType = true;\n switch (annotation['type'].toLowerCase()) {\n case 'line':\n dictionary.update('Subtype', _PdfName.get('Line'));\n break;\n case 'circle':\n dictionary.update('Subtype', _PdfName.get('Circle'));\n break;\n case 'square':\n dictionary.update('Subtype', _PdfName.get('Square'));\n break;\n case 'polyline':\n dictionary.update('Subtype', _PdfName.get('PolyLine'));\n break;\n case 'polygon':\n dictionary.update('Subtype', _PdfName.get('Polygon'));\n break;\n case 'ink':\n dictionary.update('Subtype', _PdfName.get('Ink'));\n break;\n case 'popup':\n dictionary.update('Subtype', _PdfName.get('Popup'));\n break;\n case 'text':\n dictionary.update('Subtype', _PdfName.get('Text'));\n break;\n case 'freetext':\n dictionary.update('Subtype', _PdfName.get('FreeText'));\n break;\n case 'stamp':\n dictionary.update('Subtype', _PdfName.get('Stamp'));\n break;\n case 'highlight':\n dictionary.update('Subtype', _PdfName.get('Highlight'));\n break;\n case 'squiggly':\n dictionary.update('Subtype', _PdfName.get('Squiggly'));\n break;\n case 'underline':\n dictionary.update('Subtype', _PdfName.get('Underline'));\n break;\n case 'strikeout':\n dictionary.update('Subtype', _PdfName.get('StrikeOut'));\n break;\n case 'fileattachment':\n dictionary.update('Subtype', _PdfName.get('FileAttachment'));\n break;\n case 'sound':\n dictionary.update('Subtype', _PdfName.get('Sound'));\n break;\n case 'redact':\n dictionary.update('Subtype', _PdfName.get('Redact'));\n break;\n case 'caret':\n dictionary.update('Subtype', _PdfName.get('Caret'));\n break;\n default:\n isValidType = false;\n break;\n }\n if (isValidType) {\n _this._addAnnotationData(dictionary, annotation, annotationKeys);\n var pageDictionary = page_1._pageDictionary;\n if (pageDictionary) {\n var annotations_1 = page_1.annotations;\n var annotation_1 = annotations_1._parseAnnotation(dictionary);\n if (annotation_1) {\n annotation_1._isImported = true;\n var reference = _this._crossReference._getNextReference();\n _this._crossReference._cacheMap.set(reference, dictionary);\n if (dictionary.has('NM') || dictionary.has('IRT')) {\n _this._addReferenceToGroup(reference, dictionary);\n }\n annotation_1._ref = reference;\n var index = annotations_1._annotations.length;\n annotations_1._annotations.push(reference);\n pageDictionary.set('Annots', annotations_1._annotations);\n pageDictionary._updated = true;\n annotations_1._parsedAnnotations.set(index, annotation_1);\n _this._handlePopup(annotations_1, reference, dictionary, pageDictionary);\n }\n }\n }\n }\n });\n }\n }\n }\n }\n });\n }\n if (this._groupHolders.length > 0) {\n for (var i = 0; i < this._groupHolders.length; i++) {\n var dictionary = this._groupHolders[Number.parseInt(i.toString(), 10)];\n var inReplyTo = dictionary.get('IRT');\n if (inReplyTo && inReplyTo !== '') {\n if (this._groupReferences.has(inReplyTo)) {\n dictionary.update('IRT', this._groupReferences.get(inReplyTo));\n }\n else {\n delete dictionary._map.IRT;\n }\n }\n }\n }\n this._groupHolders = [];\n this._groupReferences = new Map();\n }\n }\n };\n _JsonDocument.prototype._addAnnotationData = function (dictionary, annotation, annotationKeys) {\n var _this = this;\n var borderEffectDictionary = new _PdfDictionary(this._crossReference);\n var borderStyleDictionary = new _PdfDictionary(this._crossReference);\n var dataStream = new Map();\n var linePoints = [];\n var beginLineStyle;\n var endLineStyle;\n var values = '';\n var rect;\n var outColor;\n annotationKeys.forEach(function (key) {\n var value = annotation[key]; // eslint-disable-line\n switch (key.toLowerCase()) {\n case 'start':\n case 'end':\n _this._addLinePoints(value, linePoints);\n if (linePoints.length === 4) {\n dictionary.update('L', linePoints);\n linePoints = [];\n }\n break;\n case 'itex':\n break;\n case 'state':\n _this._addString(dictionary, 'State', value);\n break;\n case 'statemodel':\n _this._addString(dictionary, 'StateModel', value);\n break;\n case 'replytype':\n if (value.toLowerCase() === 'group') {\n dictionary.update('RT', _PdfName.get('Group'));\n }\n break;\n case 'inreplyto':\n _this._addString(dictionary, 'IRT', value);\n break;\n case 'dashes':\n case 'width':\n case 'intensity':\n case 'style':\n _this._addBorderStyle(key, value, borderEffectDictionary, borderStyleDictionary);\n break;\n case 'rect':\n rect = value;\n if (rect) {\n var points = [];\n points.push(Number.parseFloat(rect.x));\n points.push(Number.parseFloat(rect.y));\n points.push(Number.parseFloat(rect.width));\n points.push(Number.parseFloat(rect.height));\n if (points && points.length === 4) {\n dictionary.update('Rect', points);\n }\n }\n break;\n case 'color':\n value = _convertToColor(value);\n if (value && value.length === 3) {\n dictionary.update('C', [value[0] / 255, value[1] / 255, value[2] / 255]);\n }\n break;\n case 'oc':\n if (value && dictionary.get('Subtype').name === 'Redact') {\n outColor = value.split(',');\n var color_1 = [];\n outColor.forEach(function (entry) {\n color_1.push(Number.parseFloat(entry));\n });\n if (color_1 && color_1.length > 0) {\n dictionary.update('OC', color_1);\n }\n }\n break;\n case 'interior-color':\n value = _convertToColor(value);\n if (value && value.length === 3) {\n dictionary.update('IC', [value[0] / 255, value[1] / 255, value[2] / 255]);\n }\n break;\n case 'date':\n _this._addString(dictionary, 'M', value);\n break;\n case 'creationdate':\n _this._addString(dictionary, 'CreationDate', value);\n break;\n case 'name':\n _this._addString(dictionary, 'NM', value);\n break;\n case 'icon':\n if (value) {\n dictionary.update('Name', _PdfName.get(value));\n }\n break;\n case 'subject':\n _this._addString(dictionary, 'Subj', value);\n break;\n case 'title':\n _this._addString(dictionary, 'T', value);\n break;\n case 'rotation':\n dictionary.update('Rotate', Number.parseFloat(value));\n break;\n case 'fringe':\n _this._addFloatPoints(dictionary, 'RD', _this._parseFloatPoints(value));\n break;\n case 'it':\n if (value) {\n dictionary.update('IT', _PdfName.get(value));\n }\n break;\n case 'leaderlength':\n dictionary.update('LL', Number.parseFloat(value));\n break;\n case 'leaderextend':\n dictionary.update('LLE', Number.parseFloat(value));\n break;\n case 'caption':\n _this._addBoolean(dictionary, 'Cap', value.toLowerCase());\n break;\n case 'caption-style':\n if (value) {\n dictionary.update('CP', _PdfName.get(value));\n }\n break;\n case 'callout':\n _this._addFloatPoints(dictionary, 'CL', _this._parseFloatPoints(value));\n break;\n case 'coords':\n _this._addFloatPoints(dictionary, 'QuadPoints', _this._parseFloatPoints(value));\n break;\n case 'border':\n _this._addFloatPoints(dictionary, 'Border', _this._parseFloatPoints(value));\n break;\n case 'opacity':\n dictionary.update('CA', Number.parseFloat(value));\n break;\n case 'defaultstyle':\n if (value) {\n var styleKeys_1 = Object.keys(value);\n if (styleKeys_1 && styleKeys_1.length > 0) {\n var style_1 = '';\n var count_1 = 0;\n styleKeys_1.forEach(function (styleKey) {\n var styleValue = value[styleKey]; // eslint-disable-line\n style_1 += styleKey + ':' + styleValue;\n if (count_1 < styleKeys_1.length - 1) {\n style_1 += ';';\n }\n count_1++;\n });\n _this._addString(dictionary, 'DS', style_1);\n }\n }\n break;\n case 'defaultappearance':\n _this._addString(dictionary, 'DA', value);\n break;\n case 'flags':\n if (value && typeof value === 'string') {\n var annotFlag = PdfAnnotationFlag.default;\n var flags = value.split(',');\n for (var i = 0; i < flags.length; i++) {\n var flagType = _stringToAnnotationFlags(flags[Number.parseInt(i.toString(), 10)]);\n if (i === 0) {\n annotFlag = flagType;\n }\n else {\n annotFlag |= flagType;\n }\n }\n dictionary.update('F', annotFlag);\n }\n break;\n case 'open':\n _this._addBoolean(dictionary, 'Open', value.toLowerCase());\n break;\n case 'repeat':\n _this._addBoolean(dictionary, 'Repeat', value.toLowerCase());\n break;\n case 'overlaytext':\n _this._addString(dictionary, 'OverlayText', value);\n break;\n case 'contents':\n if (typeof value === 'string') {\n if (value.indexOf('\\\\r') !== -1) {\n value = value.replace('\\\\r', '\\r');\n }\n if (value) {\n _this._addString(dictionary, 'Contents', value);\n }\n }\n break;\n case 'q':\n dictionary.update('Q', Number.parseInt(value, 10));\n break;\n case 'inklist':\n if (value) {\n var gestureKeys = Object.keys(value);\n if (gestureKeys && gestureKeys.length > 0 && gestureKeys.indexOf('gesture') !== -1) {\n var gesture = value.gesture;\n if (gesture && gesture.length > 0) {\n dictionary.update('InkList', gesture);\n }\n }\n }\n break;\n case 'head':\n beginLineStyle = value;\n break;\n case 'tail':\n endLineStyle = value;\n break;\n case 'creation':\n case 'modification':\n case 'file':\n case 'bits':\n case 'channels':\n case 'encoding':\n case 'rate':\n case 'length':\n case 'filter':\n case 'mode':\n case 'size':\n dataStream.set(key, value);\n break;\n case 'data':\n values = value;\n break;\n case 'vertices':\n if (value && typeof value === 'string') {\n var split = value.split(/[,;]/);\n if (split && split.length > 0) {\n var vertices = [];\n for (var i = 0; i < split.length; i++) {\n vertices.push(Number.parseFloat(split[Number.parseInt(i.toString(), 10)]));\n }\n if (vertices.length > 0 && vertices.length % 2 === 0) {\n dictionary.update('Vertices', vertices);\n }\n }\n }\n break;\n case 'customdata':\n _this._addString(dictionary, 'CustomData', typeof value === 'string' ? value : JSON.stringify(value));\n break;\n case 'appearance':\n _this._addAppearanceData(dictionary, value);\n break;\n case 'allowedinteractions':\n _this._addString(dictionary, 'AllowedInteractions', value);\n break;\n default:\n if (_this._document._allowImportCustomData && key !== 'type' && key !== 'page') {\n _this._addString(dictionary, key, value);\n }\n break;\n }\n });\n this._addMeasureDictionary(dictionary, annotation, annotationKeys);\n if (beginLineStyle) {\n if (endLineStyle) {\n dictionary.update('LE', [_PdfName.get(beginLineStyle), _PdfName.get(endLineStyle)]);\n }\n else {\n dictionary.update('LE', beginLineStyle);\n }\n }\n else if (endLineStyle) {\n dictionary.update('LE', endLineStyle);\n }\n if (borderStyleDictionary.size > 0) {\n borderStyleDictionary.update('Type', _PdfName.get('Border'));\n var reference = this._crossReference._getNextReference();\n borderStyleDictionary.objId = reference.objectNumber + ' ' + reference.generationNumber;\n this._crossReference._cacheMap.set(reference, borderStyleDictionary);\n dictionary.update('BS', reference);\n }\n if (borderEffectDictionary.size > 0) {\n var reference = this._crossReference._getNextReference();\n borderStyleDictionary.objId = reference.objectNumber + ' ' + reference.generationNumber;\n this._crossReference._cacheMap.set(reference, borderEffectDictionary);\n dictionary.update('BE', reference);\n }\n this._addStreamData(dictionary, dataStream, values);\n };\n _JsonDocument.prototype._addLinePoints = function (value, linePoints) {\n if (value && value.indexOf(',') !== -1) {\n var points = value.split(',');\n points.forEach(function (point) {\n linePoints.push(Number.parseFloat(point));\n });\n }\n };\n _JsonDocument.prototype._addString = function (dictionary, key, value) {\n if (value) {\n dictionary.update(key, value);\n }\n };\n _JsonDocument.prototype._addBoolean = function (dictionary, key, value) {\n if (value) {\n dictionary.update(key, value === 'yes' || value === 'true');\n }\n };\n _JsonDocument.prototype._addBorderStyle = function (key, value, borderEffectDictionary, borderStyleDictionary) {\n var style = '';\n var isBasicStyle = true;\n switch (value) {\n case 'dash':\n style = 'D';\n break;\n case 'solid':\n style = 'S';\n break;\n case 'bevelled':\n style = 'B';\n break;\n case 'inset':\n style = 'I';\n break;\n case 'underline':\n style = 'U';\n break;\n case 'cloudy':\n style = 'C';\n isBasicStyle = false;\n break;\n }\n switch (key.toLowerCase()) {\n case 'width':\n borderStyleDictionary.update('W', Number.parseFloat(value));\n break;\n case 'intensity':\n borderEffectDictionary.update('I', Number.parseFloat(value));\n break;\n case 'dashes':\n if (value && value.indexOf(',') !== -1) {\n borderStyleDictionary.update('D', this._parseFloatPoints(value));\n }\n break;\n }\n if (style) {\n if (isBasicStyle) {\n borderStyleDictionary.update('S', _PdfName.get(style));\n }\n else {\n borderEffectDictionary.update('S', _PdfName.get(style));\n }\n }\n };\n _JsonDocument.prototype._parseFloatPoints = function (value) {\n var dashes = value.split(',');\n var dashArray = [];\n dashes.forEach(function (dash) {\n dashArray.push(Number.parseFloat(dash));\n });\n return dashArray;\n };\n _JsonDocument.prototype._addFloatPoints = function (dictionary, key, value) {\n if (value && value.length > 0) {\n dictionary.update(key, value);\n }\n };\n _JsonDocument.prototype._addMeasureDictionary = function (dictionary, annotation, annotationKeys) {\n var measureDictionary = new _PdfDictionary(this._crossReference);\n var aArray = [];\n var dArray = [];\n var xArray = [];\n var tArray = [];\n var vArray = [];\n measureDictionary.set('A', aArray);\n measureDictionary.set('D', dArray);\n measureDictionary.set('X', xArray);\n measureDictionary.set('T', tArray);\n measureDictionary.set('V', vArray);\n if (annotationKeys.indexOf('ratevalue') !== -1) {\n this._addString(measureDictionary, 'R', annotation['ratevalue']);\n }\n if (annotationKeys.indexOf('subtype') !== -1) {\n this._addString(measureDictionary, 'Subtype', annotation['subtype']);\n }\n if (annotationKeys.indexOf('targetunitconversion') !== -1) {\n this._addString(measureDictionary, 'TargetUnitConversion', annotation['targetunitconversion']);\n }\n if (annotationKeys.indexOf('area') !== -1) {\n aArray.push(this._readDictionaryElements(annotation['area']));\n }\n if (annotationKeys.indexOf('distance') !== -1) {\n dArray.push(this._readDictionaryElements(annotation['distance']));\n }\n if (annotationKeys.indexOf('xformat') !== -1) {\n xArray.push(this._readDictionaryElements(annotation['xformat']));\n }\n if (annotationKeys.indexOf('tformat') !== -1) {\n tArray.push(this._readDictionaryElements(annotation['tformat']));\n }\n if (annotationKeys.indexOf('vformat') !== -1) {\n vArray.push(this._readDictionaryElements(annotation['vformat']));\n }\n if (annotationKeys.indexOf('type1') !== -1) {\n measureDictionary.set('Type', _PdfName.get('Measure'));\n var reference = this._crossReference._getNextReference();\n measureDictionary.objId = reference.objectNumber + ' ' + reference.generationNumber;\n this._crossReference._cacheMap.set(reference, measureDictionary);\n dictionary.update('Measure', reference);\n }\n };\n _JsonDocument.prototype._readDictionaryElements = function (elements) {\n var keys = Object.keys(elements);\n var dictionary = new _PdfDictionary(this._crossReference);\n if (keys && keys.length > 0) {\n keys.forEach(function (key) {\n var value = elements[key]; // eslint-disable-line\n if (key && value) {\n switch (key) {\n case 'd':\n dictionary.set('D', Number.parseFloat(value));\n break;\n case 'c':\n dictionary.set('C', Number.parseFloat(value));\n break;\n case 'rt':\n dictionary.set('RT', value);\n break;\n case 'rd':\n dictionary.set('RD', value);\n break;\n case 'ss':\n dictionary.set('SS', value);\n break;\n case 'u':\n dictionary.set('U', value);\n break;\n case 'f':\n dictionary.set('F', _PdfName.get(value));\n break;\n case 'fd':\n dictionary.set('FD', value);\n break;\n case 'type':\n dictionary.set('Type', _PdfName.get(value));\n break;\n }\n }\n });\n }\n return dictionary;\n };\n _JsonDocument.prototype._addStreamData = function (dictionary, data, values) {\n var _this = this;\n var subtype = dictionary.get('Subtype').name;\n var bytes = _hexStringToByteArray(values, true);\n if (subtype === 'Sound') {\n var soundStream_1 = new _PdfContentStream(bytes);\n soundStream_1.dictionary._crossReference = this._crossReference;\n soundStream_1.dictionary.update('Type', _PdfName.get('Sound'));\n data.forEach(function (value, key) {\n if (key && value) {\n switch (key) {\n case 'bits':\n case 'rate':\n case 'channels':\n soundStream_1.dictionary.set(key, Number.parseInt(value, 10));\n break;\n case 'encoding':\n soundStream_1.dictionary.set('E', _PdfName.get(value));\n break;\n case 'filter':\n soundStream_1.dictionary.set('Filter', _PdfName.get('FlateDecode'));\n break;\n }\n }\n });\n soundStream_1.reference = this._crossReference._getNextReference();\n soundStream_1.dictionary.objId = soundStream_1.reference.objectNumber + ' ' + soundStream_1.reference.generationNumber;\n this._crossReference._cacheMap.set(soundStream_1.reference, soundStream_1);\n dictionary.update('Sound', soundStream_1.reference);\n }\n else if (subtype === 'FileAttachment') {\n var fileDictionary_1 = new _PdfDictionary(this._crossReference);\n fileDictionary_1.update('Type', _PdfName.get('Filespec'));\n var fileStream_1 = new _PdfContentStream(bytes);\n fileStream_1.dictionary._crossReference = this._crossReference;\n var param_1 = new _PdfDictionary(this._crossReference);\n data.forEach(function (value, key) {\n if (key && value) {\n var size = void 0;\n switch (key) {\n case 'file':\n _this._addString(fileDictionary_1, 'F', value);\n _this._addString(fileDictionary_1, 'UF', value);\n break;\n case 'size':\n size = Number.parseInt(value, 10);\n if (typeof size !== 'undefined') {\n param_1.update('Size', size);\n fileStream_1.dictionary.update('DL', size);\n }\n break;\n case 'creation':\n _this._addString(param_1, 'CreationDate', value);\n break;\n case 'modification':\n _this._addString(param_1, 'ModificationDate', value);\n break;\n }\n }\n });\n fileStream_1.dictionary.update('Params', param_1);\n fileStream_1.dictionary.update('Filter', _PdfName.get('FlateDecode'));\n fileStream_1.reference = this._crossReference._getNextReference();\n fileStream_1.dictionary.objId = fileStream_1.reference.objectNumber + ' ' + fileStream_1.reference.generationNumber;\n this._crossReference._cacheMap.set(fileStream_1.reference, fileStream_1);\n var embeddedFile = new _PdfDictionary(this._crossReference);\n embeddedFile.update('F', fileStream_1.reference);\n fileDictionary_1.update('EF', embeddedFile);\n var reference = this._crossReference._getNextReference();\n fileDictionary_1.objId = reference.objectNumber + ' ' + reference.generationNumber;\n this._crossReference._cacheMap.set(reference, fileDictionary_1);\n dictionary.update('FS', reference);\n }\n };\n _JsonDocument.prototype._addAppearanceData = function (dictionary, data) {\n if (data) {\n var encoded = _decode(data, false);\n var decoded = _bytesToString(encoded);\n if (decoded.startsWith('{') && !decoded.endsWith('}')) {\n while (decoded.length > 0 && !decoded.endsWith('}')) {\n decoded = decoded.substring(0, decoded.length - 1);\n }\n }\n var json = JSON.parse(decoded); // eslint-disable-line\n if (json) {\n var keys = Object.keys(json);\n if (keys && keys.length > 0 && keys.indexOf('ap') !== -1) {\n dictionary.update('AP', this._parseDictionary(json['ap']));\n }\n }\n }\n };\n _JsonDocument.prototype._parseAppearance = function (element) {\n var _this = this;\n var value; // eslint-disable-line\n var keys = Object.keys(element);\n if (keys.indexOf('name') !== -1) {\n value = _PdfName.get(element.name);\n }\n else if (keys.indexOf('int') !== -1) {\n value = Number.parseInt(element.int, 10);\n }\n else if (keys.indexOf('fixed') !== -1) {\n value = Number.parseFloat(element.fixed);\n }\n else if (keys.indexOf('string') !== -1) {\n value = element.string;\n }\n else if (keys.indexOf('boolean') !== -1) {\n value = element.boolean === 'true' ? true : false;\n }\n else if (keys.indexOf('array') !== -1) {\n var array = element.array; // eslint-disable-line\n value = [];\n array.forEach(function (element) {\n value.push(_this._parseAppearance(element));\n });\n }\n else if (keys.indexOf('dict') !== -1) {\n var dictionary = this._parseDictionary(element.dict);\n value = this._crossReference._getNextReference();\n dictionary.objId = value.objectNumber + ' ' + value.generationNumber;\n this._crossReference._cacheMap.set(value, dictionary);\n }\n else if (keys.indexOf('stream') !== -1) {\n var stream = this._parseStream(element.stream);\n value = this._crossReference._getNextReference();\n stream.reference = value;\n stream.dictionary.objId = value.objectNumber + ' ' + value.generationNumber;\n this._crossReference._cacheMap.set(value, stream);\n }\n else {\n value = null;\n }\n return value;\n };\n _JsonDocument.prototype._parseDictionary = function (element) {\n var _this = this;\n var result = new _PdfDictionary(this._crossReference);\n if (element) {\n var keys = Object.keys(element);\n if (keys && keys.length > 0) {\n keys.forEach(function (key) {\n var value = element[key]; // eslint-disable-line\n if (key !== 'data') {\n var primitive = _this._parseAppearance(value); // eslint-disable-line\n result.update(key, primitive);\n }\n });\n }\n }\n return result;\n };\n _JsonDocument.prototype._parseStream = function (element) {\n var result;\n var keys = Object.keys(element);\n if (element && keys.indexOf('data')) {\n var data = element.data; // eslint-disable-line\n var bytes = void 0;\n if (data) {\n var dataKeys = Object.keys(data);\n if (dataKeys && dataKeys.indexOf('bytes') !== -1) {\n var byteString = data.bytes;\n if (byteString) {\n bytes = _hexStringToByteArray(byteString, true);\n }\n }\n }\n if (!bytes) {\n bytes = [];\n }\n var stream = new _PdfContentStream(bytes);\n var dictionary = this._parseDictionary(element);\n var isImage = false;\n if (dictionary && dictionary.has('Subtype')) {\n var type = dictionary.get('Subtype');\n isImage = type && type.name === 'Image';\n }\n if (isImage) {\n stream._isCompress = false;\n }\n else {\n if (dictionary.has('Length')) {\n delete dictionary._map.Length;\n }\n if (dictionary.has('Filter')) {\n delete dictionary._map.Filter;\n }\n }\n stream.dictionary = dictionary;\n result = stream;\n }\n return result;\n };\n _JsonDocument.prototype._getValidString = function (value) {\n if (value.indexOf('\\\\') !== -1) {\n value = value.replace(/\\\\/g, '\\\\\\\\');\n }\n if (value.indexOf('\"') !== -1) {\n value = value.replace(/\"/g, '\\\\\"');\n }\n if (value.indexOf('[') !== -1) {\n value = value.replace(/\\[/g, '\\\\[');\n }\n if (value.indexOf(']') !== -1) {\n value = value.replace(/\\[/g, '\\\\]');\n }\n if (value.indexOf('{') !== -1) {\n value = value.replace(/\\[/g, '\\\\{');\n }\n if (value.indexOf('}') !== -1) {\n value = value.replace(/\\}/g, '\\\\}');\n }\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/\\n/g, '\\\\n');\n }\n if (value.indexOf('\\r') !== -1) {\n value = value.replace(/\\r/g, '\\\\r');\n }\n return value;\n };\n return _JsonDocument;\n}(_ExportHelper));\nexport { _JsonDocument };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _PdfDictionary, _PdfName, _PdfReference } from './../pdf-primitives';\nimport { _PdfParser, _PdfLexicalOperator } from '../pdf-parser';\nimport { _PdfStream } from '../base-stream';\nimport { _PdfCommand } from './../pdf-primitives';\nimport { _ExportHelper } from './xfdf-document';\nimport { PdfUriAnnotation, PdfRubberStampAnnotation, PdfFileLinkAnnotation, PdfTextWebLinkAnnotation, PdfRectangleAnnotation, PdfDocumentLinkAnnotation } from './../annotations/annotation';\nimport { _bytesToString, _getNewGuidString, _byteArrayToHexString, _stringToBytes } from './../utils';\nimport { PdfCheckBoxField, PdfComboBoxField, PdfListBoxField, PdfRadioButtonListField, PdfTextBoxField } from './../form/field';\nimport { _StringTokenizer } from './../fonts/string-layouter';\nimport { _PdfFlateStream } from '../flate-stream';\nimport { CompressedStreamWriter } from '@syncfusion/ej2-compression';\nvar _FdfDocument = /** @class */ (function (_super) {\n __extends(_FdfDocument, _super);\n function _FdfDocument(fileName) {\n var _this = _super.call(this) || this;\n _this._annotationObjects = new Map(); // eslint-disable-line\n _this._specialCharacters = 'âãÏÓ';\n if (fileName !== null && typeof fileName !== 'undefined') {\n _this._fileName = fileName;\n }\n return _this;\n }\n _FdfDocument.prototype._exportAnnotations = function (document) {\n this._document = document;\n this._crossReference = document._crossReference;\n this._isAnnotationExport = true;\n this._exportAnnotationData(document, document.pageCount);\n return this._save();\n };\n _FdfDocument.prototype._exportFormFields = function (document) {\n this._document = document;\n this._crossReference = document._crossReference;\n this._isAnnotationExport = false;\n this._key = _getNewGuidString();\n return this._save();\n };\n _FdfDocument.prototype._save = function () {\n var _this = this;\n var objectID = 0;\n var objectArray = [];\n if (!this._isAnnotationExport) {\n if (this._asPerSpecification) {\n this.fdfString += '%FDF-1.2\\n%' + this._specialCharacters + '\\r\\n1 0 obj\\r< /V ';\n if (typeof value === 'string' || (Array.isArray(value) && value.length === 1)) {\n this.fdfString += '<' + this._stringToHexString((Array.isArray(value) ? value[0] : value)) + '>';\n }\n else if (Array.isArray(value)) {\n this.fdfString += '[';\n for (var j = 0; j < value.length; j++) {\n this.fdfString += '<' + this._stringToHexString(value[Number.parseInt(j.toString(), 10)]) + '>';\n if (j !== value.length - 1) {\n this.fdfString += ' ';\n }\n }\n this.fdfString += ']';\n }\n this.fdfString += ' >>endobj\\n';\n }\n else if (field instanceof PdfRadioButtonListField || field instanceof PdfCheckBoxField) {\n objectArray.push(objectID);\n this.fdfString += objectID + ' 0 obj< /V /';\n this.fdfString += value + ' >>endobj\\n';\n }\n }\n else {\n if (field instanceof PdfTextBoxField || field instanceof PdfListBoxField || field instanceof PdfComboBoxField) {\n objectArray.push(objectID);\n this.fdfString += '<>';\n }\n }\n }\n }\n if (this._asPerSpecification) {\n this.fdfString += ']';\n this.fdfString += '/ID[]/UF(' + this._fileName + ')>>/Type/Catalog>>\\rendobj\\rtrailer\\r\\n<>\\r\\n';\n this.fdfString += '%%EOF\\r\\n';\n }\n else {\n this.fdfString += (this._table.size + 1) + ' 0 obj< /Fields [';\n for (var i = 0; i < this._table.size; i++) {\n var field = this._document.form.fieldAt(i);\n if (field !== null && typeof field !== 'undefined' && field.export) {\n this.fdfString += objectArray[Number.parseInt(i.toString(), 10)] + ' 0 R ';\n }\n }\n this.fdfString += ']>>endobj\\n';\n this.fdfString += (objectArray.length + 2) + ' 0 obj<>endobj\\n';\n this.fdfString += 'trailer\\n<>';\n }\n }\n var arrayBuffer = new ArrayBuffer(this.fdfString.length * 1);\n var result = new Uint8Array(arrayBuffer);\n result.forEach(function (val, i) {\n result[i] = _this.fdfString.charCodeAt(i); // eslint-disable-line\n });\n return result;\n };\n _FdfDocument.prototype._importAnnotations = function (document, data) {\n this._document = document;\n this._crossReference = document._crossReference;\n this._isAnnotationExport = false;\n this._checkFdf(_bytesToString(data));\n var stream = new _PdfStream(data);\n this._isAnnotationImport = true;\n var parser = new _PdfParser(new _PdfLexicalOperator(stream), null, true, false);\n this._readFdfData(parser);\n if (this._annotationObjects !== null && typeof this._annotationObjects !== 'undefined' && this._annotationObjects.size > 0) {\n this._annotationObjects.clear();\n }\n if (this._table !== null && typeof this._table !== 'undefined' && this._table.size > 0) {\n this._table.clear();\n }\n };\n _FdfDocument.prototype._importFormData = function (document, data) {\n this._document = document;\n this._crossReference = document._crossReference;\n this._isAnnotationExport = false;\n this._checkFdf(_bytesToString(data));\n var stream = new _PdfStream(data);\n var parser = new _PdfParser(new _PdfLexicalOperator(stream), null, false, false);\n this._readFdfData(parser);\n };\n _FdfDocument.prototype._readFdfData = function (parser) {\n var _this = this;\n var token = parser.getObject(); // eslint-disable-line\n if (this._isAnnotationImport) {\n var key = '';\n while (token !== null && typeof token !== 'undefined' && token !== 'EOF') {\n if (token instanceof _PdfDictionary) {\n this._table.set(key, token);\n key = '';\n }\n else if (token instanceof _PdfStream || token instanceof _PdfFlateStream) {\n this._table.set(key, token);\n key = '';\n }\n else if (token !== null && Number.isInteger(token) && token !== 0) {\n if (parser.first >= 0) {\n key = token.toString() + ' ' + parser.first.toString();\n }\n }\n else if (token instanceof _PdfCommand && token.command !== null && typeof token.command !== 'undefined' &&\n token.command === 'trailer') {\n key = token.command;\n }\n token = parser.getObject();\n }\n this._annotationObjects = this._parseAnnotationData();\n this._annotationObjects.forEach(function (value, key) {\n var dictionary = value;\n dictionary._crossReference = _this._crossReference;\n dictionary._updated = true;\n if (dictionary !== null && typeof dictionary !== 'undefined' && dictionary.has('Page')) {\n var pageNumber = dictionary.get('Page');\n if (pageNumber !== null && typeof pageNumber !== 'undefined') {\n var pageIndex = pageNumber;\n if (pageIndex < _this._document.pageCount) {\n var page = _this._document.getPage(pageIndex);\n var pageDictionary = page._pageDictionary;\n if (pageDictionary !== null && typeof pageDictionary !== 'undefined') {\n var annotations = page.annotations;\n var annotation = annotations._parseAnnotation(dictionary);\n if (annotation !== null && typeof annotation !== 'undefined') {\n annotation._isImported = true;\n var reference = _this._crossReference._getNextReference();\n _this._crossReference._cacheMap.set(reference, dictionary);\n if (dictionary.has('NM') || dictionary.has('IRT')) {\n _this._addReferenceToGroup(reference, dictionary);\n }\n annotation._ref = reference;\n var index = annotations._annotations.length;\n annotations._annotations.push(reference);\n pageDictionary.set('Annots', annotations._annotations);\n pageDictionary._updated = true;\n annotations._parsedAnnotations.set(index, annotation);\n _this._handlePopup(annotations, reference, dictionary, pageDictionary);\n }\n }\n }\n }\n }\n });\n }\n else {\n token = parser.getObject();\n if (!this._asPerSpecification) {\n token = parser.getObject();\n if (token instanceof _PdfCommand && token.command !== null) {\n token = token.command;\n }\n while (token !== null && typeof token !== 'undefined' && token !== 'EOF') {\n if (token instanceof _PdfDictionary) {\n var t = token.getArray('T');\n var v = void 0;\n if (token._map.V instanceof _PdfName) {\n v = token.getArray('V').name;\n }\n else {\n v = token.getArray('V');\n }\n if (t !== null && t !== undefined && t.length > 0) {\n this._table.set(t, v);\n }\n }\n token = parser.getObject();\n }\n }\n else {\n while (token !== null && typeof token !== 'undefined' && token !== 'EOF') {\n if (token instanceof _PdfDictionary && token !== null && token._map.FDF !== null && token._map.FDF !== undefined) {\n token = token._map.FDF;\n if (token instanceof _PdfDictionary && token._map.Fields !== null && token._map.Fields !== undefined) {\n token = token._map.Fields;\n if (token !== null && token !== undefined) {\n for (var i = 0; i < token.length; i++) {\n var field = token[Number.parseInt(i.toString(), 10)];\n if (field instanceof _PdfDictionary && field !== null && field !== undefined) {\n var t = field.getArray('T');\n var v = void 0;\n if (field._map.V instanceof _PdfName) {\n v = field.getArray('V').name;\n }\n else {\n v = field.getArray('V');\n }\n if (t !== null && t !== undefined && t.length > 0) {\n this._table.set(t, v);\n }\n }\n }\n }\n }\n }\n token = parser.getObject();\n }\n }\n this._importField();\n }\n };\n _FdfDocument.prototype._parseAnnotationData = function () {\n var objects = new Map(); // eslint-disable-line\n var mappedObjects = new Map(); // eslint-disable-line \n objects = this._table;\n if (objects !== null && typeof objects !== 'undefined' && objects.size > 0 && objects.has('trailer')) {\n var trailer = objects.get('trailer');\n if (trailer instanceof _PdfDictionary && trailer !== null && typeof trailer !== 'undefined' && trailer.has('Root')) {\n var holder = trailer.getRaw('Root');\n if (holder !== null && typeof holder !== 'undefined') {\n var rootKey = holder.objectNumber.toString() + ' ' + holder.generationNumber.toString();\n if (objects.has(rootKey)) {\n var root = objects.get(rootKey);\n if (root !== null && typeof root !== 'undefined' && root.has('FDF')) {\n var fdf = root.get('FDF');\n if (fdf !== null && typeof fdf !== 'undefined' && fdf.has('Annots')) {\n var annots = fdf.get('Annots');\n if (annots !== null && typeof annots !== 'undefined' && annots.length > 0) {\n for (var i = 0; i < annots.length; i++) {\n var annot = annots[Number.parseInt(i.toString(), 10)];\n var key = annot.objectNumber.toString() + ' ' + annot.generationNumber.toString();\n if (objects.has(key)) {\n annot = objects.get(key);\n mappedObjects.set(key, annot);\n objects.delete(key);\n }\n }\n }\n }\n }\n }\n objects.delete(rootKey);\n }\n }\n objects.delete('trailer');\n }\n return mappedObjects;\n };\n _FdfDocument.prototype._importField = function () {\n var _this = this;\n var form = this._document.form;\n var count = form.count;\n if (count) {\n this._table.forEach(function (value, key) {\n var textValue;\n if (_this._table.size > 0 && _this._table.has(key)) {\n textValue = _this._table.get(key);\n }\n var index = form._getFieldIndex(key);\n if (index !== -1 && index < count) {\n var field = form.fieldAt(index);\n if (field) {\n if (textValue && textValue !== '') {\n field._dictionary.update('RV', textValue);\n }\n var param = [];\n if (Array.isArray(value)) {\n param = value;\n }\n else {\n param.push(value);\n }\n _this._importFieldData(field, param);\n }\n }\n });\n }\n };\n //#region Export Annotations\n _FdfDocument.prototype._exportAnnotationData = function (document, pageCount) {\n var genNumber = _StringTokenizer._whiteSpace + '0' + _StringTokenizer._whiteSpace;\n var startDictionary = '<<' + '/';\n this.fdfString += '%FDF-1.2' + '\\r\\n';\n var index = 2;\n var annot = new Array();\n var appearance = this.exportAppearance;\n for (var i = 0; i < pageCount; i++) {\n var page = document.getPage(i);\n if (page !== null && typeof page !== 'undefined' && page.annotations.count > 0) {\n for (var k = 0; k < page.annotations.count; k++) {\n var annotation = page.annotations.at(k);\n if (annotation !== null && typeof annotation !== 'undefined' && !(annotation instanceof PdfFileLinkAnnotation ||\n annotation instanceof PdfTextWebLinkAnnotation || annotation instanceof PdfDocumentLinkAnnotation ||\n annotation instanceof PdfUriAnnotation)) {\n if (annotation instanceof PdfRubberStampAnnotation || annotation instanceof PdfRectangleAnnotation) {\n var value = this._exportAnnotation(annotation, this.fdfString, index, annot, i, true);\n index = value.index;\n annot = value.annot;\n }\n else {\n var value = this._exportAnnotation(annotation, this.fdfString, index, annot, i, appearance);\n index = value.index;\n annot = value.annot;\n }\n }\n }\n }\n }\n if (index !== 2) {\n var root = '1' + genNumber;\n this.fdfString += root + 'obj' + '\\r\\n' + startDictionary + 'FDF' + startDictionary + 'Annots' + '[';\n for (var i = 0; i < annot.length - 1; i++) {\n this.fdfString += annot[Number.parseInt(i.toString(), 10)] + genNumber + 'R' + ' ';\n }\n this.fdfString += annot[annot.length - 1] + genNumber + 'R' + ']' + '/' + 'F' + '(' + this._fileName + ')' + '/' + 'UF' + '(';\n this.fdfString += this._fileName + ')>>' + '/' + 'Type' + '/' + 'Catalog' + '>>' + '\\r\\n' + 'endobj' + '\\r\\n';\n this.fdfString += 'trailer' + '\\r\\n' + startDictionary + 'Root' + ' ' + root + 'R' + '>>' + '\\r\\n' + '%%EOF' + '\\r\\n';\n }\n };\n _FdfDocument.prototype._exportAnnotation = function (annotation, fdfString, index, annot, pageIndex, appearance) {\n this.fdfString = fdfString;\n var helper = new _FdfHelper();\n var dictionary = annotation._dictionary;\n var startObject = _StringTokenizer._whiteSpace + '0' + _StringTokenizer._whiteSpace + 'obj' + '\\r\\n';\n var endObject = '\\r\\n' + 'endobj' + '\\r\\n';\n this._annotationID = index.toString();\n this.fdfString += index + startObject + '<<';\n var list = new Map(); // eslint-disable-line\n var streamReference = new Array();\n annot.push(this._annotationID);\n dictionary.set('Page', pageIndex);\n var annotValue = this._getEntries(list, streamReference, index, dictionary, this.fdfString, appearance);\n index = annotValue.index;\n list = annotValue.list;\n streamReference = annotValue.streamReference;\n delete dictionary._map.Page;\n this.fdfString += '>>' + endObject;\n var _loop_1 = function () {\n var keys = Array();\n list.forEach(function (key, value) {\n keys.push(value);\n });\n for (var i = 0; i < keys.length; i++) {\n var key = keys[Number.parseInt(i.toString(), 10)];\n if (list.get(key) instanceof _PdfDictionary || list.get(key) instanceof _PdfStream ||\n list.get(key) instanceof _PdfFlateStream) {\n if (list.get(key) instanceof _PdfDictionary) {\n dictionary = list.get(key);\n }\n else {\n dictionary = list.get(key).dictionary;\n }\n if (dictionary !== null && typeof dictionary !== 'undefined') {\n if (dictionary instanceof _PdfDictionary && dictionary.has('Type')) {\n var type = dictionary.get('Type');\n if (type !== null && typeof type !== 'undefined' && type.name === 'Annot') {\n annot.push(key.toString());\n dictionary.set('Page', pageIndex);\n }\n }\n this_1.fdfString += key + startObject + '<<';\n var value = this_1._getEntries(list, streamReference, index, dictionary, this_1.fdfString, appearance);\n list = value.list;\n streamReference = value.streamReference;\n index = value.index;\n if (dictionary instanceof _PdfDictionary && dictionary.has('Page')) {\n delete dictionary._map.Page;\n }\n this_1.fdfString += '>>';\n if (streamReference !== null && typeof streamReference !== 'undefined' && streamReference.indexOf(key) !== -1) {\n this_1._appendStream(list.get(key), this_1.fdfString);\n }\n this_1.fdfString += endObject;\n }\n }\n list.delete(key);\n }\n };\n var this_1 = this;\n while (list.size > 0) {\n _loop_1();\n }\n index++;\n helper.index = index;\n helper.annot = annot;\n return helper;\n };\n _FdfDocument.prototype._appendStream = function (value, fdfString) {\n var stream = value; // eslint-disable-line\n this.fdfString = fdfString;\n if (value instanceof _PdfFlateStream || value instanceof _PdfStream) {\n if (value instanceof _PdfFlateStream) {\n stream = value.stream;\n }\n else {\n stream = value;\n }\n }\n if (value instanceof _PdfFlateStream || value instanceof _PdfStream) {\n var byteArray = stream.getBytes();\n var dataArray = new Uint8Array(byteArray);\n var sw = new CompressedStreamWriter();\n sw.write(dataArray, 0, dataArray.length);\n sw.close();\n var compressString = sw.getCompressedString;\n this.fdfString += 'stream' + '\\r\\n';\n this.fdfString += compressString;\n this.fdfString += '\\r\\n' + 'endstream';\n }\n };\n _FdfDocument.prototype._getEntries = function (list, // eslint-disable-line\n streamReference, index, dictionary, fdfString, hasAppearance) {\n var _this = this;\n var flag = false;\n var helper = new _FdfHelper();\n this.fdfString = fdfString;\n var listDictionary = list; // eslint-disable-line\n dictionary.forEach(function (key, value) {\n if (!((!hasAppearance && key === 'AP'))) {\n if (key !== 'P') {\n _this.fdfString += '/' + key;\n }\n if (key === 'Sound' || key === 'F' || hasAppearance) {\n flag = true;\n }\n var primitive = value; // eslint-disable-line\n if (typeof primitive === 'string') {\n _this.fdfString += '(' + _this._getFormattedString(primitive) + ')';\n }\n else if (primitive instanceof _PdfName) {\n _this.fdfString += '/' + primitive.name;\n }\n else if (primitive instanceof Array) {\n primitive = primitive; // eslint-disable-line\n var value_1 = _this._appendArray(primitive, _this.fdfString, index, flag, listDictionary, streamReference);\n listDictionary = value_1.list;\n streamReference = value_1.streamReference;\n index = value_1.index;\n }\n else if (typeof primitive === 'number') {\n _this.fdfString += ' ' + primitive.toString();\n }\n else if (typeof primitive === 'boolean') {\n _this.fdfString += ' ' + ((primitive) ? 'true' : 'false');\n }\n else if (primitive instanceof _PdfDictionary) {\n _this.fdfString += '<<';\n primitive = primitive;\n var value_2 = _this._getEntries(listDictionary, streamReference, index, primitive, _this.fdfString, hasAppearance);\n listDictionary = value_2.list;\n streamReference = value_2.streamReference;\n index = value_2.index;\n _this.fdfString += '>>';\n }\n else if (primitive instanceof _PdfReference) {\n var pageNumber = dictionary.get('Page');\n if (key === 'Parent') {\n _this.fdfString += ' ' + _this._annotationID + ' 0 R';\n _this.fdfString += '/Page ' + pageNumber;\n }\n else if (key === 'IRT') {\n if (dictionary.has('NM')) {\n var name_1 = dictionary.get('NM');\n if (name_1 !== null) {\n _this.fdfString += '(' + _this._getFormattedString(name_1) + ')';\n }\n }\n }\n else if (key !== 'P') {\n var holder = primitive;\n if (holder !== null && typeof holder !== 'undefined') {\n index++;\n _this.fdfString += ' ' + index + ' 0 R';\n if (flag) {\n streamReference.push(index);\n }\n listDictionary.set(index, dictionary.get(key));\n }\n }\n }\n flag = false;\n }\n });\n helper.list = listDictionary;\n helper.streamReference = streamReference;\n helper.index = index;\n return helper;\n };\n _FdfDocument.prototype._appendArray = function (array, // eslint-disable-line\n fdfString, index, flag, list, // eslint-disable-line\n streamReference) {\n this.fdfString = fdfString;\n this.fdfString += '[';\n var helper = new _FdfHelper();\n var listDictionary = list; // eslint-disable-line\n if (array !== null && array.length > 0) {\n var count = array.length;\n for (var i = 0; i < count; i++) {\n var element = array[Number.parseInt(i.toString(), 10)]; // eslint-disable-line\n if (i !== 0 && (typeof element === 'number' || element instanceof _PdfReference || typeof element === 'boolean')) {\n this.fdfString += ' ';\n }\n var value = this._appendElement(element, this.fdfString, index, flag, listDictionary, streamReference);\n listDictionary = value.list;\n streamReference = value.streamReference;\n index = value.index;\n }\n }\n this.fdfString += ']';\n helper.list = listDictionary;\n helper.streamReference = streamReference;\n helper.index = index;\n return helper;\n };\n _FdfDocument.prototype._appendElement = function (element, // eslint-disable-line\n fdfString, index, flag, list, // eslint-disable-line\n streamReference) {\n this.fdfString = fdfString;\n var helper = new _FdfHelper();\n var listDictionary = list; // eslint-disable-line\n if (typeof element === 'number') {\n this.fdfString += (element).toString();\n }\n else if (element instanceof _PdfName) {\n this.fdfString += (element.name.toString());\n }\n else if (element instanceof Array) {\n element = element; // eslint-disable-line\n var value = this._appendArray(element, this.fdfString, index, flag, listDictionary, streamReference);\n listDictionary = value.list;\n streamReference = value.streamReference;\n index = value.index;\n }\n else if (element instanceof _PdfDictionary) {\n this.fdfString += '<<';\n element = element;\n var value = this._getEntries(listDictionary, streamReference, index, element, this.fdfString, flag);\n listDictionary = value.list;\n streamReference = value.streamReference;\n index = value.index;\n this.fdfString += '>>';\n }\n helper.list = listDictionary;\n helper.streamReference = streamReference;\n helper.index = index;\n return helper;\n };\n _FdfDocument.prototype._getFormattedString = function (value) {\n var result = '';\n for (var i = 0; i < value.length; i++) {\n var c = value.charCodeAt(i);\n if (c === 40 || c === 41) {\n result += '\\'';\n }\n result += String.fromCharCode(c);\n }\n return result;\n };\n //#endregion\n _FdfDocument.prototype._checkFdf = function (element) {\n if (element.includes(this._specialCharacters) || element.includes('âãÃ\\u008fÃ\\u0093')) {\n this._asPerSpecification = true;\n }\n if (element.startsWith('%')) {\n var token = element.substring(1, 5);\n if (token !== 'FDF-') { // eslint-disable-line\n throw new Error('Invalid FDF file.');\n }\n }\n };\n _FdfDocument.prototype._stringToHexString = function (text) {\n var hexString = '';\n if (text !== null && typeof text !== 'undefined' && text.length > 0) {\n var bytesValue = _stringToBytes(text);\n hexString = _byteArrayToHexString(bytesValue);\n }\n return hexString;\n };\n return _FdfDocument;\n}(_ExportHelper));\nexport { _FdfDocument };\nvar _FdfHelper = /** @class */ (function () {\n function _FdfHelper() {\n }\n return _FdfHelper;\n}());\nexport { _FdfHelper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfDestinationMode, PdfRotationAngle, PdfTextStyle } from './enumerator';\nimport { PdfDestination } from './pdf-page';\nimport { _PdfDictionary, _PdfName, _PdfReference } from './pdf-primitives';\nimport { _checkRotation, _getPageIndex, _parseColor } from './utils';\n/**\n * Represents a base class for all bookmark objects.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBookmarkBase = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfBookmarkBase` class.\n *\n * @private\n * @param {_PdfDictionary} dictionary Outline dictionary.\n * @param {_PdfCrossReference} crossReference Cross reference.\n *\n */\n function PdfBookmarkBase(dictionary, crossReference) {\n this._bookMarkList = [];\n this._isExpanded = false;\n this._isLoadedBookmark = false;\n this._dictionary = dictionary;\n this._crossReference = crossReference;\n }\n Object.defineProperty(PdfBookmarkBase.prototype, \"count\", {\n /**\n * Gets the bookmark count (Read only).\n *\n * @returns {number} Number of bookmarks.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Get bookmark count\n * let bookmarkCount: number = bookmarks.count;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._isLoadedBookmark && this._bookMarkList.length === 0) {\n this._reproduceTree();\n }\n return this._bookMarkList.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `PdfBookmark` at the specified index.\n *\n * @param {number} index Bookmark index.\n * @returns {PdfBookmark} Bookmark at the specified index.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Get bookmark at the specified index\n * let bookmark: PdfBookmark = bookmarks.at(0) as PdfBookmark;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfBookmarkBase.prototype.at = function (index) {\n var bookmark;\n if (index < 0 || index >= this.count) {\n throw Error('Index out of range.');\n }\n if (this._bookMarkList.length > 0 && index < this._bookMarkList.length) {\n bookmark = this._bookMarkList[Number.parseInt(index.toString(), 10)];\n }\n return bookmark;\n };\n /**\n * Gets the boolean flag indicating whether `PdfBookmark` is present or not.\n *\n * @param {PdfBookmark} outline Bookmark.\n * @returns {boolean} whether the bookmark is present or not.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Get the bookmark at the specified index\n * let bookmark: PdfBookmark = bookmarks.at(0) as PdfBookmark;\n * // Gets the boolean flag indicating whether `PdfBookmark` is present or not.\n * let isPresent: boolean = bookmarks.contains(bookmark);\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfBookmarkBase.prototype.contains = function (outline) {\n return this._bookMarkList.indexOf(outline) !== -1;\n };\n PdfBookmarkBase.prototype._reproduceTree = function () {\n var bookmark = this._getFirstBookmark(this);\n var isBookmark = (bookmark) ? true : false;\n while (isBookmark && bookmark._dictionary) {\n this._bookMarkList.push(bookmark);\n bookmark = bookmark._next;\n isBookmark = (bookmark) ? true : false;\n }\n };\n PdfBookmarkBase.prototype._getFirstBookmark = function (bookmarkBase) {\n var bookmarkBaseDictionary = bookmarkBase._dictionary;\n var bookMark;\n if (bookmarkBaseDictionary && bookmarkBaseDictionary.has('First')) {\n var bookMarkDictionary = bookmarkBaseDictionary.get('First');\n if (bookMarkDictionary) {\n bookMark = new PdfBookmark(bookMarkDictionary, this._crossReference);\n }\n }\n return bookMark;\n };\n return PdfBookmarkBase;\n}());\nexport { PdfBookmarkBase };\n/**\n * Represents a bookmark in a PDF document\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Gets the bookmark at the specified index\n * let bookmark: PdfBookmark = bookmarks.at(0) as PdfBookmark;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBookmark = /** @class */ (function (_super) {\n __extends(PdfBookmark, _super);\n /**\n * Initializes a new instance of the `PdfBookmark` class.\n *\n * @private\n * @param {_PdfDictionary} dictionary Bookmark dictionary.\n * @param {_PdfCrossReference} crossReference Cross reference.\n *\n */\n function PdfBookmark(dictionary, crossReference) {\n var _this = _super.call(this, dictionary, crossReference) || this;\n if (!_this._dictionary.has('Dest') && _this._dictionary.has('A')) {\n var actionDictionary = _this._dictionary.get('A');\n if (actionDictionary && actionDictionary.has('D')) {\n var destinationArray = actionDictionary.getRaw('D'); // eslint-disable-line\n _this._dictionary.update('Dest', destinationArray);\n }\n }\n _this._isLoadedBookmark = true;\n return _this;\n }\n Object.defineProperty(PdfBookmark.prototype, \"destination\", {\n /**\n * Gets the destination (Read only).\n *\n * @returns {PdfDestination} Page destination.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Gets the bookmark at the specified index\n * let bookmark: PdfBookmark = bookmarks.at(0) as PdfBookmark;\n * // Gets the destination\n * let destination: PdfDestination = bookmark.destination;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var value;\n var namedDestination = this._obtainNamedDestination();\n if (namedDestination === null || typeof namedDestination === 'undefined') {\n value = this._obtainDestination();\n }\n return value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBookmark.prototype, \"namedDestination\", {\n /**\n * Gets the named destination (Read only).\n *\n * @returns {PdfNamedDestination} Named destination.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Gets bookmark at the specified index\n * let bookmark: PdfBookmark = bookmarks.at(0) as PdfBookmark;\n * // Gets the named destination\n * let namedDestination: PdfNamedDestination = bookmark.namedDestination;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._namedDestination === null || typeof this._namedDestination === 'undefined') {\n this._namedDestination = this._obtainNamedDestination();\n }\n return this._namedDestination;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBookmark.prototype, \"title\", {\n /**\n * Gets the bookmark title (Read only).\n *\n * @returns {string} Bookmark title.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Gets bookmark at the specified index\n * let bookmark: PdfBookmark = bookmarks.at(0) as PdfBookmark;\n * // Gets the bookmark title\n * let bookmarkTitle: string = bookmark.title;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._title === null || typeof this._title === 'undefined') {\n this._title = this._obtainTitle();\n }\n return this._title;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBookmark.prototype, \"color\", {\n /**\n * Gets the bookmark color (Read only).\n *\n * @returns {number[]} Bookmark color.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Gets bookmark at the specified index\n * let bookmark: PdfBookmark = bookmarks.at(0) as PdfBookmark;\n * // Gets the bookmark color\n * let color: number[] = bookmark.color;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._color === null || typeof this._color === 'undefined') {\n if (this._dictionary.has('C')) {\n this._color = _parseColor(this._dictionary.getArray('C'));\n }\n }\n return (this._color) ? this._color : [0, 0, 0];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBookmark.prototype, \"textStyle\", {\n /**\n * Gets the textStyle (Read only).\n *\n * @returns {PdfTextStyle} Text style.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Gets bookmark at the specified index\n * let bookmark: PdfBookmark = bookmarks.at(0) as PdfBookmark;\n * // Gets the textStyle\n * let textStyle: PdfTextStyle = bookmark.textStyle;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._textStyle === null || typeof this._textStyle === 'undefined') {\n this._textStyle = this._obtainTextStyle();\n }\n return this._textStyle;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBookmark.prototype, \"isExpanded\", {\n /**\n * Gets the boolean flag indicating whether the bookmark is expanded or not (Read only).\n *\n * @returns {boolean} whether the bookmark is expanded or not.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Gets bookmark at the specified index\n * let bookmark: PdfBookmark = bookmarks.at(0) as PdfBookmark;\n * // Gets the boolean flag indicating whether the bookmark is expanded or not\n * let isExpanded: boolean = bookmark.isExpanded;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._dictionary.has('Count')) {\n var value = this._dictionary.get('Count');\n if (value >= 0) {\n return true;\n }\n }\n return this._isExpanded;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBookmark.prototype, \"_next\", {\n get: function () {\n var nextBookmark;\n if (this._dictionary.has('Next')) {\n var dictionary = this._dictionary.get('Next');\n if (dictionary) {\n nextBookmark = new PdfBookmark(dictionary, this._crossReference);\n }\n }\n return nextBookmark;\n },\n enumerable: true,\n configurable: true\n });\n PdfBookmark.prototype._obtainTextStyle = function () {\n var style = PdfTextStyle.regular;\n if (this._dictionary.has('F')) {\n var flag = this._dictionary.get('F');\n var flagValue = 0;\n if (typeof flag !== 'undefined' && flag !== null) {\n flagValue = flag;\n }\n style |= flagValue;\n }\n return style;\n };\n PdfBookmark.prototype._obtainTitle = function () {\n var value = '';\n if (this._dictionary.has('Title')) {\n value = this._dictionary.get('Title');\n }\n return value;\n };\n PdfBookmark.prototype._obtainNamedDestination = function () {\n var document = this._crossReference._document;\n var destinationCollection;\n if (document) {\n destinationCollection = document._destinationCollection;\n }\n var destination; // eslint-disable-line\n var namedDestination;\n if (destinationCollection) {\n var dictionary = this._dictionary;\n if (dictionary.has('A')) {\n var action = dictionary.get('A');\n if (action.has('D')) {\n destination = action.get('D');\n }\n }\n else if (dictionary.has('Dest')) {\n destination = dictionary.get('Dest');\n }\n if (destination) {\n var value = void 0;\n if (destination instanceof _PdfName) {\n value = destination.name;\n }\n else if (typeof destination === 'string') {\n value = destination;\n }\n if (value) {\n var namedDestinations = destinationCollection._namedDestinations;\n for (var i = 0; i < namedDestinations.length; i++) {\n namedDestination = namedDestinations[Number.parseInt(i.toString(), 10)];\n if (namedDestination._title === value) {\n destination = namedDestination;\n break;\n }\n }\n }\n }\n }\n return namedDestination;\n };\n PdfBookmark.prototype._obtainDestination = function () {\n var bookMarkDictionary = this._dictionary;\n var page;\n if (bookMarkDictionary && bookMarkDictionary.has('Dest')) {\n var destinationArray = bookMarkDictionary.getArray('Dest'); // eslint-disable-line\n var loadedDocument = this._crossReference._document;\n var mode = void 0;\n if (destinationArray && Array.isArray(destinationArray) && destinationArray.length > 0) {\n var value = destinationArray[0]; // eslint-disable-line\n var left = void 0;\n var height = void 0;\n var bottom = void 0;\n var right = void 0;\n var zoom = void 0;\n if (typeof value === 'number') {\n var pageNumber = destinationArray[0];\n if (pageNumber >= 0) {\n var document_1 = this._crossReference._document;\n if (document_1 && document_1.pageCount > pageNumber) {\n page = document_1.getPage(pageNumber);\n }\n if (destinationArray.length > 1) {\n mode = destinationArray[1];\n }\n if (mode && mode.name === 'XYZ') {\n if (destinationArray.length > 2) {\n left = destinationArray[2];\n }\n if (destinationArray.length > 3) {\n height = destinationArray[3];\n }\n if (destinationArray.length > 4) {\n zoom = destinationArray[4];\n }\n if (page) {\n var topValue = (height === null || typeof height === 'undefined') ? 0 : page.size[1] - height;\n var leftValue = (left === null || typeof left === 'undefined') ? 0 : left;\n if (page.rotation !== PdfRotationAngle.angle0) {\n _checkRotation(page, height, left);\n }\n this._destination = new PdfDestination(page, [leftValue, topValue]);\n this._destination._index = pageNumber;\n this._destination.zoom = (typeof zoom !== 'undefined' && zoom !== null) ? zoom : 0;\n if (left === null || height === null || zoom === null || typeof left === 'undefined'\n || typeof height === 'undefined' || typeof zoom === 'undefined') {\n this._destination._setValidation(false);\n }\n }\n }\n }\n }\n if (value instanceof _PdfDictionary) {\n var pageDictionary = value;\n var index = void 0;\n if (loadedDocument && pageDictionary) {\n index = _getPageIndex(loadedDocument, pageDictionary);\n }\n if (typeof index !== 'undefined' && index !== null && index >= 0) {\n page = loadedDocument.getPage(index);\n }\n if (destinationArray.length > 1) {\n mode = destinationArray[1];\n }\n if (mode) {\n if (mode.name === 'XYZ') {\n if (destinationArray.length > 2) {\n left = destinationArray[2];\n }\n if (destinationArray.length > 3) {\n height = destinationArray[3];\n }\n if (destinationArray.length > 4) {\n zoom = destinationArray[4];\n }\n if (page) {\n var topValue = (height === null || typeof height === 'undefined') ? 0 : page.size[1] - height;\n var leftValue = (left === null || typeof left === 'undefined') ? 0 : left;\n if (page.rotation !== PdfRotationAngle.angle0) {\n topValue = _checkRotation(page, height, left);\n }\n this._destination = new PdfDestination(page, [leftValue, topValue]);\n this._destination._index = index;\n this._destination.zoom = (typeof zoom !== 'undefined' && zoom !== null) ? zoom : 0;\n if (left === null || height === null || zoom === null || typeof left === 'undefined' ||\n typeof height === 'undefined' || typeof zoom === 'undefined') {\n this._destination._setValidation(false);\n }\n }\n }\n else {\n if (mode.name === 'FitR') {\n if (destinationArray.length > 2) {\n left = destinationArray[2];\n }\n if (destinationArray.length > 3) {\n bottom = destinationArray[3];\n }\n if (destinationArray.length > 4) {\n right = destinationArray[4];\n }\n if (destinationArray.length > 5) {\n height = destinationArray[5];\n }\n if (page) {\n left = (left === null || typeof left === 'undefined') ? 0 : left;\n bottom = (bottom === null || typeof bottom === 'undefined') ? 0 : bottom;\n height = (height === null || typeof height === 'undefined') ? 0 : height;\n right = (right === null || typeof right === 'undefined') ? 0 : right;\n this._destination = new PdfDestination(page, [left, bottom, right, height]);\n this._destination._index = index;\n this._destination.mode = PdfDestinationMode.fitR;\n }\n }\n else if (mode.name === 'FitBH' || mode.name === 'FitH') {\n if (destinationArray.length >= 3) {\n height = destinationArray[2];\n }\n if (typeof index !== 'undefined' && index !== null && index >= 0) {\n page = loadedDocument.getPage(index);\n }\n if (page && page.size) {\n var topValue = (height === null || typeof height === 'undefined') ? 0 : page.size[1] - height;\n this._destination = new PdfDestination(page, [0, topValue]);\n this._destination._index = index;\n this._destination.mode = PdfDestinationMode.fitH;\n if (height === null || typeof height === 'undefined') {\n this._destination._setValidation(false);\n }\n }\n }\n else {\n if (page && mode.name === 'Fit') {\n this._destination = new PdfDestination(page);\n this._destination._index = index;\n this._destination.mode = PdfDestinationMode.fitToPage;\n }\n }\n }\n }\n }\n }\n }\n return this._destination;\n };\n return PdfBookmark;\n}(PdfBookmarkBase));\nexport { PdfBookmark };\n/**\n * Represents a named destination in a PDF document.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Gets the bookmark at the specified index\n * let bookmark: PdfBookmark = bookmarks.at(0) as PdfBookmark;\n * // Gets the named destination\n * let namedDestination: PdfNamedDestination = bookmark.namedDestination;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfNamedDestination = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfNamedDestination` class.\n *\n * @private\n * @param {_PdfDictionary} dictionary Destination dictionary.\n * @param {_PdfCrossReference} crossReference Cross reference.\n *\n */\n function PdfNamedDestination(dictionary, crossReference) {\n this._dictionary = dictionary;\n this._crossReference = crossReference;\n }\n Object.defineProperty(PdfNamedDestination.prototype, \"destination\", {\n /**\n * Gets the destination.\n *\n * @returns {PdfDestination} Page destination.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Gets the bookmark at the specified index\n * let bookmark: PdfBookmark = bookmarks.at(0) as PdfBookmark;\n * // Gets the named destination\n * let namedDestination: PdfNamedDestination = bookmark.namedDestination;\n * // Gets the destination\n * let destination: PdfDestination = namedDestination.destination;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._destination;\n },\n /**\n * Sets the destination.\n *\n * @param {PdfDestination} value destination.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Gets the bookmark at the specified index\n * let bookmark: PdfBookmark = bookmarks.at(0) as PdfBookmark;\n * // Gets the named destination\n * let namedDestination: PdfNamedDestination = bookmark.namedDestination;\n * // Set the destination\n * namedDestination.destination = new PdfDestination(page, [100, 200]);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value) {\n value._parent = this;\n this._destination = value;\n this._destination._initializePrimitive();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNamedDestination.prototype, \"title\", {\n /**\n * Gets the title.\n *\n * @returns {string} title.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Gets the bookmark at the specified index\n * let bookmark: PdfBookmark = bookmarks.at(0) as PdfBookmark;\n * // Gets the named destination\n * let namedDestination: PdfNamedDestination = bookmark.namedDestination;\n * // Gets the title\n * let title: string = namedDestination.title;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._title;\n },\n /**\n * Sets the title.\n *\n * @param {string} value title.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get the bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Gets the bookmark at the specified index\n * let bookmark: PdfBookmark = bookmarks.at(0) as PdfBookmark;\n * // Gets the named destination\n * let namedDestination: PdfNamedDestination = bookmark.namedDestination;\n * // Set the title\n * namedDestination.title = 'Syncfusion';\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n if (value !== this._title) {\n this._title = value;\n this._dictionary.update('Title', value);\n this._dictionary._updated = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n return PdfNamedDestination;\n}());\nexport { PdfNamedDestination };\nvar _PdfNamedDestinationCollection = /** @class */ (function () {\n function _PdfNamedDestinationCollection(dictionary, crossReference) {\n this._namedDestinations = [];\n if (dictionary) {\n this._dictionary = dictionary;\n }\n if (crossReference) {\n this._crossReference = crossReference;\n }\n if (dictionary && dictionary.has('Dests')) {\n var destination = dictionary.get('Dests');\n if (destination) {\n if (destination.has('Names')) {\n this._addCollection(destination);\n }\n else if (destination.has('Kids')) {\n var destinationArray = destination.getArray('Kids'); // eslint-disable-line\n for (var i = 0; i < destinationArray.length; i++) {\n var destinationElement = destinationArray[Number.parseInt(i.toString(), 10)];\n this._addCollection(destinationElement);\n }\n }\n }\n }\n }\n _PdfNamedDestinationCollection.prototype._addCollection = function (destination) {\n var elements = destination.getRaw('Names'); // eslint-disable-line\n var ref; // eslint-disable-line\n var dictionary;\n if (elements instanceof _PdfReference) {\n ref = this._crossReference._fetch(elements);\n }\n if (ref && Array.isArray(ref) && ref.length > 0) {\n elements = ref;\n }\n if (elements && Array.isArray(elements) && elements.length > 0) {\n for (var i = 1; i < elements.length; i = i + 2) {\n var reference = elements[i]; // eslint-disable-line\n if (reference instanceof _PdfReference) {\n var destinationArray = this._crossReference._fetch(reference); // eslint-disable-line\n if (destinationArray && Array.isArray(destinationArray) && destinationArray.length > 0) {\n dictionary = new _PdfDictionary();\n dictionary.update('D', destinationArray);\n }\n else {\n dictionary = this._crossReference._fetch(reference);\n }\n }\n else if ((dictionary === null || typeof dictionary === 'undefined') && Array.isArray(reference)) {\n dictionary = new _PdfDictionary();\n dictionary.update('D', reference);\n }\n if (dictionary) {\n var namedDestination = new PdfNamedDestination(dictionary, this._crossReference);\n var value = elements[i - 1];\n var destinationObject = void 0;\n var destinationArray = void 0; // eslint-disable-line\n if (value) {\n namedDestination._title = value;\n if (dictionary.has('D')) {\n destinationArray = dictionary.get('D');\n destinationObject = new PdfDestination();\n var reference_1 = destinationArray[0];\n if (destinationArray && destinationArray[0] instanceof _PdfReference) {\n var pageDictionary = this._crossReference._fetch(reference_1);\n var loadedDocument = this._crossReference._document;\n var index = void 0;\n if (loadedDocument && pageDictionary) {\n index = _getPageIndex(loadedDocument, pageDictionary);\n if (typeof index !== 'undefined' && index !== null && index >= 0) {\n destinationObject._index = index;\n destinationObject.page = loadedDocument.getPage(index);\n }\n }\n }\n }\n }\n if (destinationArray[1] instanceof _PdfName) {\n var left = void 0;\n var height = void 0;\n var zoom = void 0;\n var mode = destinationArray[1].name;\n var page = destinationObject.page;\n switch (mode) {\n case 'Fit':\n destinationObject._destinationMode = PdfDestinationMode.fitToPage;\n break;\n case 'XYZ':\n destinationObject._destinationMode = PdfDestinationMode.location;\n if (destinationArray.length > 2) {\n left = destinationArray[2];\n }\n if (destinationArray.length > 3) {\n height = destinationArray[3];\n }\n if (destinationArray.length > 4) {\n zoom = destinationArray[4];\n }\n if (page) {\n var size = page.size;\n var topValue = (height === null || typeof height === 'undefined') ? 0 : size[1] - height;\n var leftValue = (left === null || typeof left === 'undefined') ? 0 : left;\n destinationObject._location = [leftValue, topValue];\n if (page.rotation !== PdfRotationAngle.angle0) {\n topValue = _checkRotation(page, height, left);\n }\n destinationObject._zoom = (typeof zoom !== 'undefined' && zoom !== null) ? zoom : 0;\n if (left === null || height === null || zoom === null || typeof left === 'undefined'\n || typeof height === 'undefined' || typeof zoom === 'undefined') {\n destinationObject._isValid = false;\n }\n }\n break;\n case 'FitH':\n case 'FitBH':\n destinationObject._destinationMode = PdfDestinationMode.fitH;\n if (destinationArray.length >= 3) {\n height = destinationArray[2];\n }\n if (page) {\n var size = page.size;\n var topValue = (height === null || typeof height === 'undefined') ? 0 : size[1] - height;\n destinationObject._location = [0, topValue];\n }\n if (height === null || typeof height === 'undefined') {\n destinationObject._isValid = false;\n }\n break;\n case 'FitR':\n destinationObject._destinationMode = PdfDestinationMode.fitR;\n break;\n }\n }\n destinationObject._parent = namedDestination;\n namedDestination._destination = destinationObject;\n this._namedDestinations.push(namedDestination);\n }\n }\n }\n };\n return _PdfNamedDestinationCollection;\n}());\nexport { _PdfNamedDestinationCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _XmlWriter } from './xml-writer';\nimport { _bytesToString, _getNewGuidString } from './../utils';\nimport { _ExportHelper } from './xfdf-document';\nvar _XmlDocument = /** @class */ (function (_super) {\n __extends(_XmlDocument, _super);\n function _XmlDocument(fileName) {\n var _this = _super.call(this) || this;\n if (fileName !== null && typeof fileName !== 'undefined') {\n _this._fileName = fileName;\n }\n return _this;\n }\n _XmlDocument.prototype._exportAnnotations = function () {\n throw new Error('Method not implemented.');\n };\n _XmlDocument.prototype._exportFormFields = function (document) {\n this._document = document;\n this._crossReference = document._crossReference;\n this._isAnnotationExport = false;\n this._format = 'XML';\n this._key = _getNewGuidString();\n return this._save();\n };\n _XmlDocument.prototype._save = function () {\n var writer = new _XmlWriter();\n writer._writeStartDocument();\n if (this._asPerSpecification) {\n writer._writeStartElement('fields');\n writer._writeAttributeString('xfdf', 'http://ns.adobe.com/xfdf-transition/', 'xmlns', null);\n }\n else {\n writer._writeStartElement('Fields');\n }\n var form = this._document.form;\n if (form !== null && typeof form !== 'undefined') {\n this._exportEmptyFields = form.exportEmptyFields;\n var count = this._document.form.count;\n for (var i = 0; i < count; i++) {\n var field = this._document.form.fieldAt(i);\n if (field !== null && typeof field !== 'undefined' && field.export) {\n this._exportFormFieldData(field);\n }\n }\n this._writeFormFieldData(writer, this._asPerSpecification);\n }\n var result = writer._save();\n writer._destroy();\n return result;\n };\n _XmlDocument.prototype._writeFormFieldData = function (writer, isAcrobat) {\n if (isAcrobat === void 0) { isAcrobat = false; }\n if (isAcrobat) {\n this._table.forEach(function (value, key) {\n if (key.includes(' ')) {\n var text = key.replace(/ /g, '');\n writer._writeStartElement(text.toString());\n writer._writeAttributeString('original', key.toString(), 'xfdf', null);\n }\n else {\n writer._writeStartElement(key.toString());\n }\n writer._writeString(value.toString());\n writer._writeEndElement();\n });\n }\n else {\n this._table.forEach(function (value, key) {\n if (key.includes(' ')) {\n key = key.replace(/ /g, '_x0020_');\n }\n writer._writeStartElement(key.toString());\n writer._writeString(value.toString());\n writer._writeEndElement();\n });\n }\n writer._writeEndElement();\n };\n _XmlDocument.prototype._importFormData = function (document, data) {\n this._document = document;\n this._crossReference = document._crossReference;\n this._isAnnotationExport = false;\n var value = _bytesToString(data);\n value = value.replace(/(\\r\\n|\\n|\\r)/gm, '');\n value = value.replace(/[^\\x20-\\x7E]/g, '');\n this._xmlDocument = (new DOMParser()).parseFromString(value, 'text/xml');\n this._checkXml(this._xmlDocument);\n this._xmlImport = true;\n this._parseFormData(this._xmlDocument.documentElement);\n this._xmlImport = false;\n };\n _XmlDocument.prototype._parseFormData = function (root) {\n var child = root.childNodes;\n if (child !== null && typeof child !== 'undefined' && child.length > 0) {\n for (var i = 0; i < child.length; i++) {\n var childNode = child.item(i);\n if (childNode !== null && typeof childNode !== 'undefined' && childNode.nodeType === 1) {\n var element = childNode;\n var text = '';\n if (element.attributes !== null && typeof element.attributes !== 'undefined' && element.attributes.length > 0) {\n var attribute = element.attributes.item(0); // eslint-disable-line\n if (attribute !== null && typeof attribute !== 'undefined' && attribute.name === 'xfdf:original') {\n text = attribute.value;\n }\n }\n else {\n text = element.tagName;\n }\n var v = element.textContent;\n if (text !== null && text !== undefined && text.length > 0) {\n this._table.set(text, v);\n }\n }\n }\n }\n this._importField();\n };\n _XmlDocument.prototype._importField = function () {\n var _this = this;\n var form = this._document.form;\n var count = form.count;\n if (count) {\n this._table.forEach(function (value, key) {\n var textValue;\n if (_this._table.size > 0 && _this._table.has(key)) {\n textValue = _this._table.get(key);\n }\n var text = key.toString();\n if (text.indexOf('_x0020_') !== -1) {\n text = text.replace(/_x0020_/g, ' ');\n }\n var index = form._getFieldIndex(text);\n if (index !== -1 && index < count) {\n var field = form.fieldAt(index);\n if (field && field !== null && typeof field !== 'undefined') {\n if (textValue && textValue !== '') {\n field._dictionary.update('RV', textValue);\n }\n var param = [];\n param.push(value);\n _this._importFieldData(field, param);\n }\n }\n });\n }\n };\n _XmlDocument.prototype._checkXml = function (xmlDocument) {\n if (xmlDocument.getElementsByTagName('parsererror').length > 0) {\n throw new Error('Invalid XML file.');\n }\n };\n return _XmlDocument;\n}(_ExportHelper));\nexport { _XmlDocument };\n","/**\n * `PdfFileStructure` class represents the internal structure of the PDF file.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the internal file structure of the PDF document\n * let fileStructure: PdfFileStructure = document.fileStructure;\n * // Set the cross reference type\n * fileStructure.crossReferenceType = PdfCrossReferenceType.stream;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfFileStructure = /** @class */ (function () {\n function PdfFileStructure() {\n }\n Object.defineProperty(PdfFileStructure.prototype, \"crossReferenceType\", {\n /**\n * Gets the cross reference type of the PDF document.\n *\n * @returns {PdfCrossReferenceType} - Returns the cross reference type of the PDF document.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the internal file structure of the PDF document\n * let fileStructure: PdfFileStructure = document.fileStructure;\n * // Get the cross reference type\n * let type: PdfCrossReferenceType = fileStructure.crossReferenceType;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._crossReferenceType;\n },\n /**\n * Sets the cross reference type of the PDF document.\n *\n * @param {PdfCrossReferenceType} value - Specifies the cross reference type of the PDF document.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the internal file structure of the PDF document\n * let fileStructure: PdfFileStructure = document.fileStructure;\n * // Set the cross reference type\n * fileStructure.crossReferenceType = PdfCrossReferenceType.stream;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._crossReferenceType = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFileStructure;\n}());\nexport { PdfFileStructure };\n","import { _PdfStream } from './base-stream';\nimport { _PdfCrossReference } from './pdf-cross-reference';\nimport { _Linearization } from './pdf-parser';\nimport { _isWhiteSpace, FormatError, _decode } from './utils';\nimport { _PdfCatalog } from './pdf-catalog';\nimport { _PdfDictionary, _PdfReference, _isName, _clearPrimitiveCaches } from './pdf-primitives';\nimport { PdfPage } from './pdf-page';\nimport { Save } from '@syncfusion/ej2-file-utils';\nimport { DataFormat, PdfPermissionFlag, PdfTextAlignment } from './enumerator';\nimport { PdfForm } from './form/form';\nimport { PdfBrush } from './graphics/pdf-graphics';\nimport { PdfFontFamily, PdfFontStyle, PdfStandardFont } from './fonts/pdf-standard-font';\nimport { PdfStringFormat, PdfVerticalAlignment } from './fonts/pdf-string-format';\nimport { _XfdfDocument } from './import-export/xfdf-document';\nimport { _JsonDocument } from './import-export/json-document';\nimport { _FdfDocument } from './import-export/fdf-document';\nimport { PdfBookmarkBase, _PdfNamedDestinationCollection } from './pdf-outline';\nimport { _XmlDocument } from './import-export/xml-document';\nimport { PdfFileStructure } from './pdf-file-structure';\n/**\n * Represents a PDF document and can be used to parse an existing PDF document.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Flatten annotations and form fields\n * document.flatten = true;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocument = /** @class */ (function () {\n function PdfDocument(data, password) {\n this._headerSignature = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\n this._startXrefSignature = new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]);\n this._endObjSignature = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\n this._version = '';\n this._permissions = PdfPermissionFlag.default;\n this._isEncrypted = false;\n this._isUserPassword = false;\n this._hasUserPasswordOnly = false;\n this._encryptOnlyAttachment = false;\n this._encryptMetaData = false;\n this._isExport = false;\n this._allowCustomData = false;\n if (!data) {\n throw new Error('PDF data cannot be undefined or null');\n }\n this._stream = new _PdfStream(typeof data === 'string' ? _decode(data) : data);\n this._fileStructure = new PdfFileStructure();\n this._crossReference = new _PdfCrossReference(this, password);\n this._pages = new Map();\n this._checkHeader();\n this._crossReference._setStartXRef(this._startXRef);\n try {\n this._parse(false);\n }\n catch (e) {\n if (e.name === 'XRefParseException') {\n this._parse(true);\n }\n else {\n throw e;\n }\n }\n this._crossReference._version = this._version;\n }\n Object.defineProperty(PdfDocument.prototype, \"_allowImportCustomData\", {\n get: function () {\n return this._allowCustomData;\n },\n set: function (value) {\n this._allowCustomData = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"_linearization\", {\n get: function () {\n if (!this._linear) {\n var value = void 0;\n try {\n value = new _Linearization(this._stream);\n }\n catch (err) { } // eslint-disable-line\n this._linear = value;\n }\n return this._linear;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"_startXRef\", {\n get: function () {\n var stream = this._stream;\n var startXRef = 0;\n if (this._linearization && this._linearization.isValid) {\n stream.reset();\n if (this._find(stream, this._endObjSignature)) {\n startXRef = stream.position + 6 - stream.start;\n }\n }\n else {\n var step = 1024;\n var startXRefLength = this._startXrefSignature.length;\n var found = false;\n var position = stream.end;\n while (!found && position > 0) {\n position -= step - startXRefLength;\n if (position < 0) {\n position = 0;\n }\n stream.position = position;\n found = this._find(stream, this._startXrefSignature, step, true);\n }\n if (found) {\n stream.skip(9);\n var ch = void 0;\n do {\n ch = stream.getByte();\n } while (_isWhiteSpace(ch));\n var str = '';\n while (ch >= 0x20 && ch <= 0x39) {\n str += String.fromCharCode(ch);\n ch = stream.getByte();\n }\n startXRef = parseInt(str, 10);\n if (isNaN(startXRef)) {\n startXRef = 0;\n }\n }\n }\n return startXRef;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"isEncrypted\", {\n /**\n * Gets a value indicating whether the document is encrypted. (Read Only).\n *\n * @returns {boolean} A boolean value indicates whether the document is encrypted.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets a value indicating whether the document is encrypted.\n * let isEncrypted: boolean = document.isEncrypted;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._isEncrypted;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"isUserPassword\", {\n /**\n * Gets a value indicating whether the document is decrypted using the user password. (Read only).\n *\n * @returns {boolean} A boolean value indicates whether the document is decrypted using the user password.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets a value indicating whether the document is decrypted using the user password\n * let isUserPassword: boolean = document.isUserPassword;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._isUserPassword;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pageCount\", {\n /**\n * Gets the page count (Read only).\n *\n * @returns {number} Number of pages\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the page count\n * let count: number = document.pageCount;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._pageCount === 'undefined') {\n this._pageCount = 0;\n if (this._linearization && this._linearization.isValid) {\n this._pageCount = this._linearization.pageCount;\n }\n else {\n this._pageCount = this._catalog.pageCount;\n }\n }\n return this._pageCount;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"form\", {\n /**\n * Gets the PDF form fields included in the document (Read only).\n *\n * @returns {PdfForm} Form object\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access loaded form\n * let form: PdfForm = document.form;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this._form === 'undefined') {\n this._form = new PdfForm(this._catalog.acroForm, this._crossReference);\n }\n return this._form;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"flatten\", {\n /**\n * Gets the boolean flag to flatten the annotations and form fields.\n *\n * @returns {boolean} Flag to flatten\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the flatten value applied\n * let flatten: boolean = document.flatten;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._flatten;\n },\n /**\n * Sets the boolean flag to flatten the annotations and form fields.\n *\n * @param {boolean} value to flatten\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Flatten PDF annotations and form fields\n * document.flatten = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._flatten = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"permissions\", {\n /**\n * Gets the permission flag of the PDF document (Read only).\n *\n * @returns {PdfPermissionFlag} permission flag. Default value is PdfPermissionFlag.default.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Gets the permission flag\n * let permission: PdfPermissionFlag = document.permissions;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (this._crossReference) {\n var flag = this._crossReference._permissionFlags;\n if (typeof flag !== 'undefined') {\n this._permissions = (flag & ~-3904);\n }\n }\n return this._permissions;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"bookmarks\", {\n /**\n * Gets the bookmarks (Read only).\n *\n * @returns {PdfBookmarkBase} Bookmarks.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Get bookmarks\n * let bookmarks: PdfBookmarkBase = document.bookmarks;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var catalog = this._catalog;\n if (catalog && catalog._catalogDictionary.has('Outlines')) {\n var outlines = catalog._catalogDictionary.get('Outlines');\n if (outlines) {\n this._bookmarkBase = new PdfBookmarkBase(outlines, this._crossReference);\n if (outlines.has('First')) {\n this._bookmarkBase._reproduceTree();\n }\n }\n }\n return this._bookmarkBase;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"fileStructure\", {\n /**\n * Gets the internal structure of the PDF document.\n *\n * @returns {PdfFileStructure} The internal structure of the PDF document.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access the internal file structure of the PDF document\n * let fileStructure: PdfFileStructure = document.fileStructure;\n * // Get the cross reference type\n * let type: PdfCrossReferenceType = fileStructure.crossReferenceType;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._fileStructure;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `PdfPage` at the specified index.\n *\n * @param {number} pageIndex Page index.\n * @returns {PdfPage} PDF page at the specified index.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Access first page\n * let page: PdfPage = document.getPage(0);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfDocument.prototype.getPage = function (pageIndex) {\n var cachedPage = this._pages.get(pageIndex);\n if (cachedPage) {\n return cachedPage;\n }\n var _a = this, _catalog = _a._catalog, _linearization = _a._linearization;\n var promise;\n if (_linearization && _linearization.isValid && _linearization.pageFirst === pageIndex) {\n promise = this._getLinearizationPage(pageIndex);\n }\n else {\n promise = _catalog.getPageDictionary(pageIndex);\n }\n var page = new PdfPage(this._crossReference, pageIndex, promise.dictionary, promise.reference);\n this._pages.set(pageIndex, page);\n return page;\n };\n PdfDocument.prototype.save = function (filename) {\n this._doPostProcess(this._flatten);\n if (typeof filename === 'string') {\n Save.save(filename, new Blob([this._crossReference._save()], { type: 'application/pdf' }));\n }\n else {\n return this._crossReference._save();\n }\n };\n /**\n * Saves the document to the specified output stream and return the stream as Blob.\n *\n * @returns {Promise<{ blobData: Blob }>} Saved PDF data as `Blob`.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Save the document\n * let data: Promise<{ blobData: Blob }> = document.saveAsBlob();\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfDocument.prototype.saveAsBlob = function () {\n var _this = this;\n return new Promise(function (resolve) {\n var obj = { blobData: new Blob([_this._crossReference._save()], { type: 'application/pdf' }) };\n resolve(obj);\n });\n };\n PdfDocument.prototype.exportAnnotations = function (arg1, arg2) {\n this._isExport = true;\n this._doPostProcessOnAnnotations();\n var helper;\n var settings;\n if (arg1 && arg1 instanceof PdfAnnotationExportSettings) {\n settings = arg1;\n }\n else if (arg2 && arg2 instanceof PdfAnnotationExportSettings) {\n settings = arg2;\n }\n if (settings) {\n if (settings.dataFormat === DataFormat.xfdf) {\n helper = new _XfdfDocument();\n }\n else if (settings.dataFormat === DataFormat.json) {\n helper = new _JsonDocument();\n }\n else if (settings.dataFormat === DataFormat.fdf) {\n helper = new _FdfDocument();\n }\n else {\n return undefined;\n }\n helper.exportAppearance = settings.exportAppearance;\n }\n else {\n helper = new _XfdfDocument();\n }\n var result = helper._exportAnnotations(this);\n if (arg1 && typeof arg1 === 'string') {\n Save.save(arg1, new Blob([result], { type: 'text/plain' }));\n }\n else {\n return result;\n }\n };\n PdfDocument.prototype.exportFormData = function (arg1, arg2) {\n this._doPostProcessOnFormFields();\n var helper;\n var settings;\n if (arg1 && arg1 instanceof PdfFormFieldExportSettings) {\n settings = arg1;\n }\n else if (arg2 && arg2 instanceof PdfFormFieldExportSettings) {\n settings = arg2;\n }\n if (settings) {\n if (settings.dataFormat === DataFormat.xfdf) {\n helper = new _XfdfDocument(settings.exportName);\n }\n else if (settings.dataFormat === DataFormat.json) {\n helper = new _JsonDocument(settings.exportName);\n }\n else if (settings.dataFormat === DataFormat.fdf) {\n helper = new _FdfDocument(settings.exportName);\n }\n else if (settings.dataFormat === DataFormat.xml) {\n helper = new _XmlDocument(settings.exportName);\n }\n else {\n return undefined;\n }\n helper._asPerSpecification = settings.asPerSpecification;\n }\n else {\n helper = new _XfdfDocument();\n helper._asPerSpecification = false;\n }\n if (arg1 && typeof arg1 === 'string') {\n Save.save(arg1, new Blob([helper._exportFormFields(this)], { type: 'text/plain' }));\n }\n else {\n return helper._exportFormFields(this);\n }\n };\n PdfDocument.prototype.importAnnotations = function (data, dataFormat) {\n if (dataFormat === DataFormat.xfdf) {\n var xfdf = new _XfdfDocument();\n xfdf._importAnnotations(this, (typeof data === 'string') ? _decode(data) : data);\n }\n else if (dataFormat === DataFormat.json) {\n var json = new _JsonDocument();\n json._importAnnotations(this, (typeof data === 'string') ? _decode(data) : data);\n }\n else if (dataFormat === DataFormat.fdf) {\n var fdf = new _FdfDocument();\n fdf._importAnnotations(this, (typeof data === 'string') ? _decode(data) : data);\n }\n };\n PdfDocument.prototype.importFormData = function (data, dataFormat) {\n if (this.form.count > 0) {\n if (dataFormat === DataFormat.xfdf) {\n var xfdf = new _XfdfDocument();\n xfdf._importFormData(this, (typeof data === 'string') ? _decode(data) : data);\n }\n else if (dataFormat === DataFormat.json) {\n var json = new _JsonDocument();\n json._importFormData(this, (typeof data === 'string') ? _decode(data) : data);\n }\n else if (dataFormat === DataFormat.fdf) {\n var fdf = new _FdfDocument();\n fdf._importFormData(this, (typeof data === 'string') ? _decode(data) : data);\n }\n else if (dataFormat === DataFormat.xml) {\n var xml = new _XmlDocument();\n xml._importFormData(this, (typeof data === 'string') ? _decode(data) : data);\n }\n }\n };\n /**\n * Disposes the current instance of `PdfDocument` class.\n *\n * @returns {void} Nothing.\n *\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Destroy the document\n * document.destroy();\n * ```\n */\n PdfDocument.prototype.destroy = function () {\n if (this._crossReference) {\n this._crossReference._destroy();\n this._crossReference = undefined;\n }\n if (this._catalog) {\n this._catalog._destroy();\n this._catalog = undefined;\n }\n this._endObjSignature = undefined;\n this._headerSignature = undefined;\n if (this._pages && this._pages.size > 0) {\n this._pages.forEach(function (value) {\n value._destroy();\n });\n }\n this._pages.clear();\n this._pages = undefined;\n this._startXrefSignature = undefined;\n this._stream = undefined;\n this._form = undefined;\n _clearPrimitiveCaches();\n };\n Object.defineProperty(PdfDocument.prototype, \"_destinationCollection\", {\n get: function () {\n if (this._namedDestinationCollection === null || typeof this._namedDestinationCollection === 'undefined') {\n if (this._catalog._catalogDictionary.has('Names')) {\n var names = this._catalog._catalogDictionary.get('Names');\n this._namedDestinationCollection = new _PdfNamedDestinationCollection(names, this._crossReference);\n }\n else {\n this._namedDestinationCollection = new _PdfNamedDestinationCollection();\n }\n }\n return this._namedDestinationCollection;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocument.prototype._getLinearizationPage = function (pageIndex) {\n var _a = this, _catalog = _a._catalog, _linearization = _a._linearization, _crossReference = _a._crossReference;\n var ref = _PdfReference.get(_linearization.objectNumberFirst, 0);\n try {\n var obj = _crossReference._fetch(ref); // eslint-disable-line\n if (obj instanceof _PdfDictionary) {\n var type = obj.get('Type');\n if (_isName(type, 'Page') || (!obj.has('Type') && !obj.has('Kids'))) {\n if (!_catalog.pageKidsCountCache.has(ref)) {\n _catalog.pageKidsCountCache.put(ref, 1);\n }\n if (!_catalog.pageIndexCache.has(ref)) {\n _catalog.pageIndexCache.put(ref, 0);\n }\n return { dictionary: obj, reference: ref };\n }\n }\n throw new FormatError('The Linearization dictionary does not point to a valid Page dictionary.');\n }\n catch (reason) {\n return _catalog.getPageDictionary(pageIndex);\n }\n };\n PdfDocument.prototype._checkHeader = function () {\n var stream = this._stream;\n stream.reset();\n if (!this._find(stream, this._headerSignature)) {\n return;\n }\n stream.moveStart();\n var version = '';\n var ch = stream.getByte();\n while (ch > 0x20) {\n if (version.length >= 12) {\n break;\n }\n version += String.fromCharCode(ch);\n ch = stream.getByte();\n }\n if (!this._version) {\n this._version = version.substring(5);\n }\n };\n PdfDocument.prototype._parse = function (recoveryMode) {\n this._crossReference._parse(recoveryMode);\n this._catalog = new _PdfCatalog(this._crossReference);\n if (this._catalog.version) {\n this._version = this._catalog.version;\n }\n };\n PdfDocument.prototype._find = function (stream, signature, limit, backwards) {\n if (limit === void 0) { limit = 1024; }\n if (backwards === void 0) { backwards = false; }\n var signatureLength = signature.length;\n var scanBytes = stream.peekBytes(limit);\n var scanLength = scanBytes.length - signatureLength;\n if (scanLength <= 0) {\n return false;\n }\n if (backwards) {\n var signatureEnd = signatureLength - 1;\n var position = scanBytes.length - 1;\n while (position >= signatureEnd) {\n var j = 0;\n while (j < signatureLength && scanBytes[position - j] === signature[signatureEnd - j]) {\n j++;\n }\n if (j >= signatureLength) {\n stream.position += position - signatureEnd;\n return true;\n }\n position--;\n }\n }\n else {\n var position = 0;\n while (position <= scanLength) {\n var j = 0;\n while (j < signatureLength && scanBytes[position + j] === signature[j]) { // eslint-disable-line\n j++;\n }\n if (j >= signatureLength) {\n stream.position += position;\n return true;\n }\n position++;\n }\n }\n return false;\n };\n PdfDocument.prototype._doPostProcess = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n this._doPostProcessOnFormFields(isFlatten);\n this._doPostProcessOnAnnotations(isFlatten);\n };\n PdfDocument.prototype._doPostProcessOnFormFields = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n this.form._doPostProcess(isFlatten);\n if (isFlatten) {\n var formObject = this._catalog._catalogDictionary.getRaw('AcroForm');\n var dictionary = new _PdfDictionary(this._crossReference);\n dictionary._updated = true;\n if (formObject instanceof _PdfReference) {\n this._crossReference._cacheMap.set(formObject, dictionary);\n }\n else {\n this.form._dictionary = dictionary;\n this._crossReference._allowCatalog = true;\n }\n this.form._clear();\n }\n };\n PdfDocument.prototype._doPostProcessOnAnnotations = function (isFlatten) {\n if (isFlatten === void 0) { isFlatten = false; }\n for (var i = 0; i < this.pageCount; i++) {\n var page = this.getPage(i);\n page.annotations._isExport = this._isExport;\n page.annotations._doPostProcess(isFlatten);\n if (isFlatten) {\n if (page._pageDictionary.has('Annots')) {\n delete page._pageDictionary._map.Annots;\n page._pageDictionary._updated = true;\n }\n page.annotations._clear();\n }\n }\n };\n PdfDocument.prototype._addWatermarkText = function () {\n if (this.pageCount > 0) {\n for (var index = 0; index < this._pageCount; index++) {\n var page = this.getPage(index);\n if (page) {\n try {\n var graphics = page.graphics;\n graphics.save();\n graphics.setTransparency(0.20);\n graphics.drawRectangle(0, 0, page.size[0], 33.75, new PdfBrush([255, 255, 255]));\n graphics.restore();\n graphics.save();\n graphics.setTransparency(0.50);\n var font = new PdfStandardFont(PdfFontFamily.helvetica, 12, PdfFontStyle.regular);\n var format = new PdfStringFormat(PdfTextAlignment.center, PdfVerticalAlignment.middle);\n graphics.drawString('Created with a trial version of Syncfusion Essential PDF', font, [0, 0, page.size[0], 33.75], null, new PdfBrush([0, 0, 0]), format);\n graphics.restore();\n }\n catch (e) { } // eslint-disable-line\n }\n }\n }\n };\n return PdfDocument;\n}());\nexport { PdfDocument };\n/**\n * Represents annotation export settings.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Sets export data format as JSON type to annotation export settings\n * let settings: PdfAnnotationExportSettings = new PdfAnnotationExportSettings();\n * // Set the data format defined in annotation export settings\n * settings.dataFormat = DataFormat.json;\n * // Export annotations to JSON format\n * let json: Uint8Array = document.exportAnnotations(settings);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfAnnotationExportSettings = /** @class */ (function () {\n function PdfAnnotationExportSettings() {\n this._format = DataFormat.xfdf;\n this._exportAppearance = false;\n }\n Object.defineProperty(PdfAnnotationExportSettings.prototype, \"dataFormat\", {\n /**\n * Gets the data format defined in annotation export settings.\n *\n * @returns {DataFormat} - Returns the data format.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Sets export data format as JSON type to annotation export settings\n * let settings: PdfAnnotationExportSettings = new PdfAnnotationExportSettings();\n * // Export annotations to JSON format\n * let json: Uint8Array = document.exportAnnotations(settings);\n * // Get the data format defined in annotation export settings\n * let dataFormat: DataFormat = settings.dataFormat;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._format;\n },\n /**\n * Sets the data format defined in annotation export settings.\n *\n * @param {DataFormat} format - Specifies the data format.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Sets export data format as JSON type to annotation export settings\n * let settings: PdfAnnotationExportSettings = new PdfAnnotationExportSettings();\n * // Set the data format defined in annotation export settings\n * settings.dataFormat = DataFormat.json;\n * // Export annotations to JSON format\n * let json: Uint8Array = document.exportAnnotations(settings);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (format) {\n this._format = format;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotationExportSettings.prototype, \"exportAppearance\", {\n /**\n * Gets the boolean value indicating whether the appearance of a particular object can be exported or not.\n *\n * @returns {boolean} - Returns the boolean value.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Sets the annotation export settings with enabled export appearance.\n * let settings: PdfAnnotationExportSettings = new PdfAnnotationExportSettings();\n * // Export annotations to XFDF format\n * let xfdf: Uint8Array = document.exportAnnotations(settings);\n * // Get the boolean value indicating whether the appearance of a particular object can be exported or not\n * let appearance: boolean = settings.exportAppearance;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._exportAppearance;\n },\n /**\n * Sets the boolean value indicating whether the appearance of a particular object can be exported or not.\n *\n * @param {boolean} value - The boolean value.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data, password);\n * // Sets the annotation export settings with enabled export appearance.\n * let settings: PdfAnnotationExportSettings = new PdfAnnotationExportSettings();\n * // Set the boolean value indicating whether the appearance of a particular object can be exported or not\n * settings.exportAppearance = true;\n * // Export annotations to XFDF format\n * let xfdf: Uint8Array = document.exportAnnotations(settings);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._exportAppearance = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotationExportSettings;\n}());\nexport { PdfAnnotationExportSettings };\n/**\n * Represents form fields export settings.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Sets the form field data export settings with output data format.\n * let settings: PdfFormFieldExportSettings = new PdfFormFieldExportSettings();\n * // Set the data format defined in form field export settings.\n * settings.dataFormat = DataFormat.json;\n * // Export form field to JSON format\n * let json: Uint8Array = document.exportFormData(settings);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfFormFieldExportSettings = /** @class */ (function () {\n function PdfFormFieldExportSettings() {\n this._format = DataFormat.xfdf;\n this._exportName = '';\n this._asPerSpecification = true;\n }\n Object.defineProperty(PdfFormFieldExportSettings.prototype, \"dataFormat\", {\n /**\n * Gets the data format defined in form field export settings.\n *\n * @returns {DataFormat} - Returns the data format.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Sets the form field data export settings with output data format.\n * let settings: PdfFormFieldExportSettings = new PdfFormFieldExportSettings();\n * // Export form field to JSON format\n * let json: Uint8Array = document.exportFormData(settings);\n * // Get the data format defined in form field export settings\n * let dataFormat: DataFormat = settings.dataFormat;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._format;\n },\n /**\n * Sets the data format defined in form field export settings.\n *\n * @param {DataFormat} format - Specifies the data format.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Sets the form field data export settings with output data format.\n * let settings: PdfFormFieldExportSettings = new PdfFormFieldExportSettings();\n * // Set the data format defined in form field export settings.\n * settings.dataFormat = DataFormat.json;\n * // Export form field to JSON format\n * let json: Uint8Array = document.exportFormData(settings);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (format) {\n this._format = format;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFormFieldExportSettings.prototype, \"exportName\", {\n /**\n * Gets the export name defined in form field export settings.\n *\n * @returns {string} - Returns the string value.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Sets the form field data export settings with export name.\n * let settings: PdfFormFieldExportSettings = new PdfFormFieldExportSettings();\n * // Export form field to JSON format\n * let json: Uint8Array = document.exportFormData(settings);\n * // Get the export name defined in form field export settings\n * let name: boolean = settings.exportName;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._exportName;\n },\n /**\n * Sets the export name defined in form field export settings.\n *\n * @param {string} name - Specifies the export name of the form.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Sets the form field data export settings with export name.\n * let settings: PdfFormFieldExportSettings = new PdfFormFieldExportSettings();\n * // Set the export name defined in form field export settings.\n * settings.exportName = ‘JobApplication’.\n * // Export form field to JSON format\n * let json: Uint8Array = document.exportFormData(settings);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (name) {\n this._exportName = name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFormFieldExportSettings.prototype, \"asPerSpecification\", {\n /**\n * Gets the boolean value indicating whether the data in a form field can be exported based on a certain specification.\n *\n * @returns {boolean} - Returns the boolean value.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Sets the boolean value indicating whether the data in a form field can be exported based on a certain specification.\n * let settings: PdfFormFieldExportSettings = new PdfFormFieldExportSettings();\n * // Export form field to JSON format\n * let json: Uint8Array = document.exportFormData(settings);\n * // Get the boolean value indicating whether the data in a form field can be exported based on a certain specification.\n * let asPerSpecification: boolean = settings.asPerSpecification;\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._asPerSpecification;\n },\n /**\n * Sets the boolean value indicating whether the data in a form field can be exported based on a certain specification.\n *\n * @param {boolean} value - The boolean value.\n * ```typescript\n * // Load an existing PDF document\n * let document: PdfDocument = new PdfDocument(data);\n * // Sets the boolean value indicating whether the data in a form field can be exported based on a certain specification.\n * let settings: PdfFormFieldExportSettings = new PdfFormFieldExportSettings();\n * // Set the boolean value indicating whether the data in a form field can be exported based on a certain specification.\n * settings.asPerSpecification = true;\n * // Export form field to JSON format\n * let json: Uint8Array = document.exportFormData(settings);\n * // Save the document\n * document.save('output.pdf');\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._asPerSpecification = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFormFieldExportSettings;\n}());\nexport { PdfFormFieldExportSettings };\n","import { PageRenderer, FormFieldsBase, AnnotationRenderer, SignatureBase, BookmarkStyles, BookmarkDestination, BookmarkBase, AnnotBounds } from './index';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataFormat, PdfAnnotationExportSettings, PdfDocument, PdfRotationAngle, PdfTextStyle, PdfDocumentLinkAnnotation, PdfTextWebLinkAnnotation, PdfUriAnnotation, PdfPermissionFlag, PdfFormFieldExportSettings, _bytesToString, _encode } from '@syncfusion/ej2-pdf';\nimport { Size } from '@syncfusion/ej2-drawings';\n/**\n * PdfRenderer\n *\n * @hidden\n */\nvar PdfRenderer = /** @class */ (function () {\n /**\n * @param {PdfViewer} pdfViewer - The PdfViewer.\n * @param {PdfViewerBase} pdfViewerBase - The PdfViewerBase.\n * @private\n */\n function PdfRenderer(pdfViewer, pdfViewerBase) {\n /**\n * @private\n **/\n this.bookmarkStyles = [];\n /**\n * @private\n **/\n this.bookmarkCollection = [];\n /**\n * @private\n **/\n this.pageRotationCollection = [];\n /**\n * @private\n **/\n this.bookmarkDictionary = {};\n this.annotationDetailCollection = {};\n this.pageSizes = {};\n this.m_isCompletePageSizeNotReceieved = true;\n this.x = 0;\n this.y = 0;\n this.zoom = 1;\n this.id = 0;\n this.pageIndex = 0;\n this.scaleFactor = 1.5;\n this.restrictionList = [];\n this.securityList = ['Print', 'EditContent', 'CopyContent', 'EditAnnotations', 'FillFields', 'AccessibilityCopyContent', 'AssembleDocument', 'FullQualityPrint'];\n this._fallbackFontCollection = {};\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n Object.defineProperty(PdfRenderer.prototype, \"PageCount\", {\n /**\n * @private\n */\n get: function () {\n return this.pageCount;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRenderer.prototype, \"ReferencePath\", {\n /**\n * @private\n */\n get: function () {\n return this.m_referencePath;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRenderer.prototype, \"referencePath\", {\n /**\n * @private\n */\n set: function (v) {\n this.m_referencePath = v;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRenderer.prototype, \"ScaleFactor\", {\n /**\n * @private\n */\n get: function () {\n return this.scaleFactor;\n },\n /**\n * @private\n */\n set: function (v) {\n this.scaleFactor = v;\n if (this.scaleFactor <= 0) {\n this.scaleFactor = 1;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRenderer.prototype, \"FallbackFontCollection\", {\n /**\n * @private\n */\n get: function () {\n return this._fallbackFontCollection;\n ;\n },\n /**\n * @private\n */\n set: function (v) {\n this._fallbackFontCollection = v;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @private\n */\n PdfRenderer.prototype.load = function (documentData, documentId, password, jsonObject) {\n try {\n if (jsonObject.action !== \"VirtualLoad\") {\n this.loadedDocument = new PdfDocument(documentData, password ? password : '');\n this.loadedBase64String = documentData;\n this.password = password;\n this.m_isCompletePageSizeNotReceieved = true;\n }\n }\n catch (error) {\n if (error.message === 'Invalid PDF structure.') {\n return '3';\n }\n else if (error.message === 'Cannot open an encrypted document. The password is invalid.') {\n return '4';\n }\n else if (error.message === 'Invalid cross reference') {\n return '4';\n }\n else {\n return error.message;\n }\n }\n var jsonResult = this.loadDocument(documentData, documentId, password, jsonObject);\n this.bookmarkStyles = [];\n this.bookmarkCollection = [];\n this.bookmarkDictionary = {};\n return JSON.stringify(jsonResult);\n };\n /**\n * @private\n */\n PdfRenderer.prototype.loadDocument = function (documentData, documentId, password, jsonObject) {\n if (jsonObject.hasOwnProperty(\"isCompletePageSizeNotReceived\")) {\n this.m_isCompletePageSizeNotReceieved = !jsonObject.isCompletePageSizeNotReceived;\n }\n this.pageCount = this.loadedDocument.pageCount;\n this.pageSizes = this.getPageSizes(this.pageCount);\n var pdfRenderedFormFields = [];\n var isDigitalSignaturePresent = false;\n var isTaggedPdf = false; //Need to check and set if loaddocument is tagged pdf\n this.m_formFields = new FormFieldsBase(this.pdfViewer, this.pdfViewerBase, isDigitalSignaturePresent);\n this.restrictionList = [];\n if (!isNullOrUndefined(this.loadedDocument)) {\n this.documentSecurity(password);\n }\n if (!isNullOrUndefined(this.loadedDocument)) {\n if (jsonObject.hasOwnProperty(\"hideEmptyDigitalSignatureFields\")) {\n this.m_formFields.hideEmptyDigitalSignatureFields = jsonObject[\"hideEmptyDigitalSignatureFields\"];\n }\n if (jsonObject.hasOwnProperty(\"showDigitalSignatureAppearance\")) {\n this.m_formFields.showDigitalSignatureAppearance = jsonObject[\"showDigitalSignatureAppearance\"];\n }\n }\n if (!isNullOrUndefined(this.m_formFields) && this.pageCount <= 100) {\n this.m_formFields.GetFormFields();\n pdfRenderedFormFields = this.m_formFields.PdfRenderedFormFields;\n }\n if (this.m_formFields.m_isDigitalSignaturePresent) {\n this.digitialByteArray = this.loadedDocument.save();\n }\n // eslint-disable-next-line max-len\n return { pageCount: this.pageCount, pageSizes: this.pageSizes, uniqueId: documentId, PdfRenderedFormFields: pdfRenderedFormFields, RestrictionSummary: this.restrictionList, documentData: documentData, isDigitalSignaturePresent: this.m_formFields.m_isDigitalSignaturePresent, digitialSignatureFile: this.digitialByteArray ? _encode(this.digitialByteArray) : \"\", isTaggedPdf: isTaggedPdf, pageRotation: this.pageRotationCollection };\n };\n PdfRenderer.prototype.documentSecurity = function (password) {\n // eslint-disable-next-line max-len\n var isOwnerPassword = this.loadedDocument.isEncrypted && (!this.loadedDocument.isUserPassword || this.loadedDocument._hasUserPasswordOnly);\n if (!isNullOrUndefined(password) && password !== '' && isOwnerPassword) {\n this.restrictionSummary(password, true);\n }\n else {\n this.restrictionSummary(password, false);\n }\n };\n PdfRenderer.prototype.restrictionSummary = function (password, isOwner) {\n var ownerPassword = password ? password : ''; //Need to set owner password from loaded document\n var userPassword = password ? password : ''; //Need to set user password from loaded document\n var permissionList = this.getPermissionArray(this.loadedDocument.permissions);\n var isEncrypted = this.loadedDocument.isEncrypted;\n if ((!(permissionList.length === 1 && permissionList[0] === 'Default')) || (isEncrypted && ownerPassword === '' && userPassword === '')) {\n for (var i = 0; i < this.securityList.length; i++) {\n var isExist = false;\n for (var j = 0; j < permissionList.length; j++) {\n if (permissionList[parseInt(j.toString(), 10)].trim() === this.securityList[parseInt(i.toString(), 10)].trim()) {\n isExist = true;\n break;\n }\n }\n if (!isExist && !isOwner) {\n this.restrictionList.push(this.securityList[parseInt(i.toString(), 10)].trim());\n }\n }\n }\n else if (permissionList.length === 1 && permissionList[0] === 'Default' && isEncrypted && !isOwner) {\n for (var i = 0; i < this.securityList.length; i++) {\n this.restrictionList.push(this.securityList[parseInt(i.toString(), 10)].trim());\n }\n }\n };\n PdfRenderer.prototype.getPermissionArray = function (permission) {\n var permissionArray = [];\n var length = !isNullOrUndefined(permission.count) ? permission.count : 1;\n for (var i = 0; i < length; i++) {\n switch (permission) {\n case PdfPermissionFlag.fullQualityPrint:\n permissionArray.push('FullQualityPrint');\n break;\n case PdfPermissionFlag.assembleDocument:\n permissionArray.push('AssembleDocument');\n break;\n case PdfPermissionFlag.accessibilityCopyContent:\n permissionArray.push('AccessibilityCopyContent');\n break;\n case PdfPermissionFlag.fillFields:\n permissionArray.push('FillFields');\n break;\n case PdfPermissionFlag.editAnnotations:\n permissionArray.push('EditAnnotations');\n break;\n case PdfPermissionFlag.copyContent:\n permissionArray.push('CopyContent');\n break;\n case PdfPermissionFlag.editContent:\n permissionArray.push('EditContent');\n break;\n case PdfPermissionFlag.print:\n permissionArray.push('Print');\n break;\n case PdfPermissionFlag.default:\n permissionArray.push('Default');\n break;\n }\n }\n return permissionArray;\n };\n PdfRenderer.prototype.getPageSizes = function (pageCount) {\n var pageSizes = {};\n var pageLimit = pageCount;\n if (pageCount > 100) {\n pageLimit = 100;\n }\n if (this.m_isCompletePageSizeNotReceieved) {\n for (var i = 0; i < pageLimit; i++) {\n pageSizes[i.toString()] = this.getPageSize(i);\n var page = this.loadedDocument.getPage(i);\n var rotation = page.rotation % 4;\n this.pageRotationCollection.push(rotation);\n }\n }\n else {\n for (var i = pageLimit; i < pageCount; i++) {\n pageSizes[i.toString()] = this.getPageSize(i);\n var page = this.loadedDocument.getPage(i);\n var rotation = page.rotation % 4;\n this.pageRotationCollection.push(rotation);\n }\n }\n return pageSizes;\n };\n PdfRenderer.prototype.getPageSize = function (pageNumber) {\n var page = this.loadedDocument.getPage(pageNumber);\n var size = page.size;\n var rotation = page.rotation % 4;\n // eslint-disable-next-line max-len\n if (rotation === PdfRotationAngle.angle0 || rotation === PdfRotationAngle.angle180) {\n return new Size(this.convertPointToPixel(size[0]), this.convertPointToPixel(size[1]));\n }\n else {\n return new Size(this.convertPointToPixel(size[1]), this.convertPointToPixel(size[0]));\n }\n };\n PdfRenderer.prototype.convertPointToPixel = function (number) {\n return number * 96 / 72;\n };\n PdfRenderer.prototype.convertPixelToPoint = function (value) {\n return (value * (72 / 96));\n };\n /**\n * @private\n */\n PdfRenderer.prototype.getDocumentAsBase64 = function (jsonObject) {\n var base64string = null;\n if (jsonObject.hasOwnProperty('digitalSignatureDocumentEdited') && !jsonObject.digitalSignatureDocumentEdited) {\n this.loadedDocument = new PdfDocument(this.loadedBase64String, this.password);\n return \"data:application/pdf;base64,\" + _encode(this.loadedDocument.save());\n }\n else {\n var annotationRenderer = new AnnotationRenderer(this.pdfViewer, this.pdfViewerBase);\n var formfields = new FormFieldsBase(this.pdfViewer, this.pdfViewerBase);\n var signatureModule = new SignatureBase(this.pdfViewer, this.pdfViewerBase);\n // create object for form fields signature\n annotationRenderer.removeSignatureTypeAnnot(jsonObject, this.loadedDocument);\n this.orderAnnotations(jsonObject);\n return \"data:application/pdf;base64,\" + _encode(this.loadedDocument.save());\n }\n };\n /**\n * @private\n */\n PdfRenderer.prototype.importAnnotations = function (jsonObject) {\n try {\n var annotationRenderer = new AnnotationRenderer(this.pdfViewer, this.pdfViewerBase);\n var annotData = jsonObject['importedData'];\n annotationRenderer.removeSignatureTypeAnnot(jsonObject, this.loadedDocument);\n var annotationDataFormat = jsonObject['annotationDataFormat'];\n if (typeof annotationDataFormat === 'string') {\n this.loadedDocument._allowImportCustomData = true;\n switch (annotationDataFormat.toLowerCase()) {\n case 'json':\n this.loadedDocument.importAnnotations(annotData, DataFormat.json);\n break;\n case 'xfdf':\n this.loadedDocument.importAnnotations(annotData, DataFormat.xfdf);\n break;\n default:\n break;\n }\n for (var i = 0; i < this.loadedDocument.pageCount; i++) {\n var pageNumber = i;\n var pageSize = this.getPageSize(pageNumber);\n var renderer = new PageRenderer(this.pdfViewer, this.pdfViewerBase);\n renderer.exportAnnotationComments(pageNumber, pageSize);\n this.annotationDetailCollection[i.toString()] = new Annotations();\n this.annotationDetailCollection[parseInt(i.toString(), 10)].textMarkupAnnotation = renderer.textMarkupAnnotationList;\n this.annotationDetailCollection[parseInt(i.toString(), 10)].shapeAnnotation = renderer.shapeAnnotationList;\n this.annotationDetailCollection[parseInt(i.toString(), 10)].measureShapeAnnotation = renderer.measureAnnotationList;\n this.annotationDetailCollection[parseInt(i.toString(), 10)].stampAnnotations = renderer.rubberStampAnnotationList;\n this.annotationDetailCollection[parseInt(i.toString(), 10)].stickyNotesAnnotation = renderer.stickyAnnotationList;\n this.annotationDetailCollection[parseInt(i.toString(), 10)].freeTextAnnotation = renderer.freeTextAnnotationList;\n this.annotationDetailCollection[parseInt(i.toString(), 10)].signatureAnnotation = renderer.signatureAnnotationList;\n this.annotationDetailCollection[parseInt(i.toString(), 10)].signatureInkAnnotation = renderer.signatureInkAnnotationList;\n this.annotationDetailCollection[parseInt(i.toString(), 10)].annotationOrder = renderer.annotationOrder;\n this.removeAnnotationsFromCollection(renderer);\n }\n var returnAnnot = JSON.parse(JSON.stringify(this.annotationDetailCollection));\n if (jsonObject.hasOwnProperty('uniqueId')) {\n return { pdfAnnotation: returnAnnot, uniqueId: jsonObject['uniqueId'] };\n }\n else {\n return { pdfAnnotation: returnAnnot };\n }\n }\n }\n catch (e) {\n return e.message;\n }\n };\n PdfRenderer.prototype.removeAnnotationsFromCollection = function (renderer) {\n renderer.textMarkupAnnotationList = [];\n renderer.shapeAnnotationList = [];\n renderer.measureAnnotationList = [];\n renderer.rubberStampAnnotationList = [];\n renderer.stickyAnnotationList = [];\n renderer.freeTextAnnotationList = [];\n renderer.signatureAnnotationList = [];\n renderer.signatureInkAnnotationList = [];\n renderer.annotationOrder = [];\n };\n /**\n * @private\n */\n PdfRenderer.prototype.exportAnnotation = function (jsonObject, isObject) {\n var annotationRenderer = new AnnotationRenderer(this.pdfViewer, this.pdfViewerBase);\n annotationRenderer.removeSignatureTypeAnnot(jsonObject, this.loadedDocument);\n this.orderAnnotations(jsonObject);\n var settings = new PdfAnnotationExportSettings();\n var annotationDataFormat = jsonObject['annotationDataFormat'];\n var fileName;\n var exportObject;\n if (typeof annotationDataFormat === 'string') {\n switch (annotationDataFormat.toLowerCase()) {\n case 'json':\n settings.dataFormat = DataFormat.json;\n if (isObject) {\n settings.exportAppearance = isObject;\n exportObject = this.loadedDocument.exportAnnotations(settings);\n return \"data:application/json;base64,\" + _encode(this.loadedDocument.exportAnnotations(settings));\n }\n else {\n fileName = this.changeFileExtension(this.pdfViewer.fileName, 'json');\n return \"data:application/json;base64,\" + _encode(this.loadedDocument.exportAnnotations(settings));\n }\n case 'xfdf':\n settings.dataFormat = DataFormat.xfdf;\n if (isObject) {\n settings.exportAppearance = isObject;\n exportObject = this.loadedDocument.exportAnnotations(settings);\n return \"data:application/json;base64,\" + _encode(this.loadedDocument.exportAnnotations(settings));\n }\n else {\n fileName = this.changeFileExtension(this.pdfViewer.fileName, 'xfdf');\n return \"data:application/json;base64,\" + _encode(this.loadedDocument.exportAnnotations(settings));\n }\n // Add more cases for other supported formats as needed\n default:\n break;\n }\n }\n return '';\n };\n PdfRenderer.prototype.changeFileExtension = function (filename, newExtension) {\n var lastDotIndex = filename.lastIndexOf('.');\n if (lastDotIndex === -1) {\n // No extension found in the filename\n return filename + '.' + newExtension;\n }\n var nameWithoutExtension = filename.slice(0, lastDotIndex);\n return nameWithoutExtension + '.' + newExtension;\n };\n PdfRenderer.prototype.orderAnnotations = function (jsonObject) {\n var annotationRenderer = new AnnotationRenderer(this.pdfViewer, this.pdfViewerBase);\n var formfields = new FormFieldsBase(this.pdfViewer, this.pdfViewerBase);\n var signatureModule = new SignatureBase(this.pdfViewer, this.pdfViewerBase);\n if (jsonObject.hasOwnProperty('isAnnotationsExist') && jsonObject.isAnnotationsExist) {\n if (jsonObject.hasOwnProperty('annotationCollection')) {\n var annotationDetails = JSON.parse(jsonObject.annotationCollection);\n var count = annotationDetails.length;\n var _loop_1 = function (i) {\n var annotationType = annotationDetails[parseInt(i.toString(), 10)].shapeAnnotationType;\n var details = annotationDetails[parseInt(i.toString(), 10)];\n if (details.hasOwnProperty('calibrate') && (details['shapeAnnotationType'] === 'Circle' || details['shapeAnnotationType'] === 'Line' || details['shapeAnnotationType'] === 'Polygon' || details['shapeAnnotationType'] === 'Polyline')) {\n annotationType = 'measureShapes';\n }\n else if (!(details.hasOwnProperty('calibrate')) && (details['shapeAnnotationType'] === 'Line' || details['shapeAnnotationType'] === 'Circle' || details['shapeAnnotationType'] === 'Polygon' || details['shapeAnnotationType'] === 'Square')) {\n annotationType = 'shapeAnnotation';\n }\n switch (annotationType) {\n case 'textMarkup':\n if (jsonObject.hasOwnProperty('textMarkupAnnotations')) {\n var textMarkupDetails = JSON.parse(jsonObject.textMarkupAnnotations);\n var pageNumber = details['pageNumber'].toString();\n var annotationCount = textMarkupDetails[parseInt(pageNumber, 10)];\n var pageAnnotations = annotationCount;\n var textMarkup = pageAnnotations.find(function (obj) { return obj['annotName'].toString() === details['annotationId'].toString(); });\n if (textMarkup) {\n details = textMarkup;\n annotationRenderer.addTextMarkup(details, this_1.loadedDocument);\n }\n }\n break;\n case 'shapeAnnotation':\n if (jsonObject.hasOwnProperty('shapeAnnotations')) {\n var shapeDetails = JSON.parse(jsonObject.shapeAnnotations);\n var pageNumber = details['pageNumber'].toString();\n var annotationCount = shapeDetails[parseInt(pageNumber, 10)];\n var pageAnnotations = annotationCount;\n var page = this_1.loadedDocument.getPage(parseInt(pageNumber, 10));\n var shape = pageAnnotations.find(function (obj) { return obj['annotName'].toString() === details['annotationId'].toString(); });\n if (shape) {\n details = shape;\n annotationRenderer.addShape(details, page);\n }\n }\n break;\n case 'stamp':\n if (jsonObject.hasOwnProperty('stampAnnotations')) {\n var stampdetails = JSON.parse(jsonObject.stampAnnotations);\n var pageNumber = details['pageNumber'].toString();\n var annotationCount = stampdetails[parseInt(pageNumber, 10)];\n var pageAnnotations = annotationCount;\n var page = this_1.loadedDocument.getPage(parseInt(pageNumber, 10));\n var stamp = pageAnnotations.find(function (obj) { return obj['annotName'].toString() === details['annotationId'].toString(); });\n if (stamp) {\n details = stamp;\n annotationRenderer.addCustomStampAnnotation(details, page);\n }\n }\n break;\n case 'measureShapes':\n if (jsonObject.hasOwnProperty('measureShapeAnnotations')) {\n var shapeDetails = JSON.parse(jsonObject.measureShapeAnnotations);\n var pageNumber = details['pageNumber'].toString();\n var annotationCount = shapeDetails[parseInt(pageNumber, 10)];\n var pageAnnotations = annotationCount;\n var page = this_1.loadedDocument.getPage(parseInt(pageNumber, 10));\n var shape = pageAnnotations.find(function (obj) { return obj['annotName'].toString() === details['annotationId'].toString(); });\n if (shape) {\n details = shape;\n annotationRenderer.addMeasure(details, page);\n }\n }\n break;\n case 'sticky':\n if (jsonObject.hasOwnProperty('stickyNotesAnnotation')) {\n var shapeDetails = JSON.parse(jsonObject.stickyNotesAnnotation);\n var pageNumber = details['pageNumber'].toString();\n var annotationCount = shapeDetails[parseInt(pageNumber, 10)];\n var pageAnnotations = annotationCount;\n var page = this_1.loadedDocument.getPage(parseInt(pageNumber, 10));\n var shape = pageAnnotations.find(function (obj) { return obj['annotName'].toString() === details['annotationId'].toString(); });\n if (shape) {\n details = shape;\n annotationRenderer.addStickyNotes(details, page);\n }\n }\n break;\n case \"Ink\":\n if (jsonObject.hasOwnProperty('inkSignatureData')) {\n var shapeDetails = JSON.parse(jsonObject.inkSignatureData);\n var pageNumber = details['pageNumber'].toString();\n var annotationCount = shapeDetails[parseInt(pageNumber, 10)];\n var pageAnnotations = annotationCount;\n var page = this_1.loadedDocument.getPage(parseInt(pageNumber, 10));\n var shape = pageAnnotations.find(function (obj) { return obj['annotName'].toString() === details['annotationId'].toString(); });\n if (shape) {\n details = shape;\n annotationRenderer.saveInkSignature(details, page);\n }\n }\n break;\n case 'FreeText':\n if (jsonObject.hasOwnProperty('freeTextAnnotation')) {\n var freeTextDetails = JSON.parse(jsonObject.freeTextAnnotation);\n var pageNumber = details['pageNumber'].toString();\n var annotationCount = freeTextDetails[parseInt(pageNumber, 10)];\n var pageAnnotations = annotationCount;\n var page = this_1.loadedDocument.getPage(parseInt(pageNumber, 10));\n var freeText = pageAnnotations.find(function (obj) { return obj['annotName'].toString() === details['annotationId'].toString(); });\n if (!isNullOrUndefined(freeText)) {\n details = freeText;\n if (!isNullOrUndefined(this_1.FallbackFontCollection) && this_1.FallbackFontCollection.length !== 0) {\n annotationRenderer.addFreeText(details, page, this_1.FallbackFontCollection);\n }\n else {\n annotationRenderer.addFreeText(details, page);\n }\n }\n }\n break;\n default:\n break;\n }\n };\n var this_1 = this;\n for (var i = 0; i < count; i++) {\n _loop_1(i);\n }\n if (jsonObject.signatureData) {\n if (jsonObject.isSignatureEdited) {\n signatureModule.saveSignatureAsAnnotatation(jsonObject, this.loadedDocument);\n }\n else {\n signatureModule.saveSignatureData(jsonObject, this.loadedDocument);\n }\n }\n }\n }\n if (jsonObject.hasOwnProperty('isFormFieldAnnotationsExist') && jsonObject.isFormFieldAnnotationsExist) {\n if (jsonObject.hasOwnProperty('formDesigner')) {\n formfields.saveFormFieldsDesignerData(jsonObject);\n }\n else if (jsonObject.hasOwnProperty('fieldsData')) {\n formfields.saveFormFieldsData(jsonObject);\n }\n }\n };\n /**\n * @private\n */\n PdfRenderer.prototype.getAnnotationComments = function (jsonObject) {\n try {\n var loadedDocument = this.loadedDocument;\n if (jsonObject.hasOwnProperty('pageStartIndex') && !isNullOrUndefined(jsonObject.pageStartIndex)) {\n var pageStartIndex = parseInt(jsonObject.pageStartIndex, 10);\n var pageEndIndex = parseInt(jsonObject.pageEndIndex, 10);\n var annotationDetails = {};\n for (var i = pageStartIndex; i < pageEndIndex; i++) {\n var pageNumber = i;\n var pageSize = this.getPageSize(pageNumber);\n this.renderer = new PageRenderer(this.pdfViewer, this.pdfViewerBase);\n annotationDetails[pageNumber.toString()] = this.renderer.exportAnnotationComments(pageNumber, pageSize);\n }\n // eslint-disable-next-line max-len\n return { uniqueId: jsonObject.uniqueId, annotationDetails: annotationDetails, startPageIndex: pageStartIndex, endPageIndex: pageEndIndex, isAnnotationPresent: this.renderer.isAnnotationPresent };\n }\n return '';\n }\n catch (error) {\n return error.message;\n }\n };\n /**\n * @private\n */\n PdfRenderer.prototype.getBookmarks = function (jsonObject) {\n try {\n var bookmark = this.loadedDocument.bookmarks;\n if (!isNullOrUndefined(bookmark) && jsonObject.hasOwnProperty('bookmarkStyles')) {\n for (var i = 0; i < bookmark.count; i++) {\n this.retrieveFontStyles(bookmark.at(i), false);\n }\n }\n // eslint-disable-next-line max-len\n if (isNullOrUndefined(bookmark) || isNullOrUndefined(bookmark.count) || bookmark.count === 0) {\n return null;\n }\n else {\n for (var i = 0; i < bookmark.count; i++) {\n var pdfLoadedBookmark = bookmark.at(i);\n var parentBookmarkDestination = new BookmarkDestination();\n // eslint-disable-next-line max-len\n var bookmarkDestination = pdfLoadedBookmark.destination ? pdfLoadedBookmark.destination : pdfLoadedBookmark.namedDestination ? pdfLoadedBookmark.namedDestination.destination ? pdfLoadedBookmark.namedDestination.destination : null : null;\n // eslint-disable-next-line max-len\n parentBookmarkDestination.X = !isNullOrUndefined(bookmarkDestination) ? bookmarkDestination.location[0] : 0;\n // eslint-disable-next-line max-len\n parentBookmarkDestination.PageIndex = !isNullOrUndefined(bookmarkDestination) ? bookmarkDestination.pageIndex : 0;\n // eslint-disable-next-line max-len\n parentBookmarkDestination.Zoom = !isNullOrUndefined(bookmarkDestination) ? bookmarkDestination.zoom : 0;\n // eslint-disable-next-line max-len\n var parentBookmark = new BookmarkBase();\n parentBookmark.Id = ++this.id;\n parentBookmark.Title = pdfLoadedBookmark.title;\n parentBookmark.Child = [];\n parentBookmark.FileName = !isNullOrUndefined(pdfLoadedBookmark.action) ? pdfLoadedBookmark.action.toString() : '';\n if (!isNullOrUndefined(bookmarkDestination)) {\n if (bookmarkDestination.page.rotation === PdfRotationAngle.angle90) {\n // eslint-disable-next-line max-len\n parentBookmarkDestination.Y = this.convertPointToPixel(bookmarkDestination.page.size[0]) - this.convertPointToPixel(Math.abs(bookmarkDestination.location[1]));\n }\n else if (bookmarkDestination.page.rotation === PdfRotationAngle.angle270) {\n parentBookmarkDestination.Y = this.convertPointToPixel(Math.abs(bookmarkDestination.location[1]));\n }\n else {\n // eslint-disable-next-line max-len\n parentBookmarkDestination.Y = this.convertPointToPixel(bookmarkDestination.page.size[1]) - this.convertPointToPixel(Math.abs(bookmarkDestination.location[1]));\n }\n }\n else {\n parentBookmarkDestination.Y = 0;\n }\n this.bookmarkDictionary[this.id.toString()] = parentBookmarkDestination;\n parentBookmark.Child = this.getChildrenBookmark(pdfLoadedBookmark);\n if (parentBookmark.Child.length > 0) {\n parentBookmark.HasChild = true;\n }\n this.bookmarkCollection.push(parentBookmark);\n }\n }\n if (jsonObject.hasOwnProperty('uniqueId')) {\n return { Bookmarks: JSON.parse(JSON.stringify(this.bookmarkCollection)), BookmarksDestination: JSON.parse(JSON.stringify(this.bookmarkDictionary)), uniqueId: jsonObject['uniqueId'].toString(), Bookmarkstyles: JSON.parse(JSON.stringify(this.bookmarkStyles)) };\n }\n else {\n // eslint-disable-next-line max-len\n return { Bookmarks: JSON.parse(JSON.stringify(this.bookmarkCollection)), BookmarksDestination: JSON.parse(JSON.stringify(this.bookmarkDictionary)), Bookmarkstyles: JSON.parse(JSON.stringify(this.bookmarkStyles)) };\n }\n }\n catch (error) {\n return error.message;\n }\n };\n PdfRenderer.prototype.retrieveFontStyles = function (listElement, isChild) {\n var currentElement = listElement;\n var currentStyles = new BookmarkStyles();\n if (!isNullOrUndefined(currentElement)) {\n if (!isNullOrUndefined(currentElement.color)) {\n currentStyles.Color = 'rgba(' + currentElement.color[0] + ',' + currentElement.color[1] + ',' + currentElement.color[2] + ',' + 1 + ')';\n }\n currentStyles.FontStyle = this.getPdfTextStyleString(currentElement.textStyle);\n currentStyles.Text = currentElement.title;\n currentStyles.IsChild = isChild;\n this.bookmarkStyles.push(currentStyles);\n this.getChildrenStyles(listElement);\n }\n };\n PdfRenderer.prototype.getPdfTextStyleString = function (textStyle) {\n switch (textStyle) {\n case PdfTextStyle.bold:\n return 'Bold';\n case PdfTextStyle.italic:\n return 'Italic';\n case PdfTextStyle.regular:\n return 'Regular';\n default:\n return 'Regular';\n }\n };\n PdfRenderer.prototype.getChildrenStyles = function (bookmarks) {\n for (var i = 0; i < bookmarks.count; i++) {\n this.retrieveFontStyles(bookmarks.at(i), true);\n }\n };\n PdfRenderer.prototype.getChildrenBookmark = function (pdfLoadedBookmark) {\n var childBookmarkCollection = [];\n if (!isNullOrUndefined(pdfLoadedBookmark) && !isNullOrUndefined(pdfLoadedBookmark.count) && pdfLoadedBookmark.count > 0) {\n for (var i = 0; i < pdfLoadedBookmark.count; i++) {\n var child = pdfLoadedBookmark.at(i);\n // eslint-disable-next-line max-len\n var childBookmarkDestination = child.destination ? child.destination : child.namedDestination ? child.namedDestination.destination ? child.namedDestination.destination : null : null;\n this.id++;\n var title = child.title;\n this.pageIndex = !isNullOrUndefined(childBookmarkDestination) ? childBookmarkDestination.pageIndex : 0;\n this.x = !isNullOrUndefined(childBookmarkDestination) ? childBookmarkDestination.location[0] : 0;\n var yPosition = !isNullOrUndefined(childBookmarkDestination) ? Math.abs(childBookmarkDestination.location[1]) : 0;\n if (!isNullOrUndefined(childBookmarkDestination)) {\n if (childBookmarkDestination.page.rotation === PdfRotationAngle.angle90) {\n this.y = this.convertPointToPixel(childBookmarkDestination.page.size[0]) - this.convertPointToPixel(yPosition);\n }\n else if (childBookmarkDestination.page.rotation === PdfRotationAngle.angle270) {\n this.y = this.convertPointToPixel(yPosition);\n }\n else {\n this.y = this.convertPointToPixel(childBookmarkDestination.page.size[1]) - this.convertPointToPixel(yPosition);\n }\n this.zoom = childBookmarkDestination.zoom;\n }\n else {\n this.y = 0;\n this.zoom = 0;\n }\n var childrenBookmark = new BookmarkBase();\n childrenBookmark.Title = title;\n childrenBookmark.Id = this.id;\n childrenBookmark.Child = [];\n childrenBookmark.FileName = !isNullOrUndefined(child.action) ? child.action.toString() : '';\n var childrenBookmarkDestination = new BookmarkDestination();\n childrenBookmarkDestination.X = this.x;\n childrenBookmarkDestination.Y = this.y;\n childrenBookmarkDestination.PageIndex = this.pageIndex;\n childrenBookmarkDestination.Zoom = this.zoom;\n this.bookmarkDictionary[this.id.toString()] = childrenBookmarkDestination;\n childBookmarkCollection.push(childrenBookmark);\n childrenBookmark.Child = this.getChildrenBookmark(child);\n if (childrenBookmark.Child.length > 0) {\n childrenBookmark.HasChild = true;\n }\n }\n }\n return childBookmarkCollection;\n };\n /**\n * @private\n */\n PdfRenderer.prototype.getHyperlinks = function (pageIndex) {\n if (isNullOrUndefined(this.renderer)) {\n this.renderer = new PageRenderer(this.pdfViewer, this.pdfViewerBase);\n }\n if (isNullOrUndefined(this.renderer.hyperlinks)) {\n this.renderer.hyperlinks = [];\n }\n this.exportHyperlinks(pageIndex, this.getPageSize(pageIndex), false, true);\n return { hyperlinks: this.renderer.hyperlinks, hyperlinkBounds: this.renderer.hyperlinkBounds, linkAnnotation: this.renderer.annotationList, linkPage: this.renderer.annotationDestPage, annotationLocation: this.renderer.annotationYPosition };\n };\n PdfRenderer.prototype.exportHyperlinks = function (pageIndex, pageSize, isExport, isAnnotationNeeded) {\n var page = this.loadedDocument.getPage(pageIndex);\n this.renderer.hyperlinks = [];\n this.renderer.hyperlinkBounds = [];\n this.renderer.annotationDestPage = [];\n this.renderer.annotationList = [];\n this.renderer.annotationYPosition = [];\n for (var i = 0; i < page.annotations.count; i++) {\n if (page.annotations.at(i) instanceof PdfUriAnnotation) {\n var pdfLoadedUriAnnotation = page.annotations.at(i);\n var rectangle = this.getHyperlinkBounds(pdfLoadedUriAnnotation.bounds, pageSize, page.rotation);\n if (isNullOrUndefined(this.renderer.hyperlinks)) {\n this.renderer.hyperlinks = [];\n this.renderer.hyperlinkBounds = [];\n }\n this.renderer.hyperlinks.push(pdfLoadedUriAnnotation.uri);\n this.renderer.hyperlinkBounds.push(rectangle);\n }\n else if (page.annotations.at(i) instanceof PdfTextWebLinkAnnotation) {\n var pdfLoadedTextWebLinkAnnotation = page.annotations.at(i);\n var rectangle = this.getHyperlinkBounds(pdfLoadedTextWebLinkAnnotation.bounds, pageSize, page.rotation);\n if (isNullOrUndefined(this.renderer.hyperlinks)) {\n this.renderer.hyperlinks = [];\n this.renderer.hyperlinkBounds = [];\n }\n this.renderer.hyperlinks.push(pdfLoadedTextWebLinkAnnotation.url);\n this.renderer.hyperlinkBounds.push(rectangle);\n }\n else if (page.annotations.at(i) instanceof PdfDocumentLinkAnnotation) {\n var pdfLoadedDocumentLinkAnnotation = page.annotations.at(i);\n var rectangle = this.getHyperlinkBounds(pdfLoadedDocumentLinkAnnotation.bounds, pageSize, page.rotation);\n if (isNullOrUndefined(this.renderer.annotationDestPage)) {\n this.renderer.annotationDestPage = [];\n this.renderer.annotationList = [];\n this.renderer.annotationYPosition = [];\n }\n if (!isNullOrUndefined(pdfLoadedDocumentLinkAnnotation.destination)) {\n var linkPageIndex = pdfLoadedDocumentLinkAnnotation.destination.pageIndex;\n this.renderer.annotationDestPage.push(linkPageIndex);\n this.renderer.annotationList.push(rectangle);\n if (page.rotation === PdfRotationAngle.angle180) {\n this.renderer.annotationYPosition.push(this.convertPointToPixel(Math.abs(pdfLoadedDocumentLinkAnnotation.destination.location[1])));\n }\n else if (page.rotation === PdfRotationAngle.angle90 || page.rotation === PdfRotationAngle.angle270) {\n this.renderer.annotationYPosition.push(pageSize.width - this.convertPointToPixel(Math.abs(pdfLoadedDocumentLinkAnnotation.destination.location[1])));\n }\n else {\n this.renderer.annotationYPosition.push(pageSize.height - this.convertPointToPixel(Math.abs(pdfLoadedDocumentLinkAnnotation.destination.location[1])));\n }\n }\n }\n }\n };\n PdfRenderer.prototype.getHyperlinkBounds = function (bounds, pageSize, pageRotation) {\n var bound;\n if (pageRotation === PdfRotationAngle.angle0) {\n bound = new AnnotBounds(this.convertPointToPixel(bounds.x), this.convertPointToPixel(bounds.y), this.convertPointToPixel(bounds.width), this.convertPointToPixel(bounds.height));\n }\n else if (pageRotation === PdfRotationAngle.angle90) {\n bound = new AnnotBounds(pageSize.width - this.convertPointToPixel(bounds.y - bounds.height), this.convertPointToPixel(bounds.x), this.convertPointToPixel(bounds.height), this.convertPointToPixel(bounds.width));\n }\n else if (pageRotation === PdfRotationAngle.angle180) {\n bound = new AnnotBounds(pageSize.width - this.convertPointToPixel(bounds.x - bounds.width), pageSize.height - this.convertPointToPixel(bounds.y - bounds.height), this.convertPointToPixel(bounds.width), this.convertPointToPixel(bounds.height));\n }\n else if (pageRotation === PdfRotationAngle.angle270) {\n bound = new AnnotBounds(this.convertPointToPixel(bounds.y), pageSize.height - this.convertPointToPixel(bounds.x - bounds.width), this.convertPointToPixel(bounds.height), this.convertPointToPixel(bounds.width));\n }\n return bound;\n };\n /**\n * @private\n */\n PdfRenderer.prototype.exportFormFields = function (jsonObject, isObjects) {\n var formFields = new FormFieldsBase(this.pdfViewer, this.pdfViewerBase);\n formFields.saveFormFieldsData(jsonObject);\n formFields.saveFormFieldsDesignerData(jsonObject);\n if (!jsonObject.hasOwnProperty(\"fileName\")) {\n jsonObject[\"fileName\"] = \"undefined.pdf\";\n }\n this.loadedDocument.form.exportEmptyFields = true;\n var dataFormat = DataFormat.json;\n if (jsonObject.hasOwnProperty(\"formFieldDataFormat\")) {\n dataFormat = this.exportDataFormat(jsonObject[\"formFieldDataFormat\"]);\n }\n var settings = new PdfFormFieldExportSettings();\n var fileName;\n var exportFormFieldObject;\n settings.dataFormat = dataFormat;\n if (isObjects) {\n exportFormFieldObject = this.loadedDocument.exportFormData(settings);\n return _bytesToString(exportFormFieldObject);\n }\n else {\n fileName = this.changeFileExtension(this.pdfViewer.fileName, this.fileFormat(dataFormat));\n return \"data:application/json;base64,\" + _encode(this.loadedDocument.exportFormData(settings));\n }\n };\n /**\n * @private\n */\n PdfRenderer.prototype.importFormFields = function (jsonObject) {\n try {\n var formFields = new FormFieldsBase(this.pdfViewer, this.pdfViewerBase);\n formFields.saveFormFieldsDesignerData(jsonObject);\n var dataFormat = this.exportDataFormat(jsonObject[\"formFieldDataFormat\"]);\n if (!this.isBase64(jsonObject[\"data\"]) && !this.isUint8Array(jsonObject[\"data\"])) {\n if (jsonObject[\"formFieldDataFormat\"] === \"Json\") {\n jsonObject[\"data\"] = JSON.parse(jsonObject[\"data\"]);\n }\n var encoder = new TextEncoder();\n var uint8ArrayLike = encoder.encode(jsonObject[\"data\"]);\n jsonObject[\"data\"] = new Uint8Array(uint8ArrayLike);\n }\n if (jsonObject.hasOwnProperty(\"formFieldDataFormat\")) {\n this.loadedDocument.importFormData(jsonObject[\"data\"], dataFormat);\n }\n formFields = new FormFieldsBase(this.pdfViewer, this.pdfViewerBase);\n formFields.GetFormFields();\n var PdfRenderedFormFields = [];\n PdfRenderedFormFields = formFields.PdfRenderedFormFields;\n return { PdfRenderedFormFields: PdfRenderedFormFields };\n }\n catch (e) {\n return null;\n }\n };\n PdfRenderer.prototype.isUint8Array = function (value) {\n return value instanceof Uint8Array;\n };\n PdfRenderer.prototype.isBase64 = function (str) {\n // Base64 regular expression pattern\n /* eslint-disable-next-line security/detect-unsafe-regex */\n var base64Regex = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n return base64Regex.test(str);\n };\n PdfRenderer.prototype.exportDataFormat = function (format) {\n var exportFormat;\n switch (format) {\n case \"Json\":\n exportFormat = DataFormat.json;\n break;\n case \"Xfdf\":\n exportFormat = DataFormat.xfdf;\n break;\n case \"Fdf\":\n exportFormat = DataFormat.fdf;\n break;\n case \"Xml\":\n exportFormat = DataFormat.xml;\n break;\n }\n return exportFormat;\n };\n PdfRenderer.prototype.fileFormat = function (value) {\n var fileExtention;\n switch (value) {\n case 0:\n fileExtention = \"fdf\";\n break;\n case 1:\n fileExtention = \"xfdf\";\n break;\n case 2:\n fileExtention = \"json\";\n break;\n case 3:\n fileExtention = \"xml\";\n break;\n }\n return fileExtention;\n };\n PdfRenderer.prototype.exportAsImage = function (pageIndex) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfiumExportAsImage(pageIndex));\n });\n };\n PdfRenderer.prototype.exportAsImages = function (startIndex, endIndex) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfiumExportAsImages(startIndex, endIndex));\n });\n };\n PdfRenderer.prototype.pdfiumExportAsImage = function (pageIndex) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n if (!isNullOrUndefined(_this.pdfViewerBase.pdfViewerRunner) && !isNullOrUndefined(_this.loadedDocument)) {\n _this.pdfViewerBase.pdfViewerRunner.postMessage({ pageIndex: pageIndex, message: 'extractImage', zoomFactor: _this.pdfViewer.magnificationModule.zoomFactor, isTextNeed: false });\n _this.pdfViewerBase.pdfViewerRunner.onmessage = function (event) {\n if (event.data.message === 'imageExtracted') {\n var canvas = document.createElement('canvas');\n var _a = event.data, value = _a.value, width = _a.width, height = _a.height;\n canvas.width = width;\n canvas.height = height;\n var canvasContext = canvas.getContext('2d');\n var imageData = canvasContext.createImageData(width, height);\n imageData.data.set(value);\n canvasContext.putImageData(imageData, 0, 0);\n var imageUrl = canvas.toDataURL();\n resolve(imageUrl);\n }\n };\n }\n else {\n resolve(null);\n }\n });\n };\n PdfRenderer.prototype.pdfiumExportAsImages = function (startIndex, endIndex) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n if (!isNullOrUndefined(_this.pdfViewerBase.pdfViewerRunner) && !isNullOrUndefined(_this.loadedDocument)) {\n if (startIndex < 0) {\n startIndex = 0;\n }\n if (endIndex > _this.loadedDocument.pageCount - 1) {\n endIndex = _this.loadedDocument.pageCount - 1;\n }\n if (startIndex > endIndex) {\n reject('Invalid page index');\n }\n var imageUrls_1 = [];\n var count_1 = endIndex - startIndex + 1;\n for (var i = startIndex; i <= endIndex; i++) {\n _this.pdfViewerBase.pdfViewerRunner.postMessage({ pageIndex: i, message: 'extractImage', zoomFactor: _this.pdfViewer.magnificationModule.zoomFactor, isTextNeed: false });\n }\n _this.pdfViewerBase.pdfViewerRunner.onmessage = function (event) {\n if (event.data.message === 'imageExtracted') {\n var canvas = document.createElement('canvas');\n var _a = event.data, value = _a.value, width = _a.width, height = _a.height;\n canvas.width = width;\n canvas.height = height;\n var canvasContext = canvas.getContext('2d');\n var imageData = canvasContext.createImageData(width, height);\n imageData.data.set(value);\n canvasContext.putImageData(imageData, 0, 0);\n var imageUrl = canvas.toDataURL();\n imageUrls_1.push(imageUrl);\n if (imageUrls_1.length === count_1) {\n resolve(imageUrls_1);\n }\n }\n };\n }\n else {\n resolve(null);\n }\n });\n };\n PdfRenderer.prototype.extractText = function (pageIndex, isLayout) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n resolve(_this.textExtraction(pageIndex, !isNullOrUndefined(isLayout) ? isLayout : true));\n });\n };\n // eslint-disable-next-line max-len\n PdfRenderer.prototype.textExtraction = function (pageIndex, isLayout, isRenderText) {\n var _this = this;\n var extractedText = '';\n var textDataCollection = [];\n var proxy = this;\n return new Promise(function (resolve, reject) {\n if (!isNullOrUndefined(_this.pdfViewerBase.pdfViewerRunner)) {\n _this.pdfViewerBase.pdfViewerRunner.postMessage({ pageIndex: pageIndex, message: 'extractText', zoomFactor: _this.pdfViewer.magnificationModule.zoomFactor, isTextNeed: true });\n _this.pdfViewerBase.pdfViewerRunner.onmessage = function (event) {\n if (event.data.message === 'textExtracted') {\n var characterDetails = event.data.characterBounds;\n for (var i = 0; i < characterDetails.length; i++) {\n if (!isLayout && characterDetails[parseInt(i.toString(), 10)].Text.indexOf('\\r') !== -1) {\n extractedText += '';\n }\n else {\n extractedText += characterDetails[parseInt(i.toString(), 10)].Text;\n }\n var cropBox = proxy.loadedDocument.getPage(pageIndex).cropBox;\n // eslint-disable-next-line max-len\n var bound = new AnnotBounds(proxy.convertPixelToPoint(characterDetails[parseInt(i.toString(), 10)].X), proxy.convertPixelToPoint(characterDetails[parseInt(i.toString(), 10)].Y + cropBox[1]), proxy.convertPixelToPoint(characterDetails[parseInt(i.toString(), 10)].Width), proxy.convertPixelToPoint(characterDetails[parseInt(i.toString(), 10)].Height));\n textDataCollection.push(new TextData(characterDetails[parseInt(i.toString(), 10)].Text, bound));\n }\n var result = {};\n if (isRenderText) {\n result.extractedTextDetails = { textDataCollection: textDataCollection, extractedText: extractedText };\n result.textBounds = event.data.textBounds;\n result.textContent = event.data.textContent;\n result.rotation = event.data.rotation;\n result.pageText = event.data.pageText;\n result.characterBounds = event.data.characterBounds;\n }\n else {\n result = { textDataCollection: textDataCollection, extractedText: extractedText };\n }\n resolve(result);\n }\n };\n }\n else {\n resolve(null);\n }\n });\n };\n PdfRenderer.prototype.extractTextWithPageSize = function (pageIndex) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n resolve(_this.extractTextDetailsWithPageSize(pageIndex));\n });\n };\n PdfRenderer.prototype.extractTextDetailsWithPageSize = function (pageIndex, isRenderText) {\n var _this = this;\n var pageTextDataCollection = {};\n return new Promise(function (resolve, reject) {\n // eslint-disable-next-line max-len\n _this.textExtraction(pageIndex, true, isRenderText).then(function (textData) {\n if (!isNullOrUndefined(textData)) {\n var textDetails = textData;\n if (isRenderText) {\n textDetails = textData.extractedTextDetails;\n }\n // eslint-disable-next-line security/detect-object-injection\n pageTextDataCollection[pageIndex] = new PageTextData(new SizeBase(_this.getPageSize(pageIndex).width, _this.getPageSize(pageIndex).height), textDetails.textDataCollection, textDetails.extractedText);\n if (isRenderText) {\n // eslint-disable-next-line max-len\n resolve({ pageTextDataCollection: pageTextDataCollection, textBounds: textData.textBounds, textContent: textData.textContent, rotation: textData.rotation, characterBounds: textData.characterBounds });\n }\n else {\n resolve(pageTextDataCollection);\n }\n }\n else {\n resolve(null);\n }\n });\n });\n };\n /**\n * @private\n */\n PdfRenderer.prototype.getDocumentText = function (jsonObject) {\n var _this = this;\n var pageStartIndex = !isNullOrUndefined(jsonObject.pageStartIndex) ? jsonObject.pageStartIndex : jsonObject.pageIndex;\n var pageEndIndex = !isNullOrUndefined(jsonObject.pageEndIndex) ? jsonObject.pageEndIndex : jsonObject.pageIndex + 1;\n var pageCount = this.loadedDocument.pageCount;\n var documentTextCollection = [];\n return new Promise(function (resolve, reject) {\n for (var pageIndex = pageStartIndex; pageIndex < pageEndIndex; pageIndex++) {\n _this.extractTextDetailsWithPageSize(pageIndex, true).then(function (value) {\n documentTextCollection.push(value.pageTextDataCollection);\n if (documentTextCollection.length === pageEndIndex - pageStartIndex) {\n resolve({ uniqueId: jsonObject.uniqueId,\n documentTextCollection: documentTextCollection,\n pageStartIndex: pageStartIndex,\n pageEndIndex: pageEndIndex,\n textBounds: value.textBounds,\n textContent: value.textContent,\n rotation: value.rotation,\n characterBounds: value.characterBounds });\n }\n });\n }\n });\n };\n PdfRenderer.IsLinuxOS = false;\n PdfRenderer.IsWindowsOS = false;\n return PdfRenderer;\n}());\nexport { PdfRenderer };\nvar TextData = /** @class */ (function () {\n function TextData(text, bounds) {\n this.Text = text;\n this.Bounds = bounds;\n }\n return TextData;\n}());\nvar PageTextData = /** @class */ (function () {\n function PageTextData(pageSize, textData, pageText) {\n this.PageSize = pageSize;\n this.TextData = textData;\n this.PageText = pageText;\n }\n return PageTextData;\n}());\n/**\n *\n * @hidden\n */\nvar SizeBase = /** @class */ (function () {\n function SizeBase(_Width, _Height) {\n this.IsEmpty = true;\n this.Width = _Width;\n this.Height = _Height;\n this.IsEmpty = false;\n }\n return SizeBase;\n}());\nexport { SizeBase };\n/**\n *\n * @hidden\n */\nvar Annotations = /** @class */ (function () {\n function Annotations() {\n }\n return Annotations;\n}());\nexport { Annotations };\n","import { Browser, isBlazor, isNullOrUndefined, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport { splitArrayCollection, processPathData, cornersPointsBeforeRotation } from '@syncfusion/ej2-drawings';\nimport { Tooltip } from '@syncfusion/ej2-popups';\n/**\n * The `FormFields` module is to render formfields in the PDF document.\n *\n * @hidden\n */\nvar FormFields = /** @class */ (function () {\n /**\n * @param viewer\n * @param base\n * @param viewer\n * @param base\n * @private\n */\n function FormFields(viewer, base) {\n // eslint-disable-next-line\n this.maintainTabIndex = {};\n // eslint-disable-next-line\n this.maintanMinTabindex = {};\n this.isSignatureField = false;\n this.paddingDifferenceValue = 10;\n this.indicatorPaddingValue = 4;\n this.isKeyDownCheck = false;\n this.signatureFontSizeConstent = 1.35;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.readOnlyCollection = [];\n this.isSignatureRendered = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.signatureFieldCollection = [];\n this.selectedIndex = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.renderedPageList = [];\n this.pdfViewer = viewer;\n this.pdfViewerBase = base;\n }\n /**\n * @param pageIndex\n * @private\n */\n FormFields.prototype.renderFormFields = function (pageIndex, isImportFormField) {\n this.maxTabIndex = 0;\n this.minTabIndex = -1;\n // eslint-disable-next-line \n if (this.renderedPageList.indexOf(pageIndex) !== -1 && !isImportFormField) {\n this.data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n if (!this.data || this.data === '[]') {\n this.data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n }\n }\n else {\n this.data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n }\n if (this.data) {\n // eslint-disable-next-line\n this.formFieldsData = JSON.parse(this.data);\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n var canvasElement = document.getElementById(this.pdfViewer.element.id + '_pageCanvas_' + pageIndex);\n var count = void 0;\n if (this.formFieldsData !== null && canvasElement !== null && textLayer !== null) {\n var flag = false;\n for (var i = 0; i < this.formFieldsData.length; i++) {\n var formField = this.formFieldsData[i];\n if (!flag && isNullOrUndefined(formField.ActualFieldName) && formField.PageIndex === pageIndex) {\n count = parseInt(formField.FieldName.slice(formField.FieldName.lastIndexOf(\"_\") + 1));\n flag = true;\n }\n }\n if (this.renderedPageList.indexOf(pageIndex) === -1) {\n this.renderedPageList.push(pageIndex);\n }\n var _loop_1 = function (i_1) {\n // eslint-disable-next-line\n var currentData = this_1.formFieldsData[i_1];\n if (currentData.FieldName !== '') {\n if (currentData.IsInitialField) {\n currentData.Name = 'InitialField';\n }\n // eslint-disable-next-line\n var font = currentData['Font'];\n if (this_1.pdfViewer.formDesigner) {\n if (parseFloat(currentData['PageIndex']) == pageIndex) {\n var fontFamily = void 0;\n var fontStyle = void 0;\n var fontSize = void 0;\n if (!isNullOrUndefined(font) && font.Height) {\n fontFamily = font.Name;\n if (font.Italic) {\n fontStyle = 'Italic';\n }\n if (font.Bold) {\n fontStyle = 'Bold';\n }\n if (font.Strikeout) {\n fontStyle = 'Strikethrough';\n }\n if (font.Underline) {\n fontStyle = 'Underline';\n }\n fontSize = this_1.ConvertPointToPixel(font.Size);\n }\n var textAlignment = currentData.Alignment === 2 ? 'right' : (currentData.Alignment === 1 ? 'center' : 'left');\n var backgroundColor = currentData['BackColor'];\n var bounds = currentData['LineBounds'];\n var backColor = 'rgba(' + backgroundColor.R + ',' + backgroundColor.G + ',' + backgroundColor.B + ',' + 1 + ')';\n if (currentData.IsTransparent === true) {\n backColor = \"rgba(0,0,0,0)\";\n }\n backColor = this_1.rgbaToHex(backColor);\n // set default color if field have black color as bg.\n if (backColor === '#000000ff') {\n backColor = '#daeaf7ff';\n }\n // eslint-disable-next-line\n var fontColor = currentData['FontColor'];\n var left = this_1.ConvertPointToPixel(bounds.X);\n var top_1 = this_1.ConvertPointToPixel(bounds.Y);\n var width = this_1.ConvertPointToPixel(bounds.Width);\n var height = this_1.ConvertPointToPixel(bounds.Height);\n var boundArray = { left: left, top: top_1, width: width, height: height };\n var isFieldRotated = false;\n var rotateFieldAngle = 0;\n if (currentData[\"Rotation\"] !== 0) {\n if (currentData[\"RotationAngle\"] === -90 || currentData[\"RotationAngle\"] === -270 || currentData[\"RotationAngle\"] === -180) {\n boundArray = this_1.getBounds(boundArray, pageIndex, 0, isFieldRotated);\n }\n }\n else {\n isFieldRotated = true;\n boundArray = this_1.getBounds(boundArray, pageIndex, 0, isFieldRotated);\n rotateFieldAngle = this_1.getAngle(pageIndex);\n }\n var foreColor = 'rgba(' + fontColor.R + ',' + fontColor.G + ',' + fontColor.B + ',' + 1 + ')';\n foreColor = this_1.rgbaToHex(foreColor);\n var borderColor = currentData['BorderColor'];\n var borderRGB = void 0;\n if (currentData.IsTansparentBorderColor) {\n borderRGB = 'rgba(' + borderColor.R + ',' + borderColor.G + ',' + borderColor.B + ',' + 0 + ')';\n }\n else {\n borderRGB = 'rgba(' + borderColor.R + ',' + borderColor.G + ',' + borderColor.B + ',' + 1 + ')';\n }\n borderRGB = this_1.rgbaToHex(borderRGB);\n var borderWidth = currentData['BorderWidth'];\n this_1.selectedIndex = [];\n var elementValue = \"\";\n if (currentData.Name === 'RadioButton' || currentData.Name === 'CheckBox') {\n elementValue = currentData['Text'] ? currentData['Text'] : currentData['Value'];\n }\n else {\n elementValue = currentData['Text'];\n }\n var fieldProperties = {\n bounds: { X: boundArray.left, Y: boundArray.top, Width: boundArray.width, Height: boundArray.height }, pageNumber: parseFloat(currentData['PageIndex']) + 1, name: currentData['ActualFieldName'], tooltip: currentData['ToolTip'],\n value: elementValue, insertSpaces: currentData['InsertSpaces'], isChecked: currentData['Selected'], isSelected: currentData['Selected'], fontFamily: fontFamily, fontStyle: fontStyle, backgroundColor: backColor, color: foreColor, borderColor: borderRGB, thickness: borderWidth, fontSize: fontSize, isMultiline: currentData.Multiline, rotateAngle: rotateFieldAngle,\n isReadOnly: currentData['IsReadonly'], isRequired: currentData['IsRequired'], alignment: textAlignment, options: this_1.getListValues(currentData), selectedIndex: this_1.selectedIndex, maxLength: currentData.MaxLength, visibility: currentData.Visible === 1 ? \"hidden\" : \"visible\", font: { isItalic: !isNullOrUndefined(font) ? font.Italic : false, isBold: !isNullOrUndefined(font) ? font.Bold : false, isStrikeout: !isNullOrUndefined(font) ? font.Strikeout : false, isUnderline: !isNullOrUndefined(font) ? font.Underline : false }, isTransparent: currentData.IsTransparent\n };\n if (!currentData.id && this_1.pdfViewer.formFieldCollections[i_1] && !isNullOrUndefined(currentData['ActualFieldName'])) {\n fieldProperties.id = this_1.pdfViewer.formFieldCollections[i_1].id;\n }\n if (currentData.Name === 'DropDown' || currentData.Name === 'ListBox') {\n fieldProperties.value = currentData['SelectedValue'];\n }\n // eslint-disable-next-line\n var fieldType = this_1.getFormFieldType(currentData);\n if (currentData.Name !== 'SignatureText' || currentData.Name !== 'SignatureImage') {\n if (!isNullOrUndefined(this_1.getFormFieldType(currentData))) {\n if (currentData.IsRequired) {\n var thickness = fieldProperties.thickness;\n thickness = thickness > 0 ? thickness : 1;\n fieldProperties.thickness = thickness;\n }\n var addedElement1 = this_1.pdfViewer.formDesignerModule.addFormField(fieldType, fieldProperties, false, fieldProperties.id);\n if (addedElement1 && addedElement1.parentElement) {\n currentData.id = addedElement1.parentElement.id.split('_')[0];\n }\n if (addedElement1 && addedElement1.style.visibility === \"hidden\") {\n addedElement1.childNodes[0].disabled = true;\n }\n }\n }\n if (fieldType === 'SignatureField' || fieldType === 'InitialField') {\n this_1.addSignaturePath(currentData, count);\n if (!isNullOrUndefined(currentData.Value) && currentData.Value != \"\") {\n this_1.renderExistingAnnnot(currentData, parseFloat(currentData['PageIndex']) + 1, null, isFieldRotated);\n this_1.isSignatureRendered = true;\n count++;\n }\n }\n if (currentData.ActualFieldName === null && this_1.formFieldsData.filter(function (item) { return item.FieldName.includes(currentData.FieldName.replace(/_\\d$/, '')); }).filter(function (value) { return value.Name != 'ink'; }).length === 0) {\n this_1.renderExistingAnnnot(currentData, parseFloat(currentData['PageIndex']) + 1, null, isFieldRotated);\n this_1.pdfViewerBase.signatureModule.storeSignatureData(pageIndex, currentData);\n this_1.isSignatureRendered = true;\n count++;\n }\n this_1.pdfViewerBase.isLoadedFormFieldAdded = true;\n }\n }\n else {\n // eslint-disable-next-line\n if (parseFloat(currentData['PageIndex']) == pageIndex) {\n // eslint-disable-next-line\n var field = this_1.createFormFields(currentData, pageIndex, i_1, null, count);\n var inputField = field.currentField;\n var signCount = field.count;\n var isFieldRotated = false;\n if (currentData.ActualFieldName === null && this_1.formFieldsData.filter(function (item) { return item.FieldName.includes(currentData.FieldName.replace(/_\\d$/, '')); }).filter(function (value) { return value.Name != 'ink'; }).length === 0) {\n this_1.renderExistingAnnnot(currentData, parseFloat(currentData['PageIndex']) + 1, null, isFieldRotated);\n this_1.pdfViewerBase.signatureModule.storeSignatureData(pageIndex, currentData);\n this_1.isSignatureRendered = true;\n count++;\n }\n if (inputField) {\n // eslint-disable-next-line\n var divElement = this_1.createParentElement(currentData, pageIndex);\n // eslint-disable-next-line\n var bounds = currentData['LineBounds'];\n // eslint-disable-next-line\n var font_1 = currentData['Font'];\n // eslint-disable-next-line\n rotateAngle = 0;\n if (currentData['Rotation'] === 0) {\n isFieldRotated = true;\n rotateAngle = this_1.getAngle(pageIndex);\n if (divElement) {\n divElement.style.transform = 'rotate(' + rotateAngle + 'deg)';\n }\n else {\n inputField.style.transform = 'rotate(' + rotateAngle + 'deg)';\n }\n }\n else {\n if (divElement) {\n divElement.style.transform = 'rotate(' + rotateAngle + 'deg)';\n }\n else {\n inputField.style.transform = 'rotate(' + rotateAngle + 'deg)';\n }\n }\n this_1.applyPosition(inputField, bounds, font_1, pageIndex, 0, isFieldRotated);\n inputField.InsertSpaces = currentData.InsertSpaces;\n if (inputField.InsertSpaces) {\n var zoomFactor = this_1.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n var font_2 = ((parseInt(inputField.style.width) / inputField.maxLength) - (parseFloat(inputField.style.fontSize) / 2)) - (0.6 * zoomFactor);\n // eslint-disable-next-line\n inputField.style.letterSpacing = '' + font_2 + 'px';\n inputField.style.fontFamily = 'monospace';\n inputField.style.paddingLeft = (font_2 / 2) + 'px';\n }\n // eslint-disable-next-line\n currentData['uniqueID'] = this_1.pdfViewer.element.id + 'input_' + pageIndex + '_' + i_1;\n for (var j = 0; j < this_1.pdfViewer.formFieldCollections.length; j++) {\n if ((inputField.type === 'text' || inputField.type === 'password' || inputField.type === 'textarea') && currentData.Name !== 'SignatureField') {\n if (currentData['uniqueID'] === this_1.pdfViewer.formFieldCollections[j].id) {\n this_1.pdfViewer.formFieldCollections[j].value = currentData['Text'];\n }\n }\n }\n if (isNullOrUndefined(currentData.Value)) {\n currentData.Value = currentData['Text'];\n }\n if (currentData.ToolTip) {\n this_1.setToolTip(currentData.ToolTip, inputField);\n }\n this_1.applyCommonProperties(inputField, pageIndex, i_1, currentData, isFieldRotated);\n this_1.checkIsReadonly(currentData, inputField);\n this_1.applyTabIndex(currentData, inputField, pageIndex);\n this_1.checkIsRequiredField(currentData, inputField);\n this_1.applyDefaultColor(inputField);\n this_1.updateFormFieldsCollection(currentData);\n if (divElement) {\n divElement.appendChild(inputField);\n textLayer.appendChild(divElement);\n }\n else {\n inputField.style.position = 'absolute';\n textLayer.appendChild(inputField);\n }\n inputField.addEventListener('focus', this_1.focusFormFields.bind(this_1));\n inputField.addEventListener('blur', this_1.blurFormFields.bind(this_1));\n inputField.addEventListener('click', this_1.updateFormFields.bind(this_1));\n inputField.addEventListener('change', this_1.changeFormFields.bind(this_1));\n inputField.addEventListener('keydown', this_1.updateFormFieldsValue.bind(this_1));\n inputField.addEventListener('keyup', this_1.updateSameFieldsValue.bind(this_1));\n count = signCount;\n }\n }\n }\n }\n };\n var this_1 = this, rotateAngle;\n for (var i_1 = 0; i_1 < this.formFieldsData.length; i_1++) {\n _loop_1(i_1);\n }\n if (!this.pdfViewer.formDesigner) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_formfields');\n this.pdfViewerBase.setItemInSessionStorage(this.formFieldsData, '_formfields');\n }\n }\n }\n if (this.pdfViewerBase.isFocusField && this.pdfViewerBase.focusField) {\n var currentField = document.getElementById(this.pdfViewerBase.focusField.id);\n if (currentField) {\n if ((this.pdfViewerBase.focusField.type === \"SignatureField\" || this.pdfViewerBase.focusField.type === \"InitialField\") && this.pdfViewer.formDesignerModule) {\n var y = this.pdfViewerBase.focusField.bounds.y;\n var height = this.pdfViewerBase.pageSize[pageIndex].height;\n this.pdfViewer.bookmark.goToBookmark(this.pdfViewerBase.focusField.pageIndex, height - y);\n }\n else {\n currentField.focus();\n }\n this.pdfViewerBase.isFocusField = false;\n this.pdfViewerBase.focusField = [];\n }\n }\n };\n FormFields.prototype.setToolTip = function (tooltipContent, targetElement) {\n //initialize tooltip component\n var tooltip = new Tooltip({\n content: initializeCSPTemplate(function () { return tooltipContent; })\n });\n // render initialized tooltip\n tooltip.appendTo(targetElement);\n };\n FormFields.prototype.trim = function (str) {\n return str.replace(/^\\s+|\\s+$/gm, '');\n };\n FormFields.prototype.rgbaToHex = function (rgba) {\n var inParts = rgba.substring(rgba.indexOf(\"(\")).split(\",\");\n var r = parseInt(this.trim(inParts[0].substring(1)), 10);\n var g = parseInt(this.trim(inParts[1]), 10);\n var b = parseInt(this.trim(inParts[2]), 10);\n var a = parseFloat(parseFloat(this.trim(inParts[3].substring(0, inParts[3].length - 1))).toFixed(2));\n var outParts = [\n r.toString(16),\n g.toString(16),\n b.toString(16),\n Math.round(a * 255).toString(16).substring(0, 2)\n ];\n // Pad single-digit output values\n outParts.forEach(function (part, i) {\n if (part.length === 1) {\n outParts[i] = '0' + part;\n }\n });\n return ('#' + outParts.join(''));\n };\n FormFields.prototype.getListValues = function (currentData) {\n var listItem = currentData['TextList'];\n var options = [];\n for (var i = 0; i < listItem.length; i++) {\n if (listItem[i] === currentData['SelectedValue'])\n this.selectedIndex.push(i);\n options.push({ itemName: listItem[i], itemValue: listItem[i] });\n }\n if (this.getFormFieldType(currentData) === 'ListBox') {\n this.selectedIndex = currentData['SelectedList'];\n }\n return options;\n };\n // eslint-disable-next-line\n FormFields.prototype.createParentElement = function (data, pageIndex) {\n // eslint-disable-next-line\n var divElement;\n // eslint-disable-next-line\n if (data['Name'] === 'Textbox' || data['Name'] === 'Password') {\n divElement = document.createElement('div');\n divElement.style.background = 'white';\n if (data.InsertSpaces) {\n divElement.style.background = 'transparent';\n }\n // eslint-disable-next-line\n var bounds = data['LineBounds'];\n // eslint-disable-next-line\n var font = data['Font'];\n // eslint-disable-next-line\n divElement.style.position = 'absolute';\n // eslint-disable-next-line\n var isFieldRotated = false;\n if (data['Rotation'] === 0) {\n isFieldRotated = true;\n }\n this.applyPosition(divElement, bounds, font, pageIndex, 0, isFieldRotated);\n }\n return divElement;\n };\n /**\n * @private\n */\n FormFields.prototype.getAngle = function (pageIndex) {\n // eslint-disable-next-line\n var angle = 0;\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if (pageDetails && pageDetails.rotation) {\n switch (pageDetails.rotation) {\n case 0:\n angle = 0;\n break;\n case 1:\n angle = 90;\n break;\n case 2:\n angle = 180;\n break;\n case 3:\n angle = 270;\n break;\n }\n }\n return angle;\n };\n FormFields.prototype.nextField = function () {\n this.signatureFieldNavigate(true);\n };\n FormFields.prototype.previousField = function () {\n this.signatureFieldNavigate(false);\n };\n FormFields.prototype.signatureFieldNavigate = function (nextSign) {\n var isNextSignField = nextSign;\n // eslint-disable-next-line\n var signatureFields = this.signatureFieldCollection;\n var collectionData = this.pdfViewer.formFieldCollections;\n if (signatureFields.length === 0) {\n signatureFields = this.pdfViewerBase.signatureModule.getSignField();\n }\n // eslint-disable-next-line\n var currentField;\n if (this.currentTarget) {\n if (this.pdfViewer.formDesignerModule) {\n for (var i = 0; i < collectionData.length; i++) {\n currentField = collectionData[i];\n if (this.currentTarget.id === currentField.id) {\n this.currentTarget = document.getElementById(currentField.id);\n this.getSignatureIndex(i, collectionData.length, isNextSignField);\n break;\n }\n }\n }\n else {\n for (var i = 0; i < signatureFields.length; i++) {\n currentField = this.pdfViewer.formDesignerModule ? signatureFields[i].FormField : signatureFields[i];\n if (this.currentTarget.id === currentField.uniqueID) {\n this.currentTarget = document.getElementById(currentField.uniqueID);\n this.getSignatureIndex(i, signatureFields.length, isNextSignField);\n break;\n }\n }\n }\n }\n else {\n if (nextSign) {\n if (this.pdfViewer.formDesignerModule) {\n currentField = signatureFields[0];\n if (currentField.id) {\n this.currentTarget = document.getElementById(currentField.id);\n this.getSignatureIndex(0, signatureFields.length, isNextSignField, true);\n }\n }\n else {\n currentField = signatureFields[0];\n if (currentField.uniqueID) {\n this.currentTarget = document.getElementById(currentField.uniqueID);\n this.getSignatureIndex(0, signatureFields.length, isNextSignField, true);\n }\n }\n }\n }\n };\n FormFields.prototype.getSignatureIndex = function (currentSignatureIndex, signatureCount, isNextSign, isFirstNavigate) {\n var signatureIndex = currentSignatureIndex;\n if (!isFirstNavigate) {\n if (isNextSign) {\n signatureIndex++;\n }\n else {\n signatureIndex--;\n }\n }\n if (signatureCount === 1) {\n this.renderSignatureField(0);\n }\n else {\n if (signatureIndex < signatureCount && signatureIndex >= 0) {\n this.renderSignatureField(signatureIndex);\n }\n else {\n if (isNextSign) {\n if (signatureIndex >= signatureCount) {\n this.renderSignatureField(0);\n }\n }\n else {\n if (signatureIndex <= 0) {\n this.renderSignatureField(signatureCount - 1);\n }\n }\n }\n }\n };\n FormFields.prototype.renderSignatureField = function (currentSignIndex) {\n var curSignIndex = currentSignIndex;\n // eslint-disable-next-line\n var signatureFields = this.signatureFieldCollection;\n var collectionData = this.pdfViewer.formFieldCollections;\n // eslint-disable-next-line\n var currentField;\n if (curSignIndex < collectionData.length) {\n for (var i = 0; i < collectionData.length; i++) {\n if (this.pdfViewer.formDesignerModule) {\n var curSignIndexId = collectionData[curSignIndex].id;\n var signatureFieldData = collectionData[i];\n if (curSignIndexId === signatureFieldData.id) {\n var pageIndex = signatureFieldData.pageIndex >= 0 ? signatureFieldData.pageIndex : signatureFieldData.pageNumber;\n var isRender = this.pdfViewer.annotationModule.findRenderPageList(pageIndex);\n if (!isRender) {\n this.pdfViewer.navigation.goToPage(pageIndex + 1);\n this.renderFormFields(pageIndex, false);\n }\n this.currentTarget = document.getElementById(signatureFieldData.id);\n currentField = signatureFieldData;\n break;\n }\n }\n else {\n var curSignIndexId = this.pdfViewer.formDesignerModule ? signatureFields[curSignIndex].FormField.uniqueID : signatureFields[curSignIndex].uniqueID;\n var signatureFieldData = this.pdfViewer.formDesignerModule ? signatureFields[i].FormField : signatureFields[i];\n if (curSignIndexId === signatureFieldData.uniqueID) {\n var pageIndex_1 = signatureFieldData.PageIndex >= 0 ? signatureFieldData.PageIndex : signatureFieldData.pageNumber;\n var isRender_1 = this.pdfViewer.annotationModule.findRenderPageList(pageIndex_1);\n if (!isRender_1) {\n this.pdfViewer.navigation.goToPage(pageIndex_1 + 1);\n this.renderFormFields(pageIndex_1, false);\n }\n this.currentTarget = document.getElementById(signatureFieldData.uniqueID);\n currentField = signatureFieldData;\n break;\n }\n }\n }\n if (this.currentTarget === null) {\n var pageIndex_2 = currentField.PageIndex >= 0 ? currentField.PageIndex : currentField.pageNumber;\n this.pdfViewer.navigation.goToPage(pageIndex_2);\n this.currentTarget = document.getElementById(currentField.uniqueID);\n }\n if (this.currentTarget) {\n if (this.currentTarget.className === 'e-pdfviewer-signatureformfields-signature' && !(this.pdfViewer.formDesignerModule)) {\n document.getElementById(this.currentTarget.id).focus();\n this.pdfViewer.select([this.currentTarget.id], null);\n }\n else if (this.currentTarget.className === 'e-pdfviewer-signatureformfields' || this.currentTarget.className === 'e-pdfviewer-signatureformfields-signature') {\n if (this.pdfViewer.formDesignerModule) {\n document.getElementById(this.currentTarget.id).parentElement.focus();\n }\n else {\n document.getElementById(this.currentTarget.id).focus();\n }\n }\n }\n }\n };\n /**\n * @private\n */\n FormFields.prototype.formFieldCollections = function () {\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[i];\n // eslint-disable-next-line\n var type = currentData['Name'];\n if (this.pdfViewer.formDesignerModule) {\n if (currentData.Name !== 'ink' && currentData.Name !== 'SignatureImage' && currentData.Name !== 'SignatureText') {\n this.retreiveFormFieldsData(currentData, true);\n }\n }\n else {\n if (currentData.Name !== 'ink') {\n // eslint-disable-next-line\n var formFieldCollection = { name: this.retriveFieldName(currentData), id: this.pdfViewer.element.id + 'input_' + parseFloat(currentData['PageIndex']) + '_' + i, isReadOnly: false, type: currentData.IsInitialField ? 'InitialField' : type, value: this.retriveCurrentValue(currentData), fontName: '', isRequired: currentData.IsRequired };\n this.pdfViewer.formFieldCollections.push(formFieldCollection);\n }\n }\n }\n }\n };\n FormFields.prototype.retreiveFormFieldsData = function (currentData, isCollection) {\n var fontFamily;\n var fontStyle;\n var fontSize;\n if (currentData.FieldName !== '') {\n if (currentData.IsInitialField) {\n currentData.Name = 'InitialField';\n }\n // eslint-disable-next-line\n var font = currentData['Font'];\n if (!isNullOrUndefined(font) && font.Height) {\n fontFamily = font.Name;\n if (font.Italic) {\n fontStyle = 'Italic';\n }\n if (font.Bold) {\n fontStyle = 'Bold';\n }\n if (font.Strikeout) {\n fontStyle = 'Strikethrough';\n }\n if (font.Underline) {\n fontStyle = 'Underline';\n }\n fontSize = this.ConvertPointToPixel(font.Size);\n }\n var textAlignment = currentData.Alignment === 2 ? 'right' : (currentData.Alignment === 1 ? 'center' : 'left');\n var backgroundColor = currentData['BackColor'];\n var bounds = currentData['LineBounds'];\n var backColor = 'rgba(' + backgroundColor.R + ',' + backgroundColor.G + ',' + backgroundColor.B + ',' + 1 + ')';\n backColor = this.rgbaToHex(backColor);\n // set default color if field have black color as bg.\n if (currentData.IsTransparent === true) {\n backColor = \"rgba(0,0,0,0)\";\n }\n else if (backColor === '#000000ff') {\n backColor = '#daeaf7ff';\n }\n // eslint-disable-next-line\n var fontColor = currentData['FontColor'];\n var left = this.ConvertPointToPixel(bounds.X);\n var top_2 = this.ConvertPointToPixel(bounds.Y);\n var width = this.ConvertPointToPixel(bounds.Width);\n var height = this.ConvertPointToPixel(bounds.Height);\n var boundArray = { left: left, top: top_2, width: width, height: height };\n var foreColor = 'rgba(' + fontColor.R + ',' + fontColor.G + ',' + fontColor.B + ',' + 1 + ')';\n foreColor = this.rgbaToHex(foreColor);\n var borderColor = currentData['BorderColor'];\n var borderRGB = 'rgba(' + borderColor.R + ',' + borderColor.G + ',' + borderColor.B + ',' + 1 + ')';\n borderRGB = this.rgbaToHex(borderRGB);\n var borderWidth = currentData['BorderWidth'];\n this.selectedIndex = [];\n var fieldProperties = {\n bounds: { X: boundArray.left, Y: boundArray.top, Width: boundArray.width, Height: boundArray.height }, pageNumber: parseFloat(currentData['PageIndex']) + 1, name: currentData['ActualFieldName'], tooltip: currentData['ToolTip'],\n value: currentData['Text'], isChecked: currentData['Selected'], isSelected: currentData['Selected'], fontFamily: fontFamily, fontStyle: fontStyle, backgroundColor: backColor, color: foreColor, borderColor: borderRGB, thickness: borderWidth, fontSize: fontSize, isMultiline: currentData.Multiline,\n isReadOnly: currentData['IsReadonly'], isRequired: currentData['IsRequired'], insertSpaces: currentData['InsertSpaces'], alignment: textAlignment, options: this.getListValues(currentData), selectedIndex: this.selectedIndex, maxLength: currentData.MaxLength, visibility: currentData.Visible === 1 ? \"hidden\" : \"visible\", font: { isItalic: !isNullOrUndefined(font) ? font.Italic : false, isBold: !isNullOrUndefined(font) ? font.Bold : false, isStrikeout: !isNullOrUndefined(font) ? font.Strikeout : false, isUnderline: !isNullOrUndefined(font) ? font.Underline : false }, pageIndex: currentData['PageIndex'], isTransparent: currentData['IsTransparent'], rotationAngle: currentData['RotationAngle'], signatureType: currentData['SignatureType'] ? currentData['SignatureType'] : \"\", signatureIndicatorSettings: currentData['SignatureIndicatorSettings'], zIndex: currentData['zIndex']\n };\n if (currentData.Name === 'DropDown' || currentData.Name === 'ListBox') {\n fieldProperties.value = currentData['SelectedValue'];\n }\n // eslint-disable-next-line\n var fieldType = this.getFormFieldType(currentData);\n if (fieldType === 'SignatureField' || fieldType === 'InitialField') {\n this.addSignaturePath(currentData);\n if (this.isSignatureField) {\n fieldProperties.value = currentData.Value;\n }\n }\n var addedElement = this.pdfViewer.formDesignerModule.addFormField(fieldType, fieldProperties, isCollection);\n return addedElement;\n }\n return null;\n };\n /**\n * @param formField\n * @private\n */\n FormFields.prototype.updateFormFieldsCollection = function (formField) {\n var type = formField['Name'];\n var formFieldCollection = {\n name: this.retriveFieldName(formField), id: formField.uniqueID, isReadOnly: formField.IsReadonly, isRequired: formField.IsRequired, isSelected: type === 'CheckBox' ? false : formField.Selected,\n isChecked: type === 'RadioButton' ? false : formField.Selected, type: type, value: type === 'ListBox' || type === 'DropDown' ? formField.SelectedValue : formField.Value, fontName: formField.FontFamily ? formField.FontFamily : '', pageIndex: formField.PageIndex, pageNumber: formField.PageIndex + 1, isMultiline: formField.isMultiline ? formField.isMultiline : formField.Multiline, insertSpaces: formField.insertSpaces ? formField.insertSpaces : formField.InsertSpaces, isTransparent: formField.isTransparent ? formField.isTransparent : formField.IsTransparent, rotateAngle: formField.rotateAngle ? formField.rotateAngle : formField.RotationAngle,\n selectedIndex: formField.selectedIndex ? formField.selectedIndex : formField.SelectedList, options: formField.options ? formField.options : formField.TextList ? formField.TextList : [],\n signatureType: formField.signatureType ? formField.signatureType : \"\", zIndex: formField.zIndex, tooltip: formField.tooltip ? formField.tooltip : formField.ToolTip ? formField.ToolTip : \"\", signatureIndicatorSettings: formField.signatureIndicatorSettings ? formField.signatureIndicatorSettings : \"\"\n };\n this.pdfViewer.formFieldCollections[this.pdfViewer.formFieldCollections.findIndex(function (el) { return el.id === formFieldCollection.id; })] = formFieldCollection;\n };\n // eslint-disable-next-line\n FormFields.prototype.updateFormFieldValues = function (formFields) {\n this.readOnlyCollection.push(formFields.id);\n if (formFields) {\n // eslint-disable-next-line\n var currentElement = document.getElementById(formFields.id);\n if (currentElement) {\n if (formFields.isReadOnly) {\n currentElement.disabled = true;\n currentElement.style.backgroundColor = '';\n currentElement.style.cursor = 'default';\n }\n else {\n if (currentElement.style.backgroundColor === '') {\n currentElement.style.backgroundColor = 'rgba(0, 20, 200, 0.2)';\n }\n currentElement.disabled = false;\n currentElement.style.cursor = '';\n }\n }\n this.updateDataInSession(currentElement);\n }\n };\n /**\n * @param currentData\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.retriveFieldName = function (currentData) {\n // eslint-disable-next-line\n var currentField;\n // eslint-disable-next-line\n switch (currentData['Name']) {\n case 'Textbox':\n case 'Password':\n case 'SignatureField':\n case 'InitialField':\n currentField = currentData.FieldName;\n break;\n case 'RadioButton':\n case 'CheckBox':\n currentField = currentData.GroupName;\n break;\n case 'DropDown':\n case 'ListBox':\n currentField = currentData.Text;\n break;\n }\n return currentField;\n };\n // eslint-disable-next-line\n FormFields.prototype.retriveCurrentValue = function (currentData) {\n // eslint-disable-next-line\n var currentField;\n // eslint-disable-next-line\n switch (currentData['Name']) {\n case 'Textbox':\n case 'Password':\n currentField = currentData.Text;\n break;\n case 'SignatureField':\n currentField = currentData.Value;\n break;\n case 'RadioButton':\n case 'CheckBox':\n currentField = currentData.Selected;\n break;\n case 'DropDown':\n currentField = currentData.SelectedValue;\n break;\n case 'ListBox':\n currentField = currentData.SelectedList;\n break;\n }\n return currentField;\n };\n // eslint-disable-next-line\n FormFields.prototype.getSignatureBounds = function (LineBounds, bounds, pageIndex) {\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n // eslint-disable-next-line\n var bound = 0;\n switch (pageDetails.rotation) {\n case 0:\n bound = bounds;\n break;\n case 1:\n bound = { x: bounds.x + LineBounds.Width + (bounds.width / 3.5), y: pageDetails.width - LineBounds.X + (bounds.height / 4) };\n break;\n case 2:\n bound = { x: pageDetails.width - bounds.x - bounds.width, y: pageDetails.height - bounds.y - bounds.height };\n break;\n case 3:\n bound = { x: bounds.y - (bounds.width / 2) + bounds.height, y: bounds.x + (bounds.width / 3) };\n break;\n }\n return bound;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.downloadFormFieldsData = function () {\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(data);\n // eslint-disable-next-line\n var datas = {};\n var fieldDatas = [];\n for (var m = 0; m < formFieldsData.length; m++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[m];\n var isRequired = currentData.IsRequired;\n if (currentData.Name === 'Textbox' || currentData.Name === 'Password' || currentData.Multiline) {\n if (isRequired && (currentData.Text === '' || currentData.Text === null)) {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.FieldName] = currentData.Text;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.FieldName]);\n }\n fieldDatas = { fieldValue: currentData.Text, isReadOnly: currentData.IsReadonly };\n datas[currentData.FieldName] = fieldDatas;\n }\n else if (currentData.Name === 'RadioButton' && currentData.Selected) {\n if (isRequired && currentData.Selected === false) {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.GroupName] = currentData.Value;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.GroupName]);\n }\n fieldDatas = { fieldValue: currentData.Value, isReadOnly: currentData.IsReadonly };\n datas[currentData.GroupName] = fieldDatas;\n }\n else if (currentData.Name === 'CheckBox') {\n if (isRequired && currentData.Selected === false) {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.GroupName] = currentData.Selected;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.GroupName]);\n }\n if (currentData.CheckboxIndex && currentData.Selected && currentData.Value) {\n fieldDatas = { isSelected: currentData.CheckboxIndex, isReadOnly: currentData.IsReadonly, fieldValue: currentData.Value };\n datas[currentData.GroupName] = fieldDatas;\n }\n else if (datas[currentData.GroupName] === undefined || datas[currentData.GroupName] === null) {\n fieldDatas = { isSelected: currentData.Selected, isReadOnly: currentData.IsReadonly, fieldValue: currentData.Value };\n datas[currentData.GroupName] = fieldDatas;\n }\n }\n else if (currentData.Name === 'DropDown') {\n if (isRequired && currentData.SelectedValue === '') {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.Text] = currentData.SelectedValue;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.Text]);\n }\n fieldDatas = { fieldValue: currentData.SelectedValue, isReadOnly: currentData.IsReadonly };\n datas[currentData.FieldName] = fieldDatas;\n }\n else if (currentData.Name === 'ListBox') {\n // eslint-disable-next-line\n var childItems = currentData['TextList'];\n var childItemsText = [];\n for (var m_1 = 0; m_1 < currentData.SelectedList.length; m_1++) {\n // eslint-disable-next-line\n var currentElement = currentData.SelectedList[m_1];\n childItemsText.push(childItems[currentElement]);\n }\n fieldDatas = { fieldValue: JSON.stringify(childItemsText), isReadOnly: currentData.IsReadonly };\n datas[currentData.Text] = fieldDatas;\n }\n else if (currentData.Name === 'SignatureField' || currentData.Name === 'InitialField') {\n // eslint-disable-next-line\n var csData = void 0;\n if (currentData.Value === null || currentData.Value === '') {\n this.addSignaturePath(currentData);\n }\n if (currentData.Value && currentData.Value !== '') {\n csData = currentData.Value;\n var fontFamily = currentData.fontFamily ? currentData.fontFamily : currentData.FontFamily;\n if (fontFamily) {\n datas[currentData.FieldName + 'fontName'] = fontFamily;\n datas[currentData.FieldName + 'fontSize'] = currentData.fontSize ? currentData.fontSize : currentData.FontSize;\n }\n else if (currentData.Value.split('base64,')[1]) {\n datas[currentData.FieldName + 'ImageData'] = true;\n }\n else {\n // eslint-disable-next-line\n var collectionData = processPathData(currentData.Value);\n csData = splitArrayCollection(collectionData);\n }\n }\n if (isRequired && currentData.Value === null || currentData.Value === '') {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.FieldName] = JSON.stringify(csData);\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.FieldName]);\n }\n datas[currentData.FieldName] = JSON.stringify(csData);\n if (currentData.Bounds) {\n // eslint-disable-next-line\n var bounds = this.getSignatureBounds(currentData.LineBounds, currentData.Bounds, currentData.PageIndex);\n currentData.Bounds.x = bounds.x;\n currentData.Bounds.y = bounds.y;\n datas[currentData.FieldName + 'bounds'] = JSON.stringify(currentData.Bounds);\n }\n else {\n // eslint-disable-next-line\n var lineBounds = currentData.LineBounds;\n // eslint-disable-next-line\n var bounds = { x: this.ConvertPointToPixel(lineBounds.X), y: this.ConvertPointToPixel(lineBounds.Y), width: this.ConvertPointToPixel(lineBounds.Width), height: this.ConvertPointToPixel(lineBounds.Height) };\n datas[currentData.FieldName + 'bounds'] = JSON.stringify(bounds);\n }\n datas[currentData.FieldName + 'isReadOnly'] = currentData.IsReadonly;\n }\n }\n return (JSON.stringify(datas));\n }\n };\n FormFields.prototype.focusFormFields = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n // eslint-disable-next-line\n if (currentTarget && (currentTarget.className !== 'e-pdfviewer-signatureformfields' && currentTarget.className !== 'e-pdfviewer-signatureformfields e-pv-signature-focus')) {\n // eslint-disable-next-line\n var backgroundcolor = currentTarget.style.backgroundColor;\n // eslint-disable-next-line\n var currentIndex = backgroundcolor.lastIndexOf(',');\n // eslint-disable-next-line\n var currentColor = backgroundcolor.slice(0, currentIndex + 1) + 0 + ')';\n currentTarget.style.backgroundColor = currentColor;\n if (currentTarget.type === 'checkbox') {\n currentTarget.style.webkitAppearance = '';\n }\n currentTarget.style.boxShadow = \"0 0 5px \" + (currentTarget.style.borderColor === 'transparent' ? '#000000' : currentTarget.style.borderColor);\n }\n else if (currentTarget) {\n // eslint-disable-next-line\n if (currentTarget.className === 'e-pdfviewer-signatureformfields' || currentTarget.className === 'e-pdfviewer-signatureformfields-signature' || currentTarget.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus' || currentTarget.className === 'e-pdfviewer-signatureformfields-signature e-pv-signature-focus') {\n this.pdfViewerBase.signatureModule.setFocus(currentTarget.id);\n }\n }\n };\n FormFields.prototype.blurFormFields = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n if (currentTarget.InsertSpaces && this.isKeyDownCheck) {\n // eslint-disable-next-line\n var font = parseInt(currentTarget.style.width) - (parseInt(currentTarget.style.height) / 2);\n currentTarget.style.width = '' + font + 'px';\n this.isKeyDownCheck = false;\n }\n if (currentTarget.type === 'checkbox') {\n this.pdfViewer.fireFocusOutFormField(currentTarget.name, currentTarget.checked);\n }\n else {\n this.pdfViewer.fireFocusOutFormField(currentTarget.name, currentTarget.value);\n }\n // eslint-disable-next-line\n var backgroundcolor = currentTarget.style.backgroundColor;\n // eslint-disable-next-line\n var currentIndex = backgroundcolor.lastIndexOf(',');\n // eslint-disable-next-line\n var currentColor = backgroundcolor.slice(0, currentIndex + 1) + 0.2 + ')';\n currentTarget.style.backgroundColor = currentColor;\n currentTarget.style.boxShadow = 'none';\n if ((currentTarget.type === 'checkbox') && !currentTarget.checked) {\n currentTarget.style.webkitAppearance = 'none';\n }\n else {\n currentTarget.style.webkitAppearance = '';\n }\n };\n FormFields.prototype.updateFormFields = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n if (this.pdfViewerBase.isDeviceiOS && currentTarget.type === 'checkbox') {\n currentTarget.focus();\n }\n if (currentTarget.className === 'e-pdfviewer-ListBox') {\n currentTarget = currentTarget.parentElement;\n this.updateDataInSession(currentTarget);\n }\n else if (currentTarget.className === 'e-pdfviewer-signatureformfields' || currentTarget.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus') {\n this.currentTarget = currentTarget;\n }\n else if (currentTarget.className === 'e-pv-buttonItem' || currentTarget.type === 'button') {\n this.pdfViewer.fireButtonFieldClickEvent(currentTarget.value, currentTarget.name, currentTarget.id);\n }\n for (var m = 0; m < this.pdfViewer.formFieldCollections.length; m++) {\n if (currentTarget.id === this.pdfViewer.formFieldCollections[m].id) {\n if (this.pdfViewer.formDesignerModule || this.pdfViewer.annotationModule) {\n this.pdfViewer.fireFormFieldClickEvent('formFieldClicked', this.pdfViewer.formFieldCollections[m]);\n }\n // eslint-disable-next-line\n if (currentTarget.className === 'e-pdfviewer-signatureformfields' || currentTarget.className === 'e-pdfviewer-signatureformfields-signature' || currentTarget.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus' || currentTarget.className === 'e-pdfviewer-signatureformfields-signature e-pv-signature-focus') {\n this.pdfViewerBase.signatureModule.setFocus(currentTarget.id);\n }\n }\n }\n };\n /**\n * @param signatureType\n * @param value\n * @param target\n * @param fontname\n * @param signatureType\n * @param value\n * @param target\n * @param fontname\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.drawSignature = function (signatureType, value, target, fontname) {\n var annot;\n // eslint-disable-next-line\n var proxy = this;\n var bounds;\n var targetBounds;\n var parentElementBounds;\n var data;\n if (this.pdfViewer.formDesigner) {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n }\n else {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n }\n var formFieldsData = JSON.parse(data);\n if (this.pdfViewer.formDesignerModule) {\n var targetName = this.currentTarget && this.currentTarget.offsetParent ? this.currentTarget.offsetParent.name : this.currentTarget ? this.currentTarget.name : target.name ? target.name : target.offsetParent.name;\n }\n else {\n var targetName = this.currentTarget ? this.currentTarget.name : target.name ? target.name : target.offsetParent.name;\n }\n var _loop_2 = function () {\n var fieldName = this_2.pdfViewer.formDesigner ? formFieldsData[i].FormField.name : formFieldsData[i].FieldName;\n if (this_2.pdfViewer.formDesigner ? fieldName === targetName : fieldName === targetName && (!isNullOrUndefined(formFieldsData[i].ActualFieldName))) {\n target = this_2.pdfViewer.formDesigner ? document.getElementById(formFieldsData[i].Key.split(\"_\")[0]) : document.getElementById(formFieldsData[i].uniqueID);\n // eslint-disable-next-line\n var currentField_1 = target;\n var signatureAdd_1 = true;\n this_2.pdfViewer.annotations.filter(function (item) {\n if (!isNullOrUndefined(currentField_1) && item.id === target.id + \"_content\") {\n signatureAdd_1 = false;\n }\n });\n if (!isNullOrUndefined(currentField_1) && signatureAdd_1) {\n var elementId = currentField_1.offsetParent.offsetParent.id.split(\"_\")[0];\n var signatureField_1 = this_2.pdfViewer.nameTable[elementId];\n if (target && target.offsetParent && signatureField_1) {\n targetBounds = target.getBoundingClientRect();\n parentElementBounds = target.offsetParent.offsetParent.offsetParent.getBoundingClientRect();\n this_2.pdfViewerBase.drawSignatureWithTool = true;\n if (target.nextSibling && target.nextSibling.id.indexOf(\"initial\") !== -1) {\n this_2.pdfViewer.isInitialFieldToolbarSelection = true;\n }\n }\n var currentValue_1 = value ? value : this_2.pdfViewerBase.signatureModule.outputString;\n var currentFont = fontname ? fontname : this_2.pdfViewerBase.signatureModule.fontName;\n var zoomvalue = this_2.pdfViewerBase.getZoomFactor();\n var currentWidth = this_2.pdfViewerBase.drawSignatureWithTool ? targetBounds.width / zoomvalue : parseFloat(currentField_1.style.width) / zoomvalue;\n var currentHeight = this_2.pdfViewerBase.drawSignatureWithTool ? targetBounds.height / zoomvalue : parseFloat(currentField_1.style.height) / zoomvalue;\n var currentLeft = this_2.pdfViewerBase.drawSignatureWithTool ? ((targetBounds.left - parentElementBounds.left)) / zoomvalue : parseFloat(currentField_1.style.left) / zoomvalue;\n var currentTop = this_2.pdfViewerBase.drawSignatureWithTool ? ((targetBounds.top - parentElementBounds.top)) / zoomvalue : parseFloat(currentField_1.style.top) / zoomvalue;\n var currentPage_1 = this_2.pdfViewerBase.drawSignatureWithTool ? target.nextElementSibling ? parseFloat(target.nextElementSibling.id.split(\"_\")[1]) : parseFloat(currentField_1.id.split('_')[1]) : parseFloat(currentField_1.id.split('_')[1]);\n var currentIndex = this_2.pdfViewerBase.drawSignatureWithTool ? target.nextElementSibling ? parseFloat(target.nextElementSibling.id.split('_')[2]) : parseFloat(currentField_1.id.split('_')[2]) : parseFloat(currentField_1.id.split('_')[2]);\n var signString_1 = this_2.pdfViewerBase.signatureModule.saveImageString;\n var signatureFontFamily_1;\n var signatureFontSize_1;\n var rotateAngleString = currentField_1.offsetParent.offsetParent.style.transform ? currentField_1.offsetParent.offsetParent.style.transform : currentField_1.style.transform;\n rotateAngleString = rotateAngleString.substring(rotateAngleString.indexOf(\"(\") + 1, rotateAngleString.indexOf(\"d\"));\n var rotateAngle_1 = rotateAngleString ? parseInt(rotateAngleString) : 0;\n if (signatureType === 'Type') {\n if (!currentFont) {\n currentFont = 'Helvetica';\n }\n // eslint-disable-next-line\n bounds = this_2.getSignBounds(currentIndex, rotateAngle_1, currentPage_1, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight);\n if (this_2.pdfViewer.signatureFitMode === 'Default') {\n bounds = this_2.getDefaultBoundsforSign(bounds);\n }\n annot = {\n // eslint-disable-next-line max-len\n id: currentField_1.id, bounds: { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height }, pageIndex: currentPage_1, data: currentValue_1, modifiedDate: '',\n shapeAnnotationType: 'SignatureText', opacity: 1, rotateAngle: rotateAngle_1, annotName: 'SignatureText', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }, fontFamily: currentFont, fontSize: bounds.height / this_2.signatureFontSizeConstent\n };\n if (annot.shapeAnnotationType === 'SignatureText') {\n var textWidth = this_2.getTextWidth(annot.data, annot.fontSize, annot.fontFamily);\n var widthRatio = 1;\n if (textWidth > bounds.width)\n widthRatio = bounds.width / textWidth;\n annot.fontSize = this_2.getFontSize(Math.floor((annot.fontSize * widthRatio)));\n }\n signString_1 = annot.data;\n signatureFontFamily_1 = annot.fontFamily;\n signatureFontSize_1 = annot.fontSize;\n }\n else if (signatureType === 'Image') {\n // eslint-disable-next-line\n bounds = this_2.getSignBounds(currentIndex, rotateAngle_1, currentPage_1, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight);\n var image_1 = new Image();\n var currentTarget_1 = target;\n image_1.src = currentValue_1;\n image_1.onload = function () {\n proxy.imageOnLoad(bounds, image_1, currentValue_1, currentPage_1, rotateAngle_1, currentField_1, signatureField_1, signString_1, signatureFontFamily_1, signatureFontSize_1, currentTarget_1);\n };\n }\n else {\n if ((currentValue_1.indexOf('base64')) !== -1) {\n // eslint-disable-next-line\n bounds = this_2.getSignBounds(currentIndex, rotateAngle_1, currentPage_1, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight);\n if (this_2.pdfViewer.signatureFitMode === 'Default') {\n bounds = this_2.getDefaultBoundsforSign(bounds);\n }\n annot = {\n // eslint-disable-next-line max-len\n id: currentField_1.id, bounds: { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height }, pageIndex: currentPage_1, data: currentValue_1, modifiedDate: '',\n shapeAnnotationType: 'SignatureImage', opacity: 1, rotateAngle: rotateAngle_1, annotName: 'SignatureField', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n signString_1 = annot.data;\n }\n else {\n // eslint-disable-next-line\n if (this_2.pdfViewer.signatureFitMode === 'Default') {\n // eslint-disable-next-line\n var signatureBounds = this_2.pdfViewerBase.signatureModule.updateSignatureAspectRatio(currentValue_1, false, currentField_1);\n // eslint-disable-next-line\n bounds = this_2.getSignBounds(currentIndex, rotateAngle_1, currentPage_1, zoomvalue, currentLeft, currentTop, signatureBounds.width, signatureBounds.height, true);\n bounds.x = bounds.x + signatureBounds.left;\n bounds.y = bounds.y + signatureBounds.top;\n }\n else {\n bounds = this_2.getSignBounds(currentIndex, rotateAngle_1, currentPage_1, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight);\n }\n annot = {\n // eslint-disable-next-line max-len\n id: currentField_1.id, bounds: { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height }, pageIndex: currentPage_1, data: currentValue_1, modifiedDate: '',\n shapeAnnotationType: 'Path', opacity: 1, rotateAngle: rotateAngle_1, annotName: 'SignatureField', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n }\n }\n if (this_2.pdfViewerBase.drawSignatureWithTool && signatureField_1 && signatureType !== 'Image') {\n annot.id = signatureField_1.id + \"_content\";\n var obj = this_2.pdfViewer.add(annot);\n signatureField_1.wrapper.children.push(obj.wrapper);\n }\n else if (signatureType !== 'Image') {\n this_2.pdfViewer.add(annot);\n }\n if (annot && annot.shapeAnnotationType === 'Path' && currentValue_1 !== '') {\n this_2.pdfViewerBase.currentSignatureAnnot = annot;\n // eslint-disable-next-line\n var position = { currentHeight: currentHeight, currentWidth: currentWidth, currentLeft: currentLeft, currentTop: currentTop };\n this_2.pdfViewerBase.signatureModule.addSignatureCollection(bounds, position);\n signString_1 = this_2.pdfViewerBase.signatureModule.saveImageString;\n this_2.pdfViewerBase.currentSignatureAnnot = null;\n }\n if (signatureType !== 'Image') {\n // eslint-disable-next-line\n var canvass = document.getElementById(this_2.pdfViewer.element.id + '_annotationCanvas_' + currentPage_1);\n // eslint-disable-next-line\n this_2.pdfViewer.renderDrawing(canvass, currentPage_1);\n this_2.pdfViewerBase.signatureModule.showSignatureDialog(false);\n if (currentField_1.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus') {\n currentField_1.className = 'e-pdfviewer-signatureformfields-signature e-pv-signature-focus';\n }\n else {\n currentField_1.className = 'e-pdfviewer-signatureformfields-signature';\n }\n if (this_2.pdfViewerBase.drawSignatureWithTool && signatureField_1) {\n var key = target.offsetParent.offsetParent.id.split('_')[0] + '_content';\n annot.bounds = { x: bounds.x * zoomvalue, y: bounds.y * zoomvalue, width: bounds.width * zoomvalue, height: bounds.height * zoomvalue };\n this_2.updateSignatureDataInSession(annot, key);\n }\n else {\n this_2.updateDataInSession(currentField_1, annot.data, annot.bounds, signatureFontFamily_1, signatureFontSize_1);\n }\n currentField_1.style.pointerEvents = 'none';\n if (this_2.pdfViewer.annotation) {\n this_2.pdfViewer.annotation.addAction(annot.pageIndex, null, annot, 'FormField Value Change', '', annot, annot);\n }\n // eslint-disable-next-line\n if (annot.shapeAnnotationType === 'Path' || annot.shapeAnnotationType === \"SignatureText\") {\n this_2.pdfViewer.fireSignatureAdd(annot.pageIndex, annot.id, annot.shapeAnnotationType, annot.bounds, annot.opacity, null, null, signString_1);\n }\n this_2.pdfViewer.fireFocusOutFormField(currentField_1.name, currentValue_1);\n }\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < formFieldsData.length; i++) {\n _loop_2();\n }\n if (signatureType !== 'Image') {\n this.pdfViewerBase.signatureModule.hideSignaturePanel();\n this.pdfViewerBase.drawSignatureWithTool = false;\n this.pdfViewer.isInitialFieldToolbarSelection = false;\n }\n };\n // EJ2-62918- Image signature width is wrong while adding programmatically and it is fixed by adding an onload event.\n // A function was added and it was called\n FormFields.prototype.imageOnLoad = function (bounds, image, currentValue, currentPage, rotateAngle, currentField, signatureField, signString, signatureFontFamily, signatureFontSize, target) {\n if (target && target.offsetParent && signatureField) {\n this.pdfViewerBase.drawSignatureWithTool = true;\n if (target.nextSibling && target.nextSibling.id.indexOf(\"initial\") !== -1) {\n this.pdfViewer.isInitialFieldToolbarSelection = true;\n }\n }\n var annot;\n if (this.pdfViewer.signatureFitMode === 'Default') {\n var padding = Math.min(bounds.height / this.paddingDifferenceValue, bounds.width / this.paddingDifferenceValue);\n var maxHeight = bounds.height - padding;\n var maxWidth = bounds.width - padding;\n var imageWidth = image.width;\n var imageHeight = image.height;\n var beforeWidth = bounds.width;\n var beforeHeight = bounds.height;\n var ratio = Math.min(maxWidth / imageWidth, maxHeight / imageHeight);\n bounds.width = imageWidth * ratio;\n bounds.height = imageHeight * ratio;\n bounds.x = bounds.x + (beforeWidth - bounds.width) / 2;\n bounds.y = bounds.y + (beforeHeight - bounds.height) / 2;\n }\n annot = {\n // eslint-disable-next-line max-len\n id: currentField.id, bounds: { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height }, pageIndex: currentPage, data: currentValue, modifiedDate: '',\n shapeAnnotationType: 'SignatureImage', opacity: 1, rotateAngle: rotateAngle, annotName: 'SignatureField', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n signString = annot.data;\n if (this.pdfViewerBase.drawSignatureWithTool && signatureField) {\n annot.id = signatureField.id + \"_content\";\n var obj = this.pdfViewer.add(annot);\n signatureField.wrapper.children.push(obj.wrapper);\n }\n else {\n this.pdfViewer.add(annot);\n }\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + currentPage);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, currentPage);\n this.pdfViewerBase.signatureModule.showSignatureDialog(false);\n if (currentField.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus') {\n currentField.className = 'e-pdfviewer-signatureformfields-signature e-pv-signature-focus';\n }\n else {\n currentField.className = 'e-pdfviewer-signatureformfields-signature';\n }\n if (this.pdfViewerBase.drawSignatureWithTool && signatureField) {\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n var key = target.offsetParent.offsetParent.id.split('_')[0] + '_content';\n annot.bounds = { x: bounds.x * zoomvalue, y: bounds.y * zoomvalue, width: bounds.width * zoomvalue, height: bounds.height * zoomvalue };\n this.updateSignatureDataInSession(annot, key);\n }\n else {\n this.updateDataInSession(currentField, annot.data, annot.bounds, signatureFontFamily, signatureFontSize);\n }\n currentField.style.pointerEvents = 'none';\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.addAction(annot.pageIndex, null, annot, 'FormField Value Change', '', annot, annot);\n }\n // eslint-disable-next-line\n if (annot.shapeAnnotationType === \"SignatureImage\") {\n this.pdfViewer.fireSignatureAdd(annot.pageIndex, annot.id, annot.shapeAnnotationType, annot.bounds, annot.opacity, null, null, signString);\n }\n this.pdfViewer.fireFocusOutFormField(currentField.name, currentValue);\n this.pdfViewerBase.signatureModule.hideSignaturePanel();\n this.pdfViewerBase.drawSignatureWithTool = false;\n this.pdfViewer.isInitialFieldToolbarSelection = false;\n };\n FormFields.prototype.updateSignatureDataInSession = function (annot, key) {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n if (!isNullOrUndefined(formFieldsData)) {\n var _loop_3 = function (i) {\n if (formFieldsData[i].Key === key) {\n var formFieldIndex = this_3.pdfViewer.formFieldCollection.findIndex(function (el) { return el.id === formFieldsData[i].FormField.id.split('_')[0]; });\n if (annot.shapeAnnotationType === \"SignatureText\") {\n formFieldsData[i].FormField.signatureType = \"Text\";\n this_3.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Text\";\n this_3.pdfViewer.nameTable[key].signatureType = \"Text\";\n formFieldsData[i].FormField.fontFamily = annot.fontFamily === \"TimesRoman\" ? \"Times New Roman\" : annot.fontFamily;\n this_3.pdfViewerBase.formFieldCollection[i].FormField.fontFamily = annot.fontFamily;\n this_3.pdfViewer.nameTable[key].fontFamily = annot.fontFamily;\n formFieldsData[i].FormField.fontSize = annot.fontSize;\n this_3.pdfViewerBase.formFieldCollection[i].FormField.fontSize = annot.fontSize;\n this_3.pdfViewer.nameTable[key].fontSize = annot.fontSize;\n formFieldIndex > -1 ? this_3.pdfViewer.formFieldCollection[formFieldIndex].signatureType = \"Text\" : null;\n }\n else if (annot.shapeAnnotationType === \"SignatureImage\") {\n formFieldsData[i].FormField.signatureType = \"Image\";\n this_3.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Image\";\n this_3.pdfViewer.nameTable[key].signatureType = \"Image\";\n formFieldIndex > -1 ? this_3.pdfViewer.formFieldCollection[formFieldIndex].signatureType = \"Image\" : null;\n }\n else {\n formFieldsData[i].FormField.signatureType = \"Path\";\n this_3.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Path\";\n this_3.pdfViewer.nameTable[key].signatureType = \"Path\";\n formFieldIndex > -1 ? this_3.pdfViewer.formFieldCollection[formFieldIndex].signatureType = \"Path\" : null;\n }\n formFieldsData[i].FormField.signatureBound = annot.bounds;\n this_3.pdfViewerBase.formFieldCollection[i].FormField.signatureBound = annot.bounds;\n this_3.pdfViewer.nameTable[key].signatureBound = annot.bounds;\n formFieldIndex > -1 ? this_3.pdfViewer.formFieldCollection[formFieldIndex].signatureBound = annot.bounds : null;\n if (annot.shapeAnnotationType === \"Path\") {\n var collectionData = processPathData(annot.data);\n var csData = splitArrayCollection(collectionData);\n formFieldsData[i].FormField.value = JSON.stringify(csData);\n this_3.pdfViewer.nameTable[key].value = annot.data;\n this_3.pdfViewer.nameTable[key.split('_')[0]].value = annot.data;\n this_3.pdfViewerBase.formFieldCollection[i].FormField.value = JSON.stringify(csData);\n formFieldIndex > -1 ? this_3.pdfViewer.formFieldCollection[formFieldIndex].value = JSON.stringify(csData) : null;\n }\n else {\n formFieldsData[i].FormField.value = annot.data;\n this_3.pdfViewerBase.formFieldCollection[i].FormField.value = annot.data;\n this_3.pdfViewer.nameTable[key.split('_')[0]].value = annot.data;\n this_3.pdfViewer.nameTable[key].value = annot.data;\n formFieldIndex > -1 ? this_3.pdfViewer.formFieldCollection[formFieldIndex].value = annot.data : null;\n }\n this_3.pdfViewer.formDesigner.updateFormFieldCollections(formFieldsData[i].FormField);\n this_3.pdfViewer.formDesigner.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldsData[i].FormField, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, \"\", formFieldsData[i].FormField.value);\n }\n };\n var this_3 = this;\n for (var i = 0; i < formFieldsData.length; i++) {\n _loop_3(i);\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(formFieldsData, '_formDesigner');\n };\n /**\n * @private\n */\n FormFields.prototype.getDefaultBoundsforSign = function (bounds) {\n return { x: bounds.x + 4, y: bounds.y + 4, width: bounds.width - 8, height: bounds.height - 8 };\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.getSignBounds = function (currentIndex, rotateAngle, currentPage, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight, isDraw) {\n // eslint-disable-next-line\n var bounds;\n var signatureId = this.pdfViewer.isInitialFieldToolbarSelection ? 'initialIcon' : 'signIcon';\n var signIcon = document.getElementById(signatureId + '_' + currentPage + '_' + currentIndex);\n var signLeft = signIcon ? parseFloat(signIcon.style.left) * zoomvalue : 0;\n var difference = (currentLeft * zoomvalue) - (signLeft / zoomvalue);\n if (rotateAngle === 90 || rotateAngle === 270) {\n this.rotateAngle = 0;\n if (signIcon.style.left !== '') {\n if (isDraw) {\n return bounds = { x: currentLeft - (difference / zoomvalue) - zoomvalue, y: currentTop + (difference / zoomvalue) + zoomvalue, width: currentWidth, height: currentHeight };\n }\n else {\n return bounds = { x: currentLeft - (difference / zoomvalue) - zoomvalue, y: currentTop + (difference / zoomvalue) + zoomvalue, width: currentHeight, height: currentWidth };\n }\n }\n else {\n difference = 10;\n if (isDraw) {\n return bounds = { x: currentLeft - currentWidth, y: currentTop + currentWidth, width: currentHeight, height: currentWidth };\n }\n else {\n return bounds = { x: currentLeft - currentWidth - difference / 2, y: currentTop + currentWidth + difference, width: currentHeight, height: currentWidth };\n }\n }\n }\n else {\n this.rotateAngle = 0;\n return bounds = { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight };\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.updateSameFieldsValue = function (event) {\n if (this.formFieldsData) {\n for (var i = 0; i < this.formFieldsData.length; i++) {\n // eslint-disable-next-line\n var currentField = this.formFieldsData[i];\n if (event.target.name === currentField.FieldName && event.target.id !== currentField.uniqueID) {\n // eslint-disable-next-line\n var currentTarget = document.getElementById(this.formFieldsData[i].uniqueID);\n if (currentTarget) {\n currentTarget.value = event.target.value;\n }\n else {\n currentField.Text = event.target.value;\n this.pdfViewerBase.setItemInSessionStorage(this.formFieldsData, '_formfields');\n }\n }\n }\n }\n };\n FormFields.prototype.updateFormFieldsValue = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n var fieldIndex;\n var nextFields;\n if (currentTarget.InsertSpaces && !this.isKeyDownCheck) {\n // eslint-disable-next-line\n var font = parseInt(currentTarget.style.width) + (parseInt(currentTarget.style.height) / 2);\n currentTarget.style.width = '' + font + 'px';\n this.isKeyDownCheck = true;\n }\n if (event.which === 9 && currentTarget && (currentTarget.className === 'e-pdfviewer-formFields' || currentTarget.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus' || currentTarget.className === 'e-pdfviewer-signatureformfields-signature')) {\n // eslint-disable-next-line\n var id = currentTarget.id.split('input_')[1].split('_')[0];\n // eslint-disable-next-line\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + parseInt(id));\n // eslint-disable-next-line\n var currentFields = textLayer.getElementsByClassName('e-pdfviewer-formFields');\n var istabindexed = true;\n fieldIndex = this.pdfViewer.formFieldCollections.findIndex(function (field) { return field.id === currentTarget.id; });\n if ((!event.shiftKey && event.key === \"Tab\")) {\n nextFields = fieldIndex + 1 < this.pdfViewer.formFieldCollections.length ? this.pdfViewer.formFieldCollections[fieldIndex + 1] : this.pdfViewer.formFieldCollections[0];\n }\n this.pdfViewer.focusFormField(nextFields);\n istabindexed = true;\n event.preventDefault();\n var tabindex = currentTarget.tabIndex + 1;\n while (!istabindexed) {\n for (var l = 0; l < currentFields.length; l++) {\n istabindexed = false;\n if (currentFields[l].tabIndex === (tabindex)) {\n currentFields[l].focus();\n istabindexed = true;\n event.preventDefault();\n break;\n }\n }\n if (this.maintainTabIndex[id] === tabindex) {\n istabindexed = true;\n }\n tabindex = tabindex + 1;\n }\n }\n if ((event.shiftKey && event.key === \"Tab\")) {\n var fieldIndex_1 = this.pdfViewer.formFieldCollections.findIndex(function (field) { return field.id === currentTarget.id; });\n var nextField = fieldIndex_1 > 0 ? this.pdfViewer.formFieldCollections[fieldIndex_1 - 1] : this.pdfViewer.formFieldCollections[this.pdfViewer.formFieldCollections.length - 1];\n this.pdfViewer.focusFormField(nextField);\n event.preventDefault();\n }\n if (event.currentTarget.classList.contains('e-pdfviewer-signatureformfields') ||\n event.currentTarget.classList.contains('e-pdfviewer-signatureformfields-signature')) {\n if (event.key === 'Enter') {\n // eslint-disable-next-line\n var currentTarget_2 = event.target;\n for (var m = 0; m < this.pdfViewer.formFieldCollections.length; m++) {\n if (currentTarget_2.id === this.pdfViewer.formFieldCollections[m].id) {\n this.pdfViewerBase.signatureModule.setFocus(currentTarget_2.id);\n this.pdfViewer.fireFormFieldClickEvent('formFieldClicked', this.pdfViewer.formFieldCollections[m]);\n }\n }\n }\n else {\n event.preventDefault();\n }\n }\n };\n FormFields.prototype.changeFormFields = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n this.updateDataInSession(currentTarget);\n };\n /**\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.updateDataInSession = function (target, signaturePath, signatureBounds, signatureFontFamily, signatureFontSize) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line\n var filterFields = [];\n var fieldsByName = \" \";\n var filterFieldName = [];\n var filterArrayLength = 0;\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data && !this.pdfViewer.formDesignerModule) {\n // eslint-disable-next-line\n var FormFieldsData = JSON.parse(data);\n filterFields = FormFieldsData.filter(function (item) { return item.uniqueID === target.id; });\n if (filterFields.length > 0) {\n fieldsByName = filterFields[0].FieldName;\n filterFieldName = FormFieldsData.filter(function (item) { return item.FieldName === fieldsByName; });\n filterArrayLength = filterFieldName.length;\n }\n for (var m = 0; m < FormFieldsData.length; m++) {\n // eslint-disable-next-line\n var currentData = FormFieldsData[m];\n if (currentData.uniqueID === target.id || fieldsByName === currentData.FieldName) {\n if (target && target.type === 'text' || target.type === 'password' || target.type === 'textarea') {\n var signField = target;\n if (signField.classList.contains('e-pdfviewer-signatureformfields') || signField.classList.contains('e-pdfviewer-signatureformfields-signature')) {\n if (signaturePath) {\n currentData.Value = signaturePath;\n }\n if (signatureBounds) {\n currentData.Bounds = signatureBounds;\n }\n if (signatureFontFamily) {\n currentData.FontFamily = signatureFontFamily;\n currentData.FontSize = signatureFontSize;\n }\n }\n else {\n currentData.Text = target.value;\n currentData.Value = target.value;\n currentData.Multiline = target.multiline;\n }\n }\n else if (target.type === 'radio') {\n if (target.checked) {\n for (var l = 0; l < FormFieldsData.length; l++) {\n // eslint-disable-next-line\n var currentType = FormFieldsData[l];\n if (FormFieldsData[l].GroupName === target.name) {\n FormFieldsData[l].Selected = false;\n }\n }\n if (target.value == currentData.Value) {\n currentData.Selected = true;\n break;\n }\n else {\n currentData.Selected = false;\n }\n }\n if (target.selected) {\n currentData.Selected = true;\n }\n if (currentData.Value == \"\" || currentData.Value !== target.value) {\n currentData.Value = target.value;\n }\n }\n else if (target.type === 'checkbox') {\n var targetCheckBox = target.id;\n var filterCheckBoxSameName = FormFieldsData.filter(function (sameNameCheckboxField) { return (sameNameCheckboxField.GroupName === target.name) && sameNameCheckboxField.Name == 'CheckBox'; });\n for (var l = 0; l < filterCheckBoxSameName.length; l++) {\n // eslint-disable-next-line\n var currentType = filterCheckBoxSameName[l];\n currentType.Selected = false;\n currentType.checked = false;\n // eslint-disable-next-line\n var currentTarget = document.getElementById(currentType.uniqueID);\n if (currentTarget) {\n if (targetCheckBox !== currentTarget.id) {\n currentTarget.Selected = false;\n currentTarget.checked = false;\n currentTarget.style.webkitAppearance = 'none';\n }\n }\n }\n if (target.checked) {\n currentData.Selected = true;\n }\n else {\n currentData.Selected = false;\n }\n if (currentData.Value == \"\") {\n currentData.Value = target.value;\n }\n }\n else if (target.type === 'select-one' && target.size === 0) {\n if (target.selectedIndex < 0) {\n target.selectedIndex = currentData.selectedIndex;\n }\n // eslint-disable-next-line\n var currentValue = target.options[target.selectedIndex].text;\n // eslint-disable-next-line\n var childrens = target.children;\n var isChildElements = false;\n for (var k = 0; k < childrens.length; k++) {\n if (childrens[k].text === currentValue) {\n currentData.SelectedValue = currentValue;\n currentData.selectedIndex = target.selectedIndex;\n }\n }\n }\n else if (target.type === 'select-multiple' || target.size > 0) {\n // eslint-disable-next-line\n var currentValue = target.selectedOptions;\n currentData.SelectedList = [];\n for (var z = 0; z < currentValue.length; z++) {\n // eslint-disable-next-line\n var childrens = target.children;\n for (var k = 0; k < childrens.length; k++) {\n if (childrens[k] === currentValue[z]) {\n currentData.SelectedList.push(k);\n }\n }\n }\n currentData.SelectedValue = target.value;\n var index = currentData.TextList ? currentData.TextList.indexOf(target.value) : 0;\n currentData.selectedIndex = index > -1 ? index : 0;\n currentData.SelectedList = [currentData.selectedIndex];\n }\n if (target.disabled) {\n currentData.IsReadonly = true;\n }\n currentData.IsRequired = target.Required ? target.Required : (target.required ? target.required : false);\n currentData.ToolTip = target.tooltip ? target.tooltip : \"\";\n this.updateFormFieldsCollection(currentData);\n filterArrayLength--;\n if (filterArrayLength == 0)\n break;\n }\n else if (target && target.getAttribute('list') != null && target.type === 'text' && currentData.uniqueID === target.list.id) {\n currentData.SelectedValue = target.value;\n }\n this.updateFormFieldsCollection(currentData);\n }\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_formfields');\n this.pdfViewerBase.setItemInSessionStorage(FormFieldsData, '_formfields');\n }\n if (this.pdfViewer.formDesignerModule && target && target.id) {\n var selectedItem = this.pdfViewer.nameTable[target.id.split('_')[0]];\n if (selectedItem && selectedItem.wrapper && selectedItem.wrapper.children[0]) {\n selectedItem.value = target.value;\n var point = cornersPointsBeforeRotation(selectedItem.wrapper.children[0]).topLeft;\n this.pdfViewer.formDesignerModule.updateFormDesignerFieldInSessionStorage(point, selectedItem.wrapper.children[0], selectedItem.formFieldAnnotationType, selectedItem);\n }\n }\n };\n /**\n * @private\n */\n FormFields.prototype.removeExistingFormFields = function () {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n if (formFieldsData) {\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].FormField.formFieldAnnotationType === \"RadioButton\") {\n var buttonItem = [];\n buttonItem = formFieldsData[i].FormField.radiobuttonItem;\n var sameButtonItemId = formFieldsData[i].FormField.id.split('_')[0];\n for (var j = 0; j < buttonItem.length; j++) {\n var otherButton = buttonItem[j];\n if (otherButton.id.split('_')[0] !== sameButtonItemId) {\n this.pdfViewer.formDesignerModule.deleteFormField(otherButton.id.split('_')[0]);\n }\n }\n }\n if (formFieldsData[i].Key) {\n this.pdfViewer.formDesignerModule.deleteFormField(formFieldsData[i].Key.split('_')[0]);\n }\n }\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.applyCommonProperties = function (inputdiv, pageIndex, index, currentData, isFieldRotated) {\n // eslint-disable-next-line\n var inputField = document.getElementById(this.pdfViewer.element.id + 'input_' + pageIndex + '_' + index);\n if (inputField) {\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n if (inputdiv.type === 'text' && inputField.parentElement !== textLayer) {\n inputField.parentElement.remove();\n }\n if (!(inputField.className === \"e-pdfviewer-signatureformfields e-pv-signature-focus\")) {\n inputField.remove();\n }\n }\n // eslint-disable-next-line\n var signIcon = document.getElementById('signIcon_' + pageIndex + '_' + index);\n var left = parseFloat(inputdiv.style.left);\n var top = parseInt(inputdiv.style.top);\n var width = parseFloat(inputdiv.style.width);\n var height = parseFloat(inputdiv.style.height);\n var signIconWidth;\n var signIconHeght;\n var hightDifference;\n var widthDifference;\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n if (signIcon && !isFieldRotated) {\n signIconWidth = parseFloat(signIcon.style.width);\n signIconHeght = parseFloat(signIcon.style.height);\n if (signIcon.style.transform == 'rotate(90deg)') {\n signIcon.style.transform = 'rotate(0deg)';\n hightDifference = height / 2;\n widthDifference = signIconWidth * zoomvalue;\n signIcon.style.left = ((left - (hightDifference - (signIconWidth * zoomvalue))) + (widthDifference / 2)) + 'px';\n }\n if (signIcon.style.transform == 'rotate(180deg)') {\n signIcon.style.transform = 'rotate(0deg)';\n signIcon.style.left = left + 'px';\n signIcon.style.top = (top) + 'px';\n }\n if (signIcon.style.transform == 'rotate(270deg)') {\n signIcon.style.transform = 'rotate(0deg)';\n hightDifference = height / 2;\n widthDifference = signIconWidth * zoomvalue;\n signIcon.style.left = ((left - (hightDifference - widthDifference)) + (widthDifference / 2)) + 'px';\n signIcon.style.top = ((top + (width + (signIconHeght * zoomvalue)) + ((signIconHeght * zoomvalue) / 2))) + 'px';\n }\n }\n if (currentData.IsSignatureField && this.isSignatureField) {\n inputdiv.className = 'e-pdfviewer-signatureformfields-signature';\n inputdiv.style.pointerEvents = 'none';\n }\n else if (currentData.IsSignatureField) {\n if (currentData.Value) {\n inputdiv.className = 'e-pdfviewer-signatureformfields-signature';\n inputdiv.style.pointerEvents = 'none';\n }\n else {\n inputdiv.className = 'e-pdfviewer-signatureformfields';\n }\n }\n else if (currentData.Name !== 'Button') {\n inputdiv.className = 'e-pdfviewer-formFields';\n }\n inputdiv.id = this.pdfViewer.element.id + 'input_' + pageIndex + '_' + index;\n inputdiv.ariaLabel = this.pdfViewer.element.id + 'input_' + pageIndex;\n inputdiv.style.zIndex = 1000;\n };\n /**\n * @param currentData\n * @param pageIndex\n * @param index\n * @param printContainer\n * @param currentData\n * @param pageIndex\n * @param index\n * @param printContainer\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.createFormFields = function (currentData, pageIndex, index, printContainer, count) {\n // eslint-disable-next-line\n var currentField;\n // eslint-disable-next-line\n switch (currentData['Name']) {\n case 'Textbox':\n currentField = this.createTextBoxField(currentData, pageIndex, 'text');\n break;\n case 'Password':\n currentField = this.createTextBoxField(currentData, pageIndex, 'password');\n break;\n case 'RadioButton':\n currentField = this.createRadioBoxField(currentData, pageIndex, 'radio');\n break;\n case 'CheckBox':\n currentField = this.createRadioBoxField(currentData, pageIndex, 'checkbox', printContainer);\n break;\n case 'DropDown':\n currentField = this.createDropDownField(currentData, pageIndex, index, printContainer);\n break;\n case 'ListBox':\n currentField = this.createListBoxField(currentData, pageIndex);\n break;\n case 'InitialField':\n case 'SignatureField':\n currentField = this.createSignatureField(currentData, pageIndex, index, printContainer, count);\n var isFieldRotated = false;\n if (currentData['Rotation'] === 0) {\n isFieldRotated = true;\n }\n if (currentData.Value && currentData.Value !== '') {\n this.renderExistingAnnnot(currentData, index, printContainer, isFieldRotated);\n this.isSignatureRendered = true;\n count++;\n }\n break;\n case 'Button':\n currentField = this.createButtonField(currentData, pageIndex);\n break;\n case 'ink':\n if (this.pdfViewer.formDesignerModule) {\n if (currentData.Value && currentData.Value !== '' && !this.isSignatureRendered) {\n this.renderExistingAnnnot(currentData, index, printContainer);\n }\n }\n break;\n case 'SignatureText':\n case 'SignatureImage':\n if (currentData.Value && currentData.Value !== '' && !this.isSignatureRendered) {\n this.renderExistingAnnnot(currentData, index, printContainer);\n }\n break;\n }\n return { currentField: currentField, count: count };\n };\n FormFields.prototype.getFormFieldType = function (currentData) {\n // eslint-disable-next-line\n var currentField;\n // eslint-disable-next-line\n switch (currentData['Name']) {\n case 'Textbox':\n currentField = 'Textbox';\n break;\n case 'Password':\n currentField = 'Password';\n break;\n case 'RadioButton':\n currentField = 'RadioButton';\n break;\n case 'CheckBox':\n currentField = 'CheckBox';\n break;\n case 'DropDown':\n currentField = 'DropDown';\n break;\n case 'ListBox':\n currentField = 'ListBox';\n break;\n case 'SignatureField':\n currentField = 'SignatureField';\n if (currentData.IsInitialField) {\n currentField = 'InitialField';\n }\n break;\n case 'InitialField':\n currentField = 'InitialField';\n break;\n }\n return currentField;\n };\n // eslint-disable-next-line\n FormFields.prototype.createButtonField = function (data, pageIndex) {\n // eslint-disable-next-line\n var inputField = document.createElement('input');\n if (data.Value && (this.isBase64(data.Value) || this.isURL(data.Value))) {\n inputField.type = 'image';\n inputField.src = data.Value;\n }\n else {\n inputField.type = 'button';\n }\n inputField.className = 'e-pv-buttonItem';\n if (data.Text !== '') {\n inputField.value = data.Text;\n }\n else {\n inputField.value = '';\n }\n inputField.name = data.FieldName;\n return inputField;\n };\n /**\n * Returns the boolean value based on the imgae source base64\n *\n * @param {string} imageSrc - Passing the image source.\n *\n * @returns {boolean}\n */\n FormFields.prototype.isBase64 = function (imageSrc) {\n return /^data:([a-zA-Z]*\\/[a-zA-Z+.-]*);base64,/.test(imageSrc);\n };\n /**\n * Returns the boolean value based on the imgae source URL\n *\n * @param {string} imageSrc - Passing the image source.\n *\n * @returns {boolean}\n */\n FormFields.prototype.isURL = function (imageSrc) {\n try {\n new URL(imageSrc);\n return true;\n }\n catch (_a) {\n return false;\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.createTextBoxField = function (data, pageIndex, type) {\n // eslint-disable-next-line\n var inputField;\n if (data.Visible === 1) {\n return;\n }\n if (data.Multiline) {\n inputField = document.createElement('textarea');\n inputField.style.resize = 'none';\n }\n else {\n inputField = document.createElement('input');\n inputField.type = type;\n }\n if (data.MaxLength > 0) {\n inputField.maxLength = data.MaxLength;\n }\n this.addAlignmentPropety(data, inputField);\n if (data.Text !== '') {\n inputField.value = data.Text;\n }\n else {\n inputField.value = '';\n }\n if (!this.pdfViewer.enableAutoComplete) {\n inputField.autocomplete = 'off';\n }\n inputField.name = data.FieldName;\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.checkIsReadonly = function (data, inputField) {\n var isReadonly = false;\n for (var n = 0; n < this.readOnlyCollection.length; n++) {\n if (inputField.id === this.readOnlyCollection[n]) {\n isReadonly = true;\n break;\n }\n }\n if (!this.pdfViewer.formDesignerModule && !this.pdfViewer.annotationModule && (data.IsInitialField || data.IsSignatureField)) {\n isReadonly = true;\n }\n if (data.IsReadonly || (!this.pdfViewer.enableFormFields) || isReadonly) {\n inputField.disabled = true;\n inputField.style.cursor = 'default';\n inputField.style.backgroundColor = 'transparent';\n }\n else {\n // eslint-disable-next-line\n var borderColor = data.BackColor;\n inputField.style.backgroundColor = 'rgba(' + borderColor.R + ',' + borderColor.G + ',' + borderColor.B + ',' + 0.2 + ')';\n // eslint-disable-next-line\n var fontColor = data.FontColor;\n inputField.style.color = 'rgba(' + fontColor.R + ',' + fontColor.G + ',' + fontColor.B + ',' + 1 + ')';\n }\n };\n /**\n * @param isReadonly\n * @private\n */\n // eslint-disable-next-line max-len\n FormFields.prototype.formFieldsReadOnly = function (isReadonly) {\n // eslint-disable-next-line\n var formFields = document.getElementsByClassName('e-pdfviewer-formFields');\n this.makeformFieldsReadonly(formFields, isReadonly);\n // eslint-disable-next-line\n var signatureFields = document.getElementsByClassName('e-pdfviewer-signatureformfields');\n this.makeformFieldsReadonly(signatureFields, isReadonly);\n };\n // eslint-disable-next-line\n FormFields.prototype.makeformFieldsReadonly = function (formFields, isReadonly) {\n for (var i = 0; i < formFields.length; i++) {\n if (formFields[i]) {\n // eslint-disable-next-line\n var inputField = formFields[i];\n if (!isReadonly) {\n inputField.disabled = true;\n inputField.style.cursor = 'default';\n }\n else {\n // eslint-disable-next-line\n inputField.disabled = false;\n }\n }\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.applyTabIndex = function (data, inputField, pageIndex) {\n inputField.tabIndex = data.TabIndex;\n this.maxTabIndex = Math.max(this.maxTabIndex, inputField.tabIndex);\n if (this.minTabIndex === -1) {\n this.minTabIndex = inputField.tabIndex;\n }\n this.minTabIndex = Math.min(this.minTabIndex, inputField.tabIndex);\n this.maintainTabIndex[pageIndex.toString()] = this.maxTabIndex;\n this.maintanMinTabindex[pageIndex.toString()] = this.minTabIndex;\n };\n // eslint-disable-next-line\n FormFields.prototype.checkIsRequiredField = function (data, inputField) {\n if (data.IsRequired) {\n inputField.required = true;\n inputField.style.border = '1px solid red';\n }\n else {\n // eslint-disable-next-line\n var borderColor = data.BorderColor;\n inputField.style.border = data.BorderWidth;\n inputField.style.borderColor = 'rgba(' + borderColor.R + ',' + borderColor.G + ',' + borderColor.B + ',' + 1 + ')';\n }\n if (inputField.type !== 'checkbox' && inputField.type !== 'radio') {\n var borderStyle = data.BorderStyle;\n this.addBorderStylePropety(borderStyle, inputField);\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.applyDefaultColor = function (inputField) {\n // eslint-disable-next-line max-len\n if (inputField.type !== 'button' && (inputField.style.backgroundColor === 'rgba(255, 255, 255, 0.2)' || inputField.style.backgroundColor === 'rgba(0, 0, 0, 0.2)') || inputField.style.backgroundColor === 'rgba(218, 234, 247, 0.2)') {\n inputField.style.backgroundColor = 'rgba(0, 20, 200, 0.2)';\n }\n if (inputField.style.color === 'rgba(255, 255, 255, 0.2)') {\n inputField.style.color = 'black';\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.addAlignmentPropety = function (data, inputField) {\n // eslint-disable-next-line\n var alignment = data.Alignment;\n switch (alignment) {\n case 0:\n inputField.style.textAlign = 'left';\n break;\n case 1:\n inputField.style.textAlign = 'center';\n break;\n case 2:\n inputField.style.textAlign = 'right';\n break;\n case 3:\n inputField.style.textAlign = 'justify';\n break;\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.addBorderStylePropety = function (borderStyle, inputField) {\n // eslint-disable-next-line\n switch (borderStyle) {\n case 0:\n inputField.style.borderStyle = 'solid';\n break;\n case 1:\n inputField.style.borderStyle = 'dashed';\n break;\n case 2:\n inputField.style.borderStyle = 'outset';\n break;\n case 3:\n inputField.style.borderStyle = 'inset';\n break;\n case 4:\n inputField.style.borderStyle = 'outset';\n break;\n case 5:\n inputField.style.borderStyle = 'dotted';\n break;\n case 6:\n inputField.style.borderStyle = 'inset';\n break;\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.createRadioBoxField = function (data, pageIndex, type, printContainer) {\n // eslint-disable-next-line\n var inputField = document.createElement('input');\n inputField.type = type;\n if (data.Selected) {\n inputField.checked = true;\n }\n else if (type === 'checkbox' && !printContainer) {\n inputField.style.webkitAppearance = 'none';\n }\n inputField.name = data.GroupName;\n inputField.value = data.Value;\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.createDropDownField = function (data, pageIndex, index, printContainer) {\n // eslint-disable-next-line\n var inputField = document.createElement('select');\n // eslint-disable-next-line\n var childItems = data['TextList'];\n if (data.Selected && !printContainer) {\n // eslint-disable-next-line\n var previousField = document.getElementById('editableDropdown' + pageIndex + '_' + index);\n if (previousField) {\n previousField.remove();\n }\n // eslint-disable-next-line\n var inputFields = document.createElement('input');\n inputFields.id = 'editableDropdown' + pageIndex + '_' + index;\n inputFields.setAttribute('list', this.pdfViewer.element.id + 'input_' + pageIndex + '_' + index);\n // eslint-disable-next-line\n var bounds = data['LineBounds'];\n // eslint-disable-next-line\n var font = data['Font'];\n inputFields.style.position = 'absolute';\n inputFields.style.border = '0px';\n // eslint-disable-next-line\n this.applyPosition(inputFields, bounds, font, pageIndex, data['Rotation']);\n inputFields.style.backgroundColor = 'rgba(0, 20, 200, 0.2)';\n inputFields.className = 'e-pdfviewer-formFields';\n if (data.selectedIndex === -1) {\n inputFields.value = data.SelectedValue;\n }\n if (printContainer) {\n printContainer.appendChild(inputFields);\n }\n else {\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n textLayer.appendChild(inputFields);\n }\n inputFields.addEventListener('focus', this.focusFormFields.bind(this));\n inputFields.addEventListener('blur', this.blurFormFields.bind(this));\n inputFields.addEventListener('click', this.updateFormFields.bind(this));\n inputFields.addEventListener('change', this.changeFormFields.bind(this));\n inputFields.addEventListener('keydown', this.updateFormFieldsValue.bind(this));\n inputField = document.createElement('DATALIST');\n }\n for (var j = 0; j < childItems.length; j++) {\n // eslint-disable-next-line\n var option = document.createElement('option');\n option.className = 'e-dropdownSelect';\n if (data.SelectedValue === childItems[j] || data.selectedIndex === j) {\n option.selected = true;\n }\n else {\n option.selected = false;\n }\n option.innerHTML = childItems[j];\n inputField.appendChild(option);\n }\n inputField.name = data.Text;\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.createListBoxField = function (data, pageIndex) {\n // eslint-disable-next-line\n var inputField = document.createElement('select');\n // eslint-disable-next-line\n var childItems = data['TextList'];\n if (data.MultiSelect) {\n inputField.multiple = true;\n }\n else {\n inputField.multiple = false;\n inputField.size = childItems.length;\n }\n for (var j = 0; j < childItems.length; j++) {\n // eslint-disable-next-line\n var option = document.createElement('option');\n option.className = 'e-pdfviewer-ListBox';\n for (var k = 0; k < data.SelectedList.length; k++) {\n if (data.SelectedList[k] === j) {\n option.selected = true;\n }\n }\n option.innerHTML = childItems[j];\n inputField.appendChild(option);\n }\n inputField.name = data.Text;\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.createSignatureField = function (data, pageIndex, index, printContainer, count) {\n // eslint-disable-next-line\n var inputField = document.createElement('input');\n inputField.type = 'text';\n inputField.name = data.FieldName;\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n var previousField = document.getElementById('signIcon_' + pageIndex + '_' + index);\n if (previousField && !printContainer) {\n previousField.remove();\n }\n this.pdfViewerBase.isInitialField = data.IsInitialField;\n var signIndicator = this.pdfViewerBase.isInitialField ? \"Initial\" : \"Sign\";\n //check whether the width for sign indicator has default value or not and then set the default width value for initial field.\n var signatureFieldIndicatorWidth = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings ? (this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.width === 19 ? (this.pdfViewerBase.isInitialField ? 27 : 19) : this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.width) : 19;\n // eslint-disable-next-line\n var span = document.createElement('span');\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n // eslint-disable-next-line\n var bounds = data['LineBounds'];\n // eslint-disable-next-line\n var font = data['Font'];\n var left = this.ConvertPointToPixel(bounds.X);\n var top = this.ConvertPointToPixel(bounds.Y);\n var indicatorWidth = this.ConvertPointToPixel(bounds.Width);\n var indicatorHeight = this.ConvertPointToPixel(bounds.Height);\n // eslint-disable-next-line max-len\n var height = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings ? (this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.height > indicatorHeight * zoomvalue / 2 ? indicatorHeight * zoomvalue / 2 : this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.height) : indicatorHeight * zoomvalue / 2;\n // eslint-disable-next-line max-len\n var width = signatureFieldIndicatorWidth > indicatorWidth * zoomvalue / 2 ? indicatorWidth * zoomvalue / 2 : signatureFieldIndicatorWidth;\n // eslint-disable-next-line max-len\n var size = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings ? (this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.fontSize > height / 2 ? 10 : this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.fontSize) : 10;\n var fontSize = size > width ? width / 2 : (size > height ? height / 2 : size);\n span.style.position = 'absolute';\n span.id = 'signIcon_' + pageIndex + '_' + index;\n var rotation = this.getAngle(pageIndex);\n // eslint-disable-next-line\n var annotBounds = { left: left, top: top, width: width, height: height };\n // eslint-disable-next-line\n var fieldBounds = this.getBounds(annotBounds, pageIndex);\n span.style.transform = 'rotate(' + rotation + 'deg)';\n span.style.left = fieldBounds.left * zoomvalue + 'px';\n span.style.top = fieldBounds.top * zoomvalue + 'px';\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n span.style.height = 5 + 'px';\n span.style.width = 10 + 'px';\n span.style.fontSize = '3px';\n }\n else {\n span.style.height = height + 'px';\n span.style.width = width + 'px';\n span.style.fontSize = fontSize + 'px';\n if (isBlazor()) {\n span.style.fontSize = (fontSize - 1) + 'px';\n }\n }\n if (!((height + this.indicatorPaddingValue) > indicatorHeight * zoomvalue) && !((width + this.indicatorPaddingValue) > indicatorWidth * zoomvalue)) {\n span.style.padding = '2px';\n }\n span.style.textAlign = 'center';\n span.style.boxSizing = 'content-box';\n // eslint-disable-next-line\n span.innerHTML = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings ? (this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.text ? this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.text : signIndicator) : signIndicator;\n span.style.color = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings ? (this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.color ? this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.color : 'black') : 'black';\n // eslint-disable-next-line\n span.style.backgroundColor = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings ? (this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.backgroundColor ? this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.backgroundColor : 'orange') : 'orange';\n span.style.opacity = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings ? (this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.opacity ? this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.opacity : 1) : 1;\n if (!isNullOrUndefined(textLayer)) {\n textLayer.appendChild(span);\n }\n this.addSignaturePath(data, count);\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.addSignaturePath = function (signData, count) {\n this.isSignatureField = false;\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(data);\n for (var m = 0; m < formFieldsData.length; m++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[m];\n // eslint-disable-next-line max-len\n if (currentData.ActualFieldName === null && count && (currentData.Name === 'ink' || currentData.Name === 'SignatureField' || currentData.Name === 'SignatureImage' || currentData.Name === 'SignatureText') && (this.pdfViewer.formDesigner ? ((currentData.FieldName.split('_')[0]) === (signData.ActualFieldName) || (currentData.FieldName.split('_')[0]) === (signData.FieldName)) : ((currentData.FieldName.split('_')[0] === (signData.FieldName)) && !isNullOrUndefined(signData.ActualFieldName)) && currentData.Value && currentData.Value !== '')) {\n signData.Value = currentData.Value;\n signData.FontFamily = currentData.FontFamily;\n signData.FontSize = currentData.FontSize;\n this.isSignatureField = true;\n signData.Bounds = currentData.LineBounds;\n }\n if (currentData.ActualFieldName === null && count && (currentData.Name === 'ink' || currentData.Name === 'SignatureField' || currentData.Name === 'SignatureImage' || currentData.Name === 'SignatureText') && this.pdfViewer.formDesigner ? currentData.FieldName === signData.ActualFieldName + '_' + count || currentData.FieldName === signData.FieldName + '_' + count : ((currentData.FieldName === signData.FieldName + '_' + count || currentData.FieldName === signData.ActualFieldName + '_' + count) && !isNullOrUndefined(signData.ActualFieldName)) && currentData.Value && currentData.Value !== '') {\n signData.Value = currentData.Value;\n signData.FontFamily = currentData.FontFamily;\n signData.FontSize = currentData.FontSize;\n this.isSignatureField = true;\n if (!signData.Bounds) {\n signData.Bounds = currentData.LineBounds;\n }\n break;\n }\n }\n }\n return this.isSignatureField;\n };\n // eslint-disable-next-line\n FormFields.prototype.getBounds = function (bound, pageIndex, rotation, isFieldRotated) {\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n // eslint-disable-next-line\n var bounds;\n if (rotation > 0) {\n bounds = this.getBoundsPosition(rotation, bound, pageDetails, isFieldRotated);\n }\n else {\n bounds = this.getBoundsPosition(pageDetails.rotation, bound, pageDetails, isFieldRotated);\n }\n return bounds;\n };\n // eslint-disable-next-line\n FormFields.prototype.getBoundsPosition = function (rotation, bound, pageDetails, isFieldRotated) {\n // eslint-disable-next-line\n var bounds;\n if (!isFieldRotated) {\n switch (rotation) {\n case 90:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.top - bound.height, top: bound.left, width: bound.height, height: bound.width };\n break;\n case 180:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.left - bound.width, top: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n break;\n case 270:\n // eslint-disable-next-line\n bounds = { left: bound.top, top: pageDetails.height - bound.left - bound.width, width: bound.height, height: bound.width };\n break;\n case 0:\n // eslint-disable-next-line\n bounds = bound;\n break;\n case 1:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.top - bound.height, top: bound.left, width: bound.height, height: bound.width };\n break;\n case 2:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.left - bound.width, top: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n break;\n case 3:\n // eslint-disable-next-line\n bounds = { left: bound.top, top: pageDetails.height - bound.left - bound.width, width: bound.height, height: bound.width };\n break;\n }\n if (!bounds) {\n bounds = bound;\n }\n }\n else {\n switch (rotation) {\n case 0:\n // eslint-disable-next-line\n bounds = bound;\n break;\n case 1:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.top - bound.height - (bound.width / 2 - bound.height / 2), top: bound.left + (bound.width / 2 - bound.height / 2), width: bound.width, height: bound.height };\n break;\n case 2:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.left - bound.width, top: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n break;\n case 3:\n // eslint-disable-next-line\n bounds = { left: bound.top - (bound.width / 2 - bound.height / 2), top: (pageDetails.height - bound.left - bound.width + (bound.width / 2 - bound.height / 2)), width: bound.width, height: bound.height };\n break;\n }\n if (!bounds) {\n bounds = bound;\n }\n }\n return bounds;\n };\n // eslint-disable-next-line\n FormFields.prototype.applyPosition = function (inputField, bounds, font, pageIndex, rotation, isFieldRotated) {\n if (bounds) {\n var left = this.ConvertPointToPixel(bounds.X);\n var top_3 = this.ConvertPointToPixel(bounds.Y);\n var width = this.ConvertPointToPixel(bounds.Width);\n var height = this.ConvertPointToPixel(bounds.Height);\n var fontHeight = 0;\n // eslint-disable-next-line\n var fieldBounds = { left: left, top: top_3, width: width, height: height };\n // eslint-disable-next-line\n var annotBounds = this.getBounds(fieldBounds, pageIndex, rotation, isFieldRotated);\n if (!isNullOrUndefined(font) && font.Height) {\n inputField.style.fontFamily = font.Name;\n if (font.Italic) {\n inputField.style.fontStyle = 'italic';\n }\n if (font.Bold) {\n inputField.style.fontWeight = 'Bold';\n }\n fontHeight = this.ConvertPointToPixel(font.Size);\n }\n this.pdfViewerBase.setStyleToTextDiv(inputField, annotBounds.left, annotBounds.top, fontHeight, annotBounds.width, annotBounds.height, false);\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.renderExistingAnnnot = function (data, index, printContainer, isFieldRotated) {\n if (!printContainer) {\n // eslint-disable-next-line\n var bounds = void 0;\n if (data.Bounds && data.Name !== 'ink') {\n bounds = data.Bounds;\n }\n else {\n bounds = data.LineBounds;\n }\n var currentLeft = void 0;\n var currentTop = void 0;\n var currentWidth = void 0;\n var currentHeight = void 0;\n if (bounds.x || bounds.y || bounds.width || bounds.height) {\n currentLeft = bounds.x;\n currentTop = bounds.y;\n currentWidth = bounds.width;\n currentHeight = bounds.height;\n }\n else {\n currentLeft = this.ConvertPointToPixel(bounds.X);\n currentTop = this.ConvertPointToPixel(bounds.Y);\n currentWidth = this.ConvertPointToPixel(bounds.Width);\n currentHeight = this.ConvertPointToPixel(bounds.Height);\n }\n // eslint-disable-next-line\n var currentPage = parseFloat(data['PageIndex']);\n // eslint-disable-next-line\n var bound = { left: currentLeft, top: currentTop, width: currentWidth, height: currentHeight };\n // eslint-disable-next-line\n var newBounds = this.updateSignatureBounds(bound, currentPage, isFieldRotated);\n var annot = void 0;\n var fontFamily = data.FontFamily ? data.FontFamily : data.fontFamily;\n // eslint-disable-next-line\n if ((this.pdfViewerBase.isSignatureImageData(data.Value))) {\n annot = {\n // eslint-disable-next-line max-len\n id: this.pdfViewer.element.id + 'input_' + currentPage + '_' + index, bounds: newBounds, pageIndex: currentPage, data: data.Value, modifiedDate: '',\n shapeAnnotationType: 'SignatureImage', opacity: 1, rotateAngle: isFieldRotated ? this.getAngle(currentPage) : 0, annotName: 'SignatureField', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n }\n else if (this.pdfViewerBase.isSignaturePathData(data.Value)) {\n var bound_1 = newBounds;\n var tempBounds = { left: newBounds.x, top: newBounds.y, width: newBounds.width, height: newBounds.height };\n bound_1 = this.updateSignatureBounds(tempBounds, currentPage, false);\n annot = {\n // eslint-disable-next-line max-len\n id: this.pdfViewer.element.id + 'input_' + currentPage + '_' + index, bounds: bound_1, pageIndex: currentPage, data: data.Value, modifiedDate: '',\n shapeAnnotationType: 'Path', opacity: 1, rotateAngle: 0, annotName: 'SignatureField', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n }\n else {\n annot = {\n // eslint-disable-next-line max-len\n id: this.pdfViewer.element.id + 'input_' + currentPage + '_' + index, bounds: newBounds, pageIndex: currentPage, data: data.Value, modifiedDate: '',\n shapeAnnotationType: 'SignatureText', opacity: 1, rotateAngle: isFieldRotated ? this.getAngle(currentPage) : 0, annotName: 'SignatureField', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }, fontFamily: data.FontFamily, fontSize: data.FontSize\n };\n annot.fontFamily = fontFamily === \"TimesRoman\" ? \"Times New Roman\" : fontFamily;\n annot.fontSize = data.FontSize ? data.FontSize : data.fontSize;\n }\n if ((data.Name === 'SignatureField' || data.Name === 'InitialField') && !isNullOrUndefined(data.id)) {\n var elementId = data.id;\n var signatureFieldElement = document.getElementById(elementId + '_content_html_element');\n var signatureField = this.pdfViewer.nameTable[elementId];\n annot.id = signatureField.id + \"_content\";\n var obj = this.pdfViewer.add(annot);\n signatureField.wrapper.children.push(obj.wrapper);\n if (!isNullOrUndefined(signatureFieldElement) && this.isSignatureField) {\n var inputField = signatureFieldElement.children[0].children[0];\n inputField.style.pointerEvents = 'none';\n inputField.className = 'e-pdfviewer-signatureformfields-signature';\n inputField.parentElement.style.pointerEvents = 'none';\n }\n else if (!isNullOrUndefined(signatureFieldElement) && data.Value) {\n var inputField = signatureFieldElement.children[0].children[0];\n inputField.style.pointerEvents = 'none';\n inputField.className = 'e-pdfviewer-signatureformfields-signature';\n inputField.parentElement.style.pointerEvents = 'none';\n }\n }\n else {\n var target = document.getElementById(annot.id);\n if (target && target.classList.contains('e-pdfviewer-signatureformfields-signature')) {\n this.pdfViewer.annotation.deleteAnnotationById(annot.id);\n }\n this.pdfViewer.add(annot);\n if (target) {\n this.updateDataInSession(target, annot.data, annot.bounds);\n this.pdfViewer.fireSignatureAdd(annot.pageIndex, annot.id, annot.shapeAnnotationType, annot.bounds, annot.opacity, annot.strokeColor, annot.thickness, annot.data);\n }\n }\n data.Bounds = annot.bounds;\n if (this.pdfViewer.formDesignerModule) {\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n annot.bounds = { x: currentLeft * zoomvalue, y: currentTop * zoomvalue, width: currentWidth * zoomvalue, height: currentHeight * zoomvalue };\n this.updateSignatureDataInSession(annot, annot.id);\n }\n // eslint-disable-next-line\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + currentPage);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, currentPage);\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.updateSignatureBounds = function (bound, pageIndex, isFieldRotated) {\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if (pageDetails) {\n if (!isFieldRotated) {\n if (pageDetails.rotation === 1) {\n // eslint-disable-next-line max-len\n return { x: pageDetails.width - bound.top - bound.height, y: bound.left, width: bound.height, height: bound.width };\n }\n else if (pageDetails.rotation === 2) {\n // eslint-disable-next-line max-len\n return { x: pageDetails.width - bound.left - bound.width, y: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n }\n else if (pageDetails.rotation === 3) {\n // eslint-disable-next-line max-len\n return { x: bound.top, y: (pageDetails.height - bound.left - bound.width), width: bound.height, height: bound.width };\n }\n else {\n // eslint-disable-next-line max-len\n return { x: bound.left, y: bound.top, width: bound.width, height: bound.height };\n }\n }\n else {\n if (pageDetails.rotation === 1) {\n // eslint-disable-next-line max-len\n return { x: pageDetails.width - bound.top - bound.height - (bound.width / 2 - bound.height / 2), y: bound.left + (bound.width / 2 - bound.height / 2), width: bound.width, height: bound.height };\n }\n else if (pageDetails.rotation === 2) {\n // eslint-disable-next-line max-len\n return { x: pageDetails.width - bound.left - bound.width, y: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n }\n else if (pageDetails.rotation === 3) {\n // eslint-disable-next-line max-len\n return { x: bound.top - (bound.width / 2 - bound.height / 2), y: (pageDetails.height - bound.left - bound.width + (bound.width / 2 - bound.height / 2)), width: bound.width, height: bound.height };\n }\n else {\n // eslint-disable-next-line max-len\n return { x: bound.left, y: bound.top, width: bound.width, height: bound.height };\n }\n }\n }\n else {\n return { x: bound.left, y: bound.top, width: bound.width, height: bound.height };\n }\n };\n FormFields.prototype.resetFormFields = function () {\n var formFieldData = this.pdfViewer.formFieldCollections;\n for (var i = 0; i < formFieldData.length; i++) {\n var currentData = formFieldData[i];\n this.currentTarget = document.getElementById(currentData.id);\n if (currentData.type === 'Textbox') {\n this.currentTarget.value = currentData.value;\n }\n else if (currentData.type === 'RadioButton') {\n this.currentTarget.checked = currentData.value;\n if (currentData.value) {\n this.updateDataInSession(this.currentTarget);\n }\n }\n else if (currentData.type === 'DropDown') {\n this.currentTarget.value = currentData.value;\n }\n else if (currentData.type === 'CheckBox') {\n this.currentTarget.checked = currentData.value;\n }\n else if (currentData.type === 'SignatureField') {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.nameTable[currentData.id];\n if (annotation) {\n if (this.currentTarget && this.currentTarget.className === 'e-pdfviewer-signatureformfields-signature') {\n this.currentTarget.className = 'e-pdfviewer-signatureformfields';\n this.currentTarget.style.pointerEvents = '';\n this.updateDataInSession(this.currentTarget, '');\n }\n this.pdfViewer.remove(annotation);\n this.pdfViewer.renderDrawing();\n }\n }\n if (currentData.type !== 'RadioButton' && currentData.type !== 'SignatureField') {\n this.updateDataInSession(this.currentTarget);\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.clearFormFieldStorage = function () {\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n var maxSessionSize = 4500;\n if (this.pdfViewerBase.isStorageExceed) {\n var storageLength = window.sessionStorage.length;\n // eslint-disable-next-line\n var formFieldsList = [];\n for (var i = 0; i < storageLength; i++) {\n if (window.sessionStorage.key(i) && window.sessionStorage.key(i).split('_')[3]) {\n if (window.sessionStorage.key(i).split('_')[3] === 'formfields') {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.formFieldStorage[window.sessionStorage.key(i)] = window.sessionStorage.getItem(window.sessionStorage.key(i));\n formFieldsList.push(window.sessionStorage.key(i));\n }\n else if (window.sessionStorage.key(i).split('_')[3] === 'formDesigner') {\n this.pdfViewerBase.formFieldStorage[window.sessionStorage.key(i)] = window.sessionStorage.getItem(window.sessionStorage.key(i));\n formFieldsList.push(window.sessionStorage.key(i));\n }\n }\n }\n if (formFieldsList) {\n for (var i = 0; i < formFieldsList.length; i++) {\n window.sessionStorage.removeItem(formFieldsList[i]);\n }\n }\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.clearFormFields = function (formField) {\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = void 0;\n if (formField) {\n formFieldsData = [formField];\n }\n else {\n formFieldsData = JSON.parse(data);\n }\n var isFirstRadio = true;\n for (var m = 0; m < formFieldsData.length; m++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[m];\n if (formField) {\n currentData.uniqueID = formField.id;\n currentData.Name = formField.type;\n }\n // eslint-disable-next-line\n this.currentTarget = document.getElementById(currentData.uniqueID);\n if (currentData.Name === 'Textbox') {\n this.currentTarget.value = '';\n }\n else if (currentData.Name === 'RadioButton') {\n if (isFirstRadio) {\n this.currentTarget.checked = true;\n this.updateDataInSession(this.currentTarget);\n isFirstRadio = false;\n }\n }\n else if (currentData.Name === 'DropDown') {\n this.currentTarget.value = currentData.TextList[0];\n }\n else if (currentData.Name === 'CheckBox') {\n this.currentTarget.checked = false;\n }\n else if (currentData.Name === 'SignatureField' || currentData.Name === 'InitialField') {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.nameTable[currentData.uniqueID];\n if (annotation.propName !== 'annotations') {\n annotation = this.pdfViewer.nameTable[currentData.uniqueID + '_content'];\n }\n if (annotation) {\n if (this.currentTarget && this.currentTarget.className === 'e-pdfviewer-signatureformfields-signature') {\n this.currentTarget.className = 'e-pdfviewer-signatureformfields';\n this.currentTarget.style.pointerEvents = '';\n this.currentTarget.parentElement.style.pointerEvents = '';\n this.updateDataInSession(this.currentTarget, '');\n if (formField) {\n formField.value = '';\n formField.signatureType = [formField.signatureType];\n formField.signatureType[0] = '';\n }\n }\n this.pdfViewer.annotation.deleteAnnotationById(annotation.id);\n }\n }\n if (currentData.Name !== 'SignatureField' && currentData.Name !== 'ink' && currentData.Name !== 'RadioButton') {\n this.updateDataInSession(this.currentTarget);\n }\n }\n }\n };\n /**\n * @param number\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.ConvertPointToPixel = function (number) {\n return (number * (96 / 72));\n };\n /**\n * @private\n */\n FormFields.prototype.destroy = function () {\n this.currentTarget = null;\n this.readOnlyCollection = [];\n if (this.pdfViewerBase && this.pdfViewerBase.signatureModule)\n this.pdfViewerBase.signatureModule.destroy();\n };\n /**\n * @private\n */\n FormFields.prototype.getModuleName = function () {\n return 'FormFields';\n };\n /**\n * @private\n * Get the text wdith\n * @param text\n * @param font\n * @param fontFamily\n */\n FormFields.prototype.getTextWidth = function (text, font, fontFamily) {\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var fontName;\n if (font) {\n fontName = font + 'px' + ' ' + fontFamily;\n }\n context.font = fontName || getComputedStyle(document.body).font;\n return context.measureText(text).width;\n };\n /**\n * @private\n * @param {number} fontSize - Font size.\n * @returns {number} - Returns the font size.\n */\n FormFields.prototype.getFontSize = function (fontSize) {\n return fontSize;\n ;\n };\n return FormFields;\n}());\nexport { FormFields };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Size } from '../../primitives/size';\nimport { DrawingElement } from './drawing-element';\nimport { measureImage } from './../../utility/dom-util';\n/**\n * ImageElement defines a basic image elements\n */\nvar ImageElement = /** @class */ (function (_super) {\n __extends(ImageElement, _super);\n /**\n * set the id for each element\n */\n function ImageElement() {\n var _this = _super.call(this) || this;\n /**\n * sets or gets the image source\n */\n _this.imageSource = '';\n /**\n * sets or gets the print id\n * @private\n */\n _this.printID = '';\n /**\n * sets scaling factor of the image\n */\n _this.imageScale = 'None';\n /**\n * sets the alignment of the image\n */\n _this.imageAlign = 'None';\n /**\n * Sets how to stretch the image\n */\n _this.stretch = 'Stretch';\n return _this;\n }\n Object.defineProperty(ImageElement.prototype, \"source\", {\n /**\n * Gets the source for the image element\n */\n get: function () {\n return this.imageSource;\n },\n /**\n * Sets the source for the image element\n */\n set: function (value) {\n this.imageSource = value;\n this.isDirt = true;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Measures minimum space that is required to render the image\n * @param availableSize\n */\n ImageElement.prototype.measure = function (availableSize) {\n if (this.isDirt && (this.stretch !== 'Stretch' || this.width === undefined && this.height === undefined)) {\n this.contentSize = measureImage(this.source, this.contentSize);\n this.isDirt = false;\n }\n if (this.width !== undefined && this.height !== undefined) {\n this.desiredSize = new Size(this.width, this.height);\n this.contentSize = this.desiredSize;\n }\n else {\n this.desiredSize = this.contentSize;\n }\n this.desiredSize = this.validateDesiredSize(this.desiredSize, availableSize);\n return this.desiredSize;\n };\n /**\n * Arranges the image\n * @param desiredSize\n */\n ImageElement.prototype.arrange = function (desiredSize) {\n this.actualSize = new Size(this.desiredSize.width, this.desiredSize.height);\n this.updateBounds();\n return this.actualSize;\n };\n return ImageElement;\n}(DrawingElement));\nexport { ImageElement };\n","import { PathElement } from '../core/elements/path-element';\nimport { TextElement } from '../core/elements/text-element';\nimport { Container } from '../core/containers/container';\nimport { wordBreakToString, whiteSpaceToString, textAlignToString } from '../utility/base-util';\nimport { getDiagramElement } from '../utility/dom-util';\nimport { CanvasRenderer } from './canvas-renderer';\nimport { ImageElement } from '../core/elements/image-element';\n/**\n * Renderer module is used to render basic diagram elements\n */\n/** @private */\nvar DrawingRenderer = /** @class */ (function () {\n function DrawingRenderer(name, isSvgMode) {\n /** @private */\n this.renderer = null;\n // private svgRenderer: SvgRenderer;\n /** @private */\n this.isSvgMode = true;\n this.diagramId = name;\n this.element = getDiagramElement(this.diagramId);\n this.isSvgMode = isSvgMode;\n this.renderer = new CanvasRenderer();\n // this.svgRenderer = new SvgRenderer();\n }\n // /** @private */\n // public setLayers(): void {\n // this.adornerSvgLayer = this.element.getElementsByClassName('e-adorner-layer')[0] as SVGSVGElement;\n // }\n /** @private */\n DrawingRenderer.prototype.renderElement = function (element, canvas, htmlLayer, transform, parentSvg, createParent, fromPalette, indexValue) {\n var isElement = true;\n if (element instanceof Container) {\n isElement = false;\n this.renderContainer(element, canvas, htmlLayer, transform, parentSvg, createParent, fromPalette, indexValue);\n }\n else if (element instanceof ImageElement) {\n this.renderImageElement(element, canvas, transform, parentSvg, fromPalette);\n }\n else if (element instanceof PathElement) {\n this.renderPathElement(element, canvas, transform, parentSvg, fromPalette);\n }\n else if (element instanceof TextElement) {\n this.renderTextElement(element, canvas, transform, parentSvg, fromPalette);\n }\n else {\n this.renderRect(element, canvas, transform, parentSvg);\n }\n };\n /** @private */\n DrawingRenderer.prototype.renderImageElement = function (element, canvas, transform, parentSvg, fromPalette) {\n var options = this.getBaseAttributes(element, transform);\n options.cornerRadius = 0;\n this.renderer.drawRectangle(canvas, options);\n // let sx: number; let sy: number;\n var imageWidth;\n var imageHeight;\n var sourceWidth;\n var sourceHeight;\n if (element.stretch === 'Stretch') {\n imageWidth = element.actualSize.width;\n imageHeight = element.actualSize.height;\n }\n else {\n var contentWidth = element.contentSize.width;\n var contentHeight = element.contentSize.height;\n var widthRatio = options.width / contentWidth;\n var heightRatio = options.height / contentHeight;\n var ratio = void 0;\n switch (element.stretch) {\n case 'Meet':\n ratio = Math.min(widthRatio, heightRatio);\n imageWidth = contentWidth * ratio;\n imageHeight = contentHeight * ratio;\n options.x += Math.abs(options.width - imageWidth) / 2;\n options.y += Math.abs(options.height - imageHeight) / 2;\n break;\n case 'Slice':\n widthRatio = options.width / contentWidth;\n heightRatio = options.height / contentHeight;\n ratio = Math.max(widthRatio, heightRatio);\n imageWidth = contentWidth * ratio;\n imageHeight = contentHeight * ratio;\n sourceWidth = options.width / imageWidth * contentWidth;\n sourceHeight = options.height / imageHeight * contentHeight;\n break;\n case 'None':\n imageWidth = contentWidth;\n imageHeight = contentHeight;\n break;\n }\n }\n options.width = imageWidth;\n options.height = imageHeight;\n //Commented for code coverage\n //(options as ImageAttributes).sourceX = sx;\n //(options as ImageAttrib utes).sourceY = sy;\n options.sourceWidth = sourceWidth;\n options.sourceHeight = sourceHeight;\n options.source = element.source;\n options.alignment = element.imageAlign;\n options.scale = element.imageScale;\n options.printID = element.printID;\n this.renderer.drawImage(canvas, options, parentSvg, fromPalette);\n };\n /** @private */\n DrawingRenderer.prototype.renderPathElement = function (element, canvas, transform, parentSvg, fromPalette) {\n var options = this.getBaseAttributes(element, transform);\n options.data = element.absolutePath;\n options.data = element.absolutePath;\n var ariaLabel = element.id;\n if (!this.isSvgMode) {\n options.x = options.x;\n options.y = options.y;\n }\n this.renderer.drawPath(canvas, options);\n };\n /** @private */\n DrawingRenderer.prototype.renderTextElement = function (element, canvas, transform, parentSvg, fromPalette) {\n var options = this.getBaseAttributes(element, transform);\n options.cornerRadius = 0;\n options.whiteSpace = whiteSpaceToString(element.style.whiteSpace, element.style.textWrapping);\n options.content = element.content;\n options.breakWord = wordBreakToString(element.style.textWrapping);\n options.textAlign = textAlignToString(element.style.textAlign);\n options.color = element.style.color;\n options.italic = element.style.italic;\n options.bold = element.style.bold;\n options.fontSize = element.style.fontSize;\n options.fontFamily = element.style.fontFamily;\n options.textOverflow = element.style.textOverflow;\n options.textDecoration = element.style.textDecoration;\n options.doWrap = element.doWrap;\n options.wrapBounds = element.wrapBounds;\n options.childNodes = element.childNodes;\n options.dashArray = '';\n options.strokeWidth = 0;\n options.fill = element.style.fill;\n var ariaLabel = element.content ? element.content : element.id;\n this.renderer.drawRectangle(canvas, options);\n this.renderer.drawText(canvas, options);\n };\n /** @private */\n DrawingRenderer.prototype.renderContainer = function (group, canvas, htmlLayer, transform, parentSvg, createParent, fromPalette, indexValue) {\n transform = { tx: 0, ty: 0, scale: 1 };\n var svgParent = { svg: parentSvg, g: canvas };\n if (this.diagramId) {\n parentSvg = parentSvg;\n }\n this.renderRect(group, canvas, transform, parentSvg);\n if (group.hasChildren()) {\n var parentG = void 0;\n var svgParent_1;\n for (var _i = 0, _a = group.children; _i < _a.length; _i++) {\n var child = _a[_i];\n this.renderElement(child, parentG || canvas, htmlLayer, transform, parentSvg, true, fromPalette, indexValue);\n }\n }\n };\n /** @private */\n DrawingRenderer.prototype.renderRect = function (element, canvas, transform, parentSvg) {\n var options = this.getBaseAttributes(element, transform);\n options.cornerRadius = element.cornerRadius || 0;\n var ariaLabel = element.id;\n this.renderer.drawRectangle(canvas, options);\n };\n /** @private */\n DrawingRenderer.prototype.getBaseAttributes = function (element, transform) {\n var options = {\n width: element.actualSize.width, height: element.actualSize.height,\n x: element.offsetX - element.actualSize.width * element.pivot.x + 0.5,\n y: element.offsetY - element.actualSize.height * element.pivot.y + 0.5,\n fill: element.style.fill, stroke: element.style.strokeColor, angle: element.rotateAngle + element.parentTransform,\n pivotX: element.pivot.x, pivotY: element.pivot.y, strokeWidth: element.style.strokeWidth,\n dashArray: element.style.strokeDashArray || '', opacity: element.style.opacity,\n visible: element.visible, id: element.id, gradient: element.style.gradient,\n };\n if (transform) {\n options.x += transform.tx;\n options.y += transform.ty;\n }\n return options;\n };\n return DrawingRenderer;\n}());\nexport { DrawingRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Container } from './container';\nimport { RotateTransform } from '../../enum/enum';\nimport { Size } from '../../primitives/size';\nimport { Rect } from '../../primitives/rect';\nimport { TextElement } from '../elements/text-element';\nimport { identityMatrix, rotateMatrix, transformPointByMatrix } from '../../primitives/matrix';\nimport { rotateSize } from '../../utility/base-util';\n/**\n * Canvas module is used to define a plane(canvas) and to arrange the children based on margin\n */\nvar Canvas = /** @class */ (function (_super) {\n __extends(Canvas, _super);\n function Canvas() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Not applicable for canvas\n * @private\n */\n _this.measureChildren = undefined;\n return _this;\n }\n /**\n * Measures the minimum space that the canvas requires\n * @param availableSize\n */\n Canvas.prototype.measure = function (availableSize) {\n var desired = undefined;\n var desiredBounds = undefined;\n if (this.hasChildren()) {\n //Measuring the children\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if (child instanceof TextElement) {\n if (child.canMeasure) {\n availableSize.width = availableSize.width || this.maxWidth || this.minWidth;\n child.measure(availableSize);\n }\n else {\n break;\n }\n }\n else if (!(child instanceof TextElement)) {\n child.measure(availableSize);\n }\n var childSize = child.desiredSize.clone();\n if (child.rotateAngle !== 0) {\n childSize = rotateSize(childSize, child.rotateAngle);\n }\n var right = childSize.width + child.margin.right;\n var bottom = childSize.height + child.margin.bottom;\n var childBounds = new Rect(child.margin.left, child.margin.top, right, bottom);\n if (child.float) {\n var position = child.getAbsolutePosition(childSize);\n if (position !== undefined) {\n continue;\n }\n }\n if ((!(child instanceof TextElement)) || (child instanceof TextElement && child.canConsiderBounds)) {\n if (desiredBounds === undefined) {\n desiredBounds = childBounds;\n }\n else {\n desiredBounds.uniteRect(childBounds);\n }\n }\n }\n if (desiredBounds) {\n var leftMargin = 0;\n var topMargin = 0;\n leftMargin = Math.max(desiredBounds.left, 0);\n topMargin = Math.max(desiredBounds.top, 0);\n desired = new Size(desiredBounds.width + leftMargin, desiredBounds.height + topMargin);\n }\n }\n desired = _super.prototype.validateDesiredSize.call(this, desired, availableSize);\n _super.prototype.stretchChildren.call(this, desired);\n this.desiredSize = desired;\n return desired;\n };\n /**\n * Arranges the child elements of the canvas\n */\n Canvas.prototype.arrange = function (desiredSize) {\n this.outerBounds = new Rect();\n if (this.hasChildren()) {\n var y = void 0;\n var x = void 0;\n y = this.offsetY - desiredSize.height * this.pivot.y;\n x = this.offsetX - desiredSize.width * this.pivot.x;\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if ((child.transform & RotateTransform.Parent) !== 0) {\n child.parentTransform = this.parentTransform + this.rotateAngle;\n var childSize = child.desiredSize.clone();\n var topLeft = void 0;\n var center = { x: 0, y: 0 };\n var childX = x;\n var childY = y;\n if (child.relativeMode === 'Point') {\n var position = child.getAbsolutePosition(desiredSize);\n if (position !== undefined) {\n childX += position.x;\n childY += position.y;\n }\n }\n if (child.relativeMode === 'Object') {\n topLeft = this.alignChildBasedOnParent(child, childSize, desiredSize, childX, childY);\n }\n else {\n topLeft = this.alignChildBasedOnaPoint(child, childX, childY);\n }\n center = { x: topLeft.x + childSize.width / 2, y: topLeft.y + childSize.height / 2 };\n if (child.rotateValue) {\n var rotateValue = {\n x: this.offsetX + (child.rotateValue.x || 0),\n y: this.offsetY + (child.rotateValue.y || 0)\n };\n var centerPoint = { x: this.offsetX, y: this.offsetY };\n var angle = child.rotateValue.angle | 0;\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, centerPoint.x, centerPoint.y);\n center = transformPointByMatrix(matrix, rotateValue);\n }\n _super.prototype.findChildOffsetFromCenter.call(this, child, center);\n }\n if ((child.horizontalAlignment === 'Stretch' || child.verticalAlignment === 'Stretch')) {\n child.arrange(desiredSize);\n }\n else {\n if (child instanceof TextElement && child.canMeasure) {\n child.arrange(child.desiredSize);\n this.outerBounds.uniteRect(child.outerBounds);\n }\n else if (!(child instanceof TextElement)) {\n child.arrange(child.desiredSize);\n this.outerBounds.uniteRect(child.outerBounds);\n }\n }\n }\n }\n this.actualSize = desiredSize;\n this.updateBounds();\n this.outerBounds.uniteRect(this.bounds);\n return desiredSize;\n };\n /**\n * Aligns the child element based on its parent\n * @param child\n * @param childSize\n * @param parentSize\n * @param x\n * @param y\n */\n Canvas.prototype.alignChildBasedOnParent = function (child, childSize, parentSize, x, y) {\n switch (child.horizontalAlignment) {\n case 'Auto':\n case 'Left':\n x += child.margin.left;\n break;\n case 'Right':\n x += parentSize.width - childSize.width - child.margin.right;\n break;\n case 'Stretch':\n case 'Center':\n x += parentSize.width / 2 - childSize.width / 2;\n break;\n }\n switch (child.verticalAlignment) {\n case 'Auto':\n case 'Top':\n y += child.margin.top;\n break;\n case 'Bottom':\n y += parentSize.height - childSize.height - child.margin.bottom;\n break;\n case 'Stretch':\n case 'Center':\n y += parentSize.height / 2 - childSize.height / 2;\n break;\n }\n return { x: x, y: y };\n };\n /**\n * Aligns the child elements based on a point\n * @param child\n * @param x\n * @param y\n */\n Canvas.prototype.alignChildBasedOnaPoint = function (child, x, y) {\n x += child.margin.left - child.margin.right;\n y += child.margin.top - child.margin.bottom;\n switch (child.horizontalAlignment) {\n case 'Auto':\n case 'Left':\n x = x;\n break;\n case 'Stretch':\n case 'Center':\n x -= child.desiredSize.width * child.pivot.x;\n break;\n case 'Right':\n x -= child.desiredSize.width;\n break;\n }\n switch (child.verticalAlignment) {\n case 'Auto':\n case 'Top':\n y = y;\n break;\n case 'Stretch':\n case 'Center':\n y -= child.desiredSize.height * child.pivot.y;\n break;\n case 'Bottom':\n y -= child.desiredSize.height;\n break;\n }\n return { x: x, y: y };\n };\n return Canvas;\n}(Container));\nexport { Canvas };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { compile as baseTemplateComplier } from '@syncfusion/ej2-base';\nimport { DrawingElement } from '@syncfusion/ej2-drawings';\n/**\n * HTMLElement defines the basic html elements\n */\nvar DiagramHtmlElement = /** @class */ (function (_super) {\n __extends(DiagramHtmlElement, _super);\n /**\n * set the id for each element\n *\n * @param {string} nodeTemplate - Set the id for each element.\n * @returns {void}\n *\n * @private\n */\n function DiagramHtmlElement(nodeTemplate) {\n var _this = _super.call(this) || this;\n _this.templateFn = _this.templateCompiler(nodeTemplate);\n return _this;\n }\n DiagramHtmlElement.prototype.templateCompiler = function (template) {\n if (template) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var e = void 0;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n return baseTemplateComplier(template);\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n };\n /**\n * getNodeTemplate method \\\n *\n * @returns { Function } getNodeTemplate method .\\\n *\n * @private\n */\n DiagramHtmlElement.prototype.getNodeTemplate = function () {\n return this.templateFn;\n };\n return DiagramHtmlElement;\n}(DrawingElement));\nexport { DiagramHtmlElement };\n","import { LineTool } from '../index';\nimport { ZOrderPageTable, PdfAnnotationBase, PdfFormFieldBase } from './pdf-annotation';\nimport { Rect, Point, identityMatrix, rotateMatrix, getDiagramElement, ThumbsConstraints, scaleMatrix, cornersPointsBeforeRotation, ImageElement } from '@syncfusion/ej2-drawings';\nimport { DrawingElement } from '@syncfusion/ej2-drawings';\nimport { PathElement } from '@syncfusion/ej2-drawings';\nimport { createMeasureElements } from '@syncfusion/ej2-drawings';\nimport { randomId } from '@syncfusion/ej2-drawings';\nimport { Size, transformPointByMatrix, RotateTransform, TextElement } from '@syncfusion/ej2-drawings';\nimport { Canvas, refreshDiagramElements, DrawingRenderer } from '@syncfusion/ej2-drawings';\nimport { Selector } from './selector';\nimport { SvgRenderer } from '@syncfusion/ej2-drawings';\nimport { isLineShapes, setElementStype, findPointsLength, getBaseShapeAttributes, isLeader, cloneObject } from './drawing-util';\nimport { getConnectorPoints, updateSegmentElement, getSegmentElement, updateDecoratorElement, getDecoratorElement, clipDecorators, initDistanceLabel, initLeaders, initLeader, getPolygonPath, initPerimeterLabel } from './connector-util';\nimport { isNullOrUndefined, isBlazor, Browser } from '@syncfusion/ej2-base';\nimport { DiagramHtmlElement } from './html-element';\n/**\n * Renderer module is used to render basic diagram elements\n *\n * @hidden\n */\nvar Drawing = /** @class */ (function () {\n function Drawing(viewer) {\n this.isDynamicStamps = false;\n this.pdfViewer = viewer;\n this.renderer = new DrawingRenderer('this.pdfViewer.element.id', false);\n this.svgRenderer = new SvgRenderer();\n }\n /**\n * @private\n * @param {PdfViewer} viewer - Specified the pdfViewer element.\n * @returns {void}\n */\n Drawing.prototype.renderLabels = function (viewer) {\n var annotations = viewer.annotations;\n if (annotations) {\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[parseInt(i.toString(), 10)];\n this.initObject(annotation);\n }\n }\n };\n Drawing.prototype.createNewZindexTable = function (pageId) {\n var zIndexTable = new ZOrderPageTable();\n this.pdfViewer.zIndex++;\n zIndexTable.pageId = this.pdfViewer.zIndex;\n this.pdfViewer.zIndexTable.push(zIndexTable);\n return zIndexTable;\n };\n /**\n * @private\n * @param {number} pageId - Specified the page Id.\n * @returns {ZOrderPageTable} - Returns the ZOrder page table.\n */\n Drawing.prototype.getPageTable = function (pageId) {\n var zIndexTable;\n if (this.pdfViewer.zIndexTable.length !== undefined) {\n var notFound = true;\n for (var i = 0; i < this.pdfViewer.zIndexTable.length; i++) {\n if (this.pdfViewer.zIndexTable[parseInt(i.toString(), 10)].pageId === pageId) {\n notFound = false;\n zIndexTable = this.pdfViewer.zIndexTable[parseInt(i.toString(), 10)];\n break;\n }\n }\n if (notFound) {\n zIndexTable = this.createNewZindexTable(pageId);\n zIndexTable.pageId = pageId;\n }\n }\n else {\n zIndexTable = this.createNewZindexTable(pageId);\n }\n return zIndexTable;\n };\n /**\n * @private\n * @param {number} index - Specified the page index value.\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {void}\n */\n Drawing.prototype.setZIndex = function (index, obj) {\n if (obj.pageIndex !== undefined) {\n var pageTable = this.getPageTable(obj.pageIndex);\n if (obj.zIndex === -1) {\n pageTable.zIndex++;\n obj.zIndex = pageTable.zIndex;\n pageTable.objects.push(obj);\n }\n else {\n var index_1 = obj.zIndex;\n var tabelLength = pageTable.objects.length;\n obj.zIndex = tabelLength++;\n pageTable.objects.push(obj);\n }\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel | PdfFormFieldBaseModel} obj - Specified the annotation object.\n * @returns {PdfAnnotationBaseModel | PdfFormFieldBaseModel} - Returns the annotaion or form fields model.\n */\n Drawing.prototype.initObject = function (obj) {\n //Move the common properties like zindex and id to an abstract class\n this.setZIndex(this.pdfViewer.zIndex, obj);\n createMeasureElements();\n if (!isLineShapes(obj)) {\n this.initNode(obj);\n }\n else {\n this.initLine(obj);\n obj.wrapper.measure(new Size(undefined, undefined));\n obj.wrapper.arrange(obj.wrapper.desiredSize);\n }\n if (obj.wrapper === null) {\n //Init default wrapper\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.pdfViewer.nameTable[obj.id] = obj;\n if (obj.formFieldAnnotationType) {\n this.nodePropertyChange(obj, { bounds: { width: obj.bounds.width, height: obj.bounds.height } });\n }\n //Add some methodologies to add the children of group to name table\n return obj;\n };\n Drawing.prototype.initNode = function (obj) {\n var canvas = this.initContainer(obj);\n var content;\n if (!canvas.children) {\n canvas.children = [];\n }\n if (!content) {\n content = this.init(obj, canvas);\n }\n //canvas.children.push(content);\n canvas.rotateAngle = obj.rotateAngle;\n // eslint-disable-next-line max-len\n canvas.measure(new Size(obj.wrapper.width, obj.wrapper.height));\n canvas.arrange(canvas.desiredSize);\n if (this.isDynamicStamps) {\n this.pdfViewer.annotation.stampAnnotationModule.updateSessionStorage(obj, null, 'dynamicStamp');\n this.isDynamicStamps = false;\n }\n };\n /**\n * Allows to initialize the UI of a node\n */\n /**\n * @private\n * @param {PdfAnnotationBaseModel | PdfFormFieldBaseModel} obj - Specified the annotation object.\n * @param {Container} canvas - Specified the canvas element.\n * @returns {DrawingElement} - Returns the drawing element.\n */\n Drawing.prototype.init = function (obj, canvas) {\n var content;\n content = new DrawingElement();\n var pathContent;\n var basicElement;\n var isStamp = false;\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.annotationModule ? this.pdfViewer.annotationModule.findAnnotationSettings(obj) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n var isAnnotationSet = false;\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n isAnnotationSet = true;\n }\n if (obj.formFieldAnnotationType) {\n content = this.initFormFields(obj, content, canvas);\n }\n else {\n // eslint-disable-next-line max-len\n content = this.initAnnotationObject(obj, pathContent, content, canvas, isStamp, basicElement, isAnnotationSet, annotationMaxHeight, annotationMaxWidth, annotationMinWidth, annotationMinHeight);\n }\n content.id = obj.id + '_content';\n content.relativeMode = 'Object';\n if (obj.shapeAnnotationType !== 'Stamp') {\n if (obj.bounds.width !== undefined) {\n content.width = obj.bounds.width;\n if (isAnnotationSet) {\n if ((content.width < annotationMinWidth) || (content.width > annotationMaxWidth)) {\n if (content.width < annotationMinWidth) {\n content.width = annotationMinWidth;\n }\n if (content.width > annotationMaxWidth) {\n content.width = annotationMaxWidth;\n }\n }\n }\n }\n content.horizontalAlignment = 'Stretch';\n if (obj.bounds.height !== undefined) {\n content.height = obj.bounds.height;\n if (isAnnotationSet) {\n if ((content.height < annotationMinHeight) || (content.width > annotationMaxHeight)) {\n if (content.height < annotationMinHeight) {\n content.height = annotationMinHeight;\n }\n if (content.height > annotationMaxHeight) {\n content.height = annotationMaxHeight;\n }\n }\n }\n }\n setElementStype(obj, content);\n if (this.pdfViewer.viewerBase.drawSignatureWithTool && obj.shapeAnnotationType === 'SignatureText') {\n content.style.strokeWidth = 0;\n }\n }\n content.isRectElement = true;\n content.verticalAlignment = 'Stretch';\n return content;\n };\n Drawing.prototype.initFormFields = function (obj, content, canvas) {\n switch (obj.formFieldAnnotationType) {\n case 'Textbox':\n case 'PasswordField':\n case 'Checkbox':\n case 'RadioButton':\n case 'DropdownList':\n case 'ListBox':\n case 'SignatureField':\n case 'InitialField':\n // eslint-disable-next-line\n var htmlContent = new DiagramHtmlElement();\n content = htmlContent;\n content.id = obj.id + '_content';\n canvas.children.push(content);\n break;\n }\n return content;\n };\n // eslint-disable-next-line\n Drawing.prototype.initAnnotationObject = function (obj, pathContent, content, canvas, isStamp, basicElement, isAnnotationSet, annotationMaxHeight, annotationMaxWidth, annotationMinWidth, annotationMinHeight) {\n switch (obj.shapeAnnotationType) {\n case 'Ellipse':\n pathContent = new PathElement();\n pathContent.data = 'M80.5,12.5 C80.5,19.127417 62.59139,24.5 40.5,24.5 C18.40861,24.5 0.5,19.127417 0.5,12.5' +\n 'C0.5,5.872583 18.40861,0.5 40.5,0.5 C62.59139,0.5 80.5,5.872583 80.5,12.5 z';\n content = pathContent;\n canvas.children.push(content);\n if (obj.enableShapeLabel) {\n var textLabel = this.textElement(obj);\n textLabel.content = obj.labelContent;\n textLabel.style.color = obj.fontColor;\n textLabel.style.strokeColor = obj.labelBorderColor;\n textLabel.style.fill = obj.labelFillColor;\n textLabel.style.fontSize = obj.fontSize;\n textLabel.style.fontFamily = obj.fontFamily;\n textLabel.style.opacity = obj.labelOpacity;\n canvas.children.push(textLabel);\n }\n break;\n case 'Path':\n pathContent = new PathElement();\n pathContent.data = obj.data;\n content = pathContent;\n canvas.children.push(content);\n break;\n case 'HandWrittenSignature':\n case 'Ink':\n pathContent = new PathElement();\n pathContent.data = obj.data;\n pathContent.style.strokeColor = obj.strokeColor;\n pathContent.style.strokeWidth = obj.thickness;\n pathContent.style.opacity = obj.opacity;\n content = pathContent;\n canvas.children.push(content);\n break;\n case 'Polygon':\n pathContent = new PathElement();\n pathContent.data = getPolygonPath(obj.vertexPoints);\n content = pathContent;\n canvas.children.push(content);\n break;\n case 'Stamp':\n isStamp = true;\n this.isDynamicStamps = true;\n if (obj && obj.annotationAddMode && (obj.annotationAddMode === 'Existing Annotation' || obj.annotationAddMode === 'Imported Annotation')) {\n obj.bounds.width = obj.bounds.width - 20;\n obj.bounds.height = obj.bounds.height - 20;\n }\n if (obj.isDynamicStamp) {\n canvas.horizontalAlignment = 'Left';\n basicElement = new DrawingElement();\n content = basicElement;\n content.cornerRadius = 10;\n content.style.fill = obj.stampFillColor;\n content.style.strokeColor = obj.stampStrokeColor;\n canvas.children.push(content);\n var textele_1 = this.textElement(obj);\n textele_1 = new TextElement();\n textele_1.style.fontFamily = 'Helvetica';\n textele_1.style.fontSize = 14;\n textele_1.style.italic = true;\n textele_1.style.bold = true;\n textele_1.style.color = obj.fillColor;\n textele_1.rotateValue = undefined;\n textele_1.content = obj.dynamicText;\n textele_1.relativeMode = 'Point';\n textele_1.margin.left = 10;\n textele_1.margin.bottom = -7;\n textele_1.setOffsetWithRespectToBounds(0, 0.57, null);\n textele_1.relativeMode = 'Point';\n canvas.children.push(textele_1);\n // eslint-disable-next-line\n var pathContent1 = new PathElement();\n pathContent1.id = randomId() + '_stamp';\n pathContent1.data = obj.data;\n pathContent1.width = obj.bounds.width;\n if (isAnnotationSet && (obj.bounds.width > annotationMaxWidth)) {\n pathContent1.width = annotationMaxWidth;\n obj.bounds.width = annotationMaxWidth;\n }\n pathContent1.height = obj.bounds.height / 2;\n if (isAnnotationSet && (obj.bounds.height > annotationMaxHeight)) {\n pathContent1.height = annotationMaxHeight / 2;\n obj.bounds.height = annotationMaxHeight / 2;\n }\n pathContent1.rotateValue = undefined;\n pathContent1.margin.left = 10;\n pathContent1.margin.bottom = -5;\n pathContent1.relativeMode = 'Point';\n pathContent1.setOffsetWithRespectToBounds(0, 0.1, null);\n // eslint-disable-next-line\n var content1 = pathContent1;\n pathContent1.style.fill = obj.fillColor;\n pathContent1.style.strokeColor = obj.strokeColor;\n pathContent1.style.opacity = obj.opacity;\n content.width = obj.bounds.width + 20;\n content.height = obj.bounds.height + 20;\n content.style.opacity = obj.opacity;\n canvas.children.push(content1);\n }\n else {\n canvas.horizontalAlignment = 'Left';\n basicElement = new DrawingElement();\n content = basicElement;\n content.cornerRadius = 10;\n content.style.fill = obj.stampFillColor;\n content.style.strokeColor = obj.stampStrokeColor;\n canvas.children.push(content);\n // eslint-disable-next-line\n var pathContent1 = new PathElement();\n pathContent1.id = randomId() + '_stamp';\n pathContent1.data = obj.data;\n pathContent1.width = obj.bounds.width;\n if (isAnnotationSet && (obj.bounds.width > annotationMaxWidth)) {\n pathContent1.width = annotationMaxWidth;\n obj.bounds.width = annotationMaxWidth;\n }\n pathContent1.height = obj.bounds.height;\n if (isAnnotationSet && (obj.bounds.height > annotationMaxHeight)) {\n pathContent1.height = annotationMaxHeight;\n obj.bounds.height = annotationMaxHeight;\n }\n pathContent1.minWidth = pathContent1.width / 2;\n pathContent1.minHeight = pathContent1.height / 2;\n // eslint-disable-next-line\n var content1 = pathContent1;\n pathContent1.style.fill = obj.fillColor;\n pathContent1.style.strokeColor = obj.strokeColor;\n pathContent1.style.opacity = obj.opacity;\n content.width = obj.bounds.width + 20;\n content.height = obj.bounds.height + 20;\n content.minWidth = pathContent1.width / 2;\n content.minHeight = pathContent1.height / 2;\n content.style.opacity = obj.opacity;\n canvas.children.push(content1);\n canvas.minHeight = content.minHeight + 20;\n canvas.minWidth = content.minWidth + 20;\n }\n break;\n case 'Image':\n case 'SignatureImage':\n // eslint-disable-next-line\n var pathContent11 = new ImageElement();\n pathContent11.source = obj.data;\n content = pathContent11;\n content.style.strokeWidth = 0;\n canvas.children.push(content);\n break;\n case 'Rectangle':\n basicElement = new DrawingElement();\n content = basicElement;\n canvas.children.push(content);\n if (obj.enableShapeLabel) {\n var textLabel = this.textElement(obj);\n textLabel.content = obj.labelContent;\n textLabel.style.color = obj.fontColor;\n textLabel.style.strokeColor = obj.labelBorderColor;\n textLabel.style.fill = obj.labelFillColor;\n textLabel.style.fontSize = obj.fontSize;\n textLabel.style.fontFamily = obj.fontFamily;\n textLabel.style.opacity = obj.labelOpacity;\n canvas.children.push(textLabel);\n }\n break;\n case 'Perimeter':\n pathContent = new PathElement();\n pathContent.data = 'M80.5,12.5 C80.5,19.127417 62.59139,24.5 40.5,24.5 C18.40861,24.5 0.5,19.127417 0.5,12.5' +\n 'C0.5,5.872583 18.40861,0.5 40.5,0.5 C62.59139,0.5 80.5,5.872583 80.5,12.5 z';\n content = pathContent;\n setElementStype(obj, pathContent);\n canvas.children.push(content);\n basicElement = new DrawingElement();\n basicElement.id = 'perimeter_' + randomId();\n basicElement.height = .2;\n basicElement.width = .2;\n basicElement.transform = RotateTransform.Self;\n basicElement.horizontalAlignment = 'Stretch';\n this.setNodePosition(basicElement, obj);\n basicElement.rotateAngle = obj.rotateAngle;\n setElementStype(obj, basicElement);\n canvas.children.push(basicElement);\n // eslint-disable-next-line\n var textele = this.textElement(obj);\n textele = new TextElement();\n textele.content = textele.content = findPointsLength([\n { x: obj.bounds.x, y: obj.bounds.y },\n { x: obj.bounds.x + obj.bounds.width, y: obj.bounds.y + obj.bounds.height }\n ]).toString();\n textele.rotateValue = { y: -10, angle: obj.rotateAngle };\n canvas.children.push(textele);\n break;\n case 'Radius':\n pathContent = new PathElement();\n pathContent.data = 'M80.5,12.5 C80.5,19.127417 62.59139,24.5 40.5,24.5 C18.40861,24.5 0.5,19.127417 0.5,12.5' +\n 'C0.5,5.872583 18.40861,0.5 40.5,0.5 C62.59139,0.5 80.5,5.872583 80.5,12.5 z';\n content = pathContent;\n setElementStype(obj, pathContent);\n canvas.children.push(content);\n basicElement = new DrawingElement();\n basicElement.id = 'radius_' + randomId();\n basicElement.height = .2;\n basicElement.width = obj.bounds.width / 2;\n basicElement.transform = RotateTransform.Self;\n this.setNodePosition(basicElement, obj);\n basicElement.rotateAngle = obj.rotateAngle;\n setElementStype(obj, basicElement);\n canvas.children.push(basicElement);\n // eslint-disable-next-line\n var radiusTextEle = this.textElement(obj);\n if (obj.enableShapeLabel) {\n radiusTextEle.style.color = obj.fontColor;\n radiusTextEle.style.strokeColor = obj.labelBorderColor;\n radiusTextEle.style.fill = obj.labelFillColor;\n radiusTextEle.style.fontSize = obj.fontSize;\n radiusTextEle.style.fontFamily = obj.fontFamily;\n radiusTextEle.style.opacity = obj.labelOpacity;\n }\n // eslint-disable-next-line\n var length_1 = findPointsLength([\n { x: obj.bounds.x, y: obj.bounds.y },\n { x: obj.bounds.x + obj.bounds.width, y: obj.bounds.y + obj.bounds.height }\n ]);\n if (!this.pdfViewer.enableImportAnnotationMeasurement && obj.notes && obj.notes !== '') {\n radiusTextEle.content = obj.notes;\n }\n else {\n // eslint-disable-next-line max-len\n radiusTextEle.content = this.pdfViewer.annotation.measureAnnotationModule.setConversion((obj.bounds.width / 2) * this.pdfViewer.annotation.measureAnnotationModule.pixelToPointFactor, obj);\n }\n radiusTextEle.rotateValue = { y: -10, x: obj.bounds.width / 4, angle: obj.rotateAngle };\n canvas.children.push(radiusTextEle);\n break;\n case 'StickyNotes':\n // eslint-disable-next-line\n var pathContent2 = new ImageElement();\n pathContent2.source = obj.data;\n pathContent2.width = obj.bounds.width;\n pathContent2.height = obj.bounds.height;\n pathContent2.style.strokeColor = obj.strokeColor;\n pathContent2.style.strokeWidth = 0;\n content = pathContent2;\n canvas.children.push(content);\n break;\n case 'SignatureText':\n //eslint-disable-next-line\n var rectElements = new DrawingElement();\n rectElements.style.strokeWidth = 0;\n content = rectElements;\n content.style.strokeWidth = 0;\n canvas.style.strokeWidth = 0;\n canvas.children.push(content);\n // eslint-disable-next-line\n var signatureText = this.textElement(obj);\n signatureText.style.fontFamily = obj.fontFamily;\n signatureText.style.fontSize = obj.fontSize;\n signatureText.style.textAlign = 'Left';\n signatureText.rotateValue = undefined;\n signatureText.content = obj.data;\n signatureText.style.strokeWidth = 0;\n canvas.children.push(signatureText);\n break;\n case 'FreeText':\n // eslint-disable-next-line\n var rectElement = new DrawingElement();\n content = rectElement;\n canvas.children.push(content);\n // eslint-disable-next-line\n var freeTextEle = this.textElement(obj);\n freeTextEle = new TextElement();\n freeTextEle.style.fontFamily = obj.fontFamily;\n freeTextEle.style.fontSize = obj.fontSize;\n freeTextEle.style.textAlign = 'Left';\n if (obj.textAlign.toLowerCase() === 'center') {\n freeTextEle.style.textAlign = 'Center';\n }\n else if (obj.textAlign.toLowerCase() === 'right') {\n freeTextEle.style.textAlign = 'Right';\n }\n else if (obj.textAlign.toLowerCase() === 'justify') {\n freeTextEle.style.textAlign = 'Justify';\n }\n freeTextEle.style.color = obj.fontColor;\n freeTextEle.style.bold = obj.font.isBold;\n freeTextEle.style.italic = obj.font.isItalic;\n if (obj.font.isUnderline === true) {\n freeTextEle.style.textDecoration = 'Underline';\n }\n else if (obj.font.isStrikeout === true) {\n freeTextEle.style.textDecoration = 'LineThrough';\n }\n freeTextEle.rotateValue = undefined;\n freeTextEle.content = obj.dynamicText;\n freeTextEle.style.opacity = obj.opacity;\n freeTextEle.margin.left = 4;\n freeTextEle.margin.right = 5;\n freeTextEle.margin.top = 5 * (obj.fontSize / 16);\n if (this.pdfViewer.freeTextSettings.enableAutoFit) {\n freeTextEle.style.textWrapping = 'Wrap';\n }\n else {\n freeTextEle.style.textWrapping = 'WrapWithOverflow';\n }\n freeTextEle.relativeMode = 'Point';\n freeTextEle.setOffsetWithRespectToBounds(0, 0, null);\n freeTextEle.relativeMode = 'Point';\n canvas.children.push(freeTextEle);\n break;\n }\n content.id = obj.id + '_content';\n content.relativeMode = 'Object';\n if (!isStamp) {\n if (obj.bounds.width !== undefined) {\n content.width = obj.bounds.width;\n if (isAnnotationSet) {\n if ((content.width < annotationMinWidth) || (content.width > annotationMaxWidth)) {\n if (content.width < annotationMinWidth) {\n content.width = annotationMinWidth;\n }\n if (content.width > annotationMaxWidth) {\n content.width = annotationMaxWidth;\n }\n }\n }\n }\n content.horizontalAlignment = 'Stretch';\n if (obj.bounds.height !== undefined) {\n content.height = obj.bounds.height;\n if (isAnnotationSet) {\n if ((content.height < annotationMinHeight) || (content.width > annotationMaxHeight)) {\n if (content.height < annotationMinHeight) {\n content.height = annotationMinHeight;\n }\n if (content.height > annotationMaxHeight) {\n content.height = annotationMaxHeight;\n }\n }\n }\n }\n setElementStype(obj, content);\n }\n content.isRectElement = true;\n content.verticalAlignment = 'Stretch';\n return content;\n };\n Drawing.prototype.textElement = function (obj) {\n var textele = new TextElement();\n setElementStype(obj, textele);\n textele.horizontalAlignment = 'Center';\n obj.shapeAnnotationType === 'SignatureText' ? textele.verticalAlignment = 'Center' : textele.verticalAlignment = 'Top';\n textele.relativeMode = 'Object';\n textele.setOffsetWithRespectToBounds(.5, .5, 'Absolute');\n return textele;\n };\n /**\n * @private\n * @param {DrawingElement} obj - Specified the drawing element.\n * @param {PdfAnnotationBaseModel} node - Specified the node element.\n * @returns {void}\n */\n Drawing.prototype.setNodePosition = function (obj, node) {\n if (node.shapeAnnotationType === 'Perimeter') {\n obj.offsetX = node.bounds.x + node.bounds.width / 2;\n obj.offsetY = node.bounds.y + node.bounds.height / 2;\n }\n else if (node.shapeAnnotationType === 'Radius') {\n // eslint-disable-next-line max-len\n var trasPoint = { x: node.bounds.x + (node.bounds.width / 2) + (node.bounds.width / 4), y: node.bounds.y + (node.bounds.height / 2) };\n var center = { x: (node.bounds.x + (node.bounds.width / 2)), y: (node.bounds.y + (node.bounds.height / 2)) };\n var matrix = identityMatrix();\n rotateMatrix(matrix, node.rotateAngle, center.x, center.y);\n var rotatedPoint = transformPointByMatrix(matrix, trasPoint);\n var newPoint1 = { x: rotatedPoint.x, y: rotatedPoint.y };\n obj.offsetX = newPoint1.x;\n obj.offsetY = newPoint1.y;\n obj.width = node.bounds.width / 2;\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {Container} - Returns the container element.\n */\n Drawing.prototype.initContainer = function (obj) {\n if (!obj.id) {\n obj.id = randomId();\n }\n // Creates canvas element\n var canvas = new Canvas();\n canvas.id = obj.id;\n canvas.offsetX = obj.bounds.x + (obj.bounds.width * 0.5);\n canvas.offsetY = obj.bounds.y + (obj.bounds.height * 0.5);\n canvas.style.fill = 'transparent';\n canvas.style.strokeColor = 'transparent';\n canvas.rotateAngle = obj.rotateAngle;\n obj.wrapper = canvas;\n return canvas;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {Canvas} - Returns the canvas element.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Drawing.prototype.initLine = function (obj) {\n if (!obj.id) {\n obj.id = randomId();\n }\n var bpmnElement;\n var container = new Canvas();\n var segment = new PathElement();\n segment.id = obj.id + '_path';\n var srcDecorator = new PathElement();\n var targetDecorator = new PathElement();\n if (obj.vertexPoints.length) {\n obj.sourcePoint = obj.vertexPoints[0];\n obj.targetPoint = obj.vertexPoints[obj.vertexPoints.length - 1];\n for (var i = 0; i < obj.vertexPoints.length; i++) {\n if (i !== 0 && i !== obj.vertexPoints.length - 1) {\n obj.segments.push(obj.vertexPoints[parseInt(i.toString(), 10)]);\n }\n }\n }\n segment = getSegmentElement(obj, segment);\n var points = [];\n points = getConnectorPoints(obj);\n // points = this.clipDecorators(this, points);\n var leaders = [];\n var labels = [];\n if (obj.shapeAnnotationType === 'Distance') {\n leaders = initLeaders(obj, points);\n labels = initDistanceLabel(obj, points, this.pdfViewer.annotation.measureAnnotationModule, this.pdfViewer);\n }\n if ((obj.shapeAnnotationType === 'Line' || obj.shapeAnnotationType === 'LineWidthArrowHead') && obj.measureType === 'Perimeter') {\n labels = initPerimeterLabel(obj, points, this.pdfViewer.annotation.measureAnnotationModule, this.pdfViewer);\n }\n if (obj.enableShapeLabel === true && !(obj.shapeAnnotationType === 'Distance') && !(obj.measureType === 'Perimeter')) {\n var angle = Point.findAngle(points[0], points[1]);\n var textele = this.textElement(obj);\n textele.id = randomId();\n if (!this.pdfViewer.enableImportAnnotationMeasurement && obj.notes && obj.notes !== '') {\n textele.content = obj.notes;\n }\n else {\n textele.content = obj.labelContent;\n }\n textele.style.strokeColor = obj.labelBorderColor;\n textele.style.fill = obj.labelFillColor;\n textele.style.fontSize = obj.fontSize;\n textele.style.color = obj.fontColor;\n textele.style.fontFamily = obj.fontFamily;\n textele.style.opacity = obj.labelOpacity;\n textele.rotateValue = { y: -10, angle: angle };\n labels.push(textele);\n }\n points = clipDecorators(obj, points);\n var bounds = Rect.toBounds(points);\n container.width = bounds.width;\n container.height = bounds.height;\n container.offsetX = bounds.x + container.pivot.x * bounds.width;\n container.offsetY = bounds.y + container.pivot.y * bounds.height;\n var anglePoints = obj.vertexPoints;\n var accessContent = 'getDescription';\n // eslint-disable-next-line max-len\n if (obj.shapeAnnotationType === 'Line' || obj.shapeAnnotationType === 'LineWidthArrowHead' || obj.shapeAnnotationType === 'Distance') {\n srcDecorator = getDecoratorElement(obj, points[0], anglePoints[1], true);\n targetDecorator = getDecoratorElement(obj, points[points.length - 1], anglePoints[anglePoints.length - 2], false);\n }\n srcDecorator.id = obj.id + '_srcDec';\n targetDecorator.id = obj.id + '_tarDec';\n /* eslint-disable @typescript-eslint/dot-notation */\n segment.style['fill'] = 'transparent';\n container.style.strokeColor = 'transparent';\n container.style.fill = 'transparent';\n container.style.strokeWidth = 0;\n container.children = [];\n setElementStype(obj, segment);\n container.children.push(segment);\n if (leaders.length > 0) {\n for (var i = 0; i < leaders.length; i++) {\n container.children.push(leaders[parseInt(i.toString(), 10)]);\n }\n }\n if (labels.length > 0) {\n for (var i = 0; i < labels.length; i++) {\n container.children.push(labels[parseInt(i.toString(), 10)]);\n }\n }\n container.children.push(srcDecorator);\n container.children.push(targetDecorator);\n if (obj.shapeAnnotationType === 'LineWidthArrowHead') {\n container.children[1].width = 12 * obj.thickness;\n container.children[1].height = 12 * obj.thickness;\n container.children[2].width = 12 * obj.thickness;\n container.children[2].height = 12 * obj.thickness;\n }\n container.id = obj.id;\n container.offsetX = segment.offsetX;\n container.offsetY = segment.offsetY;\n container.width = segment.width;\n container.height = segment.height;\n points = getConnectorPoints(obj);\n obj.wrapper = container;\n return container;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {PdfAnnotationBaseModel} - Returns the added annotaion object.\n */\n Drawing.prototype.add = function (obj) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n if (obj.formFieldAnnotationType && this.pdfViewer.formDesignerModule) {\n obj = new PdfFormFieldBase(this.pdfViewer, 'formFields', obj, true);\n obj = this.initObject(obj);\n this.pdfViewer.formFields.push(obj);\n }\n else {\n obj = new PdfAnnotationBase(this.pdfViewer, 'annotations', obj, true);\n obj = this.initObject(obj);\n this.pdfViewer.annotations.push(obj);\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n return obj;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {void}\n */\n Drawing.prototype.remove = function (obj) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n var index = obj.pageIndex;\n for (var i = 0; i < this.pdfViewer.annotations.length; i++) {\n var annotation = this.pdfViewer.annotations[parseInt(i.toString(), 10)];\n if ((annotation.id && (annotation.id === obj.id || annotation.id.split('_')[0] === obj.id)) || (annotation.wrapper && annotation.wrapper.id === obj.id)) {\n this.pdfViewer.annotations.splice(i, 1);\n var objects = this.getPageObjects(obj.pageIndex);\n for (var j = 0; j < objects.length; j++) {\n if (objects[parseInt(j.toString(), 10)].id === obj.id) {\n objects.splice(j, 1);\n if (obj.shapeAnnotationType === 'Path' || obj.shapeAnnotationType === 'SignatureImage' || obj.shapeAnnotationType === 'SignatureText') {\n this.refreshCanvasDiagramLayer(undefined, index, obj.id);\n }\n else {\n this.pdfViewer.renderDrawing(undefined, index);\n }\n }\n }\n // need to add code snippet to remove from z index table \n }\n }\n for (var i = 0; i < this.pdfViewer.formFields.length; i++) {\n var element = this.pdfViewer.formFields[parseInt(i.toString(), 10)];\n if (element.id === obj.id || element.wrapper.id === obj.id) {\n this.pdfViewer.formFields.splice(i, 1);\n if (this.pdfViewer.formDesignerModule && obj.formFieldAnnotationType) {\n this.pdfViewer.formFieldCollection.splice(i, 1);\n }\n var objects = this.getPageObjects(obj.pageIndex);\n for (var j = 0; j < objects.length; j++) {\n if (objects[parseInt(j.toString(), 10)].id === obj.id) {\n objects.splice(j, 1);\n break;\n }\n if (objects[parseInt(j.toString(), 10)] && objects[parseInt(j.toString(), 10)].id && objects[parseInt(j.toString(), 10)].id.indexOf(obj.id) !== -1) {\n objects.splice(j, 1);\n }\n }\n }\n }\n if (obj.formFieldAnnotationType === 'Textbox' || obj.formFieldAnnotationType === 'Checkbox' || obj.formFieldAnnotationType === 'RadioButton'\n || obj.formFieldAnnotationType === 'PasswordField' || obj.formFieldAnnotationType === 'DropdownList' || obj.formFieldAnnotationType === 'ListBox' || obj.formFieldAnnotationType === 'SignatureField' || obj.formFieldAnnotationType === 'InitialField') {\n for (var i = 0; i < this.pdfViewer.formFieldCollections.length; i++) {\n // eslint-disable-next-line\n var element = this.pdfViewer.formFieldCollections[i];\n if (element.id === obj.id) {\n this.pdfViewer.formFieldCollections.splice(i, 1);\n }\n }\n }\n if (obj.formFieldAnnotationType === 'Textbox' || obj.formFieldAnnotationType === 'Checkbox' || obj.formFieldAnnotationType === 'RadioButton'\n || obj.formFieldAnnotationType === 'PasswordField' || obj.formFieldAnnotationType === 'DropdownList' || obj.formFieldAnnotationType === 'ListBox' || obj.formFieldAnnotationType === 'SignatureField' || obj.formFieldAnnotationType === 'InitialField') {\n // eslint-disable-next-line\n var inputField = document.getElementById('form_field_' + obj.id + '_content_html_element');\n if (inputField) {\n inputField.remove();\n this.pdfViewer.renderDrawing(undefined, index);\n var field = {\n // eslint-disable-next-line\n name: obj.name, id: obj.id, value: obj.value, fontFamily: obj.fontFamily, fontSize: obj.fontSize, fontStyle: obj.fontStyle,\n // eslint-disable-next-line\n color: obj.color, backgroundColor: obj.backgroundColor, alignment: obj.alignment, isReadonly: obj.isReadonly, visibility: obj.visibility,\n // eslint-disable-next-line\n maxLength: obj.maxLength, isRequired: obj.isRequired, isPrint: obj.isPrint, rotation: obj.rotateAngle, tooltip: obj.tooltip,\n // eslint-disable-next-line\n options: obj.options, isChecked: obj.isChecked, isSelected: obj.isSelected\n };\n this.pdfViewer.fireFormFieldRemoveEvent('formFieldRemove', field, obj.pageIndex);\n this.pdfViewer.formDesignerModule.removeFieldsFromAnnotationCollections(obj.id);\n }\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @private\n * @param {number} pageIndex - Specified the page index.\n * @returns {PdfAnnotationBaseModel[]} - Returns the annotation base model collections.\n */\n Drawing.prototype.getPageObjects = function (pageIndex) {\n var pageTable = this.getPageTable(pageIndex);\n return pageTable.objects;\n };\n /**\n * @private\n * @param {HTMLCanvasElement} diagramLayer - Specified the diagram layer element.\n * @param {number} pageIndex - Specified the page index.\n * @param {string} objectId - Specified the object id.\n * @returns {void}\n */\n Drawing.prototype.refreshCanvasDiagramLayer = function (diagramLayer, pageIndex, objectId) {\n if (!diagramLayer) {\n diagramLayer = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n }\n if (diagramLayer) {\n var zoom = this.pdfViewer.viewerBase.getZoomFactor();\n var width = diagramLayer.width / zoom;\n var height = diagramLayer.height / zoom;\n var ctx = diagramLayer.getContext('2d');\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n if (zoom < 1) {\n ctx.lineWidth = ctx.lineWidth / zoom;\n }\n var devicePixelRatio_1 = this.pdfViewer.viewerBase.getWindowDevicePixelRatio();\n var zoomRatio = zoom * devicePixelRatio_1;\n if (!Browser.isDevice || (Browser.isDevice && zoom <= 0.7)) {\n ctx.setTransform(zoomRatio, 0, 0, zoomRatio, 0, 0);\n }\n else {\n ctx.setTransform(zoom, 0, 0, zoom, 0, 0);\n }\n ctx.clearRect(0, 0, width, height);\n var objects = this.getPageObjects(pageIndex);\n for (var i = 0; i < objects.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var renderElement = void 0;\n if (diagramLayer.id === this.pdfViewer.element.id + '_print_annotation_layer_' + pageIndex) {\n if (objects[parseInt(i.toString(), 10)].isPrint) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n renderElement = this.pdfViewer.nameTable[objects[parseInt(i.toString(), 10)].id].wrapper;\n if (!isNullOrUndefined(renderElement)) {\n refreshDiagramElements(diagramLayer, [renderElement], this.renderer);\n }\n }\n }\n else {\n // eslint-disable-next-line\n renderElement = this.pdfViewer.nameTable[objects[i].id].wrapper;\n refreshDiagramElements(diagramLayer, [renderElement], this.renderer);\n }\n }\n }\n };\n /**\n * @private\n * @param {number} index - Specified the page index.\n * @returns {void}\n */\n Drawing.prototype.clearHighlighter = function (index) {\n var adornerSvg = this.getAdornerLayerSvg(this.pdfViewer.element.id + index + '_diagramAdornerLayer', index);\n if (adornerSvg) {\n var highlighter = adornerSvg.getElementById(adornerSvg.id + '_highlighter');\n if (highlighter) {\n highlighter.parentNode.removeChild(highlighter);\n }\n }\n };\n /**\n * @private\n * @param {string} diagramId - Specified the diagram id.\n * @param {number} index - Specified the page index.\n * @returns {SVGSVGElement} Return the svg element.\n */\n Drawing.prototype.getSelectorElement = function (diagramId, index) {\n var adornerLayer = null;\n var adornerSvg = this.getAdornerLayerSvg(diagramId, index);\n if (adornerSvg) {\n adornerLayer = adornerSvg.getElementById(diagramId + index + '_SelectorElement');\n }\n return adornerLayer;\n };\n /**\n * @private\n * @param {string} diagramId - Specified the diagram id.\n * @param {number} index - Specified the page index.\n * @returns {SVGSVGElement} Return the svg element.\n */\n Drawing.prototype.getAdornerLayerSvg = function (diagramId, index) {\n var adornerLayerSvg = null;\n var diagramElement = getDiagramElement(diagramId + index + '_diagramAdornerLayer');\n // eslint-disable-next-line\n var elementcoll;\n if (diagramElement) {\n elementcoll = diagramElement.getElementsByClassName('e-adorner-layer' + index);\n adornerLayerSvg = elementcoll[0];\n }\n return adornerLayerSvg;\n };\n /**\n * @private\n * @param {number} index - Specified the page index.\n * @returns {void}\n */\n Drawing.prototype.clearSelectorLayer = function (index) {\n var adornerSvg = this.getAdornerLayerSvg(this.pdfViewer.element.id, index);\n if (adornerSvg) {\n var selectionRect = adornerSvg.getElementById(this.pdfViewer.adornerSvgLayer.id + '_selected_region');\n if (selectionRect) {\n selectionRect.parentNode.removeChild(selectionRect);\n }\n this.clearHighlighter(index);\n var childNodes = this.getSelectorElement(this.pdfViewer.element.id, index).childNodes;\n var child = void 0;\n for (var i = childNodes.length; i > 0; i--) {\n child = childNodes[i - 1];\n child.parentNode.removeChild(child);\n }\n }\n };\n /**\n * @private\n * @param {number} select - Specified the select value.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the annotation selector element.\n * @param {PdfAnnotationBaseModel} helper - Specified the annotation helper element.\n * @param {boolean} isSelect - Specified the is select or not.\n * @returns {void}\n */\n // eslint-disable-next-line max-len\n Drawing.prototype.renderSelector = function (select, currentSelector, helper, isSelect) {\n if (!helper || isSelect) {\n var size = new Size();\n var selectorModel = this.pdfViewer.selectedItems;\n this.clearSelectorLayer(select);\n if (selectorModel.wrapper) {\n selectorModel.wrapper.measure(size);\n var zoom = this.pdfViewer.viewerBase.getZoomFactor();\n selectorModel.wrapper.arrange(selectorModel.wrapper.desiredSize);\n selectorModel.width = selectorModel.wrapper.actualSize.width;\n selectorModel.height = selectorModel.wrapper.actualSize.height;\n selectorModel.offsetX = selectorModel.wrapper.offsetX;\n selectorModel.offsetY = selectorModel.wrapper.offsetY;\n if (selectorModel.annotations.length === 1) {\n selectorModel.rotateAngle = selectorModel.annotations[0].rotateAngle;\n selectorModel.wrapper.rotateAngle = selectorModel.annotations[0].rotateAngle;\n //selectorModel.pivot = selectorModel.annotations[0].pivot;\n }\n var bounds = selectorModel.wrapper.bounds;\n // eslint-disable-next-line\n var selectorElement = void 0;\n if (selectorModel.formFields.length) {\n for (var i = 0; i < selectorModel.formFields.length; i++) {\n var node = selectorModel.formFields[parseInt(i.toString(), 10)];\n selectorElement = this.getSelectorElement(this.pdfViewer.element.id, select);\n if (selectorElement && node.pageIndex === select && this.pdfViewer.designerMode) {\n this.renderResizeHandle(node.wrapper.children[0], selectorElement, selectorModel.thumbsConstraints, zoom, undefined, undefined, undefined, false, true, null, null, currentSelector);\n }\n if (this.pdfViewer.formDesignerModule && node.formFieldAnnotationType) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.viewerBase.isFormFieldSelect && !this.pdfViewer.viewerBase.isFormFieldMouseDown && !this.pdfViewer.viewerBase.isFormFieldMouseMove) {\n this.pdfViewer.viewerBase.isFormFieldSelect = true;\n var field = {\n // eslint-disable-next-line\n name: node.name, id: node.id, value: node.value, fontFamily: node.fontFamily, fontSize: node.fontSize, fontStyle: node.fontStyle, color: node.color, backgroundColor: node.backgroundColor, alignment: node.alignment, isReadonly: node.isReadonly, visibility: node.visibility,\n // eslint-disable-next-line\n maxLength: node.maxLength, isRequired: node.isRequired, isPrint: node.isPrint, rotation: node.rotateAngle, tooltip: node.tooltip,\n // eslint-disable-next-line\n options: node.options, isChecked: node.isChecked, isSelected: node.isSelected\n };\n this.pdfViewer.fireFormFieldSelectEvent('formFieldSelect', field, node.pageIndex, this.pdfViewer.formDesignerModule.isProgrammaticSelection);\n }\n }\n }\n }\n if (selectorModel.annotations.length) {\n for (var j = 0; j < selectorModel.annotations.length; j++) {\n var node = selectorModel.annotations[parseInt(j.toString(), 10)];\n selectorElement = this.getSelectorElement(this.pdfViewer.element.id, select);\n var constraints = true;\n if (selectorElement && node.pageIndex === select) {\n if (node.shapeAnnotationType === 'Distance' || node.shapeAnnotationType === 'Line' ||\n node.shapeAnnotationType === 'LineWidthArrowHead' || node.shapeAnnotationType === 'Polygon') {\n this.renderEndPointHandle(node, selectorElement, selectorModel.thumbsConstraints, { scale: zoom, tx: 0, ty: 0 }, undefined, undefined, true, currentSelector);\n }\n else {\n if (node.shapeAnnotationType === 'StickyNotes') {\n this.renderResizeHandle(node.wrapper.children[0], selectorElement, selectorModel.thumbsConstraints, zoom, undefined, undefined, undefined, false, true, null, null, currentSelector);\n }\n else {\n if (this.pdfViewer.tool !== 'Stamp') {\n // eslint-disable-next-line\n var isSignature = node.shapeAnnotationType === 'Path' || node.formFieldAnnotationType === 'SignatureField' || node.formFieldAnnotationType === 'InitialField';\n this.renderResizeHandle(node.wrapper.children[0], selectorElement, selectorModel.thumbsConstraints, zoom, undefined, undefined, undefined, node.shapeAnnotationType === 'Stamp', false, isSignature, (node.shapeAnnotationType === 'FreeText' || node.shapeAnnotationType === 'HandWrittenSignature' || node.shapeAnnotationType === 'SignatureImage' || node.shapeAnnotationType === 'Image' || node.shapeAnnotationType === 'SignatureText'), currentSelector);\n }\n }\n }\n if (!this.pdfViewer.viewerBase.isNewSignatureAdded && (node.shapeAnnotationType === 'HandWrittenSignature' || node.shapeAnnotationType === 'SignatureText' || node.shapeAnnotationType === 'SignatureImage')) {\n this.pdfViewer.annotationModule.selectSignature(node.signatureName, node.pageIndex, node);\n }\n if (this.pdfViewer.formDesignerModule && node.formFieldAnnotationType) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.viewerBase.isFormFieldSelect && !this.pdfViewer.viewerBase.isFormFieldMouseDown && !this.pdfViewer.viewerBase.isFormFieldMouseMove) {\n this.pdfViewer.viewerBase.isFormFieldSelect = true;\n var field = {\n // eslint-disable-next-line\n value: node.value, fontFamily: node.fontFamily, fontSize: node.fontSize, fontStyle: node.fontStyle,\n // eslint-disable-next-line\n color: node.color, backgroundColor: node.backgroundColor, alignment: node.alignment, isReadonly: node.isReadonly, visibility: node.visibility,\n // eslint-disable-next-line\n maxLength: node.maxLength, isRequired: node.isRequired, isPrint: node.isPrint, rotation: node.rotateAngle, tooltip: node.tooltip,\n // eslint-disable-next-line\n options: node.options, isChecked: node.isChecked, isSelected: node.isSelected\n };\n this.pdfViewer.fireFormFieldSelectEvent('formFieldSelect', field, node.pageIndex, this.pdfViewer.formDesignerModule.isProgrammaticSelection);\n }\n }\n if (node.annotName !== '' && node.annotName !== 'SignatureText') {\n if (helper && (node === helper) && !node.formFieldAnnotationType) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.viewerBase.isAddComment && !this.pdfViewer.viewerBase.isAnnotationSelect && !this.pdfViewer.viewerBase.isAnnotationMouseDown && !this.pdfViewer.viewerBase.isAnnotationMouseMove && !this.pdfViewer.viewerBase.isInkAdded && !this.pdfViewer.viewerBase.isNewStamp) {\n this.pdfViewer.viewerBase.isAnnotationSelect = true;\n this.pdfViewer.annotationModule.annotationSelect(node.annotName, node.pageIndex, node);\n }\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * Rotates the given nodes/connectors by the given angle\n *\n * @private\n * @param {PdfAnnotationBaseModel | SelectorModel} obj - Specified the objects to be rotated.\n * @param {number} angle - Specified the angle by which the objects have to be rotated.\n * @param {PointModel} pivot - Specified the reference point with reference to which the objects have to be rotated.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the current selector value.\n * @returns {void}\n */\n // eslint-disable-next-line max-len\n Drawing.prototype.rotate = function (obj, angle, pivot, currentSelector) {\n var checkBoundaryConstraints;\n if (obj) {\n pivot = pivot || { x: obj.wrapper.offsetX, y: obj.wrapper.offsetY };\n if (obj instanceof Selector) {\n obj.rotateAngle += angle;\n obj.wrapper.rotateAngle += angle;\n var objects = [];\n objects = objects.concat(obj.annotations);\n this.rotateObjects(obj, objects, angle, pivot, null, currentSelector);\n }\n else {\n this.rotateObjects(obj, [obj], angle, pivot);\n }\n }\n return checkBoundaryConstraints;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel | SelectorModel} parent - Specified the annotation object.\n * @param {PdfAnnotationBaseModel[]} objects - Specified the annotation objects.\n * @param {number} angle - Specified the annotation angle.\n * @param {PointModel} pivot - Specified the pivot value.\n * @param {boolean} includeParent - Specified the include parent value.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the current selector value.\n * @returns {void}\n */\n Drawing.prototype.rotateObjects = function (parent, objects, angle, pivot, includeParent, currentSelector) {\n pivot = pivot || {};\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, pivot.x, pivot.y);\n for (var _i = 0, objects_1 = objects; _i < objects_1.length; _i++) {\n var obj = objects_1[_i];\n if (obj instanceof PdfAnnotationBase) {\n if (includeParent !== false || parent !== obj) {\n obj.rotateAngle += angle;\n obj.rotateAngle = (obj.rotateAngle + 360) % 360;\n var newOffset = transformPointByMatrix(matrix, { x: obj.wrapper.offsetX, y: obj.wrapper.offsetY });\n obj.wrapper.offsetX = newOffset.x;\n obj.wrapper.offsetY = newOffset.y;\n this.nodePropertyChange(obj, { rotateAngle: obj.rotateAngle });\n }\n this.renderSelector(obj.pageIndex, currentSelector);\n }\n }\n };\n Drawing.prototype.getParentSvg = function (element, targetElement, canvas) {\n if (element && element.id) {\n if (targetElement && targetElement === 'selector') {\n return this.pdfViewer.adornerSvgLayer;\n }\n }\n return canvas;\n };\n Drawing.prototype.shownBorder = function () {\n var isSelectInAllowed = false;\n if (this.pdfViewer.annotationModule) {\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n var allowedInteraction = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var isLock = this.pdfViewer.annotationModule.checkIsLockSettings(annotation);\n isSelectInAllowed = !isNullOrUndefined(allowedInteraction) && (allowedInteraction.includes('Select') || !isLock);\n }\n return isSelectInAllowed;\n };\n /**\n * @private\n * @param {DrawingElement} selector - Specified the annotation selector object.\n * @param {HTMLCanvasElement | SVGElement} canvas - Specified the canvas element.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {Transforms} transform - Specfied the transform value.\n * @param {number} enableNode - Specified the node number.\n * @param {boolean} isBorderTickness - Specified is thickness or not.\n * @param {boolean} isSwimlane - Specified is swimlane annotation or not.\n * @param {boolean} isSticky - Specified is sticky annotation or not.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.renderBorder = function (selector, canvas, currentSelector, transform, enableNode, isBorderTickness, isSwimlane, isSticky) {\n var wrapper = selector;\n var options = getBaseShapeAttributes(wrapper, transform);\n transform = transform || { scale: 1, tx: 0, ty: 0 };\n if (!isSticky) {\n options.x *= transform.scale;\n options.y *= transform.scale;\n options.width *= transform.scale;\n options.height *= transform.scale;\n options.fill = 'transparent';\n // eslint-disable-next-line max-len\n var shapeType = this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType;\n if (currentSelector && (typeof (currentSelector) !== 'object') && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n var borderColor = annotationSelector.selectionBorderColor === '' ? 'black' : annotationSelector.selectionBorderColor;\n options.stroke = borderColor;\n options.strokeWidth = currentSelector.selectionBorderThickness === 1 ? 1 : annotationSelector.selectionBorderThickness;\n // eslint-disable-next-line max-len\n var lineDash = annotationSelector.selectorLineDashArray.length === 0 ? [6, 3] : annotationSelector.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n else {\n if (!this.pdfViewer.designerMode) {\n if ((shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText' || shapeType === 'SignatureImage') || shapeType === 'Ink') {\n // eslint-disable-next-line\n var formField = this.pdfViewer.nameTable[selector.id.split('_')[0]];\n var isFormFieldSign = this.pdfViewer.viewerBase.checkSignatureFormField(selector.id);\n // if (isFormFieldSign && options.width + 21 !== formField.bounds.width && options.height + 21 !== formField.bounds.height) {\n // if (this.pdfViewer.signatureFitMode === 'Default') {\n // let selectorBounds: any = this.pdfViewer.formFieldsModule.getDefaultBoundsforSign(formField.bounds);\n // options.x = selectorBounds.x; options.y = selectorBounds.y; options.width = selectorBounds.width; options.height = selectorBounds.height;\n // } else {\n // options.x = formField.bounds.x; options.y = formField.bounds.y; options.width = formField.bounds.width; options.height = formField.bounds.height;\n // }\n // }\n this.getSignBorder(shapeType, options, isFormFieldSign);\n }\n else {\n this.getBorderSelector(shapeType, options);\n }\n }\n }\n options.class = 'e-pv-diagram-border';\n if (isSwimlane) {\n options.class += ' e-diagram-lane';\n }\n options.id = 'borderRect';\n options.id = 'borderRect';\n if (!enableNode) {\n options.class += ' e-disabled';\n }\n if (isBorderTickness) {\n options.class += ' e-thick-border';\n }\n options.cornerRadius = 0;\n }\n else {\n options.x *= transform.scale;\n options.y *= transform.scale;\n options.width *= transform.scale;\n options.height *= transform.scale;\n // eslint-disable-next-line max-len\n var shapeType = this.pdfViewer.selectedItems.annotations.length > 0 ? this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType\n : this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType;\n if (currentSelector && (typeof (currentSelector) !== 'object') && currentSelector !== '') {\n var annotationSelector = JSON.parse(currentSelector);\n var borderColor = annotationSelector.selectionBorderColor === '' ? 'black' : annotationSelector.selectionBorderColor;\n options.stroke = borderColor;\n options.strokeWidth = currentSelector.selectionBorderThickness === 1 ? 1 : annotationSelector.selectionBorderThickness;\n // eslint-disable-next-line max-len\n var lineDash = annotationSelector.selectorLineDashArray.length === 0 ? [6, 3] : annotationSelector.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n else {\n this.getBorderSelector(shapeType, options);\n }\n }\n var checkBorder = this.shownBorder();\n if (checkBorder) {\n var parentSvg = this.getParentSvg(selector, 'selector');\n // eslint-disable-next-line max-len\n this.svgRenderer.drawRectangle(canvas, options, this.pdfViewer.element.id, undefined, true, parentSvg);\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotation object.\n * @param {BaseAttributes} options - Specified the options value.\n * @param {boolean} isFormFieldSign - Specified is form field sign or not.\n * @returns {void}\n */\n Drawing.prototype.getSignBorder = function (type, options, isFormFieldSign) {\n if (!isFormFieldSign && (type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n var borderColor = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderColor === '' ? '#0000ff' : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n var borderColor = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderColor === '' ? '#0000ff' : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n else {\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n var borderColor = annotationSelector.selectionBorderColor === '' ? 'black' : annotationSelector.selectionBorderColor;\n options.stroke = borderColor;\n options.strokeWidth = annotationSelector.selectionBorderThickness === 1 ? 1 : annotationSelector.selectionBorderThickness;\n // eslint-disable-next-line max-len\n var lineDash = annotationSelector.selectorLineDashArray.length === 0 ? [6, 3] : annotationSelector.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotation object.\n * @param {BaseAttributes} options - Specified the base attributes.\n * @returns {void}\n */\n Drawing.prototype.getBorderSelector = function (type, options) {\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n var borderColor = isNullOrUndefined(annotationSelector.selectionBorderColor) || annotationSelector.selectionBorderColor === '' ? 'black' : annotationSelector.selectionBorderColor;\n options.stroke = borderColor;\n // eslint-disable-next-line max-len\n options.strokeWidth = isNullOrUndefined(annotationSelector.selectionBorderThickness) || annotationSelector.selectionBorderThickness === 1 ? 1 : annotationSelector.selectionBorderThickness;\n // eslint-disable-next-line max-len\n var lineDash = isNullOrUndefined(annotationSelector.selectorLineDashArray) || annotationSelector.selectorLineDashArray.length === 0 ? [6, 3] : annotationSelector.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n var borderColor_1 = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_1;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_1 = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_1.length > 2) {\n lineDash_1 = [lineDash_1[0], lineDash_1[1]];\n }\n options.dashArray = lineDash_1.toString();\n }\n else if ((type === 'Textbox' || type === 'Checkbox' || type === 'RadioButton' || type === 'SignatureField' || type === 'InitialField' || type === 'DropdownList' || type === 'ListBox' || type === 'PasswordField') && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n var borderColor_2 = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_2;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_2 = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_2.length > 2) {\n lineDash_2 = [lineDash_2[0], lineDash_2[1]];\n }\n options.dashArray = lineDash_2.toString();\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n var borderColor_3 = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_3;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_3 = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.circleSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.circleSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_3.length > 2) {\n lineDash_3 = [lineDash_3[0], lineDash_3[1]];\n }\n options.dashArray = lineDash_3.toString();\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n var borderColor_4 = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_4;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_4 = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.radiusSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.radiusSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_4.length > 2) {\n lineDash_4 = [lineDash_4[0], lineDash_4[1]];\n }\n options.dashArray = lineDash_4.toString();\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n var borderColor_5 = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_5;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_5 = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_5.length > 2) {\n lineDash_5 = [lineDash_5[0], lineDash_5[1]];\n }\n options.dashArray = lineDash_5.toString();\n }\n else if (type === 'StickyNotes' && this.pdfViewer.stickyNotesSettings.annotationSelectorSettings) {\n var borderColor_6 = isNullOrUndefined(this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_6;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_6 = isNullOrUndefined(this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [6, 3] : this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_6.length > 2) {\n lineDash_6 = [lineDash_6[0], lineDash_6[1]];\n }\n options.dashArray = lineDash_6.toString();\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n var borderColor_7 = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderColor === '' ? '#0000ff' : this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_7;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_7 = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.stampSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.stampSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_7.length > 2) {\n lineDash_7 = [lineDash_7[0], lineDash_7[1]];\n }\n options.dashArray = lineDash_7.toString();\n }\n };\n /**\n * @private\n * @param {string} id - Specified the annotaion id.\n * @param {DrawingElement} selector - Specified the drawing element.\n * @param {number} cx - Specified the cx number.\n * @param {number} cy - Specified the cy number.\n * @param {HTMLCanvasElement | SVGElement} canvas - Specified the html canvas element.\n * @param {boolean} visible - Specified the annotation visible or not.\n * @param {number} enableSelector - Specified the enable selector value.\n * @param {Transforms} t - Specified the transforms value.\n * @param {boolean} connected - Specified is connected or not.\n * @param {boolean} canMask - Specified is mask or not.\n * @param {Object} ariaLabel - Specified the aria label object.\n * @param {number} count - Specified the count value.\n * @param {string} className - Specified the class name.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the annotation selector settings.\n * @returns {void}\n */\n Drawing.prototype.renderCircularHandle = function (id, selector, cx, cy, canvas, visible, enableSelector, t, connected, canMask, ariaLabel, count, className, currentSelector) {\n var wrapper = selector;\n var radius = 7;\n var newPoint = { x: cx, y: cy };\n t = t || { scale: 1, tx: 0, ty: 0 };\n if (wrapper.rotateAngle !== 0 || wrapper.parentTransform !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, wrapper.rotateAngle + wrapper.parentTransform, wrapper.offsetX, wrapper.offsetY);\n newPoint = transformPointByMatrix(matrix, newPoint);\n }\n var options = getBaseShapeAttributes(wrapper);\n var shapeType;\n if (this.pdfViewer.selectedItems.annotations.length > 0 && this.pdfViewer.selectedItems.annotations[0].measureType) {\n shapeType = this.pdfViewer.selectedItems.annotations[0].measureType;\n }\n else if (this.pdfViewer.selectedItems.formFields.length > 0) {\n shapeType = this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType;\n }\n else {\n shapeType = this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType;\n }\n this.getResizerColors(shapeType, options, currentSelector, t);\n this.getShapeSize(shapeType, options, currentSelector, t);\n options.strokeWidth = 1;\n if (count !== undefined) {\n radius = 5;\n options.id = 'segmentEnd_' + count;\n }\n options.centerX = (newPoint.x + t.tx) * t.scale;\n options.centerY = (newPoint.y + t.ty) * t.scale;\n options.angle = 0;\n options.id = id;\n options.visible = visible;\n options.class = className;\n options.opacity = 1;\n if (connected) {\n options.class += ' e-connected';\n }\n if (canMask) {\n options.visible = false;\n }\n options.x = (newPoint.x * t.scale) - (options.width / 2);\n options.y = (newPoint.y * t.scale) - (options.height / 2);\n var parentSvg = this.getParentSvg(selector, 'selector');\n if (this.getShape(shapeType, currentSelector) === 'Square') {\n this.svgRenderer.drawRectangle(canvas, options, id, undefined, true, parentSvg);\n }\n else if (this.getShape(shapeType, currentSelector) === 'Circle') {\n this.svgRenderer.drawCircle(canvas, options, 1);\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotaion object.\n * @param {CircleAttributes} options - Specified the circle attributes value.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {Transforms} t - Specified the transforms value.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.getShapeSize = function (type, options, currentSelector, t) {\n if (currentSelector && typeof (currentSelector) !== 'object' && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) * t.scale;\n }\n else {\n // eslint-disable-next-line\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) * t.scale;\n if (type === 'Line' && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'LineWidthArrowHead' && this.pdfViewer.arrowSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Distance' && this.pdfViewer.distanceSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if ((type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Perimeter' && this.pdfViewer.perimeterSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Area' && this.pdfViewer.areaSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Volume' && this.pdfViewer.volumeSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotation object.\n * @param {any} currentSelector - Specified the current selector value.\n * @returns {AnnotationSelectorSettingsModel} - Specified the annotation selector settings model.\n */\n // eslint-disable-next-line\n Drawing.prototype.getShape = function (type, currentSelector) {\n // eslint-disable-next-line\n var shapeType;\n {\n if (currentSelector && typeof (currentSelector) !== 'object' && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n shapeType = isNullOrUndefined(annotationSelector.resizerShape) || annotationSelector.resizerShape === 'Square' ? 'Square' : annotationSelector.resizerShape;\n }\n else {\n // eslint-disable-next-line\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n shapeType = isNullOrUndefined(annotationSelector.resizerShape) || annotationSelector.resizerShape === 'Square' ? 'Square' : annotationSelector.resizerShape;\n if (type === 'Line' && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'LineWidthArrowHead' && this.pdfViewer.arrowSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Distance' && this.pdfViewer.distanceSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerShape;\n }\n else if ((type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Perimeter' && this.pdfViewer.perimeterSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Area' && this.pdfViewer.areaSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Volume' && this.pdfViewer.volumeSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerShape;\n }\n }\n return shapeType;\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotaion object.\n * @param {CircleAttributes} options - Specified the circle attributes value.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {Transforms} t - Specified the transforms value.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.getResizerColors = function (type, options, currentSelector, t) {\n if (currentSelector && typeof (currentSelector) !== 'object' && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n options.stroke = isNullOrUndefined(annotationSelector.resizerBorderColor) || annotationSelector.resizerBorderColor === 'black' ? 'black' : annotationSelector.resizerBorderColor;\n options.fill = isNullOrUndefined(annotationSelector.resizerFillColor) || annotationSelector.resizerFillColor === '#FF4081' ? '#FF4081' : annotationSelector.resizerFillColor;\n }\n else {\n // eslint-disable-next-line\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n options.stroke = isNullOrUndefined(annotationSelector.resizerBorderColor) || annotationSelector.resizerBorderColor === 'black' ? 'black' : annotationSelector.resizerBorderColor;\n options.fill = isNullOrUndefined(annotationSelector.resizerFillColor) || annotationSelector.resizerFillColor === '#FF4081' ? '#FF4081' : annotationSelector.resizerFillColor;\n if (type === 'Line' && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'LineWidthArrowHead' && this.pdfViewer.arrowSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Distance' && this.pdfViewer.distanceSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if ((type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Perimeter' && this.pdfViewer.perimeterSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Area' && this.pdfViewer.areaSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Volume' && this.pdfViewer.volumeSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerFillColor;\n }\n }\n };\n /**\n * @private\n * @param {DrawingElement} wrapper - Specified the drawing element.\n * @param {HTMLCanvasElement | SVGElement} canvas - Specified the canvas element.\n * @param {Transforms} transform - Specified the transform value.\n * @param {SelectorConstraints} selectorConstraints - Specified the selector constraints value.\n * @param {boolean} canMask - Specified the is mask or not.\n * @returns {void}\n */\n Drawing.prototype.renderRotateThumb = function (wrapper, canvas, transform, selectorConstraints, canMask) {\n var element = new PathElement();\n var newPoint;\n var top = wrapper.offsetY - wrapper.actualSize.height * wrapper.pivot.y;\n var left = wrapper.offsetX - wrapper.actualSize.width * wrapper.pivot.x;\n var pivotX = left + wrapper.pivot.x * wrapper.actualSize.width;\n var pivotY = top;\n pivotX = (pivotX + transform.tx) * transform.scale;\n pivotY = (pivotY + transform.ty) * transform.scale;\n newPoint = { x: pivotX, y: pivotY - 25 };\n if (wrapper.rotateAngle !== 0 || wrapper.parentTransform !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, wrapper.rotateAngle + wrapper.parentTransform, (transform.tx + wrapper.offsetX) * transform.scale, (transform.ty + wrapper.offsetY) * transform.scale);\n newPoint = transformPointByMatrix(matrix, newPoint);\n }\n var options = getBaseShapeAttributes(wrapper);\n options.stroke = 'black';\n options.strokeWidth = 1;\n options.opacity = 1;\n options.fill = '#FF4081';\n options.centerX = newPoint.x;\n options.centerY = newPoint.y;\n options.radius = 4;\n options.angle = 0;\n options.visible = true;\n options.class = 'e-diagram-rotate-handle';\n options.id = 'rotateThumb';\n var checkBorder = this.shownBorder();\n if (checkBorder)\n this.svgRenderer.drawCircle(canvas, options, ThumbsConstraints.Rotate, { 'aria-label': 'Thumb to rotate the selected object' });\n var circleHandle = canvas.querySelector('#' + options.id);\n if (circleHandle) {\n circleHandle.setAttribute('role', 'separator');\n }\n };\n /**\n * @private\n * @param {DrawingElement} element - Specified the drawing element.\n * @param {HTMLCanvasElement | SVGElement} canvas - Specified the canvas element.\n * @param {ThumbsConstraints} constraints - Specified the thumbs constraints element.\n * @param {number} currentZoom - Specified the current zoom value.\n * @param {boolean} canMask - Specified the is mask or not.\n * @param {number} enableNode - Specified the node number.\n * @param {boolean} nodeConstraints - Specified the node constraints or not.\n * @param {boolean} isStamp - Specified is stamp or not.\n * @param {boolean} isSticky - Specified is sticky or not.\n * @param {boolean} isPath - Specified is path or not.\n * @param {boolean} isFreeText - Specified is free text or not.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the current selector settings value.\n * @returns {void}\n */\n Drawing.prototype.renderResizeHandle = function (element, canvas, constraints, currentZoom, canMask, enableNode, nodeConstraints, isStamp, isSticky, isPath, isFreeText, currentSelector) {\n var left = element.offsetX - element.actualSize.width * element.pivot.x;\n var top = element.offsetY - element.actualSize.height * element.pivot.y;\n var height = element.actualSize.height;\n var width = element.actualSize.width;\n var transform = { scale: currentZoom, tx: 0, ty: 0 };\n if (isStamp) {\n this.renderPivotLine(element, canvas, transform);\n this.renderRotateThumb(element, canvas, transform);\n }\n if (isFreeText) {\n isStamp = true;\n }\n this.renderBorder(element, canvas, currentSelector, transform, enableNode, nodeConstraints, true, isSticky);\n var nodeWidth = element.actualSize.width * currentZoom;\n var nodeHeight = element.actualSize.height * currentZoom;\n // eslint-disable-next-line max-len\n var shapeType = this.pdfViewer.selectedItems.annotations.length > 0 ? this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType : this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType;\n var allowPermission = false;\n if (!this.pdfViewer.formDesignerModule) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line\n var allowedInteraction = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var isLock = this.pdfViewer.annotationModule.checkIsLockSettings(annotation);\n if ((isLock || annotation.annotationSettings.isLock) && this.getAllowedInteractions(allowedInteraction)) {\n allowPermission = true;\n }\n if (allowedInteraction[0] === 'Select') {\n allowPermission = false;\n }\n }\n var resizerLocation = this.getResizerLocation(shapeType, currentSelector);\n if (resizerLocation < 1 || resizerLocation > 3) {\n resizerLocation = 3;\n }\n var isNodeShape = false;\n if (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ellipse' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Radius' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Rectangle' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ink')) {\n isNodeShape = true;\n }\n if (!this.pdfViewer.viewerBase.checkSignatureFormField(element.id) && !nodeConstraints && !isSticky && !isPath && !allowPermission) {\n if (isStamp || (isNodeShape && (nodeWidth >= 40 && nodeHeight >= 40) && (resizerLocation === 1 || resizerLocation === 3))) {\n //Hide corners when the size is less than 40\n this.renderCircularHandle('resizeNorthWest', element, left, top, canvas, true, constraints & ThumbsConstraints.ResizeNorthWest, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on top left side direction' }, undefined, 'e-pv-diagram-resize-handle e-northwest', currentSelector);\n this.renderCircularHandle('resizeNorthEast', element, left + width, top, canvas, true, constraints & ThumbsConstraints.ResizeNorthEast, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on top right side direction' }, undefined, 'e-pv-diagram-resize-handle e-northeast', currentSelector);\n this.renderCircularHandle('resizeSouthWest', element, left, top + height, canvas, true, constraints & ThumbsConstraints.ResizeSouthWest, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on bottom left side direction' }, undefined, 'e-pv-diagram-resize-handle e-southwest', currentSelector);\n this.renderCircularHandle('resizeSouthEast', element, left + width, top + height, canvas, true, constraints & ThumbsConstraints.ResizeSouthEast, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on bottom right side direction' }, undefined, 'e-pv-diagram-resize-handle e-southeast', currentSelector);\n }\n // eslint-disable-next-line max-len\n if ((!isStamp && !isNodeShape) || (isNodeShape && (resizerLocation === 2 || resizerLocation === 3 || (!(nodeWidth >= 40 && nodeHeight >= 40) && resizerLocation === 1)))) {\n this.renderCircularHandle('resizeNorth', element, left + width / 2, top, canvas, true, constraints & ThumbsConstraints.ResizeNorth, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on top side direction' }, undefined, 'e-pv-diagram-resize-handle e-north', currentSelector);\n this.renderCircularHandle('resizeSouth', element, left + width / 2, top + height, canvas, true, constraints & ThumbsConstraints.ResizeSouth, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on bottom side direction' }, undefined, 'e-pv-diagram-resize-handle e-south', currentSelector);\n this.renderCircularHandle('resizeWest', element, left, top + height / 2, canvas, true, constraints & ThumbsConstraints.ResizeWest, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on left side direction' }, undefined, 'e-pv-diagram-resize-handle e-west', currentSelector);\n this.renderCircularHandle('resizeEast', element, left + width, top + height / 2, canvas, true, constraints & ThumbsConstraints.ResizeEast, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on right side direction' }, undefined, 'e-pv-diagram-resize-handle e-east', currentSelector);\n }\n }\n if ((shapeType === 'Textbox' || shapeType === 'Checkbox' || shapeType === 'RadioButton' || shapeType === 'SignatureField' || shapeType === 'InitialField' || shapeType === 'DropdownList' ||\n shapeType === 'ListBox' || shapeType === 'PasswordField')) {\n this.renderCircularHandle('resizeNorth', element, left + width / 2, top, canvas, true, constraints & ThumbsConstraints.ResizeNorth, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on top side direction' }, undefined, 'e-pv-diagram-resize-handle e-north', currentSelector);\n this.renderCircularHandle('resizeSouth', element, left + width / 2, top + height, canvas, true, constraints & ThumbsConstraints.ResizeSouth, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on bottom side direction' }, undefined, 'e-pv-diagram-resize-handle e-south', currentSelector);\n this.renderCircularHandle('resizeWest', element, left, top + height / 2, canvas, true, constraints & ThumbsConstraints.ResizeWest, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on left side direction' }, undefined, 'e-pv-diagram-resize-handle e-west', currentSelector);\n this.renderCircularHandle('resizeEast', element, left + width, top + height / 2, canvas, true, constraints & ThumbsConstraints.ResizeEast, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on right side direction' }, undefined, 'e-pv-diagram-resize-handle e-east', currentSelector);\n }\n };\n // eslint-disable-next-line\n Drawing.prototype.getAllowedInteractions = function (allowedInteraction) {\n if (allowedInteraction && allowedInteraction.length > 0) {\n for (var i = 0; i < allowedInteraction.length; i++) {\n if (allowedInteraction[0] !== 'None' && allowedInteraction[parseInt(i.toString(), 10)] === 'Resize') {\n return false;\n }\n }\n }\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotation base model.\n * @param {any} currentSelector - Specified the current selector value\n * @returns {AnnotationResizerLocation} - Returns the annotation resizer location value.\n */\n // eslint-disable-next-line\n Drawing.prototype.getResizerLocation = function (type, currentSelector) {\n // eslint-disable-next-line\n var resizerLocation;\n {\n if (currentSelector && typeof (currentSelector) !== 'object' && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(annotationSelector.resizerLocation) || annotationSelector.resizerLocation === 3 ? 3 : annotationSelector.resizerLocation;\n }\n else {\n // eslint-disable-next-line\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(annotationSelector.resizerLocation) || annotationSelector.resizerLocation === 3 ? 3 : annotationSelector.resizerLocation;\n if (type === 'Line' && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'LineWidthArrowHead' && this.pdfViewer.arrowSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Distance') {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerLocation;\n }\n else if ((type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerLocation;\n }\n }\n return resizerLocation;\n }\n };\n /**\n * @private\n * @param {DrawingElement} element - Specified the drawing element.\n * @param {HTMLCanvasElement | SVGAElement} canvas - Specified the canvas element.\n * @param {Transforms} transform - Specified the transform values.\n * @param {SelectorConstraints} selectorConstraints - Specified the selector constraints value.\n * @param {boolean} canMask - Specified is mask value or not.\n * @returns {void}\n */\n Drawing.prototype.renderPivotLine = function (element, canvas, transform, selectorConstraints, canMask) {\n var wrapper = element;\n var dashArray = '2,3';\n var visible = true;\n if (canMask) {\n visible = false;\n }\n var options = getBaseShapeAttributes(wrapper, transform);\n options.fill = 'None';\n options.stroke = 'black';\n options.strokeWidth = 1;\n options.dashArray = dashArray;\n options.visible = visible;\n var scale = transform.scale;\n options.x *= scale;\n options.y *= scale;\n options.width *= scale;\n options.height *= scale;\n options.id = 'pivotLine';\n options.class = 'e-diagram-pivot-line';\n var startPoint = { x: wrapper.actualSize.width * wrapper.pivot.x * scale, y: -20 };\n var endPoint = { x: wrapper.actualSize.width * wrapper.pivot.x * scale, y: 0 };\n options.startPoint = startPoint;\n options.endPoint = endPoint;\n var checkBorder = this.shownBorder();\n if (checkBorder)\n this.svgRenderer.drawLine(canvas, options);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} selector - Specified the annotation element.\n * @param {HTMLCanvasElement | SVGAElement} canvas - Specified the canvas element.\n * @param {SelectorConstraints} constraints - Specified the selector constraints value.\n * @param {Transforms} transform - Specified the transform values.\n * @param {boolean} connectedSource - Specified is connected source or not.\n * @param {boolean} connectedTarget - Specified is connected target or not.\n * @param {boolean} isSegmentEditing - Specified is segment editing or not.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the current selector value.\n * @returns {void}\n */\n Drawing.prototype.renderEndPointHandle = function (selector, canvas, constraints, transform, connectedSource, connectedTarget, isSegmentEditing, currentSelector) {\n transform = transform || { tx: 0, ty: 0, scale: 1 };\n var sourcePoint = selector.sourcePoint;\n var targetPoint = selector.targetPoint;\n var wrapper = selector.wrapper;\n var i;\n var checkBorder = this.shownBorder();\n if (checkBorder) {\n for (i = 0; i < selector.vertexPoints.length; i++) {\n var segment = selector.vertexPoints[parseInt(i.toString(), 10)];\n this.renderCircularHandle(('segementThumb_' + (i + 1)), wrapper, segment.x, segment.y, canvas, true, constraints & ThumbsConstraints.ConnectorSource, transform, connectedSource, null, null, i, null, currentSelector);\n }\n }\n var leaderCount = 0;\n if (selector.shapeAnnotationType === 'Distance') {\n for (i = 0; i < selector.wrapper.children.length; i++) {\n var segment = selector.wrapper.children[parseInt(i.toString(), 10)];\n var newPoint1 = void 0;\n var angle = Point.findAngle(selector.sourcePoint, selector.targetPoint);\n if (segment.id.indexOf('leader') > -1) {\n var center = selector.wrapper.children[0].bounds.center;\n if (leaderCount === 0) {\n newPoint1 = { x: selector.sourcePoint.x, y: selector.sourcePoint.y - selector.leaderHeight };\n center = sourcePoint;\n }\n else {\n newPoint1 = { x: selector.targetPoint.x, y: selector.targetPoint.y - selector.leaderHeight };\n center = targetPoint;\n }\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, center.x, center.y);\n if (checkBorder) {\n var rotatedPoint = transformPointByMatrix(matrix, { x: newPoint1.x, y: newPoint1.y });\n this.renderCircularHandle(('leaderThumb_' + (i + 1)), wrapper, rotatedPoint.x, rotatedPoint.y, canvas, true, constraints & ThumbsConstraints.ConnectorSource, transform, connectedSource, null, null, i, null, currentSelector);\n }\n leaderCount++;\n }\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Drawing.prototype.initSelectorWrapper = function () {\n var selectorModel = this.pdfViewer.selectedItems;\n selectorModel.init(this);\n };\n /**\n * @private\n * @param {string[]} objArray - Specified the annotation object array.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {boolean} multipleSelection - Specified the multiple selection or not.\n * @param {boolean} preventUpdate - Specified the prevent update or not.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.select = function (objArray, currentSelector, multipleSelection, preventUpdate) {\n var selectorModel = this.pdfViewer.selectedItems;\n for (var i = 0; i < objArray.length; i++) {\n // eslint-disable-next-line\n var obj = this.pdfViewer.nameTable[objArray[i]];\n if (obj.formFieldAnnotationType && this.pdfViewer.designerMode) {\n selectorModel.formFields.push(obj);\n this.initSelectorWrapper();\n selectorModel.wrapper.children.push(obj.wrapper);\n this.renderSelector(obj.pageIndex, currentSelector, obj, true);\n }\n else if (obj && !obj.formFieldAnnotationType) {\n if (!(obj instanceof Selector) && obj.wrapper.visible && this.pdfViewer.annotationModule) {\n // eslint-disable-next-line\n var annotationSettings = void 0;\n if (obj.annotationSettings) {\n if (!isNullOrUndefined(annotationSettings) && !isNullOrUndefined(annotationSettings.isLock)) {\n annotationSettings.isLock = JSON.parse(annotationSettings.isLock);\n }\n }\n else if (!obj.formFieldAnnotationType) {\n annotationSettings = this.pdfViewer.annotationModule.findAnnotationSettings(obj, true);\n obj.annotationSettings = annotationSettings;\n }\n var isLock = !obj.formFieldAnnotationType ? (annotationSettings ? annotationSettings.isLock : false) : false;\n if (annotationSettings && annotationSettings.isLock && this.pdfViewer.annotationModule.checkAllowedInteractions('Select', obj)) {\n isLock = false;\n }\n selectorModel.annotations.push(obj);\n var checkBorder = this.shownBorder();\n if (checkBorder) {\n this.initSelectorWrapper();\n selectorModel.wrapper.rotateAngle = selectorModel.rotateAngle = 0;\n selectorModel.wrapper.children.push(obj.wrapper);\n if (!preventUpdate) {\n this.renderSelector(obj.pageIndex, currentSelector, obj, true);\n }\n }\n }\n }\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @param {number} pageIndex - Specified the page index value.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {PdfAnnotationBaseModel} helper - Specified the helper object.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.dragSelectedObjects = function (tx, ty, pageIndex, currentSelector, helper) {\n var obj = this.pdfViewer.selectedItems;\n this.drag(obj, tx, ty, currentSelector, helper);\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {PdfAnnotationBaseModel} helper - Specified the helper object.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.drag = function (obj, tx, ty, currentSelector, helper) {\n if (obj instanceof Selector) {\n if (obj.annotations.length) {\n for (var _i = 0, _a = obj.annotations; _i < _a.length; _i++) {\n var node = _a[_i];\n this.drag(node, tx, ty, currentSelector, helper);\n this.renderSelector(node.pageIndex, currentSelector, helper);\n }\n }\n else if (obj.formFields.length) {\n for (var _b = 0, _c = obj.formFields; _b < _c.length; _b++) {\n var node = _c[_b];\n this.drag(node, tx, ty, currentSelector, helper);\n this.renderSelector(node.pageIndex, currentSelector, helper);\n }\n }\n }\n else {\n this.dragAnnotation(obj, tx, ty);\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @returns {void}\n */\n Drawing.prototype.dragAnnotation = function (obj, tx, ty) {\n var tempNode;\n var elements = [];\n // eslint-disable-next-line\n var oldValues = { x: obj.wrapper.offsetX, y: obj.wrapper.offsetY };\n //bug (EJ2-62649) : fixed an issue with difficulty on moving/ resizing free text annotation that added in edge of viewer\n var newDiff = this.moveInsideViewer(obj, tx, ty);\n obj.wrapper.offsetX += newDiff.tx;\n obj.wrapper.offsetY += newDiff.ty;\n if (isLineShapes(obj) || obj.shapeAnnotationType === 'Polygon') {\n if (obj.wrapper.children.length) {\n var nodes = obj.wrapper.children;\n for (var i = 0; i < nodes.length; i++) {\n nodes[parseInt(i.toString(), 10)].offsetX += tx;\n nodes[parseInt(i.toString(), 10)].offsetY += ty;\n }\n }\n this.dragControlPoint(obj, tx, ty, true);\n }\n this.nodePropertyChange(obj, { bounds: { x: obj.wrapper.offsetX, y: obj.wrapper.offsetY } });\n obj.wrapper.measureChildren = false;\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + obj.pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvas, obj.pageIndex);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @param {boolean} preventUpdate - Specified the prevent update or not.\n * @param {number} segmentNumber - Specified the segment value.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.dragControlPoint = function (obj, tx, ty, preventUpdate, segmentNumber) {\n // eslint-disable-next-line\n var connector = this.pdfViewer.nameTable[obj.id];\n for (var i = 0; i < connector.vertexPoints.length; i++) {\n (connector.vertexPoints[parseInt(i.toString(), 10)]).x += tx;\n (connector.vertexPoints[parseInt(i.toString(), 10)]).y += ty;\n }\n if (!preventUpdate) {\n this.updateEndPoint(connector);\n }\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the connector object.\n * @returns {void}\n */\n Drawing.prototype.updateEndPoint = function (connector) {\n this.nodePropertyChange(connector, { vertexPoints: connector.vertexPoints });\n this.renderSelector(connector.pageIndex);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} actualObject - Specified the actual annotaion object.\n * @param {PdfAnnotationBaseModel} node - Specified the node annotation object.\n * @returns {void}\n */\n Drawing.prototype.nodePropertyChange = function (actualObject, node) {\n var existingBounds = actualObject.wrapper.outerBounds;\n var existingInnerBounds = actualObject.wrapper.bounds;\n var updateConnector = false;\n var i;\n var j;\n var offsetX;\n var offsetY;\n var update;\n var tx;\n var ty;\n if (node.bounds) {\n if (node.bounds.width !== undefined) {\n actualObject.bounds.width = actualObject.wrapper.width = node.bounds.width;\n }\n if (node.bounds.height !== undefined) {\n actualObject.bounds.height = actualObject.wrapper.height = node.bounds.height;\n }\n if (node.bounds.x !== undefined) {\n actualObject.bounds.x = node.bounds.x - (actualObject.bounds.width * 0.5);\n actualObject.wrapper.offsetX = node.bounds.x;\n update = true;\n updateConnector = true;\n }\n if (node.bounds.y !== undefined) {\n actualObject.bounds.y = node.bounds.y - (actualObject.bounds.height * 0.5);\n actualObject.wrapper.offsetY = node.bounds.y;\n update = true;\n updateConnector = true;\n }\n if (node.leaderHeight !== undefined) {\n actualObject.leaderHeight = node.leaderHeight;\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (actualObject.wrapper.children.length) {\n var children = actualObject.wrapper.children;\n for (var i_1 = 0; i_1 < children.length; i_1++) {\n if (children[parseInt(i_1.toString(), 10)].id) {\n var names = children[parseInt(i_1.toString(), 10)].id.split('_');\n if (names.length && (names.indexOf('perimeter') > -1 || names.indexOf('radius') > -1)) {\n this.setNodePosition(children[parseInt(i_1.toString(), 10)], actualObject);\n }\n else if (names.length && (names.indexOf('srcDec') > -1)) {\n children[parseInt(i_1.toString(), 10)].offsetX = actualObject.vertexPoints[0].x;\n children[parseInt(i_1.toString(), 10)].offsetY = actualObject.vertexPoints[0].y;\n }\n else if (names.length && names.indexOf('tarDec') > -1) {\n children[parseInt(i_1.toString(), 10)].offsetX = actualObject.vertexPoints[actualObject.vertexPoints.length - 1].x;\n children[parseInt(i_1.toString(), 10)].offsetY = actualObject.vertexPoints[actualObject.vertexPoints.length - 1].y;\n }\n else if (names.length && (names.indexOf('stamp') > -1)) {\n // eslint-disable-next-line\n var ratio = 0;\n var heightRatio = 2;\n if (actualObject.wrapper.width !== undefined && actualObject.wrapper.height !== undefined) {\n ratio = 20;\n heightRatio = 2.9;\n }\n if (actualObject.isDynamicStamp) {\n children[parseInt(i_1.toString(), 10)].width = actualObject.bounds.width - ratio;\n children[parseInt(i_1.toString(), 10)].height = (actualObject.bounds.height / 2) - ratio;\n // eslint-disable-next-line\n var element = children[1];\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.stampSettings ? this.pdfViewer.stampSettings : this.pdfViewer.annotationSettings;\n // eslint-disable-next-line max-len\n if (annotationSettings && (annotationSettings.maxHeight || annotationSettings.maxWidth) && (actualObject.bounds.height > 60)) {\n if (ratio != 0) {\n element.style.fontSize = (actualObject.bounds.width / ratio);\n }\n else {\n element.style.fontSize = (actualObject.wrapper.bounds.width / 20);\n }\n }\n else {\n if (ratio != 0) {\n element.style.fontSize = this.fontSizeCalculation(actualObject, element, (actualObject.bounds.width - 20));\n }\n else {\n element.style.fontSize = this.fontSizeCalculation(actualObject, element, (actualObject.wrapper.bounds.width - 20));\n }\n }\n if (ratio !== 0) {\n element.margin.bottom = -(children[parseInt(i_1.toString(), 10)].height / 2);\n }\n }\n else {\n children[parseInt(i_1.toString(), 10)].width = actualObject.bounds.width - ratio;\n children[parseInt(i_1.toString(), 10)].height = actualObject.bounds.height - ratio;\n }\n children[parseInt(i_1.toString(), 10)].offsetX = actualObject.wrapper.offsetX;\n children[parseInt(i_1.toString(), 10)].offsetY = actualObject.wrapper.offsetX;\n children[parseInt(i_1.toString(), 10)].isDirt = true;\n }\n }\n }\n }\n }\n if (node.sourceDecoraterShapes !== undefined) {\n actualObject.sourceDecoraterShapes = node.sourceDecoraterShapes;\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (node.isReadonly !== undefined && actualObject.shapeAnnotationType === 'FreeText') {\n actualObject.isReadonly = node.isReadonly;\n }\n if (node.taregetDecoraterShapes !== undefined) {\n actualObject.taregetDecoraterShapes = node.taregetDecoraterShapes;\n update = true;\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (node.fillColor !== undefined) {\n actualObject.fillColor = node.fillColor;\n actualObject.wrapper.children[0].style.fill = node.fillColor;\n if ((actualObject.enableShapeLabel || actualObject.measureType) && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_2 = 0; i_2 < children.length; i_2++) {\n if (children[parseInt(i_2.toString(), 10)].textNodes) {\n if (actualObject.enableShapeLabel) {\n actualObject.labelFillColor = node.fillColor;\n children[parseInt(i_2.toString(), 10)].style.fill = node.fillColor;\n }\n if (actualObject.measureType) {\n children[parseInt(i_2.toString(), 10)].style.fill = node.fillColor;\n }\n }\n }\n }\n update = true;\n }\n if (actualObject.enableShapeLabel && node.labelFillColor !== undefined) {\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_3 = 0; i_3 < children.length; i_3++) {\n if (children[parseInt(i_3.toString(), 10)].textNodes) {\n actualObject.labelFillColor = node.labelFillColor;\n children[parseInt(i_3.toString(), 10)].style.fill = node.labelFillColor;\n }\n }\n }\n }\n if (node.opacity !== undefined) {\n if (actualObject.shapeAnnotationType === 'Stamp' || actualObject.shapeAnnotationType === 'FreeText') {\n actualObject.wrapper.children[1].style.opacity = node.opacity;\n if (actualObject.wrapper.children[2]) {\n actualObject.wrapper.children[2].style.opacity = node.opacity;\n }\n }\n else {\n if (actualObject.shapeAnnotationType === 'StickyNotes') {\n // eslint-disable-next-line\n this.pdfViewer.nameTable[actualObject.annotName].wrapper.children[0].style.opacity = node.opacity;\n }\n actualObject.opacity = node.opacity;\n }\n actualObject.wrapper.children[0].style.opacity = node.opacity;\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_4 = 0; i_4 < children.length; i_4++) {\n if (children[parseInt(i_4.toString(), 10)].textNodes) {\n children[parseInt(i_4.toString(), 10)].style.opacity = node.labelOpacity;\n }\n }\n }\n update = true;\n updateConnector = true;\n }\n if (actualObject.enableShapeLabel && node.labelOpacity !== undefined) {\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_5 = 0; i_5 < children.length; i_5++) {\n if (children[parseInt(i_5.toString(), 10)].textNodes) {\n children[parseInt(i_5.toString(), 10)].style.opacity = node.labelOpacity;\n }\n }\n }\n }\n if (node.rotateAngle !== undefined) {\n actualObject.rotateAngle = node.rotateAngle;\n actualObject.wrapper.rotateAngle = node.rotateAngle;\n update = true;\n updateConnector = true;\n }\n if (node.strokeColor !== undefined) {\n actualObject.strokeColor = node.strokeColor;\n actualObject.wrapper.children[0].style.strokeColor = node.strokeColor;\n update = true;\n if (actualObject.shapeAnnotationType === 'Radius' && actualObject.wrapper.children[1]) {\n actualObject.wrapper.children[1].style.strokeColor = node.strokeColor;\n }\n updateConnector = true;\n }\n if (node.fontColor !== undefined) {\n actualObject.fontColor = node.fontColor;\n if (actualObject.shapeAnnotationType === 'FreeText' && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n children[1].style.color = node.fontColor;\n if (actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Center';\n }\n else {\n children[1].horizontalAlignment = 'Auto';\n }\n }\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_6 = 0; i_6 < children.length; i_6++) {\n if (children[parseInt(i_6.toString(), 10)].textNodes) {\n children[parseInt(i_6.toString(), 10)].style.color = node.fontColor;\n }\n }\n }\n update = true;\n updateConnector = true;\n }\n if (node.fontFamily !== undefined) {\n actualObject.fontFamily = node.fontFamily;\n if (actualObject.shapeAnnotationType === 'FreeText' && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n children[1].style.fontFamily = node.fontFamily;\n }\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_7 = 0; i_7 < children.length; i_7++) {\n if (children[parseInt(i_7.toString(), 10)].textNodes) {\n children[parseInt(i_7.toString(), 10)].style.fontFamily = node.fontFamily;\n }\n }\n }\n update = true;\n updateConnector = true;\n }\n if (node.fontSize !== undefined) {\n actualObject.fontSize = node.fontSize;\n if ((actualObject.shapeAnnotationType === 'FreeText' || actualObject.shapeAnnotationType === 'SignatureText') && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n children[1].style.fontSize = node.fontSize;\n if (actualObject.shapeAnnotationType === 'SignatureText') {\n actualObject.wrapper.children[1].bounds.width = actualObject.bounds.width;\n actualObject.wrapper.children[1].desiredSize.width = actualObject.bounds.width;\n actualObject.wrapper.children[1].actualSize.width = actualObject.bounds.width;\n children[1].horizontalAlignment = 'Center';\n children[1].verticalAlignment = 'Center';\n children[1].setOffsetWithRespectToBounds(0, 0, 'Absolute');\n }\n }\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_8 = 0; i_8 < children.length; i_8++) {\n if (children[parseInt(i_8.toString(), 10)].textNodes) {\n children[parseInt(i_8.toString(), 10)].style.fontSize = node.fontSize;\n }\n }\n }\n this.pdfViewer.toolbarModule.annotationToolbarModule.updateFontSizeInIcon(node.fontSize);\n update = true;\n updateConnector = true;\n }\n if (node.font !== undefined) {\n if (actualObject.shapeAnnotationType === 'FreeText' && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n if (node.font.isBold !== undefined) {\n children[1].style.bold = node.font.isBold;\n actualObject.font.isBold = node.font.isBold;\n }\n if (node.font.isItalic !== undefined) {\n children[1].style.italic = node.font.isItalic;\n actualObject.font.isItalic = node.font.isItalic;\n }\n if (node.font.isUnderline !== undefined) {\n if (node.font.isUnderline) {\n actualObject.font.isStrikeout = false;\n }\n if (node.font.isUnderline === true) {\n children[1].style.textDecoration = 'Underline';\n }\n else {\n if (!node.font.isStrikeout) {\n children[1].style.textDecoration = 'None';\n }\n }\n actualObject.font.isUnderline = node.font.isUnderline;\n }\n if (node.font.isStrikeout !== undefined) {\n if (node.font.isStrikeout) {\n actualObject.font.isUnderline = false;\n }\n if (node.font.isStrikeout === true) {\n children[1].style.textDecoration = 'LineThrough';\n }\n else {\n if (!node.font.isUnderline) {\n children[1].style.textDecoration = 'None';\n }\n }\n actualObject.font.isStrikeout = node.font.isStrikeout;\n }\n }\n update = true;\n updateConnector = true;\n }\n if (node.textAlign !== undefined) {\n actualObject.textAlign = node.textAlign;\n if (actualObject.shapeAnnotationType === 'FreeText' && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n children[1].style.textAlign = node.textAlign;\n if (children[1].childNodes.length === 1) {\n if (actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n else if (actualObject.textAlign === 'Right') {\n children[1].horizontalAlignment = 'Right';\n children[1].setOffsetWithRespectToBounds(0.97, 0, null);\n }\n else if (actualObject.textAlign === 'Left') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n else if (actualObject.textAlign === 'Center') {\n children[1].horizontalAlignment = 'Center';\n children[1].setOffsetWithRespectToBounds(0.46, 0, null);\n }\n }\n else if (children[1].childNodes.length > 1 && actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Center';\n }\n else {\n children[1].horizontalAlignment = 'Auto';\n }\n }\n update = true;\n updateConnector = true;\n }\n if (node.thickness !== undefined) {\n actualObject.thickness = node.thickness;\n actualObject.wrapper.children[0].style.strokeWidth = node.thickness;\n if (actualObject.shapeAnnotationType === 'LineWidthArrowHead') {\n actualObject.wrapper.children[1].width = 12 * node.thickness;\n actualObject.wrapper.children[1].height = 12 * node.thickness;\n actualObject.wrapper.children[2].width = 12 * node.thickness;\n actualObject.wrapper.children[2].height = 12 * node.thickness;\n }\n if (actualObject.shapeAnnotationType === 'Radius' && actualObject.wrapper.children[1]) {\n actualObject.wrapper.children[1].style.strokeWidth = node.thickness;\n }\n update = true;\n updateConnector = true;\n }\n if (node.borderDashArray !== undefined) {\n actualObject.borderDashArray = node.borderDashArray;\n actualObject.wrapper.children[0].style.strokeDashArray = node.borderDashArray;\n }\n if (node.borderStyle !== undefined) {\n actualObject.borderStyle = node.borderStyle;\n }\n if (node.author !== undefined) {\n actualObject.author = node.author;\n }\n if (node.modifiedDate !== undefined) {\n actualObject.modifiedDate = node.modifiedDate;\n }\n if (node.subject !== undefined) {\n actualObject.subject = node.subject;\n }\n if (node.vertexPoints !== undefined) {\n actualObject.vertexPoints = node.vertexPoints;\n // eslint-disable-next-line\n this.pdfViewer.nameTable[actualObject.id].vertexPoints = node.vertexPoints;\n this.updateConnector(actualObject, node.vertexPoints);\n }\n if (node.leaderHeight !== undefined && actualObject.shapeAnnotationType !== 'Polygon') {\n actualObject.leaderHeight = node.leaderHeight;\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (node.notes !== undefined) {\n actualObject.notes = node.notes;\n }\n if (node.annotName !== undefined) {\n actualObject.annotName = node.annotName;\n }\n if (actualObject.shapeAnnotationType === 'Distance') {\n for (i = 0; i < actualObject.wrapper.children.length; i++) {\n // eslint-disable-next-line\n var segment = actualObject.wrapper.children[i];\n // eslint-disable-next-line\n var points = getConnectorPoints(actualObject);\n if (segment.id.indexOf('leader1') > -1) {\n this.setLineDistance(actualObject, points, segment, false);\n }\n if (segment.id.indexOf('leader2') > -1) {\n this.setLineDistance(actualObject, points, segment, true);\n }\n }\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (actualObject.shapeAnnotationType === 'Polygon' && node.vertexPoints) {\n actualObject.data = getPolygonPath(actualObject.vertexPoints);\n // eslint-disable-next-line\n var path = actualObject.wrapper.children[0];\n path.data = actualObject.data;\n path.canMeasurePath = true;\n }\n if (isLineShapes(actualObject)) {\n for (var i_9 = 0; i_9 < actualObject.wrapper.children.length; i_9++) {\n // eslint-disable-next-line\n var childElement = actualObject.wrapper.children[i_9];\n if (!childElement.textNodes) {\n setElementStype(actualObject, actualObject.wrapper.children[parseInt(i_9.toString(), 10)]);\n }\n if (actualObject.enableShapeLabel === true) {\n if (actualObject.wrapper.children[parseInt(i_9.toString(), 10)] instanceof TextElement) {\n actualObject.wrapper.children[parseInt(i_9.toString(), 10)].style.fill = actualObject.labelFillColor;\n }\n if ((actualObject.wrapper.children[parseInt(i_9.toString(), 10)] instanceof PathElement && actualObject.measureType === 'Perimeter')) {\n actualObject.wrapper.children[parseInt(i_9.toString(), 10)].style.fill = 'transparent';\n }\n }\n else {\n if ((actualObject.wrapper.children[parseInt(i_9.toString(), 10)] instanceof PathElement && actualObject.measureType === 'Perimeter') || actualObject.wrapper.children[parseInt(i_9.toString(), 10)] instanceof TextElement) {\n actualObject.wrapper.children[parseInt(i_9.toString(), 10)].style.fill = 'transparent';\n }\n }\n }\n }\n if (actualObject && (actualObject.shapeAnnotationType === 'FreeText' || actualObject.enableShapeLabel === true)) {\n if (actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_10 = 0; i_10 < children.length; i_10++) {\n if (children[parseInt(i_10.toString(), 10)].textNodes) {\n if (actualObject.shapeAnnotationType === 'FreeText') {\n if (node.dynamicText) {\n children[parseInt(i_10.toString(), 10)].content = node.dynamicText;\n actualObject.dynamicText = node.dynamicText;\n }\n else {\n children[parseInt(i_10.toString(), 10)].content = actualObject.dynamicText;\n }\n children[parseInt(i_10.toString(), 10)].width = actualObject.bounds.width;\n }\n else if (actualObject.enableShapeLabel === true && actualObject.measureType) {\n if (node.labelContent) {\n children[parseInt(i_10.toString(), 10)].content = node.labelContent;\n actualObject.labelContent = node.labelContent;\n }\n else {\n children[parseInt(i_10.toString(), 10)].content = actualObject.labelContent;\n }\n actualObject.notes = children[parseInt(i_10.toString(), 10)].content;\n }\n else if (actualObject.enableShapeLabel === true) {\n if (node.labelContent) {\n children[parseInt(i_10.toString(), 10)].content = node.labelContent;\n actualObject.labelContent = node.labelContent;\n }\n else {\n children[parseInt(i_10.toString(), 10)].content = actualObject.labelContent;\n }\n actualObject.notes = children[parseInt(i_10.toString(), 10)].content;\n }\n children[parseInt(i_10.toString(), 10)].isDirt = true;\n }\n /** set text node width less than the parent */\n }\n }\n }\n if (actualObject && actualObject.shapeAnnotationType === \"SignatureText\" && actualObject.wrapper) {\n if (actualObject.wrapper.children && actualObject.wrapper.children.length > 1) {\n actualObject.wrapper.children[1].isDirt = true;\n }\n }\n if (actualObject && actualObject.shapeAnnotationType === 'FreeText' && this.pdfViewer.annotationModule.stickyNotesAnnotationModule.textFromCommentPanel) {\n actualObject.wrapper.width = undefined;\n actualObject.wrapper.height = undefined;\n actualObject.wrapper.measure(new Size(actualObject.wrapper.bounds.width, actualObject.wrapper.bounds.height));\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.textFromCommentPanel = false;\n }\n else {\n actualObject.wrapper.measure(new Size(actualObject.wrapper.bounds.width, actualObject.wrapper.bounds.height));\n }\n actualObject.wrapper.arrange(actualObject.wrapper.desiredSize);\n if (actualObject && actualObject.formFieldAnnotationType) {\n if (actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children[0];\n children.actualSize.width = actualObject.wrapper.desiredSize.width;\n children.actualSize.height = actualObject.wrapper.desiredSize.height;\n }\n }\n if (actualObject && actualObject.shapeAnnotationType === 'FreeText' && actualObject.subject === 'Text Box') {\n if (actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n if (children[1].childNodes.length > 1 && actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Center';\n }\n else if (children[1].childNodes.length === 1) {\n if (actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n else if (actualObject.textAlign === 'Right') {\n children[1].horizontalAlignment = 'Right';\n children[1].setOffsetWithRespectToBounds(0.97, 0, null);\n }\n else if (actualObject.textAlign === 'Left') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n else if (actualObject.textAlign === 'Center') {\n children[1].horizontalAlignment = 'Center';\n children[1].setOffsetWithRespectToBounds(0.46, 0, null);\n }\n }\n for (var i_11 = 0; i_11 < children.length; i_11++) {\n if (children[parseInt(i_11.toString(), 10)].textNodes && children[parseInt(i_11.toString(), 10)].textNodes.length > 0) {\n children[parseInt(i_11.toString(), 10)].isDirt = true;\n var childNodeHeight = children[parseInt(i_11.toString(), 10)].textNodes.length * children[parseInt(i_11.toString(), 10)].textNodes[0].dy;\n var heightDiff = actualObject.bounds.height - childNodeHeight;\n if (heightDiff > 0 && heightDiff < children[parseInt(i_11.toString(), 10)].textNodes[0].dy) {\n childNodeHeight = childNodeHeight + children[parseInt(i_11.toString(), 10)].textNodes[0].dy;\n }\n if (childNodeHeight > actualObject.bounds.height) {\n var contString = '';\n for (var index = 0; index < children[parseInt(i_11.toString(), 10)].textNodes.length; index++) {\n // eslint-disable-next-line\n var childHeight = children[i_11].textNodes[0].dy * (index + 1);\n // eslint-disable-next-line\n childHeight = childHeight;\n contString = contString + children[parseInt(i_11.toString(), 10)].textNodes[parseInt(index.toString(), 10)].text;\n }\n children[parseInt(i_11.toString(), 10)].content = contString;\n }\n }\n /** set text node width less than the parent */\n children[parseInt(i_11.toString(), 10)].width = actualObject.bounds.width;\n }\n }\n actualObject.wrapper.measure(new Size(actualObject.wrapper.bounds.width, actualObject.wrapper.bounds.height));\n actualObject.wrapper.arrange(actualObject.wrapper.desiredSize);\n }\n this.pdfViewer.renderDrawing(undefined, actualObject.pageIndex);\n if (actualObject && actualObject.shapeAnnotationType === 'FreeText') {\n if (actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n if (children[1].childNodes.length === 1 && actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0.5, 0, null);\n }\n else if (children[1].childNodes.length > 1 && actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Center';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n }\n }\n };\n Drawing.prototype.fontSizeCalculation = function (actualObject, element, boundsWidth) {\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + actualObject.pageIndex);\n var context = canvas.getContext(\"2d\");\n var textwidth = 0;\n var newsize = 0;\n var fontStyle = '';\n if (element.style.italic && element.style.bold) {\n fontStyle = 'bold italic ';\n }\n else if (element.style.bold) {\n fontStyle = 'bold ';\n }\n else if (element.style.italic) {\n fontStyle = 'italic ';\n }\n while (boundsWidth > textwidth) {\n context.font = fontStyle + newsize + 'px ' + element.style.fontFamily;\n textwidth = context.measureText(actualObject.dynamicText).width;\n newsize += 0.1;\n }\n newsize -= 0.1;\n return newsize;\n };\n // eslint-disable-next-line\n Drawing.prototype.setLineDistance = function (actualObject, points, segment, leader) {\n var node1;\n if (leader) {\n node1 = initLeader(actualObject, points[1], points[0], leader);\n }\n else {\n node1 = initLeader(actualObject, points[0], points[1], leader);\n }\n segment.data = node1.data;\n segment.offsetX = node1.offsetX;\n segment.offsetY = node1.offsetY;\n segment.rotateAngle = node1.rotateAngle;\n segment.width = node1.width;\n segment.height = node1.height;\n segment.pivot = node1.pivot;\n segment.canMeasurePath = true;\n segment.isDirt = true;\n };\n /**\n * @private\n * @param {number} sx - Specified the sx value.\n * @param {number} sy - Specified the sy value.\n * @param {PointModel} pivot - Specified the pivot value.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.scaleSelectedItems = function (sx, sy, pivot) {\n var obj = this.pdfViewer.selectedItems;\n return this.scale(obj, sx, sy, pivot);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel | SelectorModel} obj - Specified the annotaion object.\n * @param {number} sx - Specified the sx value.\n * @param {number} sy - Specified the sy value.\n * @param {PointModel} pivot - Specified the pivot value.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.scale = function (obj, sx, sy, pivot) {\n var checkBoundaryConstraints = true;\n if (obj instanceof Selector) {\n if (obj.annotations && obj.annotations.length) {\n for (var _i = 0, _a = obj.annotations; _i < _a.length; _i++) {\n var node = _a[_i];\n checkBoundaryConstraints = this.scaleAnnotation(node, sx, sy, pivot, obj);\n }\n }\n else if (obj.formFields && obj.formFields.length) {\n for (var _b = 0, _c = obj.formFields; _b < _c.length; _b++) {\n var node = _c[_b];\n checkBoundaryConstraints = this.scaleAnnotation(node, sx, sy, pivot, obj);\n }\n }\n }\n else {\n checkBoundaryConstraints = this.scaleAnnotation(obj, sx, sy, pivot, undefined);\n }\n return checkBoundaryConstraints;\n };\n /**\n * @private\n * @param {number} sw - Specified the sw value.\n * @param {number} sh - Specified the sh value.\n * @param {PointModel} pivot - Specified the pivot value.\n * @param {IElement} obj - Specified the annotation object.\n * @param {DrawingElement} element - Specified the annotation element.\n * @param {IElement} refObject - Specified the annotation reference object.\n * @returns {void}\n */\n Drawing.prototype.scaleObject = function (sw, sh, pivot, obj, element, refObject) {\n sw = sw < 0 ? 1 : sw;\n sh = sh < 0 ? 1 : sh;\n if (sw !== 1 || sh !== 1) {\n var width = void 0;\n var height = void 0;\n if (!isLineShapes(obj)) {\n var node = obj;\n var isResize = void 0;\n var bound = void 0;\n width = node.wrapper.actualSize.width * sw;\n height = node.wrapper.actualSize.height * sh;\n if (isResize) {\n width = Math.max(width, (bound.right - node.wrapper.bounds.x));\n height = Math.max(height, (bound.bottom - node.wrapper.bounds.y));\n }\n sw = width / node.wrapper.actualSize.width;\n sh = height / node.wrapper.actualSize.height;\n }\n var matrix = identityMatrix();\n if (!refObject) {\n refObject = obj;\n }\n var refWrapper = refObject.wrapper;\n rotateMatrix(matrix, -refWrapper.rotateAngle, pivot.x, pivot.y);\n scaleMatrix(matrix, sw, sh, pivot.x, pivot.y);\n rotateMatrix(matrix, refWrapper.rotateAngle, pivot.x, pivot.y);\n if (!isLineShapes(obj)) {\n var node = obj;\n var newPosition = transformPointByMatrix(matrix, { x: node.wrapper.offsetX, y: node.wrapper.offsetY });\n if (width > 0) {\n node.wrapper.width = width;\n node.wrapper.offsetX = newPosition.x;\n }\n if (height > 0) {\n node.wrapper.height = height;\n node.wrapper.offsetY = newPosition.y;\n }\n this.nodePropertyChange(obj, {\n bounds: { width: node.wrapper.width, height: node.wrapper.height, x: node.wrapper.offsetX, y: node.wrapper.offsetY }\n });\n }\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} sw - Specified the sw value.\n * @param {number} sh - Specified the sh value.\n * @param {PointModel} pivot - Specified the pivot value.\n * @param {IElement} refObject - Specified the reference object.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.scaleAnnotation = function (obj, sw, sh, pivot, refObject) {\n // eslint-disable-next-line\n var node = this.pdfViewer.nameTable[obj.id];\n var tempNode = node;\n var elements = [];\n var element = node.wrapper;\n if (!refObject) {\n refObject = obj;\n }\n var refWrapper = refObject.wrapper;\n var x = refWrapper.offsetX - refWrapper.actualSize.width * refWrapper.pivot.x;\n var y = refWrapper.offsetY - refWrapper.actualSize.height * refWrapper.pivot.y;\n var refPoint = this.getShapePoint(x, y, refWrapper.actualSize.width, refWrapper.actualSize.height, refWrapper.rotateAngle, refWrapper.offsetX, refWrapper.offsetY, pivot);\n if (element.actualSize.width !== undefined && element.actualSize.height !== undefined) {\n this.scaleObject(sw, sh, refPoint, node, element, refObject);\n }\n // eslint-disable-next-line max-len\n var constraints = this.checkBoundaryConstraints(undefined, undefined, obj.pageIndex, obj.wrapper.bounds);\n if (!constraints) {\n this.scaleObject(1 / sw, 1 / sh, refPoint, node, element, refObject);\n //bug (EJ2-62649) : fixed an issue with difficulty on moving/ resizing free text annotation that added in edge of viewer \n // eslint-disable-next-line\n if (obj.shapeAnnotationType === 'FreeText' && (obj.id.slice(0, 9) === 'free_text' || obj.id.slice(0, 8) === 'freetext')) {\n var newDiff = this.moveInsideViewer(obj);\n this.nodePropertyChange(obj, {\n bounds: { width: obj.wrapper.width, height: obj.wrapper.height, x: obj.wrapper.offsetX + newDiff.tx, y: obj.wrapper.offsetY + newDiff.ty }\n });\n }\n }\n return constraints;\n };\n //bug (EJ2-62649) : Implemnted method for calculating optimal bound for free text annotation that outside viewer container \n Drawing.prototype.moveInsideViewer = function (obj, tx, ty) {\n tx = tx ? tx : 0;\n ty = ty ? ty : 0;\n if (obj.shapeAnnotationType === 'FreeText' && (obj.id.slice(0, 9) === 'free_text' || obj.id.slice(0, 8) === 'freetext')) {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + obj.pageIndex);\n if (canvas) {\n var bounds = obj.wrapper.bounds;\n var width = canvas.clientWidth / this.pdfViewer.viewerBase.getZoomFactor();\n var height = canvas.clientHeight / this.pdfViewer.viewerBase.getZoomFactor();\n var right = bounds.right;\n var left = bounds.left;\n var top_1 = bounds.top;\n var bottom = bounds.bottom;\n // eslint-disable-next-line\n if (!(right + tx <= width - 3 && left + tx >= 1 && bottom + ty <= height - 3 && top_1 + ty >= 1)) {\n var txNew = 0;\n var tyNew = 0;\n if (!(right <= width - 3)) {\n txNew = width - right - 3;\n }\n if (!(left >= 1)) {\n txNew = txNew - left + 1;\n }\n if (!(bottom <= height - 3)) {\n tyNew = height - bottom - 3;\n }\n if (!(top_1 >= 1)) {\n tyNew = tyNew - top_1 + 1;\n }\n if (txNew !== 0) {\n tx = txNew;\n }\n if (tyNew !== 0) {\n ty = tyNew;\n }\n }\n }\n }\n return { tx: tx, ty: ty };\n };\n /**\n * @private\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @param {number} pageIndex - Specified the page index value.\n * @param {Rect} nodeBounds - Specified the node bounds value.\n * @param {boolean} isStamp - Specified the annotation is stamp or not.\n * @param {boolean} isSkip - Specified the annotaion is skip or not.\n * @returns {boolean} - Returns true or false.\n */\n // eslint-disable-next-line max-len\n Drawing.prototype.checkBoundaryConstraints = function (tx, ty, pageIndex, nodeBounds, isStamp, isSkip) {\n var selectorBounds = !nodeBounds ? this.pdfViewer.selectedItems.wrapper.bounds : undefined;\n var bounds = nodeBounds;\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n var heightDifference = 1;\n if (canvas) {\n var width = canvas.clientWidth / this.pdfViewer.viewerBase.getZoomFactor();\n var height = canvas.clientHeight / this.pdfViewer.viewerBase.getZoomFactor();\n var right = (nodeBounds ? bounds.right : selectorBounds.right) + (tx || 0);\n var left = (nodeBounds ? bounds.left : selectorBounds.left) + (tx || 0);\n var top_2 = (nodeBounds ? bounds.top : selectorBounds.top) + (ty || 0);\n var bottom = (nodeBounds ? bounds.bottom : selectorBounds.bottom) + (ty || 0);\n if (isStamp) {\n heightDifference = 50;\n if (this.pdfViewer.viewerBase.eventArgs && this.pdfViewer.viewerBase.eventArgs.source) {\n if (this.RestrictStamp(this.pdfViewer.viewerBase.eventArgs.source)) {\n return false;\n }\n }\n }\n if ((right <= width - 3 || left >= 1 && bottom <= height - 3 && top_2 >= heightDifference) || isSkip) {\n return true;\n }\n }\n return false;\n };\n // eslint-disable-next-line\n Drawing.prototype.RestrictStamp = function (source) {\n // eslint-disable-next-line max-len\n if (source && source.pageIndex !== undefined && this.pdfViewer.viewerBase.activeElements && source.pageIndex !== this.pdfViewer.viewerBase.activeElements.activePageID) {\n return true;\n }\n return false;\n };\n /**\n * @private\n * @param {DrawingElement} shapeElement - Specified the shape element.\n * @returns {Rect} - Returns the rectangle object.\n */\n Drawing.prototype.getShapeBounds = function (shapeElement) {\n var shapeBounds = new Rect();\n var shapeCorners = cornersPointsBeforeRotation(shapeElement);\n var shapeMiddleLeft = shapeCorners.middleLeft;\n var shapeTopCenter = shapeCorners.topCenter;\n var shapeBottomCenter = shapeCorners.bottomCenter;\n var shapeMiddleRight = shapeCorners.middleRight;\n var shapeTopLeft = shapeCorners.topLeft;\n var shapeTopRight = shapeCorners.topRight;\n var shapeBottomLeft = shapeCorners.bottomLeft;\n var shapeBottomRight = shapeCorners.bottomRight;\n shapeElement.corners = {\n topLeft: shapeTopLeft, topCenter: shapeTopCenter, topRight: shapeTopRight, middleLeft: shapeMiddleLeft,\n middleRight: shapeMiddleRight, bottomLeft: shapeBottomLeft, bottomCenter: shapeBottomCenter, bottomRight: shapeBottomRight\n };\n if (shapeElement.rotateAngle !== 0 || shapeElement.parentTransform !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, shapeElement.rotateAngle + shapeElement.parentTransform, shapeElement.offsetX, shapeElement.offsetY);\n shapeElement.corners.topLeft = shapeTopLeft = transformPointByMatrix(matrix, shapeTopLeft);\n shapeElement.corners.topCenter = shapeTopCenter = transformPointByMatrix(matrix, shapeTopCenter);\n shapeElement.corners.topRight = shapeTopRight = transformPointByMatrix(matrix, shapeTopRight);\n shapeElement.corners.middleLeft = shapeMiddleLeft = transformPointByMatrix(matrix, shapeMiddleLeft);\n shapeElement.corners.middleRight = shapeMiddleRight = transformPointByMatrix(matrix, shapeMiddleRight);\n shapeElement.corners.bottomLeft = shapeBottomLeft = transformPointByMatrix(matrix, shapeBottomLeft);\n shapeElement.corners.bottomCenter = shapeBottomCenter = transformPointByMatrix(matrix, shapeBottomCenter);\n shapeElement.corners.bottomRight = shapeBottomRight = transformPointByMatrix(matrix, shapeBottomRight);\n //Set corners based on rotate angle\n }\n shapeBounds = Rect.toBounds([shapeTopLeft, shapeTopRight, shapeBottomLeft, shapeBottomRight]);\n shapeElement.corners.left = shapeBounds.left;\n shapeElement.corners.right = shapeBounds.right;\n shapeElement.corners.top = shapeBounds.top;\n shapeElement.corners.bottom = shapeBounds.bottom;\n shapeElement.corners.center = shapeBounds.center;\n shapeElement.corners.width = shapeBounds.width;\n shapeElement.corners.height = shapeBounds.height;\n return shapeBounds;\n };\n /**\n * @private\n * @param {number} x - Specified the x value.\n * @param {number} y - Specified the y value.\n * @param {number} w - Specified the w value.\n * @param {number} h - Specified the h value.\n * @param {number} angle - Specified the angle value.\n * @param {number} offsetX - Specified the offset x value.\n * @param {number} offsetY - Specified the offset y value.\n * @param {PointModel} cornerPoint - Specified the corner point value.\n * @returns {PointModel} - Returns the point model.\n */\n Drawing.prototype.getShapePoint = function (x, y, w, h, angle, offsetX, offsetY, cornerPoint) {\n var pivotPoint = { x: 0, y: 0 };\n var transformMatrix = identityMatrix();\n rotateMatrix(transformMatrix, angle, offsetX, offsetY);\n switch (cornerPoint.x) {\n case 1:\n switch (cornerPoint.y) {\n case 1:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w, y: y + h }));\n break;\n case 0:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w, y: y }));\n break;\n case 0.5:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w, y: y + h / 2 }));\n break;\n }\n break;\n case 0:\n switch (cornerPoint.y) {\n case 0.5:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x, y: y + h / 2 }));\n break;\n case 1:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x, y: y + h }));\n break;\n case 0:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x, y: y }));\n break;\n }\n break;\n case 0.5:\n switch (cornerPoint.y) {\n case 0:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w / 2, y: y }));\n break;\n case 0.5:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w / 2, y: y + h / 2 }));\n break;\n case 1:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w / 2, y: y + h }));\n break;\n }\n break;\n }\n return { x: pivotPoint.x, y: pivotPoint.y };\n };\n /**\n * @private\n * @param {string} endPoint - Specified the end point value.\n * @param {IElement} obj - Specified the annotaion object.\n * @param {PointModel} point - Specified the annotation points.\n * @param {PointModel} segment - Specified the annotaion segment.\n * @param {IElement} target - Specified the target element.\n * @param {string} targetPortId - Specified the target port id.\n * @param {any} currentSelector - Specified the current selector value.\n * @returns {boolean} - Returns true or false.\n */\n // eslint-disable-next-line\n Drawing.prototype.dragConnectorEnds = function (endPoint, obj, point, segment, target, targetPortId, currentSelector) {\n var selectorModel;\n var connector;\n var node;\n var tx;\n var segmentPoint;\n var ty;\n var index;\n // eslint-disable-next-line\n var checkBezierThumb = false;\n if (obj instanceof Selector) {\n selectorModel = obj;\n connector = selectorModel.annotations[0];\n }\n else {\n connector = obj;\n }\n point = { x: point.x / this.pdfViewer.viewerBase.getZoomFactor(), y: point.y / this.pdfViewer.viewerBase.getZoomFactor() };\n if (this.checkBoundaryConstraints(undefined, undefined, connector.pageIndex, connector.wrapper.bounds)) {\n if (connector.shapeAnnotationType === 'Distance') {\n var leader = isLeader(connector, endPoint);\n if (endPoint === 'Leader0') {\n if (this.pdfViewer.viewerBase.tool instanceof LineTool) {\n connector.vertexPoints[0].x = point.x;\n connector.vertexPoints[0].y = point.y;\n }\n else {\n tx = point.x - leader.point.x;\n ty = point.y - leader.point.y;\n connector.vertexPoints[0].x += tx;\n connector.vertexPoints[0].y += ty;\n }\n }\n else if (endPoint === 'Leader1') {\n var length_2 = connector.vertexPoints.length - 1;\n if (this.pdfViewer.viewerBase.tool instanceof LineTool) {\n connector.vertexPoints[parseInt(length_2.toString(), 10)].x = point.x;\n connector.vertexPoints[parseInt(length_2.toString(), 10)].y = point.y;\n }\n else {\n tx = point.x - leader.point.x;\n ty = point.y - leader.point.y;\n connector.vertexPoints[parseInt(length_2.toString(), 10)].x += tx;\n connector.vertexPoints[parseInt(length_2.toString(), 10)].y += ty;\n }\n }\n else {\n // eslint-disable-next-line\n var angle = Point.findAngle(connector.sourcePoint, connector.targetPoint);\n // eslint-disable-next-line\n var center = obj.wrapper.children[0].bounds.center;\n // eslint-disable-next-line\n var matrix = identityMatrix();\n rotateMatrix(matrix, -angle, center.x, center.y);\n // eslint-disable-next-line\n var rotatedPoint = transformPointByMatrix(matrix, { x: point.x, y: point.y });\n if (endPoint.split('_')[0] === 'ConnectorSegmentPoint') {\n // eslint-disable-next-line\n var matrix = identityMatrix();\n rotateMatrix(matrix, -angle, center.x, center.y);\n // eslint-disable-next-line\n var rotatedPoint1 = transformPointByMatrix(matrix, connector.vertexPoints[0]);\n // eslint-disable-next-line\n var rotatedPoint2 = transformPointByMatrix(matrix, connector.vertexPoints[connector.vertexPoints.length - 1]);\n ty = rotatedPoint.y - rotatedPoint1.y;\n if (connector.leaderHeight === 0 && connector.leaderHeight != null) {\n connector.leaderHeight = this.pdfViewer.distanceSettings.leaderLength;\n }\n else {\n connector.leaderHeight += ty;\n rotatedPoint1.y += ty;\n rotatedPoint2.y += ty;\n // eslint-disable-next-line\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, center.x, center.y);\n connector.vertexPoints[0] = transformPointByMatrix(matrix, rotatedPoint1);\n connector.vertexPoints[connector.vertexPoints.length - 1] = transformPointByMatrix(matrix, rotatedPoint2);\n }\n }\n }\n }\n else if (endPoint.split('_')[0] === 'ConnectorSegmentPoint') {\n var i = Number(endPoint.split('_')[1]);\n tx = point.x - connector.vertexPoints[parseInt(i.toString(), 10)].x;\n ty = point.y - connector.vertexPoints[parseInt(i.toString(), 10)].y;\n connector.vertexPoints[parseInt(i.toString(), 10)].x += tx;\n connector.vertexPoints[parseInt(i.toString(), 10)].y += ty;\n if (connector.vertexPoints.length > 2 && obj.measureType !== 'Perimeter') {\n if (parseFloat(endPoint.split('_')[1]) === 0) {\n connector.vertexPoints[connector.vertexPoints.length - 1].x += tx;\n connector.vertexPoints[connector.vertexPoints.length - 1].y += ty;\n }\n else if (parseFloat(endPoint.split('_')[1]) === connector.vertexPoints.length - 1) {\n connector.vertexPoints[0].x += tx;\n connector.vertexPoints[0].y += ty;\n }\n }\n }\n this.nodePropertyChange(connector, { vertexPoints: connector.vertexPoints });\n this.renderSelector(connector.pageIndex, currentSelector);\n }\n this.pdfViewer.renderDrawing();\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the y value.\n * @param {number} i - Specified the index value.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.dragSourceEnd = function (obj, tx, ty, i) {\n // eslint-disable-next-line\n var connector = this.pdfViewer.nameTable[obj.id];\n connector.vertexPoints[parseInt(i.toString(), 10)].x += tx;\n connector.vertexPoints[parseInt(i.toString(), 10)].y += ty;\n this.pdfViewer.renderDrawing();\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the connector object.\n * @param {PointModel[]} points - Specified the points value.\n * @returns {void}\n */\n Drawing.prototype.updateConnector = function (connector, points) {\n var srcDecorator;\n var tarDecorator;\n var targetPoint;\n connector.vertexPoints = points;\n updateSegmentElement(connector, points, connector.wrapper.children[0]);\n var srcPoint = connector.sourcePoint;\n var anglePoint = connector.vertexPoints;\n // points = this.clipDecorators(connector, points);\n var element = connector.wrapper.children[0];\n element.canMeasurePath = true;\n for (var i = 0; i < connector.wrapper.children.length; i++) {\n element = connector.wrapper.children[parseInt(i.toString(), 10)];\n if (connector.shapeAnnotationType !== 'Polygon') {\n if (element.id.indexOf('srcDec') > -1) {\n updateDecoratorElement(connector, element, points[0], anglePoint[1], true);\n }\n targetPoint = connector.targetPoint;\n if (element.id.indexOf('tarDec') > -1) {\n updateDecoratorElement(connector, element, points[points.length - 1], anglePoint[anglePoint.length - 2], false);\n }\n }\n }\n };\n /**\n * @private\n * @returns {Object} - Returns the object.\n */\n Drawing.prototype.copy = function () {\n var annotationSettings;\n if (!isNullOrUndefined(this.pdfViewer.annotationModule)) {\n annotationSettings = this.pdfViewer.annotationModule.findAnnotationSettings(this.pdfViewer.selectedItems.annotations[0]);\n }\n if (((this.pdfViewer.formDesignerModule && !this.pdfViewer.formDesigner.isPropertyDialogOpen) || this.pdfViewer.annotationModule) && (this.pdfViewer.designerMode || this.pdfViewer.enableAnnotation) && (this.pdfViewer.selectedItems.formFields.length !== 0 || (this.pdfViewer.selectedItems.annotations.length !== 0 && !isNullOrUndefined(annotationSettings) && !annotationSettings.isLock))) {\n this.pdfViewer.clipboardData.pasteIndex = 1;\n this.pdfViewer.clipboardData.clipObject = this.copyObjects();\n }\n var isSearchboxDialogOpen;\n var searchBoxId = document.getElementById(this.pdfViewer.element.id + \"_search_box\");\n if (searchBoxId) {\n isSearchboxDialogOpen = searchBoxId.style.display !== \"none\";\n }\n if (this.pdfViewer.formDesigner && this.pdfViewer.formDesigner.isPropertyDialogOpen || isSearchboxDialogOpen) {\n this.pdfViewer.clipboardData.clipObject = {};\n }\n return this.pdfViewer.clipboardData.clipObject;\n };\n /**\n * @private\n * @returns {Object[]} - Returns the object array.\n */\n Drawing.prototype.copyObjects = function () {\n var selectedItems = [];\n var obj = [];\n this.pdfViewer.clipboardData.childTable = {};\n if (this.pdfViewer.selectedItems.annotations.length > 0) {\n selectedItems = this.pdfViewer.selectedItems.annotations;\n for (var j = 0; j < selectedItems.length; j++) {\n var element = cloneObject((selectedItems[parseInt(j.toString(), 10)]));\n obj.push(element);\n }\n }\n if (this.pdfViewer.selectedItems.formFields.length > 0) {\n selectedItems = this.pdfViewer.selectedItems.formFields;\n for (var j = 0; j < selectedItems.length; j++) {\n var element = cloneObject((selectedItems[parseInt(j.toString(), 10)]));\n obj.push(element);\n }\n }\n if (this.pdfViewer.clipboardData.pasteIndex === 0) {\n for (var _i = 0, selectedItems_1 = selectedItems; _i < selectedItems_1.length; _i++) {\n var item = selectedItems_1[_i];\n // eslint-disable-next-line\n if (this.pdfViewer.nameTable[item.id]) {\n if (!item.formFieldAnnotationType) {\n if (item.annotName)\n this.pdfViewer.annotationModule.deleteAnnotationById(item.annotName);\n else\n this.pdfViewer.annotationModule.deleteAnnotation();\n }\n else {\n this.pdfViewer.clearSelection(item.pageIndex);\n this.pdfViewer.formDesignerModule.deleteFormField(item.id);\n }\n }\n }\n //this.endGroupAction();\n }\n this.sortByZIndex(obj, 'zIndex');\n return obj;\n };\n Drawing.prototype.getNewObject = function (obj) {\n var newObj;\n var newobjs = [];\n this.pdfViewer.clipboardData.pasteIndex = 1;\n for (var i = 0; i < obj.length; i++) {\n newObj = cloneObject(obj[parseInt(i.toString(), 10)]);\n newobjs.push(newObj);\n }\n return newobjs;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel[]} obj - Specified the annotation object.\n * @param {number} index - Specified the annotation index.\n * @returns {void}\n */\n Drawing.prototype.paste = function (obj, index) {\n var zoomfactor = this.pdfViewer.viewerBase.getZoomFactor();\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n var fieldId;\n if (obj || this.pdfViewer.clipboardData.clipObject) {\n var copiedItems = obj ? this.getNewObject(obj) :\n this.pdfViewer.clipboardData.clipObject;\n if (copiedItems) {\n var objectTable = {};\n if (this.pdfViewer.clipboardData.pasteIndex !== 0) {\n this.pdfViewer.clearSelection(index);\n }\n for (var _i = 0, copiedItems_1 = copiedItems; _i < copiedItems_1.length; _i++) {\n var copy = copiedItems_1[_i];\n fieldId = copy.id;\n copy.id += randomId();\n var fieldName = this.splitFormFieldName(copy);\n var maxNumber = 0; // this.pdfViewer.formFieldCollection.length;\n if (this.pdfViewer.formDesigner) {\n this.pdfViewer.formDesigner.setFormFieldIndex();\n maxNumber = this.pdfViewer.formDesigner.formFieldIndex;\n copy.name = fieldName + maxNumber;\n }\n // eslint-disable-next-line\n objectTable[copy.id] = copy;\n }\n for (var j = 0; j < copiedItems.length; j++) {\n var copy = copiedItems[parseInt(j.toString(), 10)];\n var pageDiv = this.pdfViewer.viewerBase.getElement('_pageDiv_' + copy.pageIndex);\n // eslint-disable-next-line\n var events = event;\n if (events && !events.clientX && !events.clientY) {\n events = { clientX: this.pdfViewer.viewerBase.mouseLeft, clientY: this.pdfViewer.viewerBase.mouseTop };\n }\n if (isBlazor()) {\n events = this.pdfViewer.viewerBase.mouseDownEvent;\n }\n if (isLineShapes(copy)) {\n this.calculateCopyPosition(copy, pageDiv, events);\n }\n else {\n if (pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n copy.bounds.x = (events.clientX - pageCurrentRect.left) / zoomfactor;\n copy.bounds.y = (events.clientY - pageCurrentRect.top) / zoomfactor;\n }\n }\n var newNode = cloneObject(copy);\n if (this.pdfViewer.viewerBase.contextMenuModule.previousAction !== 'Cut') {\n newNode.id += randomId();\n if (this.pdfViewer.annotationModule && newNode.shapeAnnotationType !== 'HandWrittenSignature') {\n newNode.annotName = newNode.id;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationCollection(newNode, copiedItems[0], false);\n }\n if (newNode.shapeAnnotationType === 'SignatureText' || newNode.shapeAnnotationType === 'HandWrittenSignature' || newNode.shapeAnnotationType === 'SignatureImage') {\n this.pdfViewer.viewerBase.signatureModule.storeSignatureData(newNode.pageIndex, newNode);\n }\n if (!newNode.formFieldAnnotationType) {\n this.pdfViewer.annotation.addAction(this.pdfViewer.viewerBase.getActivePage(false), null, newNode, 'Addition', '', newNode, newNode);\n }\n }\n else {\n if (this.pdfViewer.annotationModule) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationCollection(newNode, copiedItems[0], true);\n }\n if (newNode.shapeAnnotationType === 'SignatureText' || newNode.shapeAnnotationType === 'HandWrittenSignature' || newNode.shapeAnnotationType === 'SignatureImage') {\n this.pdfViewer.viewerBase.signatureModule.storeSignatureData(newNode.pageIndex, newNode);\n }\n }\n var addedAnnot = this.add(newNode);\n if (this.pdfViewer.formDesigner && addedAnnot.formFieldAnnotationType && this.pdfViewer.annotation) {\n this.pdfViewer.annotation.addAction(this.pdfViewer.viewerBase.getActivePage(true), null, addedAnnot, 'Addition', '', addedAnnot, addedAnnot);\n }\n if ((newNode.shapeAnnotationType === 'FreeText' || newNode.enableShapeLabel) && addedAnnot) {\n this.nodePropertyChange(addedAnnot, {});\n }\n if (addedAnnot.formFieldAnnotationType && addedAnnot.pageIndex === index) {\n this.pdfViewer.formFieldCollection.push(addedAnnot);\n // eslint-disable-next-line max-len\n var formField = {\n id: addedAnnot.id, name: addedAnnot.name, value: addedAnnot.value, type: addedAnnot.formFieldAnnotationType,\n isReadOnly: addedAnnot.isReadonly, fontFamily: addedAnnot.fontFamily,\n // eslint-disable-next-line max-len\n fontSize: addedAnnot.fontSize, fontStyle: addedAnnot.fontStyle, color: addedAnnot.color, backgroundColor: addedAnnot.backgroundColor,\n // eslint-disable-next-line max-len\n alignment: addedAnnot.alignment, visibility: addedAnnot.visibility, maxLength: addedAnnot.maxLength, isRequired: addedAnnot.isRequired,\n // eslint-disable-next-line max-len\n isPrint: addedAnnot.isPrint, isSelected: addedAnnot.isSelected, isChecked: addedAnnot.isChecked, tooltip: addedAnnot.tooltip, bounds: addedAnnot.bounds, thickness: addedAnnot.thickness, borderColor: addedAnnot.borderColor, signatureIndicatorSettings: addedAnnot.signatureIndicatorSettings, insertSpaces: addedAnnot.insertSpaces, isMultiline: addedAnnot.isMultiline, isTransparent: addedAnnot.isTransparent, options: addedAnnot.options, pageIndex: addedAnnot.pageIndex, pageNumber: addedAnnot.pageNumber, rotateAngle: addedAnnot.rotateAngle, signatureType: addedAnnot.signatureType, zIndex: addedAnnot.zIndex, selectedIndex: addedAnnot.selectedIndex\n };\n if (addedAnnot.options && addedAnnot.options.length > 0) {\n formField.options = addedAnnot.options;\n }\n this.pdfViewer.formFieldCollections.push(formField);\n // eslint-disable-next-line max-len\n this.pdfViewer.formDesigner.drawHTMLContent(addedAnnot.formFieldAnnotationType, addedAnnot.wrapper.children[0], addedAnnot, addedAnnot.pageIndex, this.pdfViewer, fieldId);\n }\n this.pdfViewer.select([newNode.id], this.pdfViewer.annotationSelectorSettings);\n if (!addedAnnot.formFieldAnnotationType) {\n this.pdfViewer.annotationModule.triggerAnnotationAddEvent(newNode);\n }\n ;\n }\n }\n this.pdfViewer.renderDrawing(undefined, index);\n this.pdfViewer.clipboardData.pasteIndex++;\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n Drawing.prototype.splitFormFieldName = function (obj) {\n // eslint-disable-next-line\n var field = null;\n if (obj) {\n switch (obj.formFieldAnnotationType) {\n case 'Textbox':\n field = \"Textbox\";\n break;\n case 'PasswordField':\n field = \"Password\";\n break;\n case 'Checkbox':\n field = \"Check Box\";\n break;\n case 'RadioButton':\n field = \"Radio Button\";\n break;\n case 'DropdownList':\n field = \"Dropdown\";\n break;\n case 'ListBox':\n field = \"List Box\";\n break;\n case 'SignatureField':\n field = \"Signature\";\n break;\n case 'InitialField':\n field = \"Initial\";\n break;\n }\n }\n return field;\n };\n Drawing.prototype.calculateCopyPosition = function (copy, pageDiv, events) {\n var zoomfactor = this.pdfViewer.viewerBase.getZoomFactor();\n var x1;\n var y1;\n var x2;\n var y2;\n for (var i = 0; i < copy.vertexPoints.length; i++) {\n if (pageDiv) {\n if (i === 0) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n x1 = copy.vertexPoints[parseInt(i.toString(), 10)].x;\n y1 = copy.vertexPoints[parseInt(i.toString(), 10)].y;\n copy.vertexPoints[parseInt(i.toString(), 10)].x = (events.clientX - pageCurrentRect.left) / zoomfactor;\n copy.vertexPoints[parseInt(i.toString(), 10)].y = (events.clientY - pageCurrentRect.top) / zoomfactor;\n x2 = copy.vertexPoints[parseInt(i.toString(), 10)].x;\n y2 = copy.vertexPoints[parseInt(i.toString(), 10)].y;\n }\n else {\n copy.vertexPoints[parseInt(i.toString(), 10)].x += x2 - x1;\n copy.vertexPoints[parseInt(i.toString(), 10)].y += y2 - y1;\n }\n }\n }\n };\n /**\n * @private\n * @param {number} index - Specified the annotaion index.\n * @returns {void}\n */\n Drawing.prototype.cut = function (index) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.removedAnnotationCollection = [];\n }\n if (((this.pdfViewer.formDesignerModule && !this.pdfViewer.formDesigner.isPropertyDialogOpen) || this.pdfViewer.selectedItems.annotations.length > 0) && (this.pdfViewer.designerMode || this.pdfViewer.selectedItems.annotations.length > 0) && (this.pdfViewer.selectedItems.formFields.length !== 0 || this.pdfViewer.selectedItems.annotations.length !== 0)) {\n this.pdfViewer.clipboardData.pasteIndex = 0;\n this.pdfViewer.clipboardData.clipObject = this.copyObjects();\n this.pdfViewer.renderDrawing(undefined, index);\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n }\n var isSearchboxDialogOpen;\n var searchBoxId = document.getElementById(this.pdfViewer.element.id + \"_search_box\");\n if (searchBoxId) {\n isSearchboxDialogOpen = searchBoxId.style.display !== \"none\";\n }\n if (this.pdfViewer.formDesigner && this.pdfViewer.formDesigner.isPropertyDialogOpen || isSearchboxDialogOpen) {\n this.pdfViewer.clipboardData.clipObject = {};\n }\n };\n /**\n * @private\n * @param {Object[]} nodeArray - Specified the node array.\n * @param {string} sortID - Specified the sort id.\n * @returns {Object[]} - Returns the node array.\n */\n Drawing.prototype.sortByZIndex = function (nodeArray, sortID) {\n var id = sortID ? sortID : 'zIndex';\n nodeArray = nodeArray.sort(function (a, b) {\n // eslint-disable-next-line\n return a[id] - b[id];\n });\n return nodeArray;\n };\n return Drawing;\n}());\nexport { Drawing };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/* eslint-disable */\n// eslint-disable-next-line max-len\nimport { Component, NotifyPropertyChanges, ChildProperty, L10n, Collection, Complex, isBlazor, Browser } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, Property, Event } from '@syncfusion/ej2-base';\nimport { PdfViewerBase, PdfiumRunner } from './index';\nimport { PdfRenderer } from './index';\n// eslint-disable-next-line max-len\nimport { FontStyle, AnnotationResizerLocation, CursorType, ContextMenuItem, DynamicStampItem, SignStampItem, StandardBusinessStampItem, AnnotationDataFormat, DisplayMode, FormFieldDataFormat } from './base/types';\nimport { FormFields } from './index';\nimport { PdfAnnotationBase, PdfFormFieldBase } from './drawing/pdf-annotation';\nimport { Drawing } from './drawing/drawing';\nimport { Selector } from './drawing/selector';\nimport { renderAdornerLayer } from './drawing/dom-util';\n/**\n * The `ToolbarSettings` module is used to provide the toolbar settings of PDF viewer.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the tool bar settings.\n * viewer.toolbarSettings = {\n * showTooltip: false,\n * toolbarItems: [\n * \"OpenOption\",\n * \"UndoRedoTool\",\n * \"PageNavigationTool\",\n * \"MagnificationTool\",\n * \"PanTool\",\n * \"SelectionTool\",\n * \"CommentTool\",\n * \"SubmitForm\",\n * \"AnnotationEditTool\",\n * \"FormDesignerEditTool\",\n * \"FreeTextAnnotationOption\",\n * \"InkAnnotationOption\",\n * \"ShapeAnnotationOption\",\n * \"StampAnnotation\",\n * \"SignatureOption\",\n * \"SearchOption\",\n * \"PrintOption\",\n * \"DownloadOption\"\n * ],\n * annotationToolbarItems: [\n * \"HighlightTool\",\n * \"UnderlineTool\",\n * \"StrikethroughTool\",\n * \"ColorEditTool\",\n * \"OpacityEditTool\",\n * \"AnnotationDeleteTool\",\n * \"StampAnnotationTool\",\n * \"HandWrittenSignatureTool\",\n * \"InkAnnotationTool\",\n * \"ShapeTool\",\n * \"CalibrateTool\",\n * \"StrokeColorEditTool\",\n * \"ThicknessEditTool\",\n * \"FreeTextAnnotationTool\",\n * \"FontFamilyAnnotationTool\",\n * \"FontSizeAnnotationTool\",\n * \"FontStylesAnnotationTool\",\n * \"FontAlignAnnotationTool\",\n * \"FontColorAnnotationTool\",\n * \"CommentPanelTool\"\n * ],\n * formDesignerToolbarItems: [\n * \"TextboxTool\",\n * \"PasswordTool\",\n * \"CheckBoxTool\",\n * \"RadioButtonTool\",\n * \"DropdownTool\",\n * \"ListboxTool\",\n * \"DrawSignatureTool\",\n * \"DeleteTool\"\n * ]\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"showTooltip\", void 0);\n __decorate([\n Property()\n ], ToolbarSettings.prototype, \"toolbarItems\", void 0);\n __decorate([\n Property()\n ], ToolbarSettings.prototype, \"annotationToolbarItems\", void 0);\n __decorate([\n Property()\n ], ToolbarSettings.prototype, \"formDesignerToolbarItems\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n/**\n * Defines customized toolbar items.\n */\nvar CustomToolbarItem = /** @class */ (function (_super) {\n __extends(CustomToolbarItem, _super);\n function CustomToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CustomToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], CustomToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('')\n ], CustomToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], CustomToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CustomToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property('left')\n ], CustomToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property('')\n ], CustomToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], CustomToolbarItem.prototype, \"type\", void 0);\n return CustomToolbarItem;\n}(ChildProperty));\nexport { CustomToolbarItem };\n/**\n * The `AjaxRequestSettings` module is used to set the ajax Request Headers of PDF viewer.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // HTTP header \"X-Custom-Header\": \"Custom header value\" // Custom HTTP header\n * viewer.ajaxRequestSettings = {\n * ajaxHeaders: [\n * {\n * headerName : \"Authorization\",\n * headerValue : \"Bearer\"\n * }\n * ],\n * withCredentials: false\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar AjaxRequestSettings = /** @class */ (function (_super) {\n __extends(AjaxRequestSettings, _super);\n function AjaxRequestSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], AjaxRequestSettings.prototype, \"ajaxHeaders\", void 0);\n __decorate([\n Property(false)\n ], AjaxRequestSettings.prototype, \"withCredentials\", void 0);\n return AjaxRequestSettings;\n}(ChildProperty));\nexport { AjaxRequestSettings };\n/**\n * The `CustomStamp` module is used to provide the custom stamp added in stamp menu of the PDF Viewer toolbar.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Add your custom stamp image source as base64 image.\n * viewer.customStamp = [\n * {\n * customStampName: 'Sample',\n * customStampImageSource: \"data:image/png;base64, Syncfusion pdf viewer\"\n * }\n * ];\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar CustomStamp = /** @class */ (function (_super) {\n __extends(CustomStamp, _super);\n function CustomStamp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CustomStamp.prototype, \"customStampName\", void 0);\n __decorate([\n Property('')\n ], CustomStamp.prototype, \"customStampImageSource\", void 0);\n return CustomStamp;\n}(ChildProperty));\nexport { CustomStamp };\n/**\n * The `AnnotationToolbarSettings` module is used to provide the annotation toolbar settings of the PDF viewer.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the annotation tool bar settings.\n * viewer.toolbarSettings = {\n * showTooltip: false,\n * annotationToolbarItems: [\n * \"HighlightTool\",\n * \"UnderlineTool\",\n * \"StrikethroughTool\",\n * \"ColorEditTool\",\n * \"OpacityEditTool\",\n * \"AnnotationDeleteTool\",\n * \"StampAnnotationTool\",\n * \"HandWrittenSignatureTool\",\n * \"InkAnnotationTool\",\n * \"ShapeTool\",\n * \"CalibrateTool\",\n * \"StrokeColorEditTool\",\n * \"ThicknessEditTool\",\n * \"FreeTextAnnotationTool\",\n * \"FontFamilyAnnotationTool\",\n * \"FontSizeAnnotationTool\",\n * \"FontStylesAnnotationTool\",\n * \"FontAlignAnnotationTool\",\n * \"FontColorAnnotationTool\",\n * \"CommentPanelTool\"\n * ],\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar AnnotationToolbarSettings = /** @class */ (function (_super) {\n __extends(AnnotationToolbarSettings, _super);\n function AnnotationToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], AnnotationToolbarSettings.prototype, \"showTooltip\", void 0);\n __decorate([\n Property()\n ], AnnotationToolbarSettings.prototype, \"annotationToolbarItem\", void 0);\n return AnnotationToolbarSettings;\n}(ChildProperty));\nexport { AnnotationToolbarSettings };\n/**\n * The `FormDesignerToolbarSettings` module is used to provide the Form designer toolbar settings of the PDF viewer.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the form field tool bar settings.\n * viewer.toolbarSettings = {\n * showTooltip: false,\n * formDesignerToolbarItems: [\n * \"TextboxTool\",\n * \"PasswordTool\",\n * \"CheckBoxTool\",\n * \"RadioButtonTool\",\n * \"DropdownTool\",\n * \"ListboxTool\",\n * \"DrawSignatureTool\",\n * \"DeleteTool\"\n * ]\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar FormDesignerToolbarSettings = /** @class */ (function (_super) {\n __extends(FormDesignerToolbarSettings, _super);\n function FormDesignerToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], FormDesignerToolbarSettings.prototype, \"showTooltip\", void 0);\n __decorate([\n Property()\n ], FormDesignerToolbarSettings.prototype, \"formDesignerToolbarItem\", void 0);\n return FormDesignerToolbarSettings;\n}(ChildProperty));\nexport { FormDesignerToolbarSettings };\n/**\n * The `SignatureFieldSettings` module is used to set the properties of signature field in PDF Viewer\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the signature field settings.\n * viewer.signatureFieldSettings = {\n * name: \"\",\n * isReadOnly: true,\n * visibility: \"visible\",\n * isRequired: true,\n * isPrint: false,\n * tooltip: \"\",\n * thickness: 1,\n * signatureIndicatorSettings: {\n * opacity: 1,\n * backgroundColor: \"orange\",\n * width: 19,\n * height: 10,\n * fontSize: 10,\n * text: null,\n * color: \"black\"\n * },\n * signatureDialogSettings: {\n * displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload,\n * hideSaveSignature: false\n * }\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar SignatureFieldSettings = /** @class */ (function (_super) {\n __extends(SignatureFieldSettings, _super);\n function SignatureFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], SignatureFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], SignatureFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property(false)\n ], SignatureFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property('visible')\n ], SignatureFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(false)\n ], SignatureFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], SignatureFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], SignatureFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property(1)\n ], SignatureFieldSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property(0)\n ], SignatureFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property()\n ], SignatureFieldSettings.prototype, \"signatureDialogSettings\", void 0);\n __decorate([\n Property()\n ], SignatureFieldSettings.prototype, \"signatureIndicatorSettings\", void 0);\n return SignatureFieldSettings;\n}(ChildProperty));\nexport { SignatureFieldSettings };\n/**\n * The `InitialFieldSettings` module is used to set the properties of initial field in PDF Viewer\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Changes the initial field settings.\n * viewer.initialFieldSettings = {\n * name: \"\",\n * isReadOnly: true,\n * visibility: \"visible\",\n * isRequired: true,\n * isPrint: true,\n * tooltip: \"\",\n * thickness: 1,\n * initialIndicatorSettings: {\n * opacity: 1,\n * backgroundColor: \"orange\",\n * width: 19,\n * height: 10,\n * fontSize: 10,\n * text: null,\n * color: \"black\"\n * },\n * initialDialogSettings: {\n * displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload,\n * hideSaveSignature: false\n * }\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar InitialFieldSettings = /** @class */ (function (_super) {\n __extends(InitialFieldSettings, _super);\n function InitialFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], InitialFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], InitialFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property(false)\n ], InitialFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property('visible')\n ], InitialFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(false)\n ], InitialFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], InitialFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], InitialFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property(1)\n ], InitialFieldSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property(0)\n ], InitialFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(false)\n ], InitialFieldSettings.prototype, \"isInitialField\", void 0);\n __decorate([\n Property()\n ], InitialFieldSettings.prototype, \"initialDialogSettings\", void 0);\n __decorate([\n Property()\n ], InitialFieldSettings.prototype, \"initialIndicatorSettings\", void 0);\n return InitialFieldSettings;\n}(ChildProperty));\nexport { InitialFieldSettings };\n/**\n * The `SignatureIndicatorSettings` module is used to provide the properties of signature Indicator in the signature field.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the signature indicator settings.\n * viewer.signatureFieldSettings = {\n * signatureIndicatorSettings: {\n * opacity: 1,\n * backgroundColor: 'orange',\n * width: 19,\n * height: 10,\n * fontSize: 10,\n * text: null,\n * color: 'black'\n * }\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar SignatureIndicatorSettings = /** @class */ (function (_super) {\n __extends(SignatureIndicatorSettings, _super);\n function SignatureIndicatorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], SignatureIndicatorSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('orange')\n ], SignatureIndicatorSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property(19)\n ], SignatureIndicatorSettings.prototype, \"width\", void 0);\n __decorate([\n Property(10)\n ], SignatureIndicatorSettings.prototype, \"height\", void 0);\n __decorate([\n Property(10)\n ], SignatureIndicatorSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property(null)\n ], SignatureIndicatorSettings.prototype, \"text\", void 0);\n __decorate([\n Property('black')\n ], SignatureIndicatorSettings.prototype, \"color\", void 0);\n return SignatureIndicatorSettings;\n}(ChildProperty));\nexport { SignatureIndicatorSettings };\n/**\n * The `SignatureDialogSettings` module is used to customize the signature dialog box.\n *\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the signature dialog settings.\n * viewer.signatureDialogSettings = {\n * displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload,\n * hideSaveSignature: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar SignatureDialogSettings = /** @class */ (function (_super) {\n __extends(SignatureDialogSettings, _super);\n function SignatureDialogSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload)\n ], SignatureDialogSettings.prototype, \"displayMode\", void 0);\n __decorate([\n Property(false)\n ], SignatureDialogSettings.prototype, \"hideSaveSignature\", void 0);\n return SignatureDialogSettings;\n}(ChildProperty));\nexport { SignatureDialogSettings };\n/**\n * The `ServerActionSettings` module is used to provide the server action methods of PDF viewer.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the server action settings.\n * viewer.serverActionSettings = {\n * load: \"Load\",\n * renderPages: \"RenderPdfPages\",\n * unload: \"Unload\",\n * download: \"Download\",\n * renderThumbnail: \"RenderThumbnailImages\",\n * print: \"PrintImages\",\n * renderComments: \"RenderAnnotationComments\",\n * importAnnotations: \"ImportAnnotations\",\n * exportAnnotations: \"ExportAnnotations\",\n * importFormFields: \"ImportFormFields\",\n * exportFormFields: \"ExportFormFields\",\n * renderTexts: \"RenderPdfTexts\"\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar ServerActionSettings = /** @class */ (function (_super) {\n __extends(ServerActionSettings, _super);\n function ServerActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Load')\n ], ServerActionSettings.prototype, \"load\", void 0);\n __decorate([\n Property('Unload')\n ], ServerActionSettings.prototype, \"unload\", void 0);\n __decorate([\n Property('RenderPdfPages')\n ], ServerActionSettings.prototype, \"renderPages\", void 0);\n __decorate([\n Property('RenderPdfPages')\n ], ServerActionSettings.prototype, \"print\", void 0);\n __decorate([\n Property('Download')\n ], ServerActionSettings.prototype, \"download\", void 0);\n __decorate([\n Property('RenderThumbnailImages')\n ], ServerActionSettings.prototype, \"renderThumbnail\", void 0);\n __decorate([\n Property('RenderAnnotationComments')\n ], ServerActionSettings.prototype, \"renderComments\", void 0);\n __decorate([\n Property('ImportAnnotations')\n ], ServerActionSettings.prototype, \"importAnnotations\", void 0);\n __decorate([\n Property('ExportAnnotations')\n ], ServerActionSettings.prototype, \"exportAnnotations\", void 0);\n __decorate([\n Property('ImportFormFields')\n ], ServerActionSettings.prototype, \"importFormFields\", void 0);\n __decorate([\n Property('ExportFormFields')\n ], ServerActionSettings.prototype, \"exportFormFields\", void 0);\n __decorate([\n Property('RenderPdfTexts')\n ], ServerActionSettings.prototype, \"renderTexts\", void 0);\n return ServerActionSettings;\n}(ChildProperty));\nexport { ServerActionSettings };\n/**\n * The `StrikethroughSettings` module is used to provide the properties to Strikethrough annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the strike through annotation settings.\n * viewer.strikethroughSettings = {\n * opacity: 1,\n * color: '#ff0000',\n * author: 'Guest',\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges\n * },\n * isLock: false,\n * enableMultiPageAnnotation: false,\n * enableTextMarkupResizer: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar StrikethroughSettings = /** @class */ (function (_super) {\n __extends(StrikethroughSettings, _super);\n function StrikethroughSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], StrikethroughSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], StrikethroughSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ff0000')\n ], StrikethroughSettings.prototype, \"color\", void 0);\n __decorate([\n Property('Guest')\n ], StrikethroughSettings.prototype, \"author\", void 0);\n __decorate([\n Property('')\n ], StrikethroughSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(null)\n ], StrikethroughSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(false)\n ], StrikethroughSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(false)\n ], StrikethroughSettings.prototype, \"enableMultiPageAnnotation\", void 0);\n __decorate([\n Property(false)\n ], StrikethroughSettings.prototype, \"enableTextMarkupResizer\", void 0);\n __decorate([\n Property(['None'])\n ], StrikethroughSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], StrikethroughSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], StrikethroughSettings.prototype, \"subject\", void 0);\n return StrikethroughSettings;\n}(ChildProperty));\nexport { StrikethroughSettings };\n/**\n * The `UnderlineSettings` module is used to provide the properties to Underline annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the underline annotation settings.\n * viewer.underlineSettings = {\n * opacity: 1,\n * color: '#9c2592',\n * author: 'Guest',\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges\n * },\n * isLock: false,\n * enableMultiPageAnnotation: false,\n * enableTextMarkupResizer: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar UnderlineSettings = /** @class */ (function (_super) {\n __extends(UnderlineSettings, _super);\n function UnderlineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], UnderlineSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], UnderlineSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#00ff00')\n ], UnderlineSettings.prototype, \"color\", void 0);\n __decorate([\n Property('Guest')\n ], UnderlineSettings.prototype, \"author\", void 0);\n __decorate([\n Property('')\n ], UnderlineSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(null)\n ], UnderlineSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(false)\n ], UnderlineSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(false)\n ], UnderlineSettings.prototype, \"enableMultiPageAnnotation\", void 0);\n __decorate([\n Property(false)\n ], UnderlineSettings.prototype, \"enableTextMarkupResizer\", void 0);\n __decorate([\n Property(['None'])\n ], UnderlineSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], UnderlineSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], UnderlineSettings.prototype, \"subject\", void 0);\n return UnderlineSettings;\n}(ChildProperty));\nexport { UnderlineSettings };\n/**\n * The `HighlightSettings` module is used to provide the properties to Highlight annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the highlight annotation settings.\n * viewer.highlightSettings = {\n * opacity: 1,\n * color: '#ff0000',\n * author: 'Guest',\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges\n * },\n * isLock: false,\n * enableMultiPageAnnotation: false,\n * enableTextMarkupResizer: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], HighlightSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffff00')\n ], HighlightSettings.prototype, \"color\", void 0);\n __decorate([\n Property('Guest')\n ], HighlightSettings.prototype, \"author\", void 0);\n __decorate([\n Property('')\n ], HighlightSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(null)\n ], HighlightSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enableMultiPageAnnotation\", void 0);\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enableTextMarkupResizer\", void 0);\n __decorate([\n Property(['None'])\n ], HighlightSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], HighlightSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], HighlightSettings.prototype, \"subject\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * The `LineSettings` module is used to provide the properties to line annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the line annotation settings.\n * viewer.lineSettings = {\n * opacity: 1,\n * color: '#9c2592',\n * author: 'Guest',\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges\n * },\n * isLock: false,\n * enableMultiPageAnnotation: false,\n * enableTextMarkupResizer: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar LineSettings = /** @class */ (function (_super) {\n __extends(LineSettings, _super);\n function LineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], LineSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], LineSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], LineSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], LineSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], LineSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], LineSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], LineSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('None')\n ], LineSettings.prototype, \"lineHeadStartStyle\", void 0);\n __decorate([\n Property('None')\n ], LineSettings.prototype, \"lineHeadEndStyle\", void 0);\n __decorate([\n Property(0)\n ], LineSettings.prototype, \"borderDashArray\", void 0);\n __decorate([\n Property('')\n ], LineSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], LineSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], LineSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], LineSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], LineSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], LineSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], LineSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], LineSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], LineSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], LineSettings.prototype, \"subject\", void 0);\n return LineSettings;\n}(ChildProperty));\nexport { LineSettings };\n/**\n * The `ArrowSettings` module is used to provide the properties to arrow annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the arrow annotation settings.\n * viewer.arrowSettings = {\n * opacity: 1,\n * fillColor: '#9c2592',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * borderDashArray: 0,\n * lineHeadStartStyle: 'Closed',\n * lineHeadEndStyle: 'Closed',\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar ArrowSettings = /** @class */ (function (_super) {\n __extends(ArrowSettings, _super);\n function ArrowSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], ArrowSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], ArrowSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], ArrowSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], ArrowSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], ArrowSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], ArrowSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], ArrowSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('None')\n ], ArrowSettings.prototype, \"lineHeadStartStyle\", void 0);\n __decorate([\n Property('None')\n ], ArrowSettings.prototype, \"lineHeadEndStyle\", void 0);\n __decorate([\n Property(0)\n ], ArrowSettings.prototype, \"borderDashArray\", void 0);\n __decorate([\n Property('')\n ], ArrowSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], ArrowSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], ArrowSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], ArrowSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], ArrowSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], ArrowSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], ArrowSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], ArrowSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], ArrowSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], ArrowSettings.prototype, \"subject\", void 0);\n return ArrowSettings;\n}(ChildProperty));\nexport { ArrowSettings };\n/**\n * The `RectangleSettings` module is used to provide the properties to rectangle annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the rectangle annotation settings.\n * viewer.rectangleSettings = {\n * opacity: 1,\n * fillColor: '#9c2592',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar RectangleSettings = /** @class */ (function (_super) {\n __extends(RectangleSettings, _super);\n function RectangleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], RectangleSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], RectangleSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(100)\n ], RectangleSettings.prototype, \"width\", void 0);\n __decorate([\n Property(50)\n ], RectangleSettings.prototype, \"height\", void 0);\n __decorate([\n Property(1)\n ], RectangleSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], RectangleSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], RectangleSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], RectangleSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], RectangleSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('')\n ], RectangleSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], RectangleSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], RectangleSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], RectangleSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], RectangleSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], RectangleSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], RectangleSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], RectangleSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], RectangleSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], RectangleSettings.prototype, \"subject\", void 0);\n return RectangleSettings;\n}(ChildProperty));\nexport { RectangleSettings };\n/**\n * The `CircleSettings` module is used to provide the properties to circle annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the circle annotation settings.\n * viewer.circleSettings = {\n * opacity: 1,\n * fillColor: '#9c2592',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar CircleSettings = /** @class */ (function (_super) {\n __extends(CircleSettings, _super);\n function CircleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], CircleSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], CircleSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(100)\n ], CircleSettings.prototype, \"width\", void 0);\n __decorate([\n Property(100)\n ], CircleSettings.prototype, \"height\", void 0);\n __decorate([\n Property(1)\n ], CircleSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], CircleSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], CircleSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], CircleSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], CircleSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('')\n ], CircleSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], CircleSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], CircleSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], CircleSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], CircleSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], CircleSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], CircleSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], CircleSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], CircleSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], CircleSettings.prototype, \"subject\", void 0);\n return CircleSettings;\n}(ChildProperty));\nexport { CircleSettings };\n/**\n * The `ShapeLabelSettings` module is used to provide the properties to rectangle annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the shape label settings.\n * viewer.shapeLabelSettings = {\n * opacity: 1,\n * fillColor: '#9c2592',\n * borderColor: '#ff0000',\n * fontColor: '#000',\n * fontSize: 16,\n * labelHeight: 24.6,\n * labelMaxWidth: 151,\n * labelContent: 'Label'\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar ShapeLabelSettings = /** @class */ (function (_super) {\n __extends(ShapeLabelSettings, _super);\n function ShapeLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], ShapeLabelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], ShapeLabelSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#000')\n ], ShapeLabelSettings.prototype, \"fontColor\", void 0);\n __decorate([\n Property(16)\n ], ShapeLabelSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property('Helvetica')\n ], ShapeLabelSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Label')\n ], ShapeLabelSettings.prototype, \"labelContent\", void 0);\n __decorate([\n Property('')\n ], ShapeLabelSettings.prototype, \"notes\", void 0);\n return ShapeLabelSettings;\n}(ChildProperty));\nexport { ShapeLabelSettings };\n/**\n * The `PolygonSettings` module is used to provide the properties to polygon annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the polygon annotation settings.\n * viewer.polygonSettings = {\n * opacity: 1,\n * fillColor: '#4070FF',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar PolygonSettings = /** @class */ (function (_super) {\n __extends(PolygonSettings, _super);\n function PolygonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], PolygonSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], PolygonSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], PolygonSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PolygonSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], PolygonSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], PolygonSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], PolygonSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('')\n ], PolygonSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], PolygonSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], PolygonSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], PolygonSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], PolygonSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], PolygonSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], PolygonSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], PolygonSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], PolygonSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], PolygonSettings.prototype, \"subject\", void 0);\n return PolygonSettings;\n}(ChildProperty));\nexport { PolygonSettings };\n/**\n * The `stampSettings` module is used to provide the properties to stamp annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the stamp annotation settings.\n * viewer.stampSettings = {\n * opacity: 1,\n * author: 'Guest',\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'red',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 5,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * dynamicStamps: [\n * DynamicStampItem.Revised,\n * DynamicStampItem.Reviewed,\n * DynamicStampItem.Received,\n * DynamicStampItem.Confidential,\n * DynamicStampItem.Approved,\n * DynamicStampItem.NotApproved\n * ],\n * signStamps: [\n * SignStampItem.Witness,\n * SignStampItem.InitialHere,\n * SignStampItem.SignHere,\n * SignStampItem.Accepted,\n * SignStampItem.Rejected\n * ],\n * standardBusinessStamps: [\n * StandardBusinessStampItem.Approved,\n * StandardBusinessStampItem.NotApproved,\n * StandardBusinessStampItem.Draft,\n * StandardBusinessStampItem.Final,\n * StandardBusinessStampItem.Completed,\n * StandardBusinessStampItem.Confidential,\n * StandardBusinessStampItem.ForPublicRelease,\n * StandardBusinessStampItem.NotForPublicRelease,\n * StandardBusinessStampItem.ForComment,\n * StandardBusinessStampItem.Void,\n * StandardBusinessStampItem.PreliminaryResults,\n * StandardBusinessStampItem.InformationOnly\n * ],\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar StampSettings = /** @class */ (function (_super) {\n __extends(StampSettings, _super);\n function StampSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], StampSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], StampSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(150)\n ], StampSettings.prototype, \"width\", void 0);\n __decorate([\n Property(50)\n ], StampSettings.prototype, \"height\", void 0);\n __decorate([\n Property(1)\n ], StampSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('Guest')\n ], StampSettings.prototype, \"author\", void 0);\n __decorate([\n Property('')\n ], StampSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], StampSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], StampSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], StampSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], StampSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], StampSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], StampSettings.prototype, \"customData\", void 0);\n __decorate([\n Property([])\n ], StampSettings.prototype, \"dynamicStamps\", void 0);\n __decorate([\n Property([])\n ], StampSettings.prototype, \"signStamps\", void 0);\n __decorate([\n Property([])\n ], StampSettings.prototype, \"standardBusinessStamps\", void 0);\n __decorate([\n Property(['None'])\n ], StampSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], StampSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], StampSettings.prototype, \"subject\", void 0);\n return StampSettings;\n}(ChildProperty));\nexport { StampSettings };\n/**\n * The `CustomStampSettings` module is used to provide the properties to customstamp annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n *\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the custom stamp annotation settings.\n * viewer.customStampSettings = {\n * opacity: 1,\n * author: 'Guest',\n * width: 0,\n * height: 0,\n * left: 0,\n * top: 0,\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * enableCustomStamp: true,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar CustomStampSettings = /** @class */ (function (_super) {\n __extends(CustomStampSettings, _super);\n function CustomStampSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], CustomStampSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], CustomStampSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], CustomStampSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('Guest')\n ], CustomStampSettings.prototype, \"author\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"height\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"top\", void 0);\n __decorate([\n Property(false)\n ], CustomStampSettings.prototype, \"isAddToMenu\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], CustomStampSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], CustomStampSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property('')\n ], CustomStampSettings.prototype, \"customStamps\", void 0);\n __decorate([\n Property(true)\n ], CustomStampSettings.prototype, \"enableCustomStamp\", void 0);\n __decorate([\n Property(['None'])\n ], CustomStampSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], CustomStampSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], CustomStampSettings.prototype, \"subject\", void 0);\n return CustomStampSettings;\n}(ChildProperty));\nexport { CustomStampSettings };\n/**\n * The `DistanceSettings` module is used to provide the properties to distance calibrate annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n *\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the distance annotation settings.\n * viewer.distanceSettings = {\n * opacity: 1,\n * fillColor: '#4070FF',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * borderDashArray: 0,\n * lineHeadStartStyle: 'Closed',\n * lineHeadEndStyle: 'Closed',\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * leaderLength: 40,\n * resizeCursorType: CursorType.move,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar DistanceSettings = /** @class */ (function (_super) {\n __extends(DistanceSettings, _super);\n function DistanceSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], DistanceSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], DistanceSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], DistanceSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ff0000')\n ], DistanceSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], DistanceSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], DistanceSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], DistanceSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('None')\n ], DistanceSettings.prototype, \"lineHeadStartStyle\", void 0);\n __decorate([\n Property('None')\n ], DistanceSettings.prototype, \"lineHeadEndStyle\", void 0);\n __decorate([\n Property(0)\n ], DistanceSettings.prototype, \"borderDashArray\", void 0);\n __decorate([\n Property('')\n ], DistanceSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], DistanceSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], DistanceSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], DistanceSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], DistanceSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], DistanceSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], DistanceSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(40)\n ], DistanceSettings.prototype, \"leaderLength\", void 0);\n __decorate([\n Property(CursorType.move)\n ], DistanceSettings.prototype, \"resizeCursorType\", void 0);\n __decorate([\n Property(['None'])\n ], DistanceSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], DistanceSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], DistanceSettings.prototype, \"subject\", void 0);\n return DistanceSettings;\n}(ChildProperty));\nexport { DistanceSettings };\n/**\n * The `PerimeterSettings` module is used to provide the properties to perimeter calibrate annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the perimeter annotation settings.\n * viewer.perimeterSettings = {\n * opacity: 1,\n * fillColor: '#4070FF',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * borderDashArray: 0,\n * lineHeadStartStyle: 'Open',\n * lineHeadEndStyle: 'Open',\n * minHeight: 0, minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#4070FF',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar PerimeterSettings = /** @class */ (function (_super) {\n __extends(PerimeterSettings, _super);\n function PerimeterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], PerimeterSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], PerimeterSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], PerimeterSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PerimeterSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], PerimeterSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], PerimeterSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], PerimeterSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('None')\n ], PerimeterSettings.prototype, \"lineHeadStartStyle\", void 0);\n __decorate([\n Property('None')\n ], PerimeterSettings.prototype, \"lineHeadEndStyle\", void 0);\n __decorate([\n Property(0)\n ], PerimeterSettings.prototype, \"borderDashArray\", void 0);\n __decorate([\n Property(0)\n ], PerimeterSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], PerimeterSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], PerimeterSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], PerimeterSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], PerimeterSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property('')\n ], PerimeterSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(['None'])\n ], PerimeterSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], PerimeterSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], PerimeterSettings.prototype, \"subject\", void 0);\n return PerimeterSettings;\n}(ChildProperty));\nexport { PerimeterSettings };\n/**\n * The `AreaSettings` module is used to provide the properties to area calibrate annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the area annotation settings.\n * viewer.areaSettings = {\n * opacity: 1,\n * fillColor: '#4070FF',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#4070FF',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar AreaSettings = /** @class */ (function (_super) {\n __extends(AreaSettings, _super);\n function AreaSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], AreaSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], AreaSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], AreaSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], AreaSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], AreaSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], AreaSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], AreaSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property(0)\n ], AreaSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], AreaSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], AreaSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], AreaSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], AreaSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property('')\n ], AreaSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(['None'])\n ], AreaSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], AreaSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], AreaSettings.prototype, \"subject\", void 0);\n return AreaSettings;\n}(ChildProperty));\nexport { AreaSettings };\n/**\n * The `RadiusSettings` module is used to provide the properties to radius calibrate annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the radius annotation settings.\n * viewer.radiusSettings = {\n * opacity: 1,\n * fillColor: '#4070FF',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'red',\n * resizerFillColor: '#4070FF',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar RadiusSettings = /** @class */ (function (_super) {\n __extends(RadiusSettings, _super);\n function RadiusSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], RadiusSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], RadiusSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(100)\n ], RadiusSettings.prototype, \"width\", void 0);\n __decorate([\n Property(90)\n ], RadiusSettings.prototype, \"height\", void 0);\n __decorate([\n Property(1)\n ], RadiusSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], RadiusSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], RadiusSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], RadiusSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], RadiusSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('')\n ], RadiusSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], RadiusSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], RadiusSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], RadiusSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], RadiusSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], RadiusSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], RadiusSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], RadiusSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], RadiusSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], RadiusSettings.prototype, \"subject\", void 0);\n return RadiusSettings;\n}(ChildProperty));\nexport { RadiusSettings };\n/**\n * The `VolumeSettings` module is used to provide the properties to volume calibrate annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the volume annotation settings.\n * viewer.volumeSettings = {\n * opacity: 1,\n * fillColor: '#4070FF',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#4070FF',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar VolumeSettings = /** @class */ (function (_super) {\n __extends(VolumeSettings, _super);\n function VolumeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], VolumeSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], VolumeSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], VolumeSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], VolumeSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ff0000')\n ], VolumeSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('Guest')\n ], VolumeSettings.prototype, \"author\", void 0);\n __decorate([\n Property('1')\n ], VolumeSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property(0)\n ], VolumeSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], VolumeSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], VolumeSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], VolumeSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], VolumeSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property('')\n ], VolumeSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(['None'])\n ], VolumeSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], VolumeSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], VolumeSettings.prototype, \"subject\", void 0);\n return VolumeSettings;\n}(ChildProperty));\nexport { VolumeSettings };\n/**\n * The `Ink` module is used to provide the properties to Ink annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the ink annotation settings.\n * viewer.inkAnnotationSettings = {\n * author: 'Guest',\n * opacity: 1,\n * strokeColor: '#ff0000',\n * thickness: 1,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar InkAnnotationSettings = /** @class */ (function (_super) {\n __extends(InkAnnotationSettings, _super);\n function InkAnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], InkAnnotationSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], InkAnnotationSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(0)\n ], InkAnnotationSettings.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], InkAnnotationSettings.prototype, \"height\", void 0);\n __decorate([\n Property(0)\n ], InkAnnotationSettings.prototype, \"path\", void 0);\n __decorate([\n Property(1)\n ], InkAnnotationSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ff0000')\n ], InkAnnotationSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property(1)\n ], InkAnnotationSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('')\n ], InkAnnotationSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(false)\n ], InkAnnotationSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property('Guest')\n ], InkAnnotationSettings.prototype, \"author\", void 0);\n __decorate([\n Property(['None'])\n ], InkAnnotationSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(null)\n ], InkAnnotationSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(true)\n ], InkAnnotationSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], InkAnnotationSettings.prototype, \"subject\", void 0);\n return InkAnnotationSettings;\n}(ChildProperty));\nexport { InkAnnotationSettings };\n/**\n * The `stickyNotesSettings` module is used to provide the properties to sticky notes annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the sticky notes annotation settings.\n * viewer.stickyNotesSettings = {\n * author: 'Guest',\n * opacity: 1,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'red',\n * resizerFillColor: '#4070FF',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar StickyNotesSettings = /** @class */ (function (_super) {\n __extends(StickyNotesSettings, _super);\n function StickyNotesSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], StickyNotesSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], StickyNotesSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property('Guest')\n ], StickyNotesSettings.prototype, \"author\", void 0);\n __decorate([\n Property(1)\n ], StickyNotesSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('')\n ], StickyNotesSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(null)\n ], StickyNotesSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(false)\n ], StickyNotesSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(['None'])\n ], StickyNotesSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], StickyNotesSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], StickyNotesSettings.prototype, \"subject\", void 0);\n return StickyNotesSettings;\n}(ChildProperty));\nexport { StickyNotesSettings };\n/**\n * The `MeasurementSettings` module is used to provide the settings to measurement annotations.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the measurement annotation settings.\n * viewer.measurementSettings = {\n * conversionUnit: 'cm',\n * displayUnit: 'cm',\n * scaleRatio: 1,\n * depth: 96\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar MeasurementSettings = /** @class */ (function (_super) {\n __extends(MeasurementSettings, _super);\n function MeasurementSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MeasurementSettings.prototype, \"scaleRatio\", void 0);\n __decorate([\n Property('in')\n ], MeasurementSettings.prototype, \"conversionUnit\", void 0);\n __decorate([\n Property('in')\n ], MeasurementSettings.prototype, \"displayUnit\", void 0);\n __decorate([\n Property(96)\n ], MeasurementSettings.prototype, \"depth\", void 0);\n return MeasurementSettings;\n}(ChildProperty));\nexport { MeasurementSettings };\n/**\n * The `FreeTextSettings` module is used to provide the properties to free text annotation.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the free text annotation settings.\n * viewer.freeTextSettings = {\n * opacity: 1,\n * fillColor: '#4070FF',\n * borderColor: '#4070FF',\n * author: 'Guest',\n * borderWidth: 1,\n * width: 151,\n * fontSize: 16,\n * height: 24.6,\n * fontColor: '#000',\n * fontFamily: 'Courier',\n * defaultText: 'Type Here',\n * textAlignment: 'Right',\n * fontStyle: FontStyle.Italic,\n * allowTextOnly: false,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true,\n * isReadonly: false,\n * enableAutoFit: false\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar FreeTextSettings = /** @class */ (function (_super) {\n __extends(FreeTextSettings, _super);\n function FreeTextSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0 })\n ], FreeTextSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], FreeTextSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(1)\n ], FreeTextSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#ffffff00')\n ], FreeTextSettings.prototype, \"borderColor\", void 0);\n __decorate([\n Property(1)\n ], FreeTextSettings.prototype, \"borderWidth\", void 0);\n __decorate([\n Property('solid')\n ], FreeTextSettings.prototype, \"borderStyle\", void 0);\n __decorate([\n Property('Guest')\n ], FreeTextSettings.prototype, \"author\", void 0);\n __decorate([\n Property('#ffffff00')\n ], FreeTextSettings.prototype, \"fillColor\", void 0);\n __decorate([\n Property(16)\n ], FreeTextSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property(151)\n ], FreeTextSettings.prototype, \"width\", void 0);\n __decorate([\n Property(24.6)\n ], FreeTextSettings.prototype, \"height\", void 0);\n __decorate([\n Property('#000')\n ], FreeTextSettings.prototype, \"fontColor\", void 0);\n __decorate([\n Property('Helvetica')\n ], FreeTextSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('TypeHere')\n ], FreeTextSettings.prototype, \"defaultText\", void 0);\n __decorate([\n Property('None')\n ], FreeTextSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('Left')\n ], FreeTextSettings.prototype, \"textAlignment\", void 0);\n __decorate([\n Property(false)\n ], FreeTextSettings.prototype, \"allowEditTextOnly\", void 0);\n __decorate([\n Property('')\n ], FreeTextSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property(0)\n ], FreeTextSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], FreeTextSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], FreeTextSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], FreeTextSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], FreeTextSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(null)\n ], FreeTextSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], FreeTextSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], FreeTextSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property(false)\n ], FreeTextSettings.prototype, \"isReadonly\", void 0);\n __decorate([\n Property(false)\n ], FreeTextSettings.prototype, \"enableAutoFit\", void 0);\n __decorate([\n Property('')\n ], FreeTextSettings.prototype, \"subject\", void 0);\n return FreeTextSettings;\n}(ChildProperty));\nexport { FreeTextSettings };\n/**\n * The `AnnotationSelectorSettings` module is used to provide the properties to annotation selectors.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the annotation selector settings.\n * viewer.annotationSelectorSettings = {\n * selectionBorderColor: '',\n * resizerBorderColor: 'Circle',\n * resizerFillColor: '#4070FF',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar AnnotationSelectorSettings = /** @class */ (function (_super) {\n __extends(AnnotationSelectorSettings, _super);\n function AnnotationSelectorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], AnnotationSelectorSettings.prototype, \"selectionBorderColor\", void 0);\n __decorate([\n Property('black')\n ], AnnotationSelectorSettings.prototype, \"resizerBorderColor\", void 0);\n __decorate([\n Property('#FF4081')\n ], AnnotationSelectorSettings.prototype, \"resizerFillColor\", void 0);\n __decorate([\n Property(8)\n ], AnnotationSelectorSettings.prototype, \"resizerSize\", void 0);\n __decorate([\n Property(1)\n ], AnnotationSelectorSettings.prototype, \"selectionBorderThickness\", void 0);\n __decorate([\n Property('Square')\n ], AnnotationSelectorSettings.prototype, \"resizerShape\", void 0);\n __decorate([\n Property('')\n ], AnnotationSelectorSettings.prototype, \"selectorLineDashArray\", void 0);\n __decorate([\n Property(AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges)\n ], AnnotationSelectorSettings.prototype, \"resizerLocation\", void 0);\n __decorate([\n Property(null)\n ], AnnotationSelectorSettings.prototype, \"resizerCursorType\", void 0);\n return AnnotationSelectorSettings;\n}(ChildProperty));\nexport { AnnotationSelectorSettings };\n/**\n * The `TextSearchColorSettings` module is used to set the settings for the color of the text search highlight.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the text search color settings.\n * viewer.textSearchColorSettings = {\n * searchHighlightColor: '#4070FF',\n * searchColor: '#FF4081'\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar TextSearchColorSettings = /** @class */ (function (_super) {\n __extends(TextSearchColorSettings, _super);\n function TextSearchColorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#fdd835')\n ], TextSearchColorSettings.prototype, \"searchHighlightColor\", void 0);\n __decorate([\n Property('#8b4c12')\n ], TextSearchColorSettings.prototype, \"searchColor\", void 0);\n return TextSearchColorSettings;\n}(ChildProperty));\nexport { TextSearchColorSettings };\n/**\n * The `HandWrittenSignatureSettings` module is used to provide the properties to handwritten signature.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the hand written signature settings.\n * viewer.handWrittenSignatureSettings = {\n * signatureItem: [\n * 'Signature',\n * 'Initial'\n * ],\n * saveSignatureLimit: 1,\n * saveInitialLimit: 1,\n * opacity: 1,\n * strokeColor: '#000000',\n * width: 150,\n * height: 100,\n * thickness: 1,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * allowedInteractions: ['None'],\n * signatureDialogSettings: {\n * displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false\n * },\n * initialDialogSettings: {\n * displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload,\n * hideSaveSignature: false\n * }\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar HandWrittenSignatureSettings = /** @class */ (function (_super) {\n __extends(HandWrittenSignatureSettings, _super);\n function HandWrittenSignatureSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], HandWrittenSignatureSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('#000000')\n ], HandWrittenSignatureSettings.prototype, \"strokeColor\", void 0);\n __decorate([\n Property(1)\n ], HandWrittenSignatureSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property(150)\n ], HandWrittenSignatureSettings.prototype, \"width\", void 0);\n __decorate([\n Property(100)\n ], HandWrittenSignatureSettings.prototype, \"height\", void 0);\n __decorate([\n Property(1)\n ], HandWrittenSignatureSettings.prototype, \"saveSignatureLimit\", void 0);\n __decorate([\n Property(1)\n ], HandWrittenSignatureSettings.prototype, \"saveInitialLimit\", void 0);\n __decorate([\n Property([])\n ], HandWrittenSignatureSettings.prototype, \"signatureItem\", void 0);\n __decorate([\n Property()\n ], HandWrittenSignatureSettings.prototype, \"typeSignatureFonts\", void 0);\n __decorate([\n Property('')\n ], HandWrittenSignatureSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property()\n ], HandWrittenSignatureSettings.prototype, \"signatureDialogSettings\", void 0);\n __decorate([\n Property()\n ], HandWrittenSignatureSettings.prototype, \"initialDialogSettings\", void 0);\n return HandWrittenSignatureSettings;\n}(ChildProperty));\nexport { HandWrittenSignatureSettings };\n/**\n * The `AnnotationSettings` module is used to provide the properties to annotations.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the annotation settings.\n * viewer.annotationSettings = {\n * author: 'Guest',\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * skipPrint: false,\n * skipDownload: false,\n * allowedInteractions: ['None']\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar AnnotationSettings = /** @class */ (function (_super) {\n __extends(AnnotationSettings, _super);\n function AnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Guest')\n ], AnnotationSettings.prototype, \"author\", void 0);\n __decorate([\n Property(0)\n ], AnnotationSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], AnnotationSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], AnnotationSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], AnnotationSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], AnnotationSettings.prototype, \"isLock\", void 0);\n __decorate([\n Property(false)\n ], AnnotationSettings.prototype, \"skipPrint\", void 0);\n __decorate([\n Property(false)\n ], AnnotationSettings.prototype, \"skipDownload\", void 0);\n __decorate([\n Property(null)\n ], AnnotationSettings.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], AnnotationSettings.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property('')\n ], AnnotationSettings.prototype, \"subject\", void 0);\n return AnnotationSettings;\n}(ChildProperty));\nexport { AnnotationSettings };\n/**\n * The `DocumentTextCollectionSettings` module is used to provide the properties to DocumentTextCollection.\n */\nvar DocumentTextCollectionSettings = /** @class */ (function (_super) {\n __extends(DocumentTextCollectionSettings, _super);\n function DocumentTextCollectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], DocumentTextCollectionSettings.prototype, \"textData\", void 0);\n __decorate([\n Property()\n ], DocumentTextCollectionSettings.prototype, \"pageText\", void 0);\n __decorate([\n Property()\n ], DocumentTextCollectionSettings.prototype, \"pageSize\", void 0);\n return DocumentTextCollectionSettings;\n}(ChildProperty));\nexport { DocumentTextCollectionSettings };\n/**\n * The `TextDataSettings` module is used to provide the properties of text data.\n */\nvar TextDataSettings = /** @class */ (function (_super) {\n __extends(TextDataSettings, _super);\n function TextDataSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], TextDataSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property()\n ], TextDataSettings.prototype, \"text\", void 0);\n return TextDataSettings;\n}(ChildProperty));\nexport { TextDataSettings };\n/**\n * The `RectangleBounds` module is used to provide the properties of rectangle bounds.\n */\nvar RectangleBounds = /** @class */ (function (_super) {\n __extends(RectangleBounds, _super);\n function RectangleBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"size\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"x\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"y\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"width\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"left\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"top\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"right\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"bottom\", void 0);\n __decorate([\n Property()\n ], RectangleBounds.prototype, \"isEmpty\", void 0);\n return RectangleBounds;\n}(ChildProperty));\nexport { RectangleBounds };\n/**\n * The `TileRenderingSettings` module is used to provide the tile rendering settings of the PDF viewer.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the tile rendering settings.\n * viewer.tileRenderingSettings = {\n * enableTileRendering: false,\n * x: 0,\n * y: 0\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar TileRenderingSettings = /** @class */ (function (_super) {\n __extends(TileRenderingSettings, _super);\n function TileRenderingSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], TileRenderingSettings.prototype, \"enableTileRendering\", void 0);\n __decorate([\n Property(0)\n ], TileRenderingSettings.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], TileRenderingSettings.prototype, \"y\", void 0);\n return TileRenderingSettings;\n}(ChildProperty));\nexport { TileRenderingSettings };\n/**\n * The `ScrollSettings` module is used to provide the settings of the scroll of the PDF viewer.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the scroll settings.\n * viewer.scrollSettings = {\n * delayPageRequestTimeOnScroll: 150\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar ScrollSettings = /** @class */ (function (_super) {\n __extends(ScrollSettings, _super);\n function ScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(100)\n ], ScrollSettings.prototype, \"delayPageRequestTimeOnScroll\", void 0);\n return ScrollSettings;\n}(ChildProperty));\nexport { ScrollSettings };\n/**\n * The `FormField` is used to store the form fields of PDF document.\n */\nvar FormField = /** @class */ (function (_super) {\n __extends(FormField, _super);\n function FormField() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], FormField.prototype, \"name\", void 0);\n __decorate([\n Property(false)\n ], FormField.prototype, \"isChecked\", void 0);\n __decorate([\n Property(false)\n ], FormField.prototype, \"isSelected\", void 0);\n __decorate([\n Property('')\n ], FormField.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], FormField.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], FormField.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], FormField.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property([''])\n ], FormField.prototype, \"signatureType\", void 0);\n __decorate([\n Property('')\n ], FormField.prototype, \"fontName\", void 0);\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], FormField.prototype, \"bounds\", void 0);\n __decorate([\n Property('Helvetica')\n ], FormField.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(10)\n ], FormField.prototype, \"fontSize\", void 0);\n __decorate([\n Property('None')\n ], FormField.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('black')\n ], FormField.prototype, \"color\", void 0);\n __decorate([\n Property('white')\n ], FormField.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property('Left')\n ], FormField.prototype, \"alignment\", void 0);\n __decorate([\n Property('visible')\n ], FormField.prototype, \"visibility\", void 0);\n __decorate([\n Property(0)\n ], FormField.prototype, \"maxLength\", void 0);\n __decorate([\n Property(false)\n ], FormField.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], FormField.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], FormField.prototype, \"tooltip\", void 0);\n __decorate([\n Property('')\n ], FormField.prototype, \"options\", void 0);\n __decorate([\n Property()\n ], FormField.prototype, \"signatureIndicatorSettings\", void 0);\n __decorate([\n Property(1)\n ], FormField.prototype, \"thickness\", void 0);\n __decorate([\n Property('#303030')\n ], FormField.prototype, \"borderColor\", void 0);\n __decorate([\n Property(false)\n ], FormField.prototype, \"isMultiline\", void 0);\n __decorate([\n Property(false)\n ], FormField.prototype, \"insertSpaces\", void 0);\n __decorate([\n Property(-1)\n ], FormField.prototype, \"pageIndex\", void 0);\n __decorate([\n Property(1)\n ], FormField.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(false)\n ], FormField.prototype, \"isTransparent\", void 0);\n __decorate([\n Property(0)\n ], FormField.prototype, \"rotateAngle\", void 0);\n __decorate([\n Property('')\n ], FormField.prototype, \"selectedIndex\", void 0);\n __decorate([\n Property(0)\n ], FormField.prototype, \"zIndex\", void 0);\n return FormField;\n}(ChildProperty));\nexport { FormField };\n/**\n * The `ContextMenuSettings` is used to show the context menu of PDF document.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the settings of the context menu option.\n * viewer.contextMenuSettings = {\n * contextMenuAction: 'RightClick',\n * contextMenuItems: [\n * ContextMenuItem.Comment,\n * ContextMenuItem.Copy,\n * ContextMenuItem.Cut,\n * ContextMenuItem.Delete,\n * ContextMenuItem.Highlight,\n * ContextMenuItem.Paste,\n * ContextMenuItem.Properties,\n * ContextMenuItem.ScaleRatio,\n * ContextMenuItem.Strikethrough,\n * ContextMenuItem.Underline\n * ]\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('RightClick')\n ], ContextMenuSettings.prototype, \"contextMenuAction\", void 0);\n __decorate([\n Property([])\n ], ContextMenuSettings.prototype, \"contextMenuItems\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n/**\n * The `TextFieldSettings` is used to to show and customize the appearance of text box HTML element.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the text field settings.\n * viewer.textFieldSettings = {\n * name: '',\n * value: '',\n * fontFamily: 'Courier',\n * fontSize: 10,\n * fontStyle: 'None',\n * color: 'black',\n * borderColor: 'black',\n * backgroundColor: 'white',\n * alignment: 'Right',\n * isReadOnly: false,\n * visibility: 'visible',\n * maxLength: 0,\n * isRequired: false,\n * isPrint: true,\n * tooltip: '',\n * thickness: 1,\n * isMultiline: false\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar TextFieldSettings = /** @class */ (function (_super) {\n __extends(TextFieldSettings, _super);\n function TextFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], TextFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], TextFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], TextFieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property('Helvetica')\n ], TextFieldSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(10)\n ], TextFieldSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property(0)\n ], TextFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property('None')\n ], TextFieldSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('black')\n ], TextFieldSettings.prototype, \"color\", void 0);\n __decorate([\n Property('white')\n ], TextFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property('Left')\n ], TextFieldSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property(false)\n ], TextFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property('visible')\n ], TextFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(0)\n ], TextFieldSettings.prototype, \"maxLength\", void 0);\n __decorate([\n Property(false)\n ], TextFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], TextFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], TextFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property(1)\n ], TextFieldSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('#303030')\n ], TextFieldSettings.prototype, \"borderColor\", void 0);\n __decorate([\n Property(false)\n ], TextFieldSettings.prototype, \"isMultiline\", void 0);\n return TextFieldSettings;\n}(ChildProperty));\nexport { TextFieldSettings };\n/**\n * The `PasswordFieldSettings` is used to to show and customize the appearance of password input HTML element.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the password field settings.\n * viewer.passwordFieldSettings = {\n * name: '',\n * value: '',\n * fontFamily: 'Courier',\n * fontSize: 10,\n * fontStyle: 'None',\n * color: 'black',\n * borderColor: 'black',\n * backgroundColor: 'white',\n * alignment: 'Right',\n * isReadOnly: false,\n * visibility: 'visible',\n * maxLength: 0,\n * isRequired: false,\n * isPrint: true,\n * tooltip: '',\n * thickness: 1\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar PasswordFieldSettings = /** @class */ (function (_super) {\n __extends(PasswordFieldSettings, _super);\n function PasswordFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], PasswordFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], PasswordFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], PasswordFieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property(0)\n ], PasswordFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property('Helvetica')\n ], PasswordFieldSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(10)\n ], PasswordFieldSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property('None')\n ], PasswordFieldSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('black')\n ], PasswordFieldSettings.prototype, \"color\", void 0);\n __decorate([\n Property('white')\n ], PasswordFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property('Left')\n ], PasswordFieldSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property(false)\n ], PasswordFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property('visible')\n ], PasswordFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(0)\n ], PasswordFieldSettings.prototype, \"maxLength\", void 0);\n __decorate([\n Property(false)\n ], PasswordFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], PasswordFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], PasswordFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property(1)\n ], PasswordFieldSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('#303030')\n ], PasswordFieldSettings.prototype, \"borderColor\", void 0);\n return PasswordFieldSettings;\n}(ChildProperty));\nexport { PasswordFieldSettings };\n/**\n * The `CheckBoxFieldSettings` is used to to show and customize the appearance of check box element.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the check box field settings.\n * viewer.checkBoxFieldSettings = {\n * name: '',\n * isChecked: true,\n * backgroundColor: 'white',\n * isReadOnly: false,\n * visibility: 'visible',\n * isPrint: true,\n * tooltip: '',\n * isRequired: false,\n * thickness: 5,\n * borderColor: 'black'\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar CheckBoxFieldSettings = /** @class */ (function (_super) {\n __extends(CheckBoxFieldSettings, _super);\n function CheckBoxFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], CheckBoxFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], CheckBoxFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBoxFieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], CheckBoxFieldSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('white')\n ], CheckBoxFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property(false)\n ], CheckBoxFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property('visible')\n ], CheckBoxFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(false)\n ], CheckBoxFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property(0)\n ], CheckBoxFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property('')\n ], CheckBoxFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property(false)\n ], CheckBoxFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(1)\n ], CheckBoxFieldSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('#303030')\n ], CheckBoxFieldSettings.prototype, \"borderColor\", void 0);\n return CheckBoxFieldSettings;\n}(ChildProperty));\nexport { CheckBoxFieldSettings };\n/**\n * The `RadioButtonFieldSettings` is used to to show and customize the appearance of radio button element.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the radio button field settings.\n * viewer.radioButtonFieldSettings = {\n * name: '',\n * isSelected: false,\n * backgroundColor: 'white',\n * isReadOnly: false,\n * visibility: 'visible',\n * isPrint: true,\n * tooltip: '',\n * isRequired: false,\n * thickness: 1,\n * borderColor: 'black'\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar RadioButtonFieldSettings = /** @class */ (function (_super) {\n __extends(RadioButtonFieldSettings, _super);\n function RadioButtonFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], RadioButtonFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], RadioButtonFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButtonFieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], RadioButtonFieldSettings.prototype, \"isSelected\", void 0);\n __decorate([\n Property('white')\n ], RadioButtonFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property(false)\n ], RadioButtonFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property(false)\n ], RadioButtonFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(0)\n ], RadioButtonFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property('visible')\n ], RadioButtonFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(false)\n ], RadioButtonFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], RadioButtonFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property(1)\n ], RadioButtonFieldSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('#303030')\n ], RadioButtonFieldSettings.prototype, \"borderColor\", void 0);\n return RadioButtonFieldSettings;\n}(ChildProperty));\nexport { RadioButtonFieldSettings };\n/**\n * The `DropdownFieldSettings` is used to to show and customize the appearance of drop down element.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the drop down field settings.\n * viewer.DropdownFieldSettings = {\n * name: '',\n * isSelected: false,\n * backgroundColor: 'white',\n * isReadOnly: true,\n * visibility: 'visible',\n * isPrint: true,\n * tooltip: '',\n * isRequired: false,\n * thickness: 5,\n * borderColor: 'blue'\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar DropdownFieldSettings = /** @class */ (function (_super) {\n __extends(DropdownFieldSettings, _super);\n function DropdownFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], DropdownFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], DropdownFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], DropdownFieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property('Helvetica')\n ], DropdownFieldSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(10)\n ], DropdownFieldSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property(0)\n ], DropdownFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property('None')\n ], DropdownFieldSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('black')\n ], DropdownFieldSettings.prototype, \"color\", void 0);\n __decorate([\n Property('white')\n ], DropdownFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property('Left')\n ], DropdownFieldSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property(false)\n ], DropdownFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property('visible')\n ], DropdownFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(false)\n ], DropdownFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], DropdownFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], DropdownFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('')\n ], DropdownFieldSettings.prototype, \"options\", void 0);\n __decorate([\n Property(1)\n ], DropdownFieldSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('#303030')\n ], DropdownFieldSettings.prototype, \"borderColor\", void 0);\n return DropdownFieldSettings;\n}(ChildProperty));\nexport { DropdownFieldSettings };\n/**\n * The `ListBoxFieldSettings` is used to to show and customize the appearance of list box element.\n *\n * ```html\n *
\n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the list box field settings.\n * viewer.listBoxFieldSettings = {\n * name: '',\n * fontFamily: 'Courier',\n * fontSize: 5,\n * fontStyle: 'None',\n * color: 'black',\n * backgroundColor: 'white',\n * alignment: 'Right',\n * isReadOnly: false,\n * visibility: 'visible',\n * isRequired: false,\n * isPrint: false,\n * tooltip: '',\n * options: [],\n * thickness: 1,\n * borderColor: 'black'\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar ListBoxFieldSettings = /** @class */ (function (_super) {\n __extends(ListBoxFieldSettings, _super);\n function ListBoxFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], ListBoxFieldSettings.prototype, \"bounds\", void 0);\n __decorate([\n Property('')\n ], ListBoxFieldSettings.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], ListBoxFieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property('Helvetica')\n ], ListBoxFieldSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(10)\n ], ListBoxFieldSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property(0)\n ], ListBoxFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate([\n Property('None')\n ], ListBoxFieldSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('black')\n ], ListBoxFieldSettings.prototype, \"color\", void 0);\n __decorate([\n Property('white')\n ], ListBoxFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property('Left')\n ], ListBoxFieldSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property(false)\n ], ListBoxFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate([\n Property('visible')\n ], ListBoxFieldSettings.prototype, \"visibility\", void 0);\n __decorate([\n Property(false)\n ], ListBoxFieldSettings.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], ListBoxFieldSettings.prototype, \"isPrint\", void 0);\n __decorate([\n Property('')\n ], ListBoxFieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property([])\n ], ListBoxFieldSettings.prototype, \"options\", void 0);\n __decorate([\n Property(1)\n ], ListBoxFieldSettings.prototype, \"thickness\", void 0);\n __decorate([\n Property('#303030')\n ], ListBoxFieldSettings.prototype, \"borderColor\", void 0);\n return ListBoxFieldSettings;\n}(ChildProperty));\nexport { ListBoxFieldSettings };\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"itemName\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"itemValue\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * Represents the PDF viewer component.\n * ```html\n *
\n * \n * ```\n */\nvar PdfViewer = /** @class */ (function (_super) {\n __extends(PdfViewer, _super);\n function PdfViewer(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * Get the Loaded document signature Collections in the PdfViewer control.\n *\n * {% codeBlock src='pdfviewer/signatureCollection/index.md' %}{% endcodeBlock %}\n *\n */\n // eslint-disable-next-line\n _this.signatureCollection = [];\n /**\n * Gets or sets the document name loaded in the PdfViewer control.\n *\n * {% codeBlock src='pdfviewer/fileName/index.md' %}{% endcodeBlock %}\n *\n */\n _this.fileName = null;\n /**\n * @private\n */\n _this.zIndex = -1;\n /**\n * @private\n */\n _this.nameTable = {};\n /** @private */\n _this.clipboardData = {};\n /**\n * @private\n */\n _this.zIndexTable = [];\n _this.isTextSelectionStarted = false;\n /**\n * @private\n */\n _this.touchPadding = 10;\n /**\n * @private\n */\n _this.paddingDifferenceValue = 10;\n /** @hidden */\n _this.defaultLocale = {\n 'PdfViewer': 'PDF Viewer',\n 'Cancel': 'Cancel',\n 'Download file': 'Download file',\n 'Download': 'Download',\n 'Enter Password': 'This document is password protected. Please enter a password.',\n 'File Corrupted': 'File Corrupted',\n 'File Corrupted Content': 'The file is corrupted and cannot be opened.',\n 'Fit Page': 'Fit Page',\n 'Fit Width': 'Fit Width',\n 'Automatic': 'Automatic',\n 'Go To First Page': 'Show first page',\n 'Invalid Password': 'Incorrect Password. Please try again.',\n 'Next Page': 'Show next page',\n 'OK': 'OK',\n 'Open': 'Open file',\n 'Page Number': 'Current page number',\n 'Previous Page': 'Show previous page',\n 'Go To Last Page': 'Show last page',\n 'Zoom': 'Zoom',\n 'Zoom In': 'Zoom in',\n 'Zoom Out': 'Zoom out',\n 'Page Thumbnails': 'Page thumbnails',\n 'Bookmarks': 'Bookmarks',\n 'Print': 'Print file',\n 'Password Protected': 'Password Required',\n 'Copy': 'Copy',\n 'Text Selection': 'Text selection tool',\n 'Panning': 'Pan mode',\n 'Text Search': 'Find text',\n 'Find in document': 'Find in document',\n 'Match case': 'Match case',\n 'Apply': 'Apply',\n 'GoToPage': 'Go to Page',\n // eslint-disable-next-line max-len\n 'No matches': 'Viewer has finished searching the document. No more matches were found',\n 'No Text Found': 'No Text Found',\n 'Undo': 'Undo',\n 'Redo': 'Redo',\n 'Annotation': 'Add or Edit annotations',\n 'FormDesigner': 'Add and Edit Form Fields',\n 'Highlight': 'Highlight Text',\n 'Underline': 'Underline Text',\n 'Strikethrough': 'Strikethrough Text',\n 'Delete': 'Delete annotation',\n 'Opacity': 'Opacity',\n 'Color edit': 'Change Color',\n 'Opacity edit': 'Change Opacity',\n 'Highlight context': 'Highlight',\n 'Underline context': 'Underline',\n 'Strikethrough context': 'Strikethrough',\n // eslint-disable-next-line max-len\n 'Server error': 'Web-service is not listening. PDF Viewer depends on web-service for all it\\'s features. Please start the web service to continue.',\n // eslint-disable-next-line max-len\n 'Client error': 'Client-side error is found. Please check the custom headers provided in the AjaxRequestSettings property and web action methods in the ServerActionSettings property.',\n 'Open text': 'Open',\n 'First text': 'First Page',\n 'Previous text': 'Previous Page',\n 'Next text': 'Next Page',\n 'Last text': 'Last Page',\n 'Zoom in text': 'Zoom In',\n 'Zoom out text': 'Zoom Out',\n 'Selection text': 'Selection',\n 'Pan text': 'Pan',\n 'Print text': 'Print',\n 'Search text': 'Search',\n 'Annotation Edit text': 'Edit Annotation',\n 'FormDesigner Edit text': 'Add and Edit Form Fields',\n 'Line Thickness': 'Line Thickness',\n 'Line Properties': 'Line Properties',\n 'Start Arrow': 'Start Arrow',\n 'End Arrow': 'End Arrow',\n 'Line Style': 'Line Style',\n 'Fill Color': 'Fill Color',\n 'Line Color': 'Line Color',\n 'None': 'None',\n 'Open Arrow': 'Open',\n 'Closed Arrow': 'Closed',\n 'Round Arrow': 'Round',\n 'Square Arrow': 'Square',\n 'Diamond Arrow': 'Diamond',\n 'Butt': 'Butt',\n 'Cut': 'Cut',\n 'Paste': 'Paste',\n 'Delete Context': 'Delete',\n 'Properties': 'Properties',\n 'Add Stamp': 'Add Stamp',\n 'Add Shapes': 'Add Shapes',\n 'Stroke edit': 'Change Stroke Color',\n 'Change thickness': 'Change Border Thickness',\n 'Add line': 'Add Line',\n 'Add arrow': 'Add Arrow',\n 'Add rectangle': 'Add Rectangle',\n 'Add circle': 'Add Circle',\n 'Add polygon': 'Add Polygon',\n 'Add Comments': 'Add Comments',\n 'Comments': 'Comments',\n 'SubmitForm': 'Submit Form',\n 'No Comments Yet': 'No Comments Yet',\n 'Accepted': 'Accepted',\n 'Completed': 'Completed',\n 'Cancelled': 'Cancelled',\n 'Rejected': 'Rejected',\n 'Leader Length': 'Leader Length',\n 'Scale Ratio': 'Scale Ratio',\n 'Calibrate': 'Calibrate',\n 'Calibrate Distance': 'Calibrate Distance',\n 'Calibrate Perimeter': 'Calibrate Perimeter',\n 'Calibrate Area': 'Calibrate Area',\n 'Calibrate Radius': 'Calibrate Radius',\n 'Calibrate Volume': 'Calibrate Volume',\n 'Depth': 'Depth',\n 'Closed': 'Closed',\n 'Round': 'Round',\n 'Square': 'Square',\n 'Diamond': 'Diamond',\n 'Edit': 'Edit',\n 'Comment': 'Comment',\n 'Comment Panel': 'Comment Panel',\n 'Set Status': 'Set Status',\n 'Post': 'Post',\n 'Page': 'Page',\n 'Add a comment': 'Add a comment',\n 'Add a reply': 'Add a reply',\n 'Import Annotations': 'Import annotations from JSON file',\n 'Export Annotations': 'Export annotation to JSON file',\n 'Export XFDF': 'Export annotation to XFDF file',\n 'Import XFDF': 'Import annotations from XFDF file',\n 'Add': 'Add',\n 'Clear': 'Clear',\n 'Bold': 'Bold',\n 'Italic': 'Italic',\n 'Strikethroughs': 'Strikethrough',\n 'Underlines': 'Underline',\n 'Superscript': 'Superscript',\n 'Subscript': 'Subscript',\n 'Align left': 'Align Left',\n 'Align right': 'Align Right',\n 'Center': 'Center',\n 'Justify': 'Justify',\n 'Font color': 'Font Color',\n 'Text Align': 'Text Align',\n 'Text Properties': 'Font Style',\n 'SignatureFieldDialogHeaderText': 'Add Signature',\n 'HandwrittenSignatureDialogHeaderText': 'Add Signature',\n 'InitialFieldDialogHeaderText': 'Add Initial',\n 'HandwrittenInitialDialogHeaderText': 'Add Initial',\n 'Draw Ink': 'Draw Ink',\n 'Create': 'Create',\n 'Font family': 'Font Family',\n 'Font size': 'Font Size',\n 'Free Text': 'Free Text',\n 'Import Failed': 'Invalid JSON file type or file name; please select a valid JSON file',\n 'Import PDF Failed': 'Invalid PDF file type or PDF file not found. Please select a valid PDF file',\n 'File not found': 'Imported JSON file is not found in the desired location',\n 'Export Failed': 'Export annotations action has failed; please ensure annotations are added properly',\n 'of': 'of ',\n 'Dynamic': 'Dynamic',\n 'Standard Business': 'Standard Business',\n 'Sign Here': 'Sign Here',\n 'Custom Stamp': 'Custom Stamp',\n 'Enter Signature as Name': 'Enter your name',\n 'Draw-hand Signature': 'DRAW',\n 'Type Signature': 'TYPE',\n 'Upload Signature': 'UPLOAD',\n 'Browse Signature Image': 'BROWSE',\n 'Save Signature': 'Save Signature',\n 'Save Initial': 'Save Initial',\n 'Textbox': 'Textbox',\n 'Password': 'Password',\n 'Check Box': 'Checkbox',\n 'Radio Button': 'Radio Button',\n 'Dropdown': 'Drop Down',\n 'List Box': 'List Box',\n 'Signature': 'Signature',\n 'Delete FormField': 'Delete Form Field',\n 'Textbox Properties': 'Textbox Properties',\n 'Name': 'Name',\n 'Tooltip': 'Tooltip',\n 'Value': 'Value',\n 'Form Field Visibility': 'Form Field Visibility',\n 'Read Only': 'Read Only',\n 'Required': 'Required',\n 'Checked': 'Checked',\n 'Show Printing': 'Show Printing',\n 'Formatting': 'Format',\n 'Fill': 'Fill',\n 'Border': 'Border',\n 'Border Color': 'Border Color',\n 'Thickness': 'Thickness',\n 'Max Length': 'Max Length',\n 'List Item': 'Item Name',\n 'Export Value': 'Item Value',\n 'Dropdown Item List': 'Dropdown Item List',\n 'List Box Item List': 'List Box Item List',\n 'General': 'GENERAL',\n 'Appearance': 'APPEARANCE',\n 'Options': 'OPTIONS',\n 'Delete Item': 'Delete',\n 'Up': 'Up',\n 'Down': 'Down',\n 'Multiline': 'Multiline',\n 'Revised': 'Revised',\n 'Reviewed': 'Reviewed',\n 'Received': 'Received',\n 'Confidential': 'Confidential',\n 'Approved': 'Approved',\n 'Not Approved': 'Not Approved',\n 'Witness': 'Witness',\n 'Initial Here': 'Initial Here',\n 'Draft': 'Draft',\n 'Final': 'Final',\n 'For Public Release': 'For Public Release',\n 'Not For Public Release': 'Not For Public Release',\n 'For Comment': 'For Comment',\n 'Void': 'Void',\n 'Preliminary Results': 'Preliminary Results',\n 'Information Only': 'Information Only',\n 'in': 'in',\n 'm': 'm',\n 'ft_in': 'ft_in',\n 'ft': 'ft',\n 'p': 'p',\n 'cm': 'cm',\n 'mm': 'mm',\n 'pt': 'pt',\n 'cu': 'cu',\n 'sq': 'sq',\n 'Initial': 'Initial'\n };\n _this.viewerBase = new PdfViewerBase(_this);\n _this.drawing = new Drawing(_this);\n _this.pdfRendererModule = new PdfRenderer(_this, _this.viewerBase);\n return _this;\n }\n Object.defineProperty(PdfViewer.prototype, \"zoomPercentage\", {\n /**\n * Returns the current zoom percentage of the PdfViewer control.\n *\n * @asptype int\n * @blazorType int\n */\n get: function () {\n return this.magnificationModule.zoomFactor * 100;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"bookmark\", {\n /**\n * Gets the bookmark view object of the pdf viewer.\n *\n * @asptype BookmarkView\n * @blazorType BookmarkView\n * @returns { BookmarkView }\n */\n get: function () {\n return this.bookmarkViewModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"print\", {\n /**\n * Gets the print object of the pdf viewer.\n *\n * @asptype Print\n * @blazorType Print\n * @returns { Print }\n */\n get: function () {\n return this.printModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"magnification\", {\n /**\n * Gets the magnification object of the pdf viewer.\n *\n * @asptype Magnification\n * @blazorType Magnification\n * @returns { Magnification }\n */\n get: function () {\n return this.magnificationModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"navigation\", {\n /**\n * Gets the navigation object of the pdf viewer.\n *\n * @asptype Navigation\n * @blazorType Navigation\n * @returns { Navigation }\n */\n get: function () {\n return this.navigationModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"textSearch\", {\n /**\n * Gets the text search object of the pdf viewer.\n *\n * @asptype TextSearch\n * @blazorType TextSearch\n * @returns { TextSearch }\n */\n get: function () {\n return this.textSearchModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"toolbar\", {\n /**\n * Gets the toolbar object of the pdf viewer.\n *\n * @asptype Toolbar\n * @blazorType Toolbar\n * @returns { Toolbar }\n */\n get: function () {\n return this.toolbarModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"thumbnailView\", {\n /**\n * Gets the thumbnail-view object of the pdf viewer.\n *\n * @asptype ThumbnailView\n * @blazorType ThumbnailView\n * @returns { ThumbnailView }\n */\n get: function () {\n return this.thumbnailViewModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"annotation\", {\n /**\n * Gets the annotation object of the pdf viewer.\n *\n * @asptype Annotation\n * @blazorType Annotation\n * @returns { Annotation }\n */\n get: function () {\n return this.annotationModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"formDesigner\", {\n /**\n * Gets the FormDesigner object of the pdf viewer.\n *\n * @asptype FormDesigner\n * @blazorType FormDesigner\n * @returns { FormDesigner }\n */\n get: function () {\n return this.formDesignerModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"textSelection\", {\n /**\n * Gets the TextSelection object of the pdf viewer.\n *\n * @asptype TextSelection\n * @blazorType TextSelection\n * @returns { TextSelection }\n */\n get: function () {\n return this.textSelectionModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"accessibilityTags\", {\n /**\n * Gets the Accessibility Tags object of the pdf viewer.\n *\n * @asptype AccessibilityTags\n * @blazorType AccessibilityTags\n * @returns { AccessibilityTags }\n */\n get: function () {\n return this.accessibilityTagsModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"pdfRenderer\", {\n /**\n * Gets the Pdf renderer object of the pdf renderer.\n *\n * @asptype PdfRenderer\n * @blazorType PdfRenderer\n * @returns { PdfRenderer }\n * @private\n */\n get: function () {\n return this.pdfRendererModule;\n },\n enumerable: true,\n configurable: true\n });\n PdfViewer.prototype.preRender = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale);\n if (!isNullOrUndefined(this.element) && this.element.id == \"\") {\n //Set unique id, if id is empty\n this.element.id = this.getUniqueElementId();\n }\n if (Browser.isDevice) {\n //EJ2-63562 - Reduced the touchPadding of mobile devices to 16 to improve selection of fields without affecting resizing ability.\n this.touchPadding = 16;\n }\n };\n PdfViewer.prototype.getUniqueElementId = function () {\n return 'pdfViewer_' + Date.now().toString(36) + Math.random().toString(36).substring(2);\n };\n PdfViewer.prototype.render = function () {\n if (isNullOrUndefined(this.serviceUrl) || this.serviceUrl === '') {\n this.viewerBase.clientSideRendering = true;\n }\n if (this.viewerBase.clientSideRendering) {\n var proxy_1 = this;\n var workerBob = new Blob([PdfiumRunner.toString().replace(/^[^{]*{([\\s\\S]*)}$/m, '$1')], { type: 'text/javascript' });\n var workerBlobUrl = URL.createObjectURL(workerBob);\n window['pdfViewerRunner_' + this.element.id] = this.viewerBase.pdfViewerRunner = new Worker(workerBlobUrl);\n this.viewerBase.pdfViewerRunner.postMessage({\n url: this.getScriptPathForPlatform(),\n message: 'initialLoading'\n });\n this.viewerBase.pdfViewerRunner.onmessage = function (event) {\n if (event.data.message === 'loaded') {\n proxy_1.renderComponent();\n }\n };\n }\n else {\n this.renderComponent();\n }\n };\n PdfViewer.prototype.getScriptPathForPlatform = function () {\n if (!isNullOrUndefined(this.resourceUrl) && this.resourceUrl !== '') {\n if (this.resourceUrl.indexOf('/ej2-pdfviewer-lib') !== -1) {\n return this.resourceUrl;\n }\n return this.resourceUrl + \"/ej2-pdfviewer-lib\";\n }\n var _a = document.location, protocol = _a.protocol, host = _a.host, pathname = _a.pathname;\n // Remove trailing slashes from the pathname using a regular expression\n var trimmedPathname = pathname.replace(/\\/+$/, '');\n var baseUrl = protocol + \"//\" + host + trimmedPathname;\n if (this.isAngular || (this.parent && this.parent.isAngular)) {\n return baseUrl + '/assets/ej2-pdfviewer-lib';\n }\n else if (this.isReact || (this.parent && this.parent.isReact)) {\n return baseUrl + '/ej2-pdfviewer-lib';\n }\n // eslint-disable-next-line max-len\n else if ((this.isVue || (this.parent && this.parent.isVue)) || (this.isVue3 || (this.parent && this.parent.isVue3))) {\n return baseUrl + '/public/js/ej2-pdfviewer-lib';\n }\n else {\n window.getRunningScript = function () {\n return function () {\n return new Error().stack.match(/(?:http[s]?:\\/\\/(?:[^\\/\\s]+\\/))(.*\\.js)/)[0];\n };\n };\n var scriptLinkURL = window.getRunningScript()();\n var splitURL = scriptLinkURL.split('/');\n var path = scriptLinkURL.replace(\"/\" + splitURL[splitURL.length - 1], \"\");\n return path + \"/ej2-pdfviewer-lib\";\n }\n };\n PdfViewer.prototype.renderComponent = function () {\n this.viewerBase.initializeComponent();\n if (!this.enableFormFields) {\n this.formFieldsModule = new FormFields(this, this.viewerBase);\n this.formFieldsModule.formFieldsReadOnly(this.enableFormFields);\n }\n if (this.enableTextSelection && this.textSelectionModule) {\n this.textSelectionModule.enableTextSelectionMode();\n }\n else {\n this.viewerBase.disableTextSelectionMode();\n }\n this.drawing.renderLabels(this);\n this.renderComplete();\n };\n PdfViewer.prototype.getModuleName = function () {\n return 'PdfViewer';\n };\n /**\n * @private\n */\n PdfViewer.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * To modify the Json Data in ajax request.\n *\n * @param jsonData\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.setJsonData = function (jsonData) {\n this.viewerBase.ajaxData = jsonData;\n };\n PdfViewer.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n if (this.isDestroyed) {\n return;\n }\n var properties = Object.keys(newProp);\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'locale':\n if (this.viewerBase.loadedData) {\n // eslint-disable-next-line\n var data = null;\n if (this.formFieldsModule) {\n data = this.viewerBase.getItemFromSessionStorage('_formfields');\n }\n if (data) {\n this.viewerBase.formfieldvalue = JSON.parse(data);\n // eslint-disable-next-line\n var annotCollection = this.annotationCollection;\n var filename = this.viewerBase.jsonDocumentId;\n _super.prototype.refresh.call(this);\n this.load(this.viewerBase.loadedData, null);\n this.addAnnotation(annotCollection);\n this.viewerBase.loadedData = null;\n this.downloadFileName = filename;\n this.fileName = filename;\n }\n }\n break;\n case 'toolbarSettings':\n if (!Browser.isDevice || this.enableDesktopMode) {\n this.toolbar.applyToolbarSettings();\n this.toolbar.annotationToolbarModule.applyAnnotationToolbarSettings();\n this.toolbar.formDesignerToolbarModule.applyFormDesignerToolbarSettings();\n }\n else {\n this.toolbar.applyToolbarSettingsForMobile();\n this.toolbar.annotationToolbarModule.applyMobileAnnotationToolbarSettings();\n }\n break;\n case 'enableToolbar':\n this.notify('', { module: 'toolbar', enable: this.enableToolbar });\n requireRefresh = true;\n break;\n case 'enableCommentPanel':\n this.notify('', { module: 'annotation', enable: this.enableCommentPanel });\n requireRefresh = true;\n if (this.toolbarModule && this.toolbarModule.annotationToolbarModule) {\n this.toolbarModule.annotationToolbarModule.enableCommentPanelTool(this.enableCommentPanel);\n }\n if (!this.enableCommentPanel) {\n if (this.viewerBase.navigationPane) {\n this.viewerBase.navigationPane.closeCommentPanelContainer();\n }\n }\n break;\n case 'documentPath':\n if (!this.viewerBase.isSkipDocumentPath) {\n if (!isBlazor()) {\n this.load(newProp.documentPath, null);\n }\n else {\n this._dotnetInstance.invokeMethodAsync('LoadDocumentFromClient', newProp.documentPath);\n }\n }\n else {\n this.viewerBase.isSkipDocumentPath = false;\n }\n break;\n case 'interactionMode':\n this.interactionMode = newProp.interactionMode;\n if (newProp.interactionMode === 'Pan') {\n this.viewerBase.initiatePanning();\n if (this.toolbar) {\n this.toolbar.updateInteractionTools(false);\n }\n }\n else if (newProp.interactionMode === 'TextSelection') {\n this.viewerBase.initiateTextSelectMode();\n if (this.toolbar) {\n this.toolbar.updateInteractionTools(true);\n }\n }\n break;\n case 'height':\n this.height = newProp.height;\n this.viewerBase.updateHeight();\n this.viewerBase.onWindowResize();\n if (this.toolbar && this.toolbar.annotationToolbarModule) {\n if (this.toolbar.annotationToolbarModule.isToolbarHidden) {\n this.toolbar.annotationToolbarModule.adjustViewer(false);\n }\n else {\n this.toolbar.annotationToolbarModule.adjustViewer(true);\n }\n }\n break;\n case 'width':\n this.width = newProp.width;\n this.viewerBase.updateWidth();\n this.viewerBase.onWindowResize();\n break;\n case 'customStamp':\n this.renderCustomerStamp(this.customStamp[0]);\n break;\n case 'customStampSettings':\n if (newProp.customStampSettings.customStamps) {\n for (var i = 0; i < newProp.customStampSettings.customStamps.length; i++) {\n this.viewerBase.customStampCollection.push({ customStampName: this.customStampSettings.customStamps[i].customStampName, customStampImageSource: this.customStampSettings.customStamps[i].customStampImageSource });\n }\n }\n break;\n case 'enableFormFields':\n if (this.enableFormFields && this.formFieldsModule) {\n for (var m = 0; m < this.pageCount; m++) {\n this.formFieldsModule.renderFormFields(m, false);\n }\n }\n else {\n this.formFieldsModule = new FormFields(this, this.viewerBase);\n this.formFieldsModule.formFieldsReadOnly(this.enableFormFields);\n }\n break;\n case 'designerMode':\n if (this.designerMode) {\n this.formDesignerModule.setMode('designer');\n }\n else {\n this.formDesignerModule.setMode('edit');\n }\n break;\n case 'highlightSettings':\n case 'underlineSettings':\n case 'strikethroughSettings':\n if (this.annotationModule && this.annotationModule.textMarkupAnnotationModule) {\n this.annotationModule.textMarkupAnnotationModule.updateTextMarkupSettings(prop);\n }\n break;\n case 'signatureFieldSettings':\n case 'initialFieldSettings':\n if (this.formDesignerModule) {\n var isInitialField = (prop === \"initialFieldSettings\");\n this.formDesignerModule.updateSignatureSettings(newProp[prop], isInitialField);\n }\n break;\n case 'textFieldSettings':\n if (this.formDesignerModule) {\n this.formDesignerModule.updateTextFieldSettings(newProp[prop]);\n }\n break;\n case 'passwordFieldSettings':\n if (this.formDesignerModule) {\n this.formDesignerModule.updatePasswordFieldSettings(newProp[prop]);\n }\n break;\n case 'checkBoxFieldSettings':\n if (this.formDesignerModule) {\n this.formDesignerModule.updateCheckBoxFieldSettings(newProp[prop]);\n }\n break;\n case 'radioButtonFieldSettings':\n if (this.formDesignerModule) {\n this.formDesignerModule.updateRadioButtonFieldSettings(newProp[prop]);\n }\n break;\n case 'DropdownFieldSettings':\n if (this.formDesignerModule) {\n this.formDesignerModule.updateDropDownFieldSettings(newProp[prop]);\n }\n break;\n case 'listBoxFieldSettings':\n if (this.formDesignerModule) {\n this.formDesignerModule.updateListBoxFieldSettings(newProp[prop]);\n }\n break;\n case 'isFormDesignerToolbarVisible':\n if (!Browser.isDevice || this.enableDesktopMode) {\n if (this.toolbarModule && this.formDesignerModule && !oldProp.isFormDesignerToolbarVisible && newProp.isFormDesignerToolbarVisible) {\n if (this.toolbarModule.annotationToolbarModule && this.isAnnotationToolbarVisible) {\n this.isAnnotationToolbarVisible = false;\n this.toolbarModule.annotationToolbarModule.showAnnotationToolbar();\n }\n this.toolbarModule.formDesignerToolbarModule.resetFormDesignerToolbar();\n }\n else {\n if (!isNullOrUndefined(this.toolbarModule) && !isNullOrUndefined(this.formDesignerModule) && this.toolbarModule.formDesignerToolbarModule && !this.isFormDesignerToolbarVisible) {\n this.isFormDesignerToolbarVisible = false;\n this.formDesignerModule.setMode('edit');\n this.toolbarModule.formDesignerToolbarModule.resetFormDesignerToolbar();\n }\n }\n }\n break;\n case 'isAnnotationToolbarVisible':\n if (!Browser.isDevice || this.enableDesktopMode) {\n if (this.toolbarModule && this.annotationModule && !oldProp.isAnnotationToolbarVisible && newProp.isAnnotationToolbarVisible) {\n if (this.toolbarModule.formDesignerToolbarModule && this.isFormDesignerToolbarVisible) {\n this.isFormDesignerToolbarVisible = false;\n this.toolbarModule.formDesignerToolbarModule.showFormDesignerToolbar();\n }\n this.toolbarModule.annotationToolbarModule.resetToolbar();\n }\n }\n break;\n case 'serviceUrl':\n if (isNullOrUndefined(newProp.serviceUrl) || newProp.serviceUrl === '') {\n this.viewerBase.clientSideRendering = true;\n }\n else {\n this.viewerBase.clientSideRendering = false;\n }\n break;\n }\n }\n };\n // eslint-disable-next-line\n PdfViewer.prototype.renderCustomerStamp = function (customStamp) {\n this.annotation.stampAnnotationModule.isStampAddMode = true;\n this.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n this.viewerBase.stampAdded = true;\n this.viewerBase.isAlreadyAdded = false;\n // eslint-disable-next-line max-len\n this.annotation.stampAnnotationModule.createCustomStampAnnotation(customStamp.customStampImageSource, customStamp.customStampName);\n };\n PdfViewer.prototype.getPersistData = function () {\n return 'PdfViewer';\n };\n PdfViewer.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMagnification) {\n modules.push({\n member: 'Magnification', args: [this, this.viewerBase]\n });\n }\n if (this.enableNavigation) {\n modules.push({\n member: 'Navigation', args: [this, this.viewerBase]\n });\n }\n if (this.enableToolbar || this.enableNavigationToolbar || this.enableAnnotationToolbar || this.enableFormDesignerToolbar) {\n modules.push({\n member: 'Toolbar', args: [this, this.viewerBase]\n });\n }\n if (this.enableHyperlink) {\n modules.push({\n member: 'LinkAnnotation', args: [this, this.viewerBase]\n });\n }\n if (this.enableThumbnail) {\n modules.push({\n member: 'ThumbnailView', args: [this, this.viewerBase]\n });\n }\n if (this.enableBookmark) {\n modules.push({\n member: 'BookmarkView', args: [this, this.viewerBase]\n });\n }\n if (this.enableTextSelection) {\n modules.push({\n member: 'TextSelection', args: [this, this.viewerBase]\n });\n }\n if (this.enableTextSearch) {\n modules.push({\n member: 'TextSearch', args: [this, this.viewerBase]\n });\n }\n if (this.enablePrint) {\n modules.push({\n member: 'Print', args: [this, this.viewerBase]\n });\n }\n if (this.enableAnnotation) {\n modules.push({\n member: 'Annotation', args: [this, this.viewerBase]\n });\n }\n if (this.enableFormFields) {\n modules.push({\n member: 'FormFields', args: [this, this.viewerBase]\n });\n }\n if (this.enableFormDesigner && !isBlazor()) {\n modules.push({\n member: 'FormDesigner', args: [this, this.viewerBase]\n });\n }\n modules.push({\n member: 'AccessibilityTags', args: [this, this.viewerBase]\n });\n modules.push({\n member: 'PdfRenderer', args: [this, this.viewerBase]\n });\n return modules;\n };\n /**\n * Loads the given PDF document in the PDF viewer control\n *\n * @param {string} document - Specifies the document name for load\n * @param {string} password - Specifies the Given document password\n * @returns void\n */\n PdfViewer.prototype.load = function (document, password) {\n if (this.pageCount !== 0) {\n this.viewerBase.clear(true);\n }\n else {\n this.viewerBase.clear(false);\n }\n this.pageCount = 0;\n this.currentPageNumber = 0;\n if (!isBlazor()) {\n if (this.toolbarModule) {\n this.toolbarModule.resetToolbar();\n }\n }\n else {\n this.viewerBase.blazorUIAdaptor.resetToolbar();\n }\n this.viewerBase.initiatePageRender(document, password);\n };\n /**\n * Loads the given PDF document in the PDF viewer control\n * @private\n */\n PdfViewer.prototype.loadDocument = function (documentId, isFileName, fileName) {\n if (this.pageCount !== 0) {\n this.viewerBase.clear(true);\n }\n else {\n this.viewerBase.clear(false);\n }\n this.pageCount = 0;\n this.currentPageNumber = 0;\n this.viewerBase.blazorUIAdaptor.resetToolbar();\n this.fileName = fileName;\n this.viewerBase.initiateLoadDocument(documentId, isFileName, fileName);\n };\n /**\n * Loads the PDF document with the document details in the PDF viewer control\n * @private\n */\n PdfViewer.prototype.loadSuccess = function (documentDetails, password) {\n this.viewerBase.loadSuccess(documentDetails, password);\n };\n /**\n * Set the focus of the given element\n * @private\n */\n PdfViewer.prototype.focusElement = function (elementId) {\n var element = document.getElementById(elementId);\n if (element != null) {\n element.focus();\n }\n };\n /**\n * Downloads the PDF document being loaded in the ejPdfViewer control.\n *\n * @returns void\n */\n PdfViewer.prototype.download = function () {\n if (this.enableDownload) {\n this.viewerBase.download();\n }\n };\n /**\n * Saves the PDF document being loaded in the PDF Viewer control as blob.\n *\n * @returns Promise\n */\n PdfViewer.prototype.saveAsBlob = function () {\n var _this = this;\n if (this.enableDownload) {\n return new Promise(function (resolve, reject) {\n resolve(_this.viewerBase.saveAsBlob());\n });\n }\n else {\n return null;\n }\n };\n /**\n * updates the PDF Viewer container width and height from externally.\n *\n * @returns void\n */\n PdfViewer.prototype.updateViewerContainer = function () {\n this.viewerBase.updateViewerContainer();\n };\n /**\n * Specifies the message to be displayed in the popup.\n *\n * @param errorString\n * @returns void\n */\n PdfViewer.prototype.showNotificationPopup = function (errorString) {\n this.viewerBase.showNotificationPopup(errorString);\n };\n /**\n * Focus a form field in a document by its field name or the field object.\n *\n * @param field\n * @returns void\n */\n PdfViewer.prototype.focusFormField = function (field) {\n var _this = this;\n if (typeof (field) === \"string\") {\n var fieldCollections = this.retrieveFormFields();\n for (var i = 0; i < fieldCollections.length; i++) {\n if (fieldCollections[i].name === field) {\n field = fieldCollections[i];\n }\n }\n }\n if (field) {\n this.viewerBase.isFocusField = true;\n this.viewerBase.focusField = field;\n if (this.formDesignerModule) {\n this.navigationModule.goToPage(field.pageIndex + 1);\n }\n else {\n var pageIndex = parseFloat(field.id.split('_')[1]);\n this.navigationModule.goToPage(pageIndex + 1);\n }\n setTimeout(function () {\n var currentField = document.getElementById(field.id);\n if (_this.formDesignerModule && field.type === \"Checkbox\") {\n currentField = document.getElementById(field.id + \"_input\");\n }\n if (currentField) {\n if (_this.formDesignerModule && (field.type === \"SignatureField\" || field.type === \"InitialField\")) {\n currentField.parentElement.focus();\n }\n else {\n currentField.focus();\n _this.viewerBase.isFocusField = false;\n _this.viewerBase.focusField = [];\n }\n }\n }, 100);\n }\n };\n /**\n * Update the form field values from externally.\n *\n * @param fieldValue\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.updateFormFieldsValue = function (fieldValue) {\n // eslint-disable-next-line\n var target = document.getElementById(fieldValue.id);\n var isformDesignerModuleListBox = false;\n if (target) {\n target = target ? target : document.getElementById(fieldValue.id + '_content_html_element').children[0].children[0];\n if (target && fieldValue.type === 'Textbox' || fieldValue.type === 'Password' || fieldValue.type === 'PasswordField') {\n target.value = fieldValue.value;\n target.multiline = fieldValue.isMultiline;\n }\n else if (fieldValue.type === 'Checkbox' || fieldValue.type === 'RadioButton' || fieldValue.type === 'CheckBox') {\n if (fieldValue.type === 'CheckBox') {\n target.style.appearance = 'auto';\n }\n if (this.formDesignerModule) {\n if (fieldValue.type === 'RadioButton') {\n var radioButtonOption = { isSelected: fieldValue.isSelected };\n this.formDesignerModule.updateFormField(fieldValue, radioButtonOption);\n }\n else {\n var checkBoxOption = { isChecked: fieldValue.isChecked };\n this.formDesignerModule.updateFormField(fieldValue, checkBoxOption);\n }\n }\n else {\n if (fieldValue.type === 'RadioButton') {\n target.selected = fieldValue.isSelected;\n }\n else {\n target.checked = fieldValue.isChecked;\n }\n }\n if (target.value != fieldValue.value) {\n target.value = fieldValue.value;\n }\n }\n else if (fieldValue.type === 'DropDown' || fieldValue.type === 'ListBox' || fieldValue.type === 'DropdownList') {\n if (this.formDesignerModule) {\n isformDesignerModuleListBox = true;\n var dropDownListOption = { options: fieldValue.value };\n this.formDesignerModule.updateFormField(fieldValue, dropDownListOption);\n }\n else {\n target.value = fieldValue.value;\n target.selectedIndex = fieldValue.selectedIndex;\n }\n }\n if (fieldValue.type === 'SignatureField' || fieldValue.type === 'InitialField') {\n if (fieldValue.signatureType || fieldValue.initialType) {\n if (typeof fieldValue.signatureType === 'string') {\n fieldValue.signatureType = fieldValue.signatureType;\n }\n else {\n fieldValue.signatureType = fieldValue.initialType;\n }\n }\n fieldValue.fontName = fieldValue.fontName ? fieldValue.fontName : fieldValue.fontFamily;\n var currentValue = fieldValue.value;\n var signatureField = this.getFormFieldByID(fieldValue.id);\n var isSameValue = this.formDesignerModule ? signatureField.value === fieldValue.value : signatureField.Value === fieldValue.value;\n if (target.classList.contains('e-pdfviewer-signatureformfields-signature') && !isSameValue) {\n if (this.formDesignerModule)\n this.annotation.deleteAnnotationById(fieldValue.id.split('_')[0] + '_content');\n else\n this.annotation.deleteAnnotationById(fieldValue.id);\n }\n if (!fieldValue.signatureType || !fieldValue.value) {\n fieldValue.value = currentValue;\n if (this.viewerBase.isSignaturePathData(fieldValue.value)) {\n fieldValue.signatureType = 'Path';\n target.signatureType = 'Path';\n }\n else if (this.viewerBase.isSignatureImageData(fieldValue.value)) {\n fieldValue.signatureType = 'Image';\n target.signatureType = 'Image';\n }\n else {\n fieldValue.signatureType = 'Type';\n target.signatureType = 'Type';\n }\n }\n if (fieldValue.tooltip) {\n target.tooltip = fieldValue.tooltip;\n }\n target.Required = fieldValue.isRequired ? fieldValue.isRequired : false;\n if (!isSameValue)\n this.formFieldsModule.drawSignature(fieldValue.signatureType, fieldValue.value, target, fieldValue.fontName);\n }\n else {\n if (!isformDesignerModuleListBox) {\n this.formFieldsModule.updateDataInSession(target);\n }\n }\n }\n else {\n var data = this.viewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n var FormFieldsData = JSON.parse(data);\n var _loop_1 = function () {\n var currentData = FormFieldsData[m];\n var fieldName;\n if (fieldValue.type === 'Checkbox' || fieldValue.type === 'RadioButton' || fieldValue.type === 'CheckBox') {\n fieldName = currentData.FieldName;\n }\n else if (fieldValue.type === 'DropDown' || fieldValue.type === 'ListBox' || fieldValue.type === 'DropdownList') {\n fieldName = currentData.Text;\n }\n else {\n fieldName = currentData.FieldName;\n }\n //map the signature field and its data object to find the signature field name.\n var fieldData = FormFieldsData.filter(function (item) { return item.FieldName === currentData.FieldName.split('_')[0]; });\n if (!isNullOrUndefined(fieldData) && !isNullOrUndefined(fieldData[0])) {\n if (fieldData[0].Name === \"SignatureField\" || fieldData[0].Name === \"InitialField\") {\n fieldName = currentData.FieldName.split('_')[0];\n currentData.LineBounds = FormFieldsData.filter(function (item) { return item.FieldName === fieldName; })[0].LineBounds;\n }\n }\n if (fieldName === fieldValue.name) {\n if (fieldValue.type === 'Textbox' || fieldValue.type === 'Password' || fieldValue.type === 'PasswordField') {\n if (fieldValue.value) {\n currentData.Text = fieldValue.value;\n currentData.Value = fieldValue.value;\n }\n }\n else if (fieldValue.type === 'Checkbox' || fieldValue.type === 'RadioButton' || fieldValue.type === 'CheckBox') {\n fieldValue.isSelected || fieldValue.isChecked ? currentData.Selected = true : currentData.Selected = false;\n currentData.Value = fieldValue.value;\n }\n else if (fieldValue.type === 'DropDown' || fieldValue.type === 'ListBox' || fieldValue.type === 'DropdownList') {\n currentData.SelectedValue = fieldValue.value;\n var index = currentData.TextList ? currentData.TextList.indexOf(fieldValue.value) : 0;\n currentData.selectedIndex = index > -1 ? index : 0;\n fieldValue.type === 'ListBox' ? currentData.SelectedListed = [currentData.selectedIndex] : [];\n }\n else if (fieldValue.type === 'SignatureField' || fieldValue.type === 'InitialField') {\n if (fieldValue.value) {\n currentData.Value = fieldValue.value;\n currentData = this_1.updateSignatureValue(currentData, fieldValue);\n }\n }\n this_1.formFieldsModule.updateFormFieldsCollection(currentData);\n }\n };\n var this_1 = this;\n for (var m = 0; m < FormFieldsData.length; m++) {\n _loop_1();\n }\n }\n window.sessionStorage.removeItem(this.viewerBase.documentId + '_formfields');\n this.viewerBase.setItemInSessionStorage(FormFieldsData, '_formfields');\n }\n };\n // eslint-disable-next-line\n PdfViewer.prototype.getFormFieldByID = function (id) {\n if (this.formDesignerModule) {\n return this.nameTable[id.split('_')[0]];\n }\n var data = window.sessionStorage.getItem(this.viewerBase.documentId + '_formfields');\n var formFieldsData = JSON.parse(data);\n return formFieldsData[formFieldsData.findIndex(function (el) { return el.uniqueID === id; })];\n };\n /**\n * @param number\n */\n // eslint-disable-next-line\n PdfViewer.prototype.ConvertPointToPixel = function (number) {\n return (number * (96 / 72));\n };\n /**\n * @param currentData - Current form field data.\n * @param fieldValue - Form Field.\n * @returns - Returns the updated the current Data.\n */\n // eslint-disable-next-line\n PdfViewer.prototype.updateSignatureValue = function (currentData, fieldValue) {\n if (!fieldValue.signatureType) {\n fieldValue.signatureType = this.viewerBase.isSignatureImageData(fieldValue.value) ? 'Image' : (this.viewerBase.isSignaturePathData(fieldValue.value) ? 'Path' : 'Type');\n }\n var bound = currentData.LineBounds;\n var left = this.ConvertPointToPixel(bound.X);\n var top = this.ConvertPointToPixel(bound.Y);\n var width = this.ConvertPointToPixel(bound.Width);\n var height = this.ConvertPointToPixel(bound.Height);\n var bounds;\n if (fieldValue.signatureType === 'Type') {\n if (!currentData.FontFamily) {\n currentData.FontFamily = 'Helvetica';\n }\n // eslint-disable-next-line\n bounds = this.formFieldsModule.getSignBounds(currentData.pageIndex, currentData.RotationAngle, currentData.pageIndex, this.viewerBase.getZoomFactor(), left, top, width, height);\n if (this.signatureFitMode === 'Default') {\n bounds = this.formFieldsModule.getDefaultBoundsforSign(bounds);\n }\n currentData.Bounds = bounds;\n var fontSize = bounds.height / 1.35;\n var textWidth = this.formFieldsModule.getTextWidth(currentData.value, fontSize, currentData.FontFamily);\n var widthRatio = 1;\n if (textWidth > bounds.width)\n widthRatio = bounds.width / textWidth;\n currentData.FontSize = this.formFieldsModule.getFontSize(Math.floor((fontSize * widthRatio)));\n }\n else if (fieldValue.signatureType === 'Image') {\n // eslint-disable-next-line\n bounds = this.formFieldsModule.getSignBounds(currentData.pageIndex, currentData.RotationAngle, currentData.pageIndex, this.viewerBase.getZoomFactor(), left, top, width, height);\n var image_1 = new Image();\n image_1.src = currentData.Value;\n var proxy_2 = this;\n image_1.onload = function () {\n proxy_2.imageOnLoad(bounds, image_1, currentData);\n };\n }\n else {\n if ((currentData.Value.indexOf('base64')) !== -1) {\n // eslint-disable-next-line\n bounds = this.formFieldsModule.getSignBounds(currentData.pageIndex, currentData.RotationAngle, currentData.pageIndex, this.viewerBase.getZoomFactor(), left, top, width, height);\n if (this.signatureFitMode === 'Default') {\n bounds = this.formFieldsModule.getDefaultBoundsforSign(bounds);\n }\n }\n else {\n if (this.signatureFitMode === 'Default') {\n // eslint-disable-next-line\n var signBounds = this.viewerBase.signatureModule.updateSignatureAspectRatio(currentData.Value, false, null, currentData);\n // eslint-disable-next-line\n bounds = this.formFieldsModule.getSignBounds(currentData.pageIndex, currentData.RotationAngle, currentData.pageIndex, this.viewerBase.getZoomFactor(), left, top, signBounds.width, signBounds.height, true);\n bounds.x = bounds.x + signBounds.left;\n bounds.y = bounds.y + signBounds.top;\n }\n else {\n bounds = this.formFieldsModule.getSignBounds(currentData.pageIndex, currentData.RotationAngle, currentData.pageIndex, this.viewerBase.getZoomFactor(), left, top, width, height);\n }\n }\n currentData.Bounds = bounds;\n }\n return currentData;\n };\n PdfViewer.prototype.imageOnLoad = function (bounds, image, currentData) {\n if (this.signatureFitMode === 'Default') {\n var padding = Math.min(bounds.height / this.paddingDifferenceValue, bounds.width / this.paddingDifferenceValue);\n var maxHeight = bounds.height - padding;\n var maxWidth = bounds.width - padding;\n var imageWidth = image.width;\n var imageHeight = image.height;\n var beforeWidth = bounds.width;\n var beforeHeight = bounds.height;\n var ratio = Math.min(maxWidth / imageWidth, maxHeight / imageHeight);\n bounds.width = imageWidth * ratio;\n bounds.height = imageHeight * ratio;\n bounds.x = bounds.x + (beforeWidth - bounds.width) / 2;\n bounds.y = bounds.y + (beforeHeight - bounds.height) / 2;\n var data = this.viewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n var FormFieldsData = JSON.parse(data);\n for (var i = 0; i < FormFieldsData.length; i++) {\n if (FormFieldsData[i].FieldName == currentData.FieldName) {\n FormFieldsData[i].Bounds = bounds;\n this.formFieldsModule.updateFormFieldsCollection(FormFieldsData[i]);\n }\n }\n window.sessionStorage.removeItem(this.viewerBase.documentId + '_formfields');\n this.viewerBase.setItemInSessionStorage(FormFieldsData, '_formfields');\n }\n }\n };\n /**\n * Perform undo action for the edited annotations\n *\n * @returns void\n */\n PdfViewer.prototype.undo = function () {\n if (this.annotationModule) {\n this.annotationModule.undo();\n }\n };\n /**\n * Perform redo action for the edited annotations\n *\n * @returns void\n */\n PdfViewer.prototype.redo = function () {\n if (this.annotationModule) {\n this.annotationModule.redo();\n }\n };\n /**\n * Unloads the PDF document being displayed in the PDF viewer.\n *\n * @returns void\n */\n PdfViewer.prototype.unload = function () {\n this.viewerBase.clear(true);\n this.pageCount = 0;\n if (!isBlazor()) {\n if (this.toolbarModule) {\n this.viewerBase.pageCount = 0;\n this.toolbarModule.resetToolbar();\n }\n }\n else {\n this.viewerBase.blazorUIAdaptor.resetToolbar();\n }\n if (this.fileByteArray) {\n this.fileByteArray = null;\n }\n if (this.magnificationModule) {\n this.magnificationModule.zoomTo(100);\n }\n if (this.viewerBase.hyperlinkAndLinkAnnotation) {\n this.viewerBase.hyperlinkAndLinkAnnotation = {};\n }\n if (this.viewerBase.pageTextDetails) {\n this.viewerBase.pageTextDetails = {};\n }\n };\n /**\n * Destroys all managed resources used by this object.\n *\n * @returns void\n */\n PdfViewer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (!isNullOrUndefined(this.element)) {\n if (!this.refreshing) {\n this.element.classList.remove('e-pdfviewer');\n }\n this.element.innerHTML = '';\n }\n if (this.viewerBase.navigationPane) {\n this.viewerBase.navigationPane.restrictUpdateZoomValue = false;\n }\n this.viewerBase.destroy();\n if (this.viewerBase.navigationPane) {\n this.viewerBase.navigationPane.restrictUpdateZoomValue = true;\n }\n };\n // eslint-disable-next-line\n /**\n * Perform imports annotations action in the PDF Viewer\n * @param {any} importData - Specifies the data for annotation imports\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.importAnnotation = function (importData, annotationDataFormat) {\n if (this.annotationModule) {\n if (typeof (importData) === 'string') {\n var isXfdfFile = ((importData.indexOf('.xfdf') > -1) || (annotationDataFormat.indexOf('Xfdf') > -1)) ? true : false;\n if (annotationDataFormat) {\n if (importData.indexOf('') > -1) {\n this.viewerBase.importAnnotations(importData, annotationDataFormat, false);\n }\n else {\n if (annotationDataFormat == 'Json') {\n if (importData.includes('pdfAnnotation')) {\n this.importAnnotationsAsJson(importData);\n }\n else if (importData.split('.')[1] === 'json') {\n this.viewerBase.isPDFViewerJson = true;\n this.viewerBase.importAnnotations(importData, annotationDataFormat, isXfdfFile);\n }\n else {\n var newImportData = importData.split(',')[1] ? importData.split(',')[1] : importData.split(',')[0];\n importData = decodeURIComponent(escape(atob(newImportData)));\n this.importAnnotationsAsJson(importData);\n }\n }\n else {\n this.viewerBase.importAnnotations(importData, annotationDataFormat, isXfdfFile);\n }\n }\n }\n else {\n if (importData.split('.')[1] === 'json') {\n if (importData.includes('pdfAnnotation')) {\n this.importAnnotationsAsJson(importData);\n }\n else {\n var newImportData = importData.split(',')[1] ? importData.split(',')[1] : importData.split(',')[0];\n importData = decodeURIComponent(escape(atob(newImportData)));\n this.importAnnotationsAsJson(importData);\n }\n }\n else {\n this.viewerBase.importAnnotations(importData, AnnotationDataFormat.Xfdf, isXfdfFile);\n }\n }\n }\n else {\n var imporedAnnotation = importData.pdfAnnotation;\n if (typeof (importData) === 'object' && !isNullOrUndefined(imporedAnnotation) && !isNullOrUndefined(Object.keys(imporedAnnotation)) && !isNullOrUndefined(Object.keys(imporedAnnotation)[0]) && Object.keys(imporedAnnotation[Object.keys(imporedAnnotation)[0]]).length > 1) {\n this.viewerBase.importAnnotations(importData);\n }\n else {\n importData = JSON.stringify(importData);\n this.viewerBase.isPDFViewerJson = false;\n this.viewerBase.importAnnotations(btoa(importData), AnnotationDataFormat.Json);\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewer.prototype.importAnnotationsAsJson = function (importData) {\n var jsonData = JSON.parse(importData);\n var firstAnnotation = jsonData.pdfAnnotation[Object.keys(jsonData.pdfAnnotation)[0]];\n if ((Object.keys(jsonData.pdfAnnotation).length >= 1) && (firstAnnotation.textMarkupAnnotation || firstAnnotation.measureShapeAnnotation || firstAnnotation.freeTextAnnotation || firstAnnotation.stampAnnotations || firstAnnotation.signatureInkAnnotation || (firstAnnotation.shapeAnnotation && firstAnnotation.shapeAnnotation[0].Bounds))) {\n this.viewerBase.isPDFViewerJson = true;\n this.viewerBase.importAnnotations(jsonData, AnnotationDataFormat.Json);\n }\n else {\n this.viewerBase.isPDFViewerJson = false;\n this.viewerBase.importAnnotations(btoa(importData), AnnotationDataFormat.Json);\n }\n };\n /**\n * Perform export annotations action in the PDF Viewer\n *\n * @param annotationDataFormat\n * @returns void\n */\n PdfViewer.prototype.exportAnnotation = function (annotationDataFormat) {\n if (this.annotationModule) {\n if (annotationDataFormat && annotationDataFormat === 'Xfdf') {\n this.viewerBase.exportAnnotations(AnnotationDataFormat.Xfdf);\n }\n else {\n this.viewerBase.exportAnnotations(AnnotationDataFormat.Json);\n }\n }\n };\n /**\n * Perform export annotations action in the PDF Viewer\n *\n *@param {AnnotationDataFormat} annotationDataFormat - Export the annotation based on the format.\n \n * @returns Promise\n */\n PdfViewer.prototype.exportAnnotationsAsObject = function (annotationDataFormat) {\n var _this = this;\n if (annotationDataFormat === void 0) { annotationDataFormat = AnnotationDataFormat.Json; }\n var isAnnotations = this.viewerBase.updateExportItem();\n if (this.annotationModule && isAnnotations) {\n return new Promise(function (resolve, reject) {\n _this.viewerBase.exportAnnotationsAsObject(annotationDataFormat).then(function (value) {\n resolve(value);\n });\n });\n }\n else {\n return new Promise(function (resolve) { resolve(null); });\n }\n };\n /**\n * Export annotations and returns a base64 string for both Json and XFDF formats\n *\n * @param {AnnotationDataFormat} annotationDataFormat\n * @returns Promise\n */\n PdfViewer.prototype.exportAnnotationsAsBase64String = function (annotationDataFormat) {\n var _this = this;\n if (this.annotationModule) {\n return new Promise(function (resolve, reject) {\n _this.viewerBase.createRequestForExportAnnotations(false, annotationDataFormat, true).then(function (value) {\n resolve(value);\n });\n });\n }\n else {\n return null;\n }\n };\n /**\n * Perform to add annotations in the PDF Viewer\n *\n * @param annotation\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.addAnnotation = function (annotation) {\n if (this.viewerBase) {\n this.viewerBase.addAnnotation(annotation);\n }\n };\n // eslint-disable-next-line\n /**\n * Imports the form fields data into the current PDF document.\n *\n * @param {string} data - The path for importing the fields.\n * @param {FormFieldDataFormat} formFieldDataFormat\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.importFormFields = function (data, formFieldDataFormat) {\n if (this.formFieldsModule) {\n if (isNullOrUndefined(formFieldDataFormat)) {\n formFieldDataFormat = FormFieldDataFormat.Json;\n }\n this.viewerBase.importFormFields(data, formFieldDataFormat);\n }\n };\n /**\n * Exports the form field data in the specified data format.\n *\n * @param {string} data - The path for exporting the fields.\n * @param {FormFieldDataFormat} formFieldDataFormat\n * @returns void\n */\n PdfViewer.prototype.exportFormFields = function (data, formFieldDataFormat) {\n if (this.formFieldsModule) {\n this.viewerBase.exportFormFields(data, formFieldDataFormat);\n }\n };\n /**\n * Returns an object which represents the form field data in the specified data format.\n *\n * @param {FormFieldDataFormat} formFieldDataFormat\n * @returns Promise\n */\n PdfViewer.prototype.exportFormFieldsAsObject = function (formFieldDataFormat) {\n var _this = this;\n if (formFieldDataFormat === void 0) { formFieldDataFormat = FormFieldDataFormat.Json; }\n if (this.formFieldsModule) {\n return new Promise(function (resolve, reject) {\n _this.viewerBase.exportFormFieldsAsObject(formFieldDataFormat).then(function (value) {\n resolve(value);\n });\n });\n }\n else {\n return null;\n }\n };\n /**\n * reset all form fields data\n *\n * @returns void\n */\n PdfViewer.prototype.resetFormFields = function () {\n this.formFieldsModule.resetFormFields();\n };\n /**\n * Clears data from the form fields.\n * Parameter - Specifies the form field object.\n *\n * @param formField\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.clearFormFields = function (formField) {\n this.formFieldsModule.clearFormFields(formField);\n };\n /**\n * To delete the annotation Collections in the PDF Document.\n *\n * @returns void\n */\n PdfViewer.prototype.deleteAnnotations = function () {\n if (this.annotationModule) {\n this.viewerBase.deleteAnnotations();\n }\n };\n /**\n * To retrieve the form fields in the PDF Document.\n *\n * @returns void\n */\n PdfViewer.prototype.retrieveFormFields = function () {\n return this.formFieldCollections;\n };\n /**\n * To update the form fields in the PDF Document.\n *\n * @param formFields\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.updateFormFields = function (formFields) {\n this.updateFormFieldsValue(formFields);\n this.formFieldsModule.updateFormFieldValues(formFields);\n };\n /**\n * @param JsonData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAjaxRequestInitiate = function (JsonData) {\n var eventArgs = { name: 'ajaxRequestInitiate', JsonData: JsonData };\n this.trigger('ajaxRequestInitiate', eventArgs);\n };\n /**\n * @param value\n * @param fieldName\n * @param id\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireButtonFieldClickEvent = function (value, fieldName, id) {\n var eventArgs = { name: 'buttonFieldClicked', buttonFieldValue: value, buttonFieldName: fieldName, id: id };\n this.trigger('buttonFieldClick', eventArgs);\n };\n /**\n * @param name\n * @param field\n * @param cancel\n * @param isLeftClick - becomes true on signature panel left click.\n * @private\n */\n PdfViewer.prototype.fireFormFieldClickEvent = function (name, field, cancel, isLeftClick) {\n return __awaiter(this, void 0, void 0, function () {\n var eventArgs, target, formFieldCollectionsValue, readOnly;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n eventArgs = { name: name, field: field, cancel: cancel };\n if (!isBlazor()) return [3 /*break*/, 2];\n return [4 /*yield*/, this.triggerEvent('formFieldClick', eventArgs)];\n case 1:\n eventArgs = (_a.sent()) || eventArgs;\n eventArgs.field.type = field.type;\n return [3 /*break*/, 3];\n case 2:\n this.triggerEvent('formFieldClick', eventArgs);\n _a.label = 3;\n case 3:\n if (field.type === 'SignatureField' || field.type === 'InitialField') {\n if (field.type === 'InitialField')\n this.viewerBase.isInitialField = true;\n else\n this.viewerBase.isInitialField = false;\n target = document.getElementById(field.id);\n if (target.style.visibility === \"hidden\") {\n target.disabled = true;\n }\n target = target ? target : (document.getElementById(field.id + '_content_html_element') ? document.getElementById(field.id + '_content_html_element').children[0].children[0] : null);\n formFieldCollectionsValue = this.formFieldCollections.filter(function (item) { return item.id === field.id; });\n if (formFieldCollectionsValue) {\n readOnly = formFieldCollectionsValue[0].isReadOnly;\n if ((!readOnly) && !eventArgs.cancel && target && !target.disabled && target.classList.contains('e-pdfviewer-signatureformfields') && (isLeftClick || isNullOrUndefined(isLeftClick))) {\n this.viewerBase.signatureModule.showSignatureDialog(true);\n }\n else if (readOnly) {\n target.disabled = true;\n }\n }\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field add event.\n * @param pageIndex - Get the page number.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldAddEvent = function (name, field, pageIndex) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex };\n this.viewerBase.isFormFieldSelect = false;\n this.trigger('formFieldAdd', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field remove event.\n * @param pageIndex - Get the page number.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldRemoveEvent = function (name, field, pageIndex) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex };\n this.trigger('formFieldRemove', eventArgs);\n };\n /**\n * @param name - Returns the event name.\n * @param field - Returns the double-clicked form field object.\n * @param cancel - If TRUE, property panel of the form field does not open. FALSE by default.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldDoubleClickEvent = function (eventArgs) {\n this.trigger('formFieldDoubleClick', eventArgs);\n return eventArgs;\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field properties change event.\n * @param pageIndex - Get the page number.\n * @param isAlignmentChanged - Specifies whether the text alignment of the form field is changed or not.\n * @param isBackgroundColorChanged - Specifies whether the background color of the form field is changed or not.\n * @param isBorderColorChanged - Specifies whether the border color of the form field is changed or not.\n * @param isBorderWidthChanged - Specifies whether the border width of the form field is changed or not.\n * @param isColorChanged - Specifies whether the font color of the form field is changed or not.\n * @param isFontFamilyChanged - Specifies whether the font family of the form field is changed or not.\n * @param isFontSizeChanged - Specifies whether the font size of the form field is changed or not.\n * @param isFontStyleChanged - Specifies whether the font style of the form field is changed or not.\n * @param isMaxLengthChanged - Specifies whether the max length of the form field is changed or not.\n * @param isPrintChanged - Specifies whether the print option of the form field is changed or not.\n * @param isReadOnlyChanged - Specifies the Read Only of Form field is changed or not.\n * @param isRequiredChanged - Specifies whether the is required option of the form field is changed or not.\n * @param isToolTipChanged - Specifies whether the tool tip property is changed or not.\n * @param isValueChanged - Specifies whether the form field value is changed or not.\n * @param isVisibilityChanged - Specifies whether the form field visibility is changed or not.\n * @param newValue - Specifies the new value of the form field.\n * @param oldValue - Specifies the old value of the form field.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldPropertiesChangeEvent = function (name, field, pageIndex, isValueChanged, isFontFamilyChanged, isFontSizeChanged, isFontStyleChanged, isColorChanged, isBackgroundColorChanged, isBorderColorChanged, isBorderWidthChanged, isAlignmentChanged, isReadOnlyChanged, isVisibilityChanged, isMaxLengthChanged, isRequiredChanged, isPrintChanged, isToolTipChanged, oldValue, newValue, isNamechanged) {\n var eventArgs = {\n name: name, field: field, pageIndex: pageIndex, isValueChanged: isValueChanged, isFontFamilyChanged: isFontFamilyChanged, isFontSizeChanged: isFontSizeChanged,\n isFontStyleChanged: isFontStyleChanged, isColorChanged: isColorChanged, isBackgroundColorChanged: isBackgroundColorChanged, isBorderColorChanged: isBorderColorChanged,\n isBorderWidthChanged: isBorderWidthChanged, isAlignmentChanged: isAlignmentChanged, isReadOnlyChanged: isReadOnlyChanged, isVisibilityChanged: isVisibilityChanged,\n isMaxLengthChanged: isMaxLengthChanged, isRequiredChanged: isRequiredChanged, isPrintChanged: isPrintChanged,\n isToolTipChanged: isToolTipChanged, oldValue: oldValue, newValue: newValue, isNameChanged: !isNullOrUndefined(isNamechanged) ? isNamechanged : false\n };\n this.trigger('formFieldPropertiesChange', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field mouse leave event.\n * @param pageIndex - Get the page number.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldMouseLeaveEvent = function (name, field, pageIndex) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex };\n this.trigger('formFieldMouseLeave', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field mouse over event.\n * @param pageIndex - Get the page number.\n * @param pageX - Get the mouse over x position with respect to the page container.\n * @param pageY - Get the mouse over y position with respect to the page container.\n * @param X - Specifies the mouse over x position with respect to the viewer container.\n * @param Y - Specifies the mouse over y position with respect to the viewer container.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldMouseoverEvent = function (name, field, pageIndex, pageX, pageY, X, Y) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex, pageX: pageX, pageY: pageY, X: X, Y: Y };\n this.trigger('formFieldMouseover', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field move event.\n * @param pageIndex - Get the page number.\n * @param previousPosition - Get the previous position of the form field in the page.\n * @param currentPosition - Current position of form field in the page.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldMoveEvent = function (name, field, pageIndex, previousPosition, currentPosition) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('formFieldMove', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field resize event.\n * @param pageIndex - Get the page number.\n * @param previousPosition - Get the previous position of the form field in the page.\n * @param currentPosition - Current position of form field in the page.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldResizeEvent = function (name, field, pageIndex, previousPosition, currentPosition) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('formFieldResize', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field select event.\n * @param pageIndex - Get the page number.\n * @param isProgrammaticSelection - Specifies whether the the form field is selected programmatically or by UI.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldSelectEvent = function (name, field, pageIndex, isProgrammaticSelection) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex, isProgrammaticSelection: isProgrammaticSelection };\n this.trigger('formFieldSelect', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field unselect event.\n * @param pageIndex - Get the page number.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldUnselectEvent = function (name, field, pageIndex) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex };\n this.trigger('formFieldUnselect', eventArgs);\n };\n /**\n * @param pageData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireDocumentLoad = function (pageData) {\n var eventArgs = { name: 'documentLoad', documentName: this.fileName, pageData: pageData };\n this.trigger('documentLoad', eventArgs);\n if (isBlazor()) {\n this._dotnetInstance.invokeMethodAsync('LoadDocument', null);\n this.viewerBase.blazorUIAdaptor.loadDocument();\n }\n };\n /**\n * @param fileName\n * @private\n */\n PdfViewer.prototype.fireDocumentUnload = function (fileName) {\n var eventArgs = { name: 'documentUnload', documentName: fileName };\n this.trigger('documentUnload', eventArgs);\n };\n /**\n * @param isPasswordRequired\n * @param password\n * @private\n */\n PdfViewer.prototype.fireDocumentLoadFailed = function (isPasswordRequired, password) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'documentLoadFailed', documentName: this.fileName, isPasswordRequired: isPasswordRequired, password: password };\n this.trigger('documentLoadFailed', eventArgs);\n };\n /**\n * @param errorStatusCode\n * @param errorMessage\n * @param action\n * @param retryCount\n * @private\n */\n PdfViewer.prototype.fireAjaxRequestFailed = function (errorStatusCode, errorMessage, action, retryCount) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'ajaxRequestFailed', documentName: this.fileName, errorStatusCode: errorStatusCode, errorMessage: errorMessage, action: action };\n if (retryCount) {\n eventArgs.retryCount = true;\n }\n this.trigger('ajaxRequestFailed', eventArgs);\n };\n /**\n * @param action\n * @param data\n * @private\n */\n PdfViewer.prototype.fireAjaxRequestSuccess = function (action, data) {\n var eventArgs = { name: 'ajaxRequestSuccess', documentName: this.fileName, action: action, data: data, cancel: false };\n this.trigger('ajaxRequestSuccess', eventArgs);\n if (eventArgs.cancel) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * @param action\n * @private\n */\n PdfViewer.prototype.fireValidatedFailed = function (action) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n var eventArgs = { formField: this.formFieldCollections, documentName: this.fileName, nonFillableFields: this.viewerBase.nonFillableFields };\n this.trigger('validateFormFields', eventArgs);\n }\n else {\n // eslint-disable-next-line\n var eventArgs = {};\n eventArgs.documentName = this.fileName;\n eventArgs.formFields = this.formFieldCollections;\n eventArgs.nonFillableFields = this.viewerBase.nonFillableFields;\n this.trigger('validateFormFields', eventArgs);\n }\n };\n /**\n * @param x\n * @param y\n * @param pageNumber\n * @private\n */\n PdfViewer.prototype.firePageClick = function (x, y, pageNumber) {\n var eventArgs = { name: 'pageClick', documentName: this.fileName, x: x, y: y, pageNumber: pageNumber };\n this.trigger('pageClick', eventArgs);\n };\n /**\n * @param previousPageNumber\n * @private\n */\n PdfViewer.prototype.firePageChange = function (previousPageNumber) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'pageChange', documentName: this.fileName, currentPageNumber: this.currentPageNumber, previousPageNumber: previousPageNumber };\n this.trigger('pageChange', eventArgs);\n if (isBlazor()) {\n //this._dotnetInstance.invokeMethodAsync('OnPageChanged', this.currentPageNumber);\n this.viewerBase.blazorUIAdaptor.pageChanged(this.currentPageNumber);\n }\n };\n /**\n * @private\n */\n PdfViewer.prototype.fireZoomChange = function () {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'zoomChange', zoomValue: this.magnificationModule.zoomFactor * 100, previousZoomValue: this.magnificationModule.previousZoomFactor * 100 };\n this.trigger('zoomChange', eventArgs);\n };\n /**\n * @param hyperlink\n * @param hyperlinkElement\n * @private\n */\n PdfViewer.prototype.fireHyperlinkClick = function (hyperlink, hyperlinkElement) {\n return __awaiter(this, void 0, void 0, function () {\n var eventArgs;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n eventArgs = { name: 'hyperlinkClick', hyperlink: hyperlink, hyperlinkElement: hyperlinkElement, cancel: false };\n if (!isBlazor()) return [3 /*break*/, 2];\n return [4 /*yield*/, this.triggerEvent('hyperlinkClick', eventArgs)];\n case 1:\n eventArgs = (_a.sent()) || eventArgs;\n return [3 /*break*/, 3];\n case 2:\n this.triggerEvent('hyperlinkClick', eventArgs);\n _a.label = 3;\n case 3:\n if (eventArgs.hyperlinkElement.href != eventArgs.hyperlink) {\n hyperlinkElement.href = eventArgs.hyperlink;\n }\n if (eventArgs.cancel) {\n return [2 /*return*/, false];\n }\n else {\n return [2 /*return*/, true];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @param hyperlinkElement\n * @private\n */\n PdfViewer.prototype.fireHyperlinkHover = function (hyperlinkElement) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'hyperlinkMouseOver', hyperlinkElement: hyperlinkElement };\n this.trigger('hyperlinkMouseOver', eventArgs);\n };\n /**\n * @param fieldName\n * @param value\n * @private\n */\n PdfViewer.prototype.fireFocusOutFormField = function (fieldName, value) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'formFieldFocusOut', fieldName: fieldName, value: value };\n // eslint-disable-next-line\n this.trigger('formFieldFocusOut', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationAdd = function (pageNumber, index, type, bounds, settings, textMarkupContent, tmStartIndex, tmEndIndex, labelSettings, multiPageCollection, customStampName) {\n var eventArgs = { name: 'annotationAdd', pageIndex: pageNumber, annotationId: index, annotationType: type, annotationBound: bounds, annotationSettings: settings };\n if (textMarkupContent) {\n if (isBlazor()) {\n eventArgs.annotationSettings.textMarkupContent = textMarkupContent;\n eventArgs.annotationSettings.textMarkupStartIndex = tmStartIndex;\n eventArgs.annotationSettings.textMarkupEndIndex = tmEndIndex;\n }\n else {\n eventArgs.textMarkupContent = textMarkupContent;\n eventArgs.textMarkupStartIndex = tmStartIndex;\n eventArgs.textMarkupEndIndex = tmEndIndex;\n }\n }\n if (labelSettings) {\n eventArgs.labelSettings = labelSettings;\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n if (type === 'Image') {\n eventArgs.customStampName = customStampName;\n }\n this.viewerBase.isAnnotationSelect = false;\n this.trigger('annotationAdd', eventArgs);\n if (isBlazor()) {\n // this._dotnetInstance.invokeMethodAsync('AnnotationAdd', null);\n this.viewerBase.blazorUIAdaptor.annotationAdd();\n }\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param multiPageCollection\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationRemove = function (pageNumber, index, type, bounds, textMarkupContent, tmStartIndex, tmEndIndex, multiPageCollection) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationRemove', pageIndex: pageNumber, annotationId: index, annotationType: type, annotationBounds: bounds };\n if (textMarkupContent) {\n eventArgs.textMarkupContent = textMarkupContent;\n eventArgs.textMarkupStartIndex = tmStartIndex;\n eventArgs.textMarkupEndIndex = tmEndIndex;\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n this.trigger('annotationRemove', eventArgs);\n };\n /**\n * @param value\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireBeforeAddFreeTextAnnotation = function (value) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'beforeAddFreeText', value: value };\n // eslint-disable-next-line\n this.trigger('beforeAddFreeText', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentAdd = function (id, text, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentAdd', id: id, text: text, annotation: annotation };\n // eslint-disable-next-line\n this.trigger('commentAdd', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentEdit = function (id, text, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentEdit', id: id, text: text, annotation: annotation };\n // eslint-disable-next-line\n this.trigger('commentEdit', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentDelete = function (id, text, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentDelete', id: id, text: text, annotation: annotation };\n // eslint-disable-next-line\n this.trigger('commentDelete', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentSelect = function (id, text, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentSelect', id: id, text: text, annotation: annotation };\n // eslint-disable-next-line\n this.trigger('commentSelect', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @param statusChange\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentStatusChanged = function (id, text, annotation, statusChange) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentStatusChanged', id: id, text: text, annotation: annotation, status: statusChange };\n // eslint-disable-next-line\n this.trigger('commentStatusChanged', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param isColorChanged\n * @param isOpacityChanged\n * @param isTextChanged\n * @param isCommentsChanged\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param multiPageCollection\n * @private\n */\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationPropertiesChange = function (pageNumber, index, type, isColorChanged, isOpacityChanged, isTextChanged, isCommentsChanged, textMarkupContent, tmStartIndex, tmEndIndex, multiPageCollection) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationPropertiesChange', pageIndex: pageNumber, annotationId: index, annotationType: type, isColorChanged: isColorChanged, isOpacityChanged: isOpacityChanged, isTextChanged: isTextChanged, isCommentsChanged: isCommentsChanged };\n if (textMarkupContent) {\n eventArgs.textMarkupContent = textMarkupContent;\n eventArgs.textMarkupStartIndex = tmStartIndex;\n eventArgs.textMarkupEndIndex = tmEndIndex;\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n this.trigger('annotationPropertiesChange', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param data\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureAdd = function (pageNumber, index, type, bounds, opacity, strokeColor, thickness, data) {\n var eventArgs = { pageIndex: pageNumber, id: index, type: type, bounds: bounds, opacity: opacity };\n if (thickness) {\n eventArgs.thickness = thickness;\n }\n if (strokeColor) {\n eventArgs.strokeColor = strokeColor;\n }\n if (data) {\n eventArgs.data = data;\n }\n this.trigger('addSignature', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureRemove = function (pageNumber, index, type, bounds) {\n var eventArgs = { pageIndex: pageNumber, id: index, type: type, bounds: bounds };\n this.trigger('removeSignature', eventArgs);\n };\n /**\n * @param pageNumber\n * @param id\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param previousPosition\n * @param currentPosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureMove = function (pageNumber, id, type, opacity, strokeColor, thickness, previousPosition, currentPosition) {\n var eventArgs = { pageIndex: pageNumber, id: id, type: type, opacity: opacity, strokeColor: strokeColor, thickness: thickness, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('moveSignature', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param isStrokeColorChanged\n * @param isOpacityChanged\n * @param isThicknessChanged\n * @param oldProp\n * @param newProp\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignaturePropertiesChange = function (pageNumber, index, type, isStrokeColorChanged, isOpacityChanged, isThicknessChanged, oldProp, newProp) {\n var eventArgs = { pageIndex: pageNumber, id: index, type: type, isStrokeColorChanged: isStrokeColorChanged, isOpacityChanged: isOpacityChanged, isThicknessChanged: isThicknessChanged, oldValue: oldProp, newValue: newProp };\n this.trigger('signaturePropertiesChange', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param currentPosition\n * @param previousPosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureResize = function (pageNumber, index, type, opacity, strokeColor, thickness, currentPosition, previousPosition) {\n var eventArgs = { pageIndex: pageNumber, id: index, type: type, opacity: opacity, strokeColor: strokeColor, thickness: thickness, currentPosition: currentPosition, previousPosition: previousPosition };\n this.trigger('resizeSignature', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param signature\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureSelect = function (id, pageNumber, signature) {\n var eventArgs = { id: id, pageIndex: pageNumber, signature: signature };\n this.trigger('signatureSelect', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param annotation\n * @param annotationCollection\n * @param multiPageCollection\n * @param isSelected\n * @param annotationAddMode\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationSelect = function (id, pageNumber, annotation, annotationCollection, multiPageCollection, isSelected, annotationAddMode) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationSelect', annotationId: id, pageIndex: pageNumber, annotation: annotation };\n if (annotationCollection) {\n // eslint-disable-next-line max-len\n eventArgs = { name: 'annotationSelect', annotationId: id, pageIndex: pageNumber, annotation: annotation, annotationCollection: annotationCollection };\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n if (isSelected) {\n eventArgs.isProgrammaticSelection = isSelected;\n }\n if (annotationAddMode) {\n eventArgs.annotationAddMode = annotationAddMode;\n }\n if (isBlazor()) {\n if (annotation.type === 'FreeText') {\n // eslint-disable-next-line\n var fontStyle = { isBold: false, isItalic: false, isStrikeout: false, isUnderline: false };\n if (annotation.fontStyle === 1) {\n fontStyle.isBold = true;\n }\n else if (annotation.fontStyle === 2) {\n fontStyle.isItalic = true;\n }\n else if (annotation.fontStyle === 3) {\n fontStyle.isStrikeout = true;\n }\n else if (annotation.fontStyle === 4) {\n fontStyle.isUnderline = true;\n }\n annotation.fontStyle = fontStyle;\n }\n //this._dotnetInstance.invokeMethodAsync('AnnotationSelect', annotation.type);\n this.viewerBase.blazorUIAdaptor.annotationSelect(annotation.type);\n }\n this.trigger('annotationSelect', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationUnSelect = function (id, pageNumber, annotation) {\n if (isBlazor()) {\n this.viewerBase.blazorUIAdaptor.annotationUnSelect();\n }\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationUnSelect', annotationId: id, pageIndex: pageNumber, annotation: annotation };\n this.trigger('annotationUnSelect', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationDoubleClick = function (id, pageNumber, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationDblClick', annotationId: id, pageIndex: pageNumber, annotation: annotation };\n this.trigger('annotationDoubleClick', eventArgs);\n };\n /**\n * @param pageNumber\n * @private\n */\n PdfViewer.prototype.fireTextSelectionStart = function (pageNumber) {\n this.isTextSelectionStarted = true;\n var eventArgs = { pageIndex: pageNumber };\n this.trigger('textSelectionStart', eventArgs);\n };\n /**\n * @param pageNumber\n * @param text\n * @param bound\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextSelectionEnd = function (pageNumber, text, bound) {\n if (this.isTextSelectionStarted) {\n var eventArgs = { pageIndex: pageNumber, textContent: text, textBounds: bound };\n this.trigger('textSelectionEnd', eventArgs);\n this.isTextSelectionStarted = false;\n }\n };\n /**\n * @param canvas\n * @param index\n * @private\n */\n PdfViewer.prototype.renderDrawing = function (canvas, index) {\n if (isNullOrUndefined(index) && this.viewerBase.activeElements.activePageID && !this.viewerBase.isPrint) {\n index = this.viewerBase.activeElements.activePageID;\n }\n if (this.annotation) {\n this.annotation.renderAnnotations(index, null, null, null, canvas);\n }\n else if (this.formDesignerModule) {\n this.formDesignerModule.updateCanvas(index, canvas);\n }\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationResize = function (pageNumber, index, type, bounds, settings, textMarkupContent, tmStartIndex, tmEndIndex, labelSettings, multiPageCollection) {\n var eventArgs = { name: 'annotationResize', pageIndex: pageNumber, annotationId: index, annotationType: type, annotationBound: bounds, annotationSettings: settings };\n if (textMarkupContent) {\n eventArgs.textMarkupContent = textMarkupContent;\n eventArgs.textMarkupStartIndex = tmStartIndex;\n eventArgs.textMarkupEndIndex = tmEndIndex;\n }\n if (labelSettings) {\n eventArgs.labelSettings = labelSettings;\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n this.trigger('annotationResize', eventArgs);\n };\n /**\n * @param pageNumber\n * @param id\n * @param type\n * @param annotationSettings\n * @param previousPosition\n * @param currentPosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationMoving = function (pageNumber, id, type, annotationSettings, previousPosition, currentPosition) {\n var eventArgs = { name: 'annotationMoving', pageIndex: pageNumber, annotationId: id, annotationType: type, annotationSettings: annotationSettings, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('annotationMoving', eventArgs);\n };\n /**\n * @param pageNumber\n * @param id\n * @param type\n * @param annotationSettings\n * @param previousPosition\n * @param currentPosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationMove = function (pageNumber, id, type, annotationSettings, previousPosition, currentPosition) {\n var eventArgs = { name: 'annotationMove', pageIndex: pageNumber, annotationId: id, annotationType: type, annotationSettings: annotationSettings, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('annotationMove', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param annotationType\n * @param bounds\n * @param annotation\n * @param currentPosition\n * @param mousePosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationMouseover = function (id, pageNumber, annotationType, bounds, annotation, currentPosition, mousePosition) {\n var eventArgs = { name: 'annotationMouseover', annotationId: id, pageIndex: pageNumber, annotationType: annotationType, annotationBounds: bounds, annotation: annotation, pageX: currentPosition.left, pageY: currentPosition.top, X: mousePosition.left, Y: mousePosition.top };\n if (isBlazor()) {\n if (annotation.subject === 'Perimeter calculation') {\n eventArgs.annotationType = 'Perimeter';\n }\n else if (annotation.subject === 'Area calculation') {\n eventArgs.annotationType = 'Area';\n }\n else if (annotation.subject === 'Volume calculation') {\n eventArgs.annotationType = 'Volume';\n }\n else if (annotation.subject === 'Arrow') {\n eventArgs.annotationType = 'Arrow';\n }\n else if (annotation.subject === 'Circle') {\n eventArgs.annotationType = 'Circle';\n }\n }\n this.trigger('annotationMouseover', eventArgs);\n };\n /**\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationMouseLeave = function (pageNumber) {\n var eventArgs = { name: 'annotationMouseLeave', pageIndex: pageNumber };\n this.trigger('annotationMouseLeave', eventArgs);\n };\n /**\n * @param pageX\n * @param pageY\n * @private\n */\n PdfViewer.prototype.firePageMouseover = function (pageX, pageY) {\n var eventArgs = { pageX: pageX, pageY: pageY };\n this.trigger('pageMouseover', eventArgs);\n };\n /**\n * @param fileName\n * @private\n */\n PdfViewer.prototype.fireDownloadStart = function (fileName) {\n var eventArgs = { fileName: fileName };\n this.trigger('downloadStart', eventArgs);\n };\n /**\n * @param fileName\n * @param downloadData\n * @private\n */\n PdfViewer.prototype.fireDownloadEnd = function (fileName, downloadData) {\n var eventArgs = { fileName: fileName, downloadDocument: downloadData };\n this.trigger('downloadEnd', eventArgs);\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.firePrintStart = function () {\n return __awaiter(this, void 0, void 0, function () {\n var eventArgs;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n eventArgs = { fileName: this.downloadFileName, cancel: false };\n if (!isBlazor) return [3 /*break*/, 2];\n return [4 /*yield*/, this.triggerEvent('printStart', eventArgs)];\n case 1:\n eventArgs = (_a.sent()) || eventArgs;\n return [3 /*break*/, 3];\n case 2:\n this.triggerEvent('printStart', eventArgs);\n _a.label = 3;\n case 3:\n if (!eventArgs.cancel) {\n this.printModule.print();\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @param eventName\n * @param args\n * @param eventName\n * @param args\n * @private\n */\n PdfViewer.prototype.triggerEvent = function (eventName, args) {\n return __awaiter(this, void 0, void 0, function () {\n var eventArgs;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.trigger(eventName, args)];\n case 1:\n eventArgs = _a.sent();\n if (isBlazor && typeof eventArgs === 'string') {\n eventArgs = JSON.parse(eventArgs);\n }\n return [2 /*return*/, eventArgs];\n }\n });\n });\n };\n /**\n * @param fileName\n * @private\n */\n PdfViewer.prototype.firePrintEnd = function (fileName) {\n var eventArgs = { fileName: fileName };\n this.trigger('printEnd', eventArgs);\n };\n /**\n * @param pageNumber\n * @private\n */\n PdfViewer.prototype.fireThumbnailClick = function (pageNumber) {\n var eventArgs = { name: 'thumbnailClick', pageNumber: pageNumber };\n this.trigger('thumbnailClick', eventArgs);\n };\n /**\n * Custom toolbar click event.\n *\n * @param target\n * @private\n */\n PdfViewer.prototype.fireCustomToolbarClickEvent = function (target) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.trigger('toolbarClick', target);\n return [2 /*return*/];\n });\n });\n };\n /**\n * @param pageNumber\n * @param position\n * @param text\n * @param fileName\n * @private\n */\n PdfViewer.prototype.fireBookmarkClick = function (pageNumber, position, text, fileName) {\n // eslint-disable-next-line\n var eventArgs = { name: 'bookmarkClick', pageNumber: pageNumber, position: position, text: text, fileName: fileName };\n this.trigger('bookmarkClick', eventArgs);\n };\n /**\n * @param importData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireImportStart = function (importData) {\n var eventArgs = { name: 'importAnnotationsStart', importData: importData, formFieldData: null };\n this.trigger('importStart', eventArgs);\n };\n /**\n * @param exportData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireExportStart = function (exportData) {\n var eventArgs = { name: 'exportAnnotationsStart', exportData: exportData, formFieldData: null, cancel: false };\n this.trigger('exportStart', eventArgs);\n if (eventArgs.cancel) {\n return false;\n }\n else {\n return true;\n }\n };\n /**\n * @param importData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireImportSuccess = function (importData) {\n var eventArgs = { name: 'importAnnotationsSuccess', importData: importData, formFieldData: null };\n this.trigger('importSuccess', eventArgs);\n };\n /**\n * @param exportData\n * @param fileName\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireExportSuccess = function (exportData, fileName) {\n var eventArgs = { name: 'exportAnnotationsSuccess', exportData: exportData, fileName: fileName, formFieldData: null };\n this.trigger('exportSuccess', eventArgs);\n };\n /**\n * @param data\n * @param errorDetails\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireImportFailed = function (data, errorDetails) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'importAnnotationsFailed', importData: data, errorDetails: errorDetails, formFieldData: null };\n this.trigger('importFailed', eventArgs);\n };\n /**\n * @param data\n * @param errorDetails\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireExportFailed = function (data, errorDetails) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'exportAnnotationsFailed', exportData: data, errorDetails: errorDetails, formFieldData: null };\n this.trigger('exportFailed', eventArgs);\n };\n /**\n * @param data\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormImportStarted = function (data) {\n var eventArgs = { name: 'importFormFieldsStart', importData: null, formFieldData: data };\n this.trigger('importStart', eventArgs);\n };\n /**\n * @param data\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormExportStarted = function (data) {\n var eventArgs = { name: 'exportFormFieldsStart', exportData: null, formFieldData: data, cancel: false };\n this.trigger('exportStart', eventArgs);\n if (eventArgs.cancel) {\n return false;\n }\n else {\n return true;\n }\n };\n /**\n * @param data\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormImportSuccess = function (data) {\n var eventArgs = { name: 'importFormFieldsSuccess', importData: data, formFieldData: data };\n this.trigger('importSuccess', eventArgs);\n };\n /**\n * @param data\n * @param fileName\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormExportSuccess = function (data, fileName) {\n var eventArgs = { name: 'exportFormFieldsSuccess', exportData: data, fileName: fileName, formFieldData: data };\n this.trigger('exportSuccess', eventArgs);\n };\n /**\n * @param data\n * @param errorDetails\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormImportFailed = function (data, errorDetails) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'importFormFieldsfailed', importData: data, errorDetails: errorDetails, formFieldData: data };\n this.trigger('importFailed', eventArgs);\n };\n /**\n * @param data\n * @param errorDetails\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormExportFailed = function (data, errorDetails) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'exportFormFieldsFailed', exportData: data, errorDetails: errorDetails, formFieldData: data };\n this.trigger('exportFailed', eventArgs);\n };\n /**\n * @param documentCollection\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextExtractionCompleted = function (documentCollection) {\n var eventArgs = { documentTextCollection: documentCollection };\n this.trigger('extractTextCompleted', eventArgs);\n };\n /**\n * @param searchText\n * @param isMatchcase\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextSearchStart = function (searchText, isMatchcase) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'textSearchStart', searchText: searchText, matchCase: isMatchcase };\n this.trigger('textSearchStart', eventArgs);\n };\n /**\n * @param searchText\n * @param isMatchcase\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextSearchComplete = function (searchText, isMatchcase) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'textSearchComplete', searchText: searchText, matchCase: isMatchcase };\n this.trigger('textSearchComplete', eventArgs);\n };\n /**\n * @param searchText\n * @param isMatchcase\n * @param bounds\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextSearchHighlight = function (searchText, isMatchcase, bounds, pageNumber) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'textSearchHighlight', searchText: searchText, matchCase: isMatchcase, bounds: bounds, pageNumber: pageNumber };\n this.trigger('textSearchHighlight', eventArgs);\n };\n /**\n * @param bounds\n * @param commonStyle\n * @param cavas\n * @param index\n * @private\n */\n PdfViewer.prototype.renderAdornerLayer = function (bounds, commonStyle, cavas, index) {\n renderAdornerLayer(bounds, commonStyle, cavas, index, this);\n };\n /**\n * @param index\n * @param currentSelector\n * @private\n */\n PdfViewer.prototype.renderSelector = function (index, currentSelector) {\n this.drawing.renderSelector(index, currentSelector);\n };\n /**\n * @param objArray\n * @param currentSelector\n * @param multipleSelection\n * @param preventUpdate\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewer.prototype.select = function (objArray, currentSelector, multipleSelection, preventUpdate) {\n var allowServerDataBind = this.allowServerDataBinding;\n this.enableServerDataBinding(false);\n if (this.annotationModule) {\n var module = this.annotationModule.textMarkupAnnotationModule;\n var annotationSelect = module && module.selectTextMarkupCurrentPage;\n // eslint-disable-next-line\n var annotation = this.selectedItems.annotations[0];\n if (annotationSelect) {\n // eslint-disable-next-line\n var currentAnnot = this.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n this.annotationModule.textMarkupAnnotationModule.clearCurrentAnnotationSelection(annotationSelect, true);\n this.fireAnnotationUnSelect(currentAnnot.annotName, currentAnnot.pageNumber, currentAnnot);\n }\n if (!multipleSelection) {\n if (this.viewerBase.activeElements && this.viewerBase.activeElements.activePageID >= 0) {\n if (!this.viewerBase.isNewStamp && annotation && annotation.shapeAnnotationType !== 'HandWrittenSignature' && annotation.shapeAnnotationType !== 'SignatureText' && annotation.shapeAnnotationType !== 'SignatureImage') {\n this.fireAnnotationUnSelect(annotation.annotName, annotation.pageIndex, annotation);\n }\n }\n }\n }\n if (this.formDesignerModule) {\n var formField = this.selectedItems.formFields[0];\n if (formField) {\n if (this.formDesignerModule && formField && formField.formFieldAnnotationType) {\n var field = {\n name: formField.name, id: formField.id, value: formField.value, fontFamily: formField.fontFamily, fontSize: formField.fontSize, fontStyle: formField.fontStyle,\n color: formField.color, backgroundColor: formField.backgroundColor, borderColor: formField.borderColor,\n thickness: formField.thickness, alignment: formField.alignment, isReadonly: formField.isReadonly, visibility: formField.visibility,\n maxLength: formField.maxLength, isRequired: formField.isRequired, isPrint: formField.isPrint, rotation: formField.rotateAngle, tooltip: formField.tooltip, options: formField.options,\n isChecked: formField.isChecked, isSelected: formField.isSelected\n };\n this.fireFormFieldUnselectEvent(\"formFieldUnselect\", field, formField.pageIndex);\n }\n }\n }\n var proxy = this;\n this.viewerBase.renderedPagesList.forEach(function (item) {\n proxy.clearSelection(item);\n });\n this.drawing.select(objArray, currentSelector, multipleSelection, preventUpdate);\n this.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @param pageId\n * @private\n */\n PdfViewer.prototype.getPageTable = function (pageId) {\n return this.drawing.getPageTable(pageId);\n };\n /**\n * @param diffX\n * @param diffY\n * @param pageIndex\n * @param currentSelector\n * @param helper\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewer.prototype.dragSelectedObjects = function (diffX, diffY, pageIndex, currentSelector, helper) {\n return this.drawing.dragSelectedObjects(diffX, diffY, pageIndex, currentSelector, helper);\n };\n /**\n * @param sx\n * @param sy\n * @param pivot\n * @private\n */\n PdfViewer.prototype.scaleSelectedItems = function (sx, sy, pivot) {\n return this.drawing.scaleSelectedItems(sx, sy, pivot);\n };\n /**\n * @param endPoint\n * @param obj\n * @param point\n * @param segment\n * @param target\n * @param targetPortId\n * @param currentSelector\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewer.prototype.dragConnectorEnds = function (endPoint, obj, point, segment, target, targetPortId, currentSelector) {\n return this.drawing.dragConnectorEnds(endPoint, obj, point, segment, target, null, currentSelector);\n };\n /**\n * @param pageId\n * @private\n */\n PdfViewer.prototype.clearSelection = function (pageId) {\n var allowServerDataBind = this.allowServerDataBinding;\n this.enableServerDataBinding(false);\n var selectormodel = this.selectedItems;\n var node = selectormodel.annotations.length > 0 ? this.selectedItems.annotations[0] : this.selectedItems.formFields[0];\n if (selectormodel.annotations.length > 0) {\n selectormodel.offsetX = 0;\n selectormodel.offsetY = 0;\n selectormodel.width = 0;\n selectormodel.height = 0;\n selectormodel.rotateAngle = 0;\n selectormodel.annotations = [];\n selectormodel.wrapper = null;\n }\n else if (selectormodel.formFields.length > 0) {\n selectormodel.offsetX = 0;\n selectormodel.offsetY = 0;\n selectormodel.width = 0;\n selectormodel.height = 0;\n selectormodel.rotateAngle = 0;\n selectormodel.formFields = [];\n selectormodel.wrapper = null;\n }\n this.drawing.clearSelectorLayer(pageId);\n this.viewerBase.isAnnotationSelect = false;\n this.viewerBase.isFormFieldSelect = false;\n if (this.annotationModule) {\n var module = this.annotationModule.textMarkupAnnotationModule;\n if (module) {\n var annotationSelect = module.selectTextMarkupCurrentPage;\n this.annotationModule.textMarkupAnnotationModule.clearCurrentSelectedAnnotation();\n this.annotationModule.textMarkupAnnotationModule.clearCurrentAnnotationSelection(annotationSelect);\n }\n }\n this.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * Get page number from the user coordinates x and y.\n *\n * @param {Point} clientPoint - The user will provide a x, y coordinates.\n * @returns number\n */\n PdfViewer.prototype.getPageNumberFromClientPoint = function (clientPoint) {\n var pageNumber = this.viewerBase.getPageNumberFromClientPoint(clientPoint);\n return pageNumber;\n };\n /**\n * Convert user coordinates to the PDF page coordinates.\n *\n * @param {Point} clientPoint - The user should provide a x, y coordinates.\n * @param {number} pageNumber - We need to pass pageNumber.\n * @returns Point\n */\n PdfViewer.prototype.convertClientPointToPagePoint = function (clientPoint, pageNumber) {\n var pagePoint = this.viewerBase.convertClientPointToPagePoint(clientPoint, pageNumber);\n return pagePoint;\n };\n /**\n * Convert page coordinates to the user coordinates.\n *\n * @param {Point} pagePoint - The user should provide a page x, y coordinates.\n * @param {number} pageNumber - We need to pass pageNumber.\n * @returns Point\n */\n PdfViewer.prototype.convertPagePointToClientPoint = function (pagePoint, pageNumber) {\n var clientPoint = this.viewerBase.convertPagePointToClientPoint(pagePoint, pageNumber);\n return clientPoint;\n };\n /**\n * Convert page coordinates to the scrolling coordinates.\n *\n * @param {Point} pagePoint - The user should provide a page x, y coordinates.\n * @param {number} pageNumber - We need to pass pageNumber.\n * @returns Point\n */\n PdfViewer.prototype.convertPagePointToScrollingPoint = function (pagePoint, pageNumber) {\n var scrollingPoint = this.viewerBase.convertPagePointToScrollingPoint(pagePoint, pageNumber);\n return scrollingPoint;\n };\n /**\n * Brings the given rectangular region to view and zooms in the document to fit the region in client area (view port).\n *\n * @param {Rect} rectangle - Specifies the region in client coordinates that is to be brought to view.\n */\n PdfViewer.prototype.zoomToRect = function (rectangle) {\n this.magnificationModule.zoomToRect(rectangle);\n };\n /**\n * @param obj\n * @private\n */\n PdfViewer.prototype.add = function (obj) {\n return this.drawing.add(obj);\n };\n /**\n * @param obj\n * @private\n */\n PdfViewer.prototype.remove = function (obj) {\n return this.drawing.remove(obj);\n };\n /**\n * @private\n */\n PdfViewer.prototype.copy = function () {\n if (this.annotation)\n this.annotation.isShapeCopied = true;\n else if (this.formDesigner && this.designerMode)\n this.formDesigner.isShapeCopied = true;\n return this.drawing.copy();\n };\n /**\n * @param angle\n * @param currentSelector\n * @private\n */\n PdfViewer.prototype.rotate = function (angle, currentSelector) {\n return this.drawing.rotate(this.selectedItems, angle, null, currentSelector);\n };\n /**\n * @param obj\n * @private\n */\n PdfViewer.prototype.paste = function (obj) {\n var index;\n if (this.viewerBase.activeElements.activePageID) {\n index = this.viewerBase.activeElements.activePageID;\n }\n return this.drawing.paste(obj, index || 0);\n };\n /**\n * @private\n */\n PdfViewer.prototype.refresh = function () {\n for (var i = 0; i < this.annotations.length; i++) {\n if (this.zIndexTable.length !== undefined) {\n var notFound = true;\n for (var i_1 = 0; i_1 < this.zIndexTable.length; i_1++) {\n var objects = this.zIndexTable[i_1].objects;\n for (var j = 0; j < objects.length; j++) {\n objects.splice(j, 1);\n }\n delete this.zIndexTable[i_1];\n }\n if (this.annotations[i]) {\n delete this.annotations[i];\n }\n if (this.selectedItems.annotations && this.selectedItems.annotations[i]) {\n delete this.selectedItems.annotations[i];\n }\n this.zIndexTable = [];\n this.renderDrawing();\n }\n if (this.annotations && this.annotations.length !== 0) {\n this.annotations.length = 0;\n this.selectedItems.annotations.length = 0;\n }\n }\n };\n /**\n * @private\n */\n PdfViewer.prototype.cut = function () {\n var index;\n if (this.viewerBase.activeElements.activePageID) {\n index = this.viewerBase.activeElements.activePageID;\n }\n if (this.annotation)\n this.annotation.isShapeCopied = true;\n else if (this.formDesigner && this.designerMode)\n this.formDesigner.isShapeCopied = true;\n return this.drawing.cut(index || 0);\n };\n /**\n * @param actualObject\n * @param node\n * @private\n */\n PdfViewer.prototype.nodePropertyChange = function (actualObject, node) {\n this.drawing.nodePropertyChange(actualObject, node);\n };\n /**\n * enableServerDataBinding method\n *\n * @returns { void } enableServerDataBinding method.\n * @param {boolean} enable - provide the node value.\n *\n * @private\n */\n PdfViewer.prototype.enableServerDataBinding = function (enable, clearBulkChanges) {\n if (clearBulkChanges === void 0) { clearBulkChanges = false; }\n if (isBlazor()) {\n this.allowServerDataBinding = enable;\n if (clearBulkChanges) {\n this.bulkChanges = {};\n }\n }\n };\n /**\n * @param tx\n * @param ty\n * @param pageIndex\n * @param nodeBounds\n * @param isStamp\n * @param isSkip\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewer.prototype.checkBoundaryConstraints = function (tx, ty, pageIndex, nodeBounds, isStamp, isSkip) {\n return this.drawing.checkBoundaryConstraints(tx, ty, pageIndex, nodeBounds, isStamp, isSkip);\n };\n __decorate([\n Property()\n ], PdfViewer.prototype, \"serviceUrl\", void 0);\n __decorate([\n Property(0)\n ], PdfViewer.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PdfViewer.prototype, \"printScaleRatio\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isDocumentEdited\", void 0);\n __decorate([\n Property(0)\n ], PdfViewer.prototype, \"currentPageNumber\", void 0);\n __decorate([\n Property()\n ], PdfViewer.prototype, \"documentPath\", void 0);\n __decorate([\n Property(null)\n ], PdfViewer.prototype, \"exportAnnotationFileName\", void 0);\n __decorate([\n Property()\n ], PdfViewer.prototype, \"downloadFileName\", void 0);\n __decorate([\n Property('auto')\n ], PdfViewer.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], PdfViewer.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableToolbar\", void 0);\n __decorate([\n Property(1)\n ], PdfViewer.prototype, \"retryCount\", void 0);\n __decorate([\n Property([500])\n ], PdfViewer.prototype, \"retryStatusCodes\", void 0);\n __decorate([\n Property(0)\n ], PdfViewer.prototype, \"retryTimeout\", void 0);\n __decorate([\n Property(2)\n ], PdfViewer.prototype, \"initialRenderPages\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"showNotificationDialog\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableNavigationToolbar\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableCommentPanel\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isCommandPanelOpen\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"enableTextMarkupResizer\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"enableMultiLineOverlap\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isValidFreeText\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isAnnotationToolbarOpen\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isAnnotationToolbarVisible\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isFormDesignerToolbarVisible\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"enableMultiPageAnnotation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableDownload\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enablePrint\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enablePrintRotation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableThumbnail\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isThumbnailViewOpen\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isSignatureEditable\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableBookmark\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"enableBookmarkStyles\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableHyperlink\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableHandwrittenSignature\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableInkAnnotation\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"restrictZoomRequest\", void 0);\n __decorate([\n Property('CurrentTab')\n ], PdfViewer.prototype, \"hyperlinkOpenState\", void 0);\n __decorate([\n Property('RightClick')\n ], PdfViewer.prototype, \"contextMenuOption\", void 0);\n __decorate([\n Property([])\n ], PdfViewer.prototype, \"disableContextMenuItems\", void 0);\n __decorate([\n Property({ name: '', id: '', type: '', isReadOnly: false, isSelected: false, isChecked: false, value: '', signatureType: [''], fontName: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', backgroundColor: 'white', alignment: 'Left', visibility: 'visible', maxLength: 0, isRequired: false, isPrint: false, tooltip: '', pageIndex: -1, options: [], signatureIndicatorSettings: { opacity: 1, backgroundColor: 'orange', width: 19, height: 10, fontSize: 10, text: null, color: 'black' } })\n ], PdfViewer.prototype, \"formFieldCollections\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableNavigation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableAutoComplete\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableMagnification\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"enableShapeLabel\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableImportAnnotationMeasurement\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enablePinchZoom\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableTextSelection\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableTextSearch\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableAnnotation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableFormFields\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableFormDesigner\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"designerMode\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"enableFormFieldsValidation\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isFormFieldDocument\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"enableDesktopMode\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"hideSaveSignature\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableFreeText\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableTextMarkupAnnotation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableShapeAnnotation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableMeasureAnnotation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableStampAnnotations\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableStickyNotesAnnotation\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableAnnotationToolbar\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableFormDesignerToolbar\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isBookmarkPanelOpen\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isInitialFieldToolbarSelection\", void 0);\n __decorate([\n Property('TextSelection')\n ], PdfViewer.prototype, \"interactionMode\", void 0);\n __decorate([\n Property('Default')\n ], PdfViewer.prototype, \"zoomMode\", void 0);\n __decorate([\n Property('Default')\n ], PdfViewer.prototype, \"signatureFitMode\", void 0);\n __decorate([\n Property('Default')\n ], PdfViewer.prototype, \"printMode\", void 0);\n __decorate([\n Property(0)\n ], PdfViewer.prototype, \"zoomValue\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableZoomOptimization\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isExtractText\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"isMaintainSelection\", void 0);\n __decorate([\n Property(false)\n ], PdfViewer.prototype, \"hideEmptyDigitalSignatureFields\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"showDigitalSignatureAppearance\", void 0);\n __decorate([\n Property(true)\n ], PdfViewer.prototype, \"enableAccessibilityTags\", void 0);\n __decorate([\n Property('M/d/yyyy h:mm:ss a')\n ], PdfViewer.prototype, \"dateTimeFormat\", void 0);\n __decorate([\n Property('')\n ], PdfViewer.prototype, \"resourceUrl\", void 0);\n __decorate([\n Property({ showTooltip: true, toolbarItems: ['OpenOption', 'UndoRedoTool', 'PageNavigationTool', 'MagnificationTool', 'PanTool', 'SelectionTool', 'CommentTool', 'SubmitForm', 'AnnotationEditTool', 'FormDesignerEditTool', 'FreeTextAnnotationOption', 'InkAnnotationOption', 'ShapeAnnotationOption', 'StampAnnotation', 'SignatureOption', 'SearchOption', 'PrintOption', 'DownloadOption'], annotationToolbarItems: ['HighlightTool', 'UnderlineTool', 'StrikethroughTool', 'ColorEditTool', 'OpacityEditTool', 'AnnotationDeleteTool', 'StampAnnotationTool', 'HandWrittenSignatureTool', 'InkAnnotationTool', 'ShapeTool', 'CalibrateTool', 'StrokeColorEditTool', 'ThicknessEditTool', 'FreeTextAnnotationTool', 'FontFamilyAnnotationTool', 'FontSizeAnnotationTool', 'FontStylesAnnotationTool', 'FontAlignAnnotationTool', 'FontColorAnnotationTool', 'CommentPanelTool'], formDesignerToolbarItems: ['TextboxTool', 'PasswordTool', 'CheckBoxTool', 'RadioButtonTool', 'DropdownTool', 'ListboxTool', 'DrawSignatureTool', 'DeleteTool'] })\n ], PdfViewer.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Property({ ajaxHeaders: [], withCredentials: false })\n ], PdfViewer.prototype, \"ajaxRequestSettings\", void 0);\n __decorate([\n Property({ customStampName: '', customStampImageSource: '' })\n ], PdfViewer.prototype, \"customStamp\", void 0);\n __decorate([\n Property({ load: 'Load', renderPages: 'RenderPdfPages', unload: 'Unload', download: 'Download', renderThumbnail: 'RenderThumbnailImages', print: 'PrintImages', renderComments: 'RenderAnnotationComments', importAnnotations: 'ImportAnnotations', exportAnnotations: 'ExportAnnotations', importFormFields: 'ImportFormFields', exportFormFields: 'ExportFormFields', renderTexts: 'RenderPdfTexts' })\n ], PdfViewer.prototype, \"serverActionSettings\", void 0);\n __decorate([\n Property({ name: '', isReadOnly: false, visibility: 'visible', isRequired: false, isPrint: true, tooltip: '', thickness: 1, signatureIndicatorSettings: { opacity: 1, backgroundColor: 'orange', width: 19, height: 10, fontSize: 10, text: null, color: 'black' }, signatureDialogSettings: { displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false } })\n ], PdfViewer.prototype, \"signatureFieldSettings\", void 0);\n __decorate([\n Property({ name: '', isReadOnly: false, visibility: 'visible', isRequired: false, isPrint: true, tooltip: '', thickness: 1, initialIndicatorSettings: { opacity: 1, backgroundColor: 'orange', width: 19, height: 10, fontSize: 10, text: null, color: 'black' }, initialDialogSettings: { displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false } })\n ], PdfViewer.prototype, \"initialFieldSettings\", void 0);\n __decorate([\n Property({ opacity: 1, color: '#FFDF56', author: 'Guest', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges }, isLock: false, enableMultiPageAnnotation: false, enableTextMarkupResizer: false, allowedInteractions: ['None'], isPrint: true, subject: \"Highlight\" })\n ], PdfViewer.prototype, \"highlightSettings\", void 0);\n __decorate([\n Property({ opacity: 1, color: '#ff0000', author: 'Guest', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges }, isLock: false, enableMultiPageAnnotation: false, enableTextMarkupResizer: false, allowedInteractions: ['None'], isPrint: true, subject: \"Strikethrough\" })\n ], PdfViewer.prototype, \"strikethroughSettings\", void 0);\n __decorate([\n Property({ opacity: 1, color: '#00ff00', author: 'Guest', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges }, isLock: false, enableMultiPageAnnotation: false, enableTextMarkupResizer: false, allowedInteractions: ['None'], isPrint: true, subject: \"Underline\" })\n ], PdfViewer.prototype, \"underlineSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, borderDashArray: 0, lineHeadStartStyle: 'None', lineHeadEndStyle: 'None', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true, subject: \"Line\" })\n ], PdfViewer.prototype, \"lineSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, borderDashArray: 0, lineHeadStartStyle: 'Closed', lineHeadEndStyle: 'Closed', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true, subject: \"Arrow\" })\n ], PdfViewer.prototype, \"arrowSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true, subject: \"Rectangle\" })\n ], PdfViewer.prototype, \"rectangleSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', borderColor: '#ff0000', fontColor: '#000', fontSize: 16, labelHeight: 24.6, labelMaxWidth: 151, labelContent: 'Label' })\n ], PdfViewer.prototype, \"shapeLabelSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true, subject: \"Circle\" })\n ], PdfViewer.prototype, \"circleSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true, subject: \"Polygon\" })\n ], PdfViewer.prototype, \"polygonSettings\", void 0);\n __decorate([\n Property({ opacity: 1, author: 'Guest', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, dynamicStamps: [DynamicStampItem.Revised, DynamicStampItem.Reviewed, DynamicStampItem.Received, DynamicStampItem.Confidential, DynamicStampItem.Approved, DynamicStampItem.NotApproved], signStamps: [SignStampItem.Witness, SignStampItem.InitialHere, SignStampItem.SignHere, SignStampItem.Accepted, SignStampItem.Rejected], standardBusinessStamps: [StandardBusinessStampItem.Approved, StandardBusinessStampItem.NotApproved, StandardBusinessStampItem.Draft, StandardBusinessStampItem.Final, StandardBusinessStampItem.Completed, StandardBusinessStampItem.Confidential, StandardBusinessStampItem.ForPublicRelease, StandardBusinessStampItem.NotForPublicRelease, StandardBusinessStampItem.ForComment, StandardBusinessStampItem.Void, StandardBusinessStampItem.PreliminaryResults, StandardBusinessStampItem.InformationOnly], allowedInteractions: ['None'], isPrint: true, subject: \"\" })\n ], PdfViewer.prototype, \"stampSettings\", void 0);\n __decorate([\n Property({ opacity: 1, author: 'Guest', width: 0, height: 0, left: 0, top: 0, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, enableCustomStamp: true, allowedInteractions: ['None'], isPrint: true, subject: \"\" })\n ], PdfViewer.prototype, \"customStampSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, borderDashArray: 0, lineHeadStartStyle: 'Closed', lineHeadEndStyle: 'Closed', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, leaderLength: 40, resizeCursorType: CursorType.move, allowedInteractions: ['None'], isPrint: true, subject: \"Distance calculation\" })\n ], PdfViewer.prototype, \"distanceSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, borderDashArray: 0, lineHeadStartStyle: 'Open', lineHeadEndStyle: 'Open', minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, allowedInteractions: ['None'], isPrint: true, subject: \"Perimeter calculation\" })\n ], PdfViewer.prototype, \"perimeterSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, allowedInteractions: ['None'], isPrint: true, subject: \"Area calculation\" })\n ], PdfViewer.prototype, \"areaSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true, subject: \"Radius calculation\" })\n ], PdfViewer.prototype, \"radiusSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, allowedInteractions: ['None'], isPrint: true, subject: \"Volume calculation\" })\n ], PdfViewer.prototype, \"volumeSettings\", void 0);\n __decorate([\n Property({ author: 'Guest', opacity: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, isLock: false, allowedInteractions: ['None'], isPrint: true, subject: \"Sticky Note\" })\n ], PdfViewer.prototype, \"stickyNotesSettings\", void 0);\n __decorate([\n Property({ opacity: 1, fillColor: '#ffffff00', borderColor: '#ffffff00', author: 'Guest', borderWidth: 1, width: 151, fontSize: 16, height: 24.6, fontColor: '#000', fontFamily: 'Helvetica', defaultText: 'Type Here', textAlignment: 'Left', fontStyle: FontStyle.None, allowTextOnly: false, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true, isReadonly: false, enableAutoFit: false, subject: \"Text Box\" })\n ], PdfViewer.prototype, \"freeTextSettings\", void 0);\n __decorate([\n Property({ conversionUnit: 'in', displayUnit: 'in', scaleRatio: 1, depth: 96 })\n ], PdfViewer.prototype, \"measurementSettings\", void 0);\n __decorate([\n Property({ selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null })\n ], PdfViewer.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property({ searchHighlightColor: '#fdd835', searchColor: '#8b4c12' })\n ], PdfViewer.prototype, \"textSearchColorSettings\", void 0);\n __decorate([\n Property({ displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false })\n ], PdfViewer.prototype, \"signatureDialogSettings\", void 0);\n __decorate([\n Property({ displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false })\n ], PdfViewer.prototype, \"initialDialogSettings\", void 0);\n __decorate([\n Property({ signatureItem: ['Signature', 'Initial'], saveSignatureLimit: 1, saveInitialLimit: 1, opacity: 1, strokeColor: '#000000', width: 150, height: 100, thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, allowedInteractions: ['None'], signatureDialogSettings: { displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false }, initialDialogSettings: { displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false } })\n ], PdfViewer.prototype, \"handWrittenSignatureSettings\", void 0);\n __decorate([\n Property({ author: 'Guest', opacity: 1, strokeColor: '#ff0000', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, isLock: false, allowedInteractions: ['None'], isPrint: true, subject: \"Ink\" })\n ], PdfViewer.prototype, \"inkAnnotationSettings\", void 0);\n __decorate([\n Property({ author: 'Guest', minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, skipPrint: false, skipDownload: false, allowedInteractions: ['None'], subject: \"\" })\n ], PdfViewer.prototype, \"annotationSettings\", void 0);\n __decorate([\n Property({ enableTileRendering: true, x: 0, y: 0 })\n ], PdfViewer.prototype, \"tileRenderingSettings\", void 0);\n __decorate([\n Property({ delayPageRequestTimeOnScroll: 100 })\n ], PdfViewer.prototype, \"scrollSettings\", void 0);\n __decorate([\n Property({ name: '', value: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', borderColor: 'black', backgroundColor: 'white', alignment: 'Left', isReadOnly: false, visibility: 'visible', maxLength: 0, isRequired: false, isPrint: true, tooltip: '', thickness: 1, isMultiline: false })\n ], PdfViewer.prototype, \"textFieldSettings\", void 0);\n __decorate([\n Property({ name: '', value: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', borderColor: 'black', backgroundColor: 'white', alignment: 'Left', isReadOnly: false, visibility: 'visible', maxLength: 0, isRequired: false, isPrint: true, tooltip: '', thickness: 1 })\n ], PdfViewer.prototype, \"passwordFieldSettings\", void 0);\n __decorate([\n Property({ name: '', value: '', isChecked: false, backgroundColor: 'white', isReadOnly: false, visibility: 'visible', isPrint: true, tooltip: '', isRequired: false, thickness: 1, borderColor: 'black' })\n ], PdfViewer.prototype, \"checkBoxFieldSettings\", void 0);\n __decorate([\n Property({ name: '', value: '', isSelected: false, backgroundColor: 'white', isReadOnly: false, visibility: 'visible', isPrint: true, tooltip: '', isRequired: false, thickness: 1, borderColor: 'black' })\n ], PdfViewer.prototype, \"radioButtonFieldSettings\", void 0);\n __decorate([\n Property({ name: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', backgroundColor: 'white', alignment: 'Left', isReadOnly: false, visibility: 'visible', isRequired: false, isPrint: true, tooltip: '', options: [], thickness: 1, borderColor: 'black' })\n ], PdfViewer.prototype, \"DropdownFieldSettings\", void 0);\n __decorate([\n Property({ name: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', backgroundColor: 'white', alignment: 'Left', isReadOnly: false, visibility: 'visible', isRequired: false, isPrint: false, tooltip: '', options: [], thickness: 1, borderColor: 'black' })\n ], PdfViewer.prototype, \"listBoxFieldSettings\", void 0);\n __decorate([\n Property({ contextMenuAction: 'RightClick', contextMenuItems: [ContextMenuItem.Comment, ContextMenuItem.Copy, ContextMenuItem.Cut, ContextMenuItem.Delete, ContextMenuItem.Highlight, ContextMenuItem.Paste, ContextMenuItem.Properties, ContextMenuItem.ScaleRatio, ContextMenuItem.Strikethrough, ContextMenuItem.Underline] })\n ], PdfViewer.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Complex({}, Selector)\n ], PdfViewer.prototype, \"selectedItems\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"documentLoad\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"documentUnload\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"documentLoadFailed\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"ajaxRequestFailed\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"ajaxRequestSuccess\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"validateFormFields\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"pageClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"pageChange\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"hyperlinkClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"hyperlinkMouseOver\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"zoomChange\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationAdd\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationRemove\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationPropertiesChange\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationResize\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"addSignature\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"removeSignature\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"moveSignature\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"signaturePropertiesChange\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"resizeSignature\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"signatureSelect\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationSelect\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationUnSelect\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationDoubleClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationMove\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationMoving\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationMouseover\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"annotationMouseLeave\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"pageMouseover\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"importStart\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"exportStart\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"importSuccess\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"exportSuccess\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"importFailed\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"exportFailed\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"extractTextCompleted\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"thumbnailClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"bookmarkClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"textSelectionStart\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"textSelectionEnd\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"downloadStart\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"buttonFieldClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldClick\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"downloadEnd\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"printStart\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"printEnd\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"textSearchStart\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"textSearchComplete\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"textSearchHighlight\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"ajaxRequestInitiate\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"commentAdd\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"commentEdit\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"commentDelete\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"commentSelect\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"commentStatusChanged\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"beforeAddFreeText\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldFocusOut\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldAdd\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldRemove\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldPropertiesChange\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldMouseLeave\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldMouseover\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldMove\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldResize\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldSelect\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldUnselect\", void 0);\n __decorate([\n Event()\n ], PdfViewer.prototype, \"formFieldDoubleClick\", void 0);\n __decorate([\n Collection([], PdfAnnotationBase)\n ], PdfViewer.prototype, \"annotations\", void 0);\n __decorate([\n Collection([], PdfFormFieldBase)\n ], PdfViewer.prototype, \"formFields\", void 0);\n __decorate([\n Property()\n ], PdfViewer.prototype, \"drawingObject\", void 0);\n PdfViewer = __decorate([\n NotifyPropertyChanges\n ], PdfViewer);\n return PdfViewer;\n}(Component));\nexport { PdfViewer };\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { PdfViewer } from '@syncfusion/ej2-pdfviewer';\nexport var properties = ['isLazyUpdate', 'plugins', 'DropdownFieldSettings', 'ajaxRequestSettings', 'annotationSelectorSettings', 'annotationSettings', 'annotations', 'areaSettings', 'arrowSettings', 'checkBoxFieldSettings', 'circleSettings', 'contextMenuOption', 'contextMenuSettings', 'currentPageNumber', 'customStamp', 'customStampSettings', 'dateTimeFormat', 'designerMode', 'disableContextMenuItems', 'distanceSettings', 'documentPath', 'downloadFileName', 'drawingObject', 'enableAccessibilityTags', 'enableAnnotation', 'enableAnnotationToolbar', 'enableAutoComplete', 'enableBookmark', 'enableBookmarkStyles', 'enableCommentPanel', 'enableDesktopMode', 'enableDownload', 'enableFormDesigner', 'enableFormDesignerToolbar', 'enableFormFields', 'enableFormFieldsValidation', 'enableFreeText', 'enableHandwrittenSignature', 'enableHyperlink', 'enableImportAnnotationMeasurement', 'enableInkAnnotation', 'enableMagnification', 'enableMeasureAnnotation', 'enableMultiLineOverlap', 'enableMultiPageAnnotation', 'enableNavigation', 'enableNavigationToolbar', 'enablePersistence', 'enablePinchZoom', 'enablePrint', 'enablePrintRotation', 'enableRtl', 'enableShapeAnnotation', 'enableShapeLabel', 'enableStampAnnotations', 'enableStickyNotesAnnotation', 'enableTextMarkupAnnotation', 'enableTextMarkupResizer', 'enableTextSearch', 'enableTextSelection', 'enableThumbnail', 'enableToolbar', 'enableZoomOptimization', 'exportAnnotationFileName', 'formFieldCollections', 'formFields', 'freeTextSettings', 'handWrittenSignatureSettings', 'height', 'hideEmptyDigitalSignatureFields', 'hideSaveSignature', 'highlightSettings', 'hyperlinkOpenState', 'initialDialogSettings', 'initialFieldSettings', 'initialRenderPages', 'inkAnnotationSettings', 'interactionMode', 'isAnnotationToolbarOpen', 'isAnnotationToolbarVisible', 'isBookmarkPanelOpen', 'isCommandPanelOpen', 'isDocumentEdited', 'isExtractText', 'isFormDesignerToolbarVisible', 'isFormFieldDocument', 'isInitialFieldToolbarSelection', 'isMaintainSelection', 'isSignatureEditable', 'isThumbnailViewOpen', 'isValidFreeText', 'lineSettings', 'listBoxFieldSettings', 'locale', 'measurementSettings', 'pageCount', 'passwordFieldSettings', 'perimeterSettings', 'polygonSettings', 'printMode', 'printScaleRatio', 'radioButtonFieldSettings', 'radiusSettings', 'rectangleSettings', 'resourceUrl', 'restrictZoomRequest', 'retryCount', 'retryStatusCodes', 'retryTimeout', 'scrollSettings', 'selectedItems', 'serverActionSettings', 'serviceUrl', 'shapeLabelSettings', 'showDigitalSignatureAppearance', 'showNotificationDialog', 'signatureDialogSettings', 'signatureFieldSettings', 'signatureFitMode', 'stampSettings', 'stickyNotesSettings', 'strikethroughSettings', 'textFieldSettings', 'textSearchColorSettings', 'tileRenderingSettings', 'toolbarSettings', 'underlineSettings', 'volumeSettings', 'width', 'zoomMode', 'zoomValue', 'addSignature', 'ajaxRequestFailed', 'ajaxRequestInitiate', 'ajaxRequestSuccess', 'annotationAdd', 'annotationDoubleClick', 'annotationMouseLeave', 'annotationMouseover', 'annotationMove', 'annotationMoving', 'annotationPropertiesChange', 'annotationRemove', 'annotationResize', 'annotationSelect', 'annotationUnSelect', 'beforeAddFreeText', 'bookmarkClick', 'buttonFieldClick', 'commentAdd', 'commentDelete', 'commentEdit', 'commentSelect', 'commentStatusChanged', 'created', 'documentLoad', 'documentLoadFailed', 'documentUnload', 'downloadEnd', 'downloadStart', 'exportFailed', 'exportStart', 'exportSuccess', 'extractTextCompleted', 'formFieldAdd', 'formFieldClick', 'formFieldDoubleClick', 'formFieldFocusOut', 'formFieldMouseLeave', 'formFieldMouseover', 'formFieldMove', 'formFieldPropertiesChange', 'formFieldRemove', 'formFieldResize', 'formFieldSelect', 'formFieldUnselect', 'hyperlinkClick', 'hyperlinkMouseOver', 'importFailed', 'importStart', 'importSuccess', 'moveSignature', 'pageChange', 'pageClick', 'pageMouseover', 'printEnd', 'printStart', 'removeSignature', 'resizeSignature', 'signaturePropertiesChange', 'signatureSelect', 'textSearchComplete', 'textSearchHighlight', 'textSearchStart', 'textSelectionEnd', 'textSelectionStart', 'thumbnailClick', 'toolbarClick', 'validateFormFields', 'zoomChange'];\nexport var modelProps = [];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * `ejs-pdfviewer` represents the VueJS PdfViewer Component.\n * ```vue\n * \n * ```\n */\nexport var PdfViewerComponent = vueDefineComponent({\n name: 'PdfViewerComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new PdfViewer({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: true,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n custom: function () {\n this.updated();\n },\n addAnnotation: function (annotation) {\n return this.ej2Instances.addAnnotation(annotation);\n },\n clearFormFields: function (formField) {\n return this.ej2Instances.clearFormFields(formField);\n },\n convertClientPointToPagePoint: function (clientPoint, pageNumber) {\n return this.ej2Instances.convertClientPointToPagePoint(clientPoint, pageNumber);\n },\n convertPagePointToClientPoint: function (pagePoint, pageNumber) {\n return this.ej2Instances.convertPagePointToClientPoint(pagePoint, pageNumber);\n },\n convertPagePointToScrollingPoint: function (pagePoint, pageNumber) {\n return this.ej2Instances.convertPagePointToScrollingPoint(pagePoint, pageNumber);\n },\n deleteAnnotations: function () {\n return this.ej2Instances.deleteAnnotations();\n },\n download: function () {\n return this.ej2Instances.download();\n },\n exportAnnotation: function (annotationDataFormat) {\n return this.ej2Instances.exportAnnotation(annotationDataFormat);\n },\n exportAnnotationsAsBase64String: function (annotationDataFormat) {\n return this.ej2Instances.exportAnnotationsAsBase64String(annotationDataFormat);\n },\n exportAnnotationsAsObject: function (annotationDataFormat) {\n return this.ej2Instances.exportAnnotationsAsObject(annotationDataFormat);\n },\n exportFormFields: function (data, formFieldDataFormat) {\n return this.ej2Instances.exportFormFields(data, formFieldDataFormat);\n },\n exportFormFieldsAsObject: function (formFieldDataFormat) {\n return this.ej2Instances.exportFormFieldsAsObject(formFieldDataFormat);\n },\n focusFormField: function (field) {\n return this.ej2Instances.focusFormField(field);\n },\n getPageNumberFromClientPoint: function (clientPoint) {\n return this.ej2Instances.getPageNumberFromClientPoint(clientPoint);\n },\n importAnnotation: function (importData, annotationDataFormat) {\n return this.ej2Instances.importAnnotation(importData, annotationDataFormat);\n },\n importFormFields: function (data, formFieldDataFormat) {\n return this.ej2Instances.importFormFields(data, formFieldDataFormat);\n },\n load: function (document, password) {\n return this.ej2Instances.load(document, password);\n },\n redo: function () {\n return this.ej2Instances.redo();\n },\n requiredModules: function () {\n return this.ej2Instances.requiredModules();\n },\n resetFormFields: function () {\n return this.ej2Instances.resetFormFields();\n },\n retrieveFormFields: function () {\n return this.ej2Instances.retrieveFormFields();\n },\n saveAsBlob: function () {\n return this.ej2Instances.saveAsBlob();\n },\n setJsonData: function (jsonData) {\n return this.ej2Instances.setJsonData(jsonData);\n },\n showNotificationPopup: function (errorString) {\n return this.ej2Instances.showNotificationPopup(errorString);\n },\n undo: function () {\n return this.ej2Instances.undo();\n },\n unload: function () {\n return this.ej2Instances.unload();\n },\n updateFormFields: function (formFields) {\n return this.ej2Instances.updateFormFields(formFields);\n },\n updateFormFieldsValue: function (fieldValue) {\n return this.ej2Instances.updateFormFieldsValue(fieldValue);\n },\n updateViewerContainer: function () {\n return this.ej2Instances.updateViewerContainer();\n },\n zoomToRect: function (rectangle) {\n return this.ej2Instances.zoomToRect(rectangle);\n },\n }\n});\nexport var PdfViewerPlugin = {\n name: 'ejs-pdfviewer',\n install: function (Vue) {\n Vue.component(PdfViewerPlugin.name, PdfViewerComponent);\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nimport { attributes, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Browser, Complex, getUniqueID, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { MenuBase, FieldSettings } from '../common/menu-base';\nvar VMENU = 'e-vertical';\nvar SCROLLABLE = 'e-scrollable';\nvar HAMBURGER = 'e-hamburger';\n/**\n * The Menu is a graphical user interface that serve as navigation headers for your application or site.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Menu = /** @class */ (function (_super) {\n __extends(Menu, _super);\n /**\n * Constructor for creating the component.\n *\n * @private\n * @param {MenuModel} options - Specifies the menu model\n * @param {string} element - Specifies the element\n */\n function Menu(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.tempItems = [];\n return _this;\n }\n /**\n * Get module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Menu.prototype.getModuleName = function () {\n return 'menu';\n };\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n Menu.prototype.preRender = function () {\n this.isMenu = true;\n this.element.id = this.element.id || getUniqueID('ej2-menu');\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.template = document.querySelector(this.template).innerHTML.trim();\n this.clearChanges();\n }\n }\n catch (e) {\n /* action on catch */\n }\n this.updateMenuItems(this.items);\n }\n else {\n this.updateMenuItems(this.items);\n }\n _super.prototype.preRender.call(this);\n };\n Menu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n if (this.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode && !this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n if (Browser.isDevice && !this.enableScrolling) {\n this.element.parentElement.classList.add(SCROLLABLE);\n }\n }\n if (this.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n if (this.orientation === 'Horizontal') {\n this.element.classList.add('e-hide-menu');\n }\n }\n };\n Menu.prototype.updateMenuItems = function (items) {\n this.tempItems = items;\n this.items = [];\n this.tempItems.map(this.createMenuItems, this);\n this.setProperties({ items: this.items }, true);\n this.tempItems = [];\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuModel} newProp - Specifies the new properties.\n * @param {MenuModel} oldProp - Specifies the old properties.\n * @returns {void}\n */\n Menu.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'orientation':\n if (newProp.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n this.element.classList.remove(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n this.element.removeAttribute('aria-orientation');\n }\n break;\n case 'items':\n if (!Object.keys(oldProp.items).length) {\n this.updateMenuItems(newProp.items);\n }\n break;\n case 'hamburgerMode':\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n if (newProp.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n [].slice.call(this.element.getElementsByClassName('e-blankicon')).forEach(function (li) {\n li.style[_this.enableRtl ? 'paddingRight' : 'paddingLeft'] = '';\n });\n }\n else {\n this.element.parentElement.classList.remove(HAMBURGER);\n if (this.orientation === 'Vertical') {\n this.setBlankIconStyle(this.element);\n }\n }\n if (this.orientation === 'Vertical') {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n else {\n if (this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList[newProp.hamburgerMode ? 'add' : 'remove']('e-hide-menu');\n }\n break;\n case 'title':\n if (this.hamburgerMode && this.element.previousElementSibling) {\n newProp.title = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(newProp.title) : newProp.title;\n this.element.previousElementSibling.querySelector('.e-menu-title').innerHTML = newProp.title;\n }\n break;\n case 'target':\n if (this.hamburgerMode) {\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n if (this.orientation === 'Horizontal') {\n if (!newProp.target) {\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n }\n break;\n }\n }\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n };\n Menu.prototype.createMenuItems = function (item) {\n var idx;\n var i;\n var items = this.items;\n var pIdField = this.getField('parentId');\n if (item[\"\" + pIdField]) {\n idx = this.getIndex(item[\"\" + pIdField].toString(), true);\n for (i = 0; i < idx.length; i++) {\n if (!items[idx[i]].items) {\n items[idx[i]].items = [];\n }\n items = items[idx[i]].items;\n }\n items.push(item);\n }\n else {\n this.items.push(item);\n }\n };\n /**\n * This method is used to open the Menu in hamburger mode.\n *\n * @function open\n * @returns {void}\n */\n Menu.prototype.open = function () {\n _super.prototype.openHamburgerMenu.call(this);\n };\n /**\n * Closes the Menu if it is opened in hamburger mode.\n *\n * @function close\n * @returns {void}\n */\n Menu.prototype.close = function () {\n _super.prototype.closeHamburgerMenu.call(this);\n };\n __decorate([\n Property('Horizontal')\n ], Menu.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Menu.prototype, \"target\", void 0);\n __decorate([\n Property(null)\n ], Menu.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], Menu.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], Menu.prototype, \"hamburgerMode\", void 0);\n __decorate([\n Property('Menu')\n ], Menu.prototype, \"title\", void 0);\n __decorate([\n Property(false)\n ], Menu.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], Menu.prototype, \"fields\", void 0);\n Menu = __decorate([\n NotifyPropertyChanges\n ], Menu);\n return Menu;\n}(MenuBase));\nexport { Menu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Event, remove, addClass, removeClass, detach, getValue, setValue } from '@syncfusion/ej2-base';\nimport { EventHandler, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { attributes, getUniqueID, getInstance, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getModel, Item } from './../common/common';\nimport { DropDownButton } from '../drop-down-button/drop-down-button';\nvar RTL = 'e-rtl';\nvar TAGNAME = 'EJS-SPLITBUTTON';\n/**\n * SplitButton component has primary and secondary button. Primary button is used to select\n * default action and secondary button is used to toggle contextual overlays for displaying list of\n * action items. It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar SplitButton = /** @class */ (function (_super) {\n __extends(SplitButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {SplitButtonModel} options - Specifies the splitbutton model\n * @param {string|HTMLButtonElement} element - Specifies the element\n * @hidden\n */\n function SplitButton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize Angular support.\n *\n * @private\n * @returns {void}\n */\n SplitButton.prototype.preRender = function () {\n var ele = this.element;\n if (ele.tagName === TAGNAME) {\n var ejInstance = getValue('ej2_instances', ele);\n var btn = this.createElement('button', { attrs: { 'type': 'button' } });\n var wrapper = this.createElement(TAGNAME, { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n btn.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = btn;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.wrapper = wrapper;\n this.element = ele;\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the Component rendering.\n *\n * @returns {void}\n * @private\n */\n SplitButton.prototype.render = function () {\n this.initWrapper();\n this.createPrimaryButton();\n this.renderControl();\n };\n SplitButton.prototype.renderControl = function () {\n this.createSecondaryButton();\n this.setActiveElem([this.element, this.secondaryBtnObj.element]);\n this.setAria();\n this.wireEvents();\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n SplitButton.prototype.addItems = function (items, text) {\n _super.prototype.addItems.call(this, items, text);\n this.secondaryBtnObj.items = this.items;\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n SplitButton.prototype.removeItems = function (items, isUniqueId) {\n _super.prototype.removeItems.call(this, items, isUniqueId);\n this.secondaryBtnObj.items = this.items;\n };\n SplitButton.prototype.initWrapper = function () {\n if (!this.wrapper) {\n this.wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(this.wrapper, this.element);\n }\n this.element.classList.remove('e-' + this.getModuleName());\n if (this.enableRtl) {\n this.wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([this.wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n };\n SplitButton.prototype.createPrimaryButton = function () {\n var btnModel = {\n cssClass: this.cssClass,\n enableRtl: this.enableRtl,\n iconCss: this.iconCss,\n iconPosition: this.iconPosition,\n content: this.content,\n disabled: this.disabled\n };\n this.primaryBtnObj = new Button(btnModel);\n this.primaryBtnObj.createElement = this.createElement;\n this.primaryBtnObj.appendTo(this.element);\n this.element.classList.add('e-' + this.getModuleName());\n this.element.type = 'button';\n this.wrapper.appendChild(this.element);\n };\n SplitButton.prototype.createSecondaryButton = function () {\n var _this = this;\n var btnElem = this.createElement('button', {\n className: 'e-icon-btn',\n attrs: { 'tabindex': '-1' },\n id: this.element.id + '_dropdownbtn'\n });\n this.wrapper.appendChild(btnElem);\n var dropDownBtnModel = {\n cssClass: this.cssClass,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n items: this.items,\n target: this.target,\n createPopupOnClick: this.createPopupOnClick\n };\n dropDownBtnModel.beforeItemRender = function (args) {\n if (_this.createPopupOnClick) {\n _this.secondaryBtnObj.dropDown.relateTo = _this.wrapper;\n _this.dropDown = _this.secondaryBtnObj.dropDown;\n }\n _this.trigger('beforeItemRender', args);\n };\n dropDownBtnModel.open = function (args) {\n _this.trigger('open', args);\n };\n dropDownBtnModel.close = function (args) {\n _this.trigger('close', args);\n };\n dropDownBtnModel.select = function (args) {\n _this.trigger('select', args);\n };\n dropDownBtnModel.beforeOpen = function (args) {\n if (_this.createPopupOnClick && _this.items.length == 0) {\n _this.secondaryBtnObj.dropDown.relateTo = _this.wrapper;\n _this.dropDown = _this.secondaryBtnObj.dropDown;\n }\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n dropDownBtnModel.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeClose', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n this.secondaryBtnObj = new DropDownButton(dropDownBtnModel);\n this.secondaryBtnObj.createElement = this.createElement;\n this.secondaryBtnObj.appendTo(btnElem);\n if (!this.createPopupOnClick) {\n this.secondaryBtnObj.dropDown.relateTo = this.wrapper;\n this.dropDown = this.secondaryBtnObj.dropDown;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.isPopupCreated = this.secondaryBtnObj.isPopupCreated;\n this.secondaryBtnObj.activeElem = [this.element, this.secondaryBtnObj.element];\n this.secondaryBtnObj.element.querySelector('.e-btn-icon').classList.remove('e-icon-right');\n if (this.disabled) {\n this.wrapper.classList.add('e-splitbtn-disabled');\n }\n };\n SplitButton.prototype.setAria = function () {\n attributes(this.element, {\n 'aria-expanded': 'false', 'aria-haspopup': 'true',\n 'aria-label': this.element.textContent ? this.element.textContent + ' splitbutton' : 'splitbutton', 'aria-owns': this.element.id + '_dropdownbtn-popup'\n });\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n SplitButton.prototype.getModuleName = function () {\n return 'split-btn';\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @returns {void}\n */\n SplitButton.prototype.toggle = function () {\n this.secondaryBtnObj.toggle();\n };\n SplitButton.prototype.destroy = function () {\n var _this = this;\n var classList = [RTL];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n if (this.element) {\n var element = document.getElementById(this.element.id);\n if (element && element.parentElement === this.wrapper) {\n if (this.wrapper.tagName === TAGNAME) {\n this.wrapper.innerHTML = '';\n removeClass([this.wrapper], ['e-rtl', 'e-' + this.getModuleName() + '-wrapper']);\n removeClass([this.wrapper], this.cssClass.split(' '));\n }\n else {\n removeClass([this.element], classList);\n ['aria-label', 'aria-haspopup', 'aria-expanded', 'aria-owns', 'type'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.wrapper.parentNode.insertBefore(this.element, this.wrapper);\n remove(this.wrapper);\n }\n this.unWireEvents();\n }\n }\n this.primaryBtnObj.destroy();\n this.secondaryBtnObj.destroy();\n _super.prototype.destroy.call(this);\n if (this.element && !this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.refreshing && this.isAngular) {\n this.element = this.wrapper;\n ['e-control', 'e-split-btn', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n this.wrapper = null;\n };\n SplitButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.primaryBtnClickHandler, this);\n new KeyboardEvents(this.element, {\n keyAction: this.btnKeyBoardHandler.bind(this),\n keyConfigs: {\n altdownarrow: 'alt+downarrow',\n enter: 'enter'\n }\n });\n };\n SplitButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.primaryBtnClickHandler);\n getInstance(this.element, KeyboardEvents).destroy();\n };\n SplitButton.prototype.primaryBtnClickHandler = function () {\n this.trigger('click', { element: this.element });\n };\n SplitButton.prototype.btnKeyBoardHandler = function (e) {\n switch (e.action) {\n case 'altdownarrow':\n this.clickHandler(e);\n break;\n case 'enter':\n this.clickHandler(e);\n if (this.getPopUpElement() && !this.getPopUpElement().classList.contains('e-popup-close')) {\n this.element.classList.remove('e-active');\n this.secondaryBtnObj.element.classList.add('e-active');\n }\n else {\n this.secondaryBtnObj.element.classList.remove('e-active');\n }\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SplitButtonModel} newProp - Specifies new properties\n * @param {SplitButtonModel} oldProp - Specifies old properties\n * @returns {void}\n */\n SplitButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var model = ['content', 'iconCss', 'iconPosition', 'cssClass', 'disabled', 'enableRtl'];\n this.primaryBtnObj.setProperties(getModel(newProp, model));\n model = ['beforeOpen', 'beforeItemRender', 'select', 'open',\n 'close', 'cssClass', 'disabled', 'enableRtl', 'createPopupOnClick'];\n if (Object.keys(newProp).indexOf('items') > -1) {\n this.secondaryBtnObj.items = newProp.items;\n this.secondaryBtnObj.dataBind();\n }\n this.secondaryBtnObj.setProperties(getModel(newProp, model));\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.wrapper], oldProp.cssClass.split(' '));\n }\n addClass([this.wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n addClass([this.wrapper], RTL);\n }\n else {\n removeClass([this.wrapper], RTL);\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n addClass([this.wrapper], 'e-splitbtn-disabled');\n }\n else {\n removeClass([this.wrapper], 'e-splitbtn-disabled');\n }\n }\n }\n };\n /**\n * Sets the focus to SplitButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n SplitButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], SplitButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], SplitButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], SplitButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(false)\n ], SplitButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Collection([], Item)\n ], SplitButton.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"created\", void 0);\n SplitButton = __decorate([\n NotifyPropertyChanges\n ], SplitButton);\n return SplitButton;\n}(DropDownButton));\nexport { SplitButton };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { L10n, Internationalization } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, setStyleAttribute, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, Browser, SanitizeHtmlHelper, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport { Tooltip, getZindexPartial } from '@syncfusion/ej2-popups';\n/**\n * Configures the ticks data of the Slider.\n */\nvar TicksData = /** @class */ (function (_super) {\n __extends(TicksData, _super);\n function TicksData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('None')\n ], TicksData.prototype, \"placement\", void 0);\n __decorate([\n Property(10)\n ], TicksData.prototype, \"largeStep\", void 0);\n __decorate([\n Property(1)\n ], TicksData.prototype, \"smallStep\", void 0);\n __decorate([\n Property(false)\n ], TicksData.prototype, \"showSmallTicks\", void 0);\n __decorate([\n Property(null)\n ], TicksData.prototype, \"format\", void 0);\n return TicksData;\n}(ChildProperty));\nexport { TicksData };\n/**\n * It illustrates the color track data in slider.\n * {% codeBlock src='slider/colorrange/index.md' %}{% endcodeBlock %}\n */\nvar ColorRangeData = /** @class */ (function (_super) {\n __extends(ColorRangeData, _super);\n function ColorRangeData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"end\", void 0);\n return ColorRangeData;\n}(ChildProperty));\nexport { ColorRangeData };\n/**\n * It illustrates the limit data in slider.\n * {% codeBlock src='slider/limits/index.md' %}{% endcodeBlock %}\n */\nvar LimitData = /** @class */ (function (_super) {\n __extends(LimitData, _super);\n function LimitData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LimitData.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"minStart\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"minEnd\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"maxStart\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"maxEnd\", void 0);\n __decorate([\n Property(false)\n ], LimitData.prototype, \"startHandleFixed\", void 0);\n __decorate([\n Property(false)\n ], LimitData.prototype, \"endHandleFixed\", void 0);\n return LimitData;\n}(ChildProperty));\nexport { LimitData };\n/**\n * It illustrates the tooltip data in slider.\n */\nvar TooltipData = /** @class */ (function (_super) {\n __extends(TooltipData, _super);\n function TooltipData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TooltipData.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Before')\n ], TooltipData.prototype, \"placement\", void 0);\n __decorate([\n Property('Focus')\n ], TooltipData.prototype, \"showOn\", void 0);\n __decorate([\n Property(false)\n ], TooltipData.prototype, \"isVisible\", void 0);\n __decorate([\n Property(null)\n ], TooltipData.prototype, \"format\", void 0);\n return TooltipData;\n}(ChildProperty));\nexport { TooltipData };\nvar bootstrapTooltipOffset = 6;\nvar bootstrap4TooltipOffset = 3;\nvar classNames = {\n root: 'e-slider',\n rtl: 'e-rtl',\n sliderHiddenInput: 'e-slider-input',\n controlWrapper: 'e-control-wrapper',\n sliderHandle: 'e-handle',\n rangeBar: 'e-range',\n sliderButton: 'e-slider-button',\n firstButton: 'e-first-button',\n secondButton: 'e-second-button',\n scale: 'e-scale',\n tick: 'e-tick',\n large: 'e-large',\n tickValue: 'e-tick-value',\n sliderTooltip: 'e-slider-tooltip',\n sliderHover: 'e-slider-hover',\n sliderFirstHandle: 'e-handle-first',\n sliderSecondHandle: 'e-handle-second',\n sliderDisabled: 'e-disabled',\n sliderContainer: 'e-slider-container',\n horizontalTooltipBefore: 'e-slider-horizontal-before',\n horizontalTooltipAfter: 'e-slider-horizontal-after',\n verticalTooltipBefore: 'e-slider-vertical-before',\n verticalTooltipAfter: 'e-slider-vertical-after',\n materialTooltip: 'e-material-tooltip',\n materialTooltipOpen: 'e-material-tooltip-open',\n materialTooltipActive: 'e-tooltip-active',\n materialSlider: 'e-material-slider',\n sliderTrack: 'e-slider-track',\n sliderHorizantalColor: 'e-slider-horizantal-color',\n sliderVerticalColor: 'e-slider-vertical-color',\n sliderHandleFocused: 'e-handle-focused',\n verticalSlider: 'e-vertical',\n horizontalSlider: 'e-horizontal',\n sliderHandleStart: 'e-handle-start',\n sliderTooltipStart: 'e-material-tooltip-start',\n sliderTabHandle: 'e-tab-handle',\n sliderButtonIcon: 'e-button-icon',\n sliderSmallSize: 'e-small-size',\n sliderTickPosition: 'e-tick-pos',\n sliderFirstTick: 'e-first-tick',\n sliderLastTick: 'e-last-tick',\n sliderButtonClass: 'e-slider-btn',\n sliderTooltipWrapper: 'e-tooltip-wrap',\n sliderTabTrack: 'e-tab-track',\n sliderTabRange: 'e-tab-range',\n sliderActiveHandle: 'e-handle-active',\n sliderMaterialHandle: 'e-material-handle',\n sliderMaterialRange: 'e-material-range',\n sliderMaterialDefault: 'e-material-default',\n materialTooltipShow: 'e-material-tooltip-show',\n materialTooltipHide: 'e-material-tooltip-hide',\n readonly: 'e-read-only',\n limits: 'e-limits',\n limitBarDefault: 'e-limit-bar',\n limitBarFirst: 'e-limit-first',\n limitBarSecond: 'e-limit-second',\n dragHorizontal: 'e-drag-horizontal',\n dragVertical: 'e-drag-vertical'\n};\n/**\n * The Slider component allows the user to select a value or range\n * of values in-between a min and max range, by dragging the handle over the slider bar.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Slider = /** @class */ (function (_super) {\n __extends(Slider, _super);\n function Slider(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.horDir = 'left';\n _this.verDir = 'bottom';\n _this.transition = {\n handle: 'left .4s cubic-bezier(.25, .8, .25, 1), right .4s cubic-bezier(.25, .8, .25, 1), ' +\n 'top .4s cubic-bezier(.25, .8, .25, 1) , bottom .4s cubic-bezier(.25, .8, .25, 1)',\n rangeBar: 'all .4s cubic-bezier(.25, .8, .25, 1)'\n };\n _this.transitionOnMaterialTooltip = {\n handle: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, top 1ms ease-out',\n rangeBar: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, width 1ms ease-out, height 1ms ease-out'\n };\n _this.scaleTransform = 'transform .4s cubic-bezier(.25, .8, .25, 1)';\n _this.customAriaText = null;\n _this.drag = true;\n _this.isDragComplete = false;\n _this.initialTooltip = true;\n return _this;\n }\n Slider.prototype.preRender = function () {\n // eslint-disable-next-line\n var localeText = { incrementTitle: 'Increase', decrementTitle: 'Decrease' };\n this.l10n = new L10n('slider', localeText, this.locale);\n this.isElementFocused = false;\n this.tickElementCollection = [];\n this.tooltipFormatInfo = {};\n this.ticksFormatInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.formChecker();\n };\n Slider.prototype.formChecker = function () {\n var formElement = closest(this.element, 'form');\n if (formElement) {\n this.isForm = true;\n // this condition needs to be checked, if the slider is going to be refreshed by `refresh()`\n // then we need to revert the slider `value` back to `formResetValue` to preserve the initial value\n if (!isNullOrUndefined(this.formResetValue)) {\n this.setProperties({ 'value': this.formResetValue }, true);\n }\n this.formResetValue = this.value;\n if (this.type === 'Range' &&\n (isNullOrUndefined(this.formResetValue) || typeof (this.formResetValue) !== 'object')) {\n this.formResetValue = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n else if (isNullOrUndefined(this.formResetValue)) {\n this.formResetValue = parseFloat(formatUnit(this.min));\n }\n this.formElement = formElement;\n }\n else {\n this.isForm = false;\n }\n };\n Slider.prototype.initCultureFunc = function () {\n this.internationalization = new Internationalization(this.locale);\n };\n Slider.prototype.initCultureInfo = function () {\n this.tooltipFormatInfo.format = (!isNullOrUndefined(this.tooltip.format)) ? this.tooltip.format : null;\n this.ticksFormatInfo.format = (!isNullOrUndefined(this.ticks.format)) ? this.ticks.format : null;\n };\n Slider.prototype.formatString = function (value, formatInfo) {\n var formatValue = null;\n var formatString = null;\n if ((value || value === 0)) {\n formatValue = this.formatNumber(value);\n var numberOfDecimals = this.numberOfDecimals(value);\n formatString = this.internationalization.getNumberFormat(formatInfo)(this.makeRoundNumber(value, numberOfDecimals));\n }\n return { elementVal: formatValue, formatString: formatString };\n };\n Slider.prototype.formatNumber = function (value) {\n var numberOfDecimals = this.numberOfDecimals(value);\n return this.internationalization.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(value);\n };\n Slider.prototype.numberOfDecimals = function (value) {\n var decimalPart = value.toString().split('.')[1];\n var numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n return numberOfDecimals;\n };\n Slider.prototype.makeRoundNumber = function (value, precision) {\n var decimals = precision || 0;\n return Number(value.toFixed(decimals));\n };\n Slider.prototype.fractionalToInteger = function (value) {\n value = (this.numberOfDecimals(value) === 0) ? Number(value).toFixed(this.noOfDecimals) : value;\n var tens = 1;\n for (var i = 0; i < this.noOfDecimals; i++) {\n tens *= 10;\n }\n value = Number((value * tens).toFixed(0));\n return value;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n */\n Slider.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.initRender();\n this.wireEvents();\n this.setZindex();\n this.renderComplete();\n if (this.element.tagName === 'EJS-SLIDER') {\n if (this.getTheme(this.sliderContainer) == 'none') {\n setTimeout(function () {\n _this.refresh();\n }, 0);\n }\n }\n };\n Slider.prototype.initialize = function () {\n addClass([this.element], classNames.root);\n this.setCSSClass();\n };\n Slider.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width) && !isNullOrUndefined(this.sliderContainer)) {\n if (typeof width === 'number') {\n this.sliderContainer.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.sliderContainer.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n Slider.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Slider.prototype.setEnabled = function () {\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.add(classNames.sliderDisabled);\n }\n this.unwireEvents();\n }\n else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.remove(classNames.sliderDisabled);\n }\n this.wireEvents();\n }\n };\n Slider.prototype.getTheme = function (container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n };\n /**\n * Initialize the rendering\n *\n * @private\n */\n Slider.prototype.initRender = function () {\n this.sliderContainer = this.createElement('div', { className: classNames.sliderContainer + ' ' + classNames.controlWrapper });\n this.element.parentNode.insertBefore(this.sliderContainer, this.element);\n this.sliderContainer.appendChild(this.element);\n this.sliderTrack = this.createElement('div', { className: classNames.sliderTrack });\n this.element.appendChild(this.sliderTrack);\n this.setElementWidth(this.width);\n this.element.tabIndex = -1;\n this.getThemeInitialization();\n this.setHandler();\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setOrientClass();\n this.hiddenInput = (this.createElement('input', {\n attrs: {\n type: 'hidden', value: (isNullOrUndefined(this.value) ? this.min.toString() : this.value.toString()),\n name: this.element.getAttribute('name') || this.element.getAttribute('id') ||\n '_' + (Math.random() * 1000).toFixed(0) + 'slider', class: classNames.sliderHiddenInput\n }\n }));\n this.hiddenInput.tabIndex = -1;\n this.sliderContainer.appendChild(this.hiddenInput);\n if (this.showButtons) {\n this.setButtons();\n }\n this.setEnableRTL();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n else {\n this.value = isNullOrUndefined(this.value) ? parseFloat(formatUnit(this.min.toString())) : this.value;\n }\n this.previousVal = this.type !== 'Range' ? this.checkHandleValue(parseFloat(formatUnit(this.value.toString()))) :\n [this.checkHandleValue(parseFloat(formatUnit(this.value[0].toString()))),\n this.checkHandleValue(parseFloat(formatUnit(this.value[1].toString())))];\n this.previousChanged = this.previousVal;\n if (!isNullOrUndefined(this.element.hasAttribute('name'))) {\n this.element.removeAttribute('name');\n }\n this.setValue();\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n }\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n }\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n if (this.readonly) {\n addClass([this.sliderContainer], [classNames.readonly]);\n }\n else {\n removeClass([this.sliderContainer], [classNames.readonly]);\n }\n };\n Slider.prototype.getThemeInitialization = function () {\n this.isMaterial = this.getTheme(this.sliderContainer) === 'material'\n || this.getTheme(this.sliderContainer) === 'material-dark';\n this.isMaterial3 = this.getTheme(this.sliderContainer) === 'Material3'\n || this.getTheme(this.sliderContainer) === 'Material3-dark';\n this.isBootstrap = this.getTheme(this.sliderContainer) === 'bootstrap'\n || this.getTheme(this.sliderContainer) === 'bootstrap-dark';\n this.isBootstrap4 = this.getTheme(this.sliderContainer) === 'bootstrap4';\n this.isTailwind = this.getTheme(this.sliderContainer) === 'tailwind' || this.getTheme(this.sliderContainer) === 'tailwind-dark';\n this.isBootstrap5 = this.getTheme(this.sliderContainer) === 'bootstrap5';\n this.isFluent = this.getTheme(this.sliderContainer) === 'FluentUI';\n this.isMaterialTooltip = (this.isMaterial || this.isMaterial3) && this.type !== 'Range' && this.tooltip.isVisible;\n };\n Slider.prototype.createRangeBar = function () {\n if (this.type !== 'Default') {\n this.rangeBar = (this.createElement('div', { attrs: { class: classNames.rangeBar } }));\n this.element.appendChild(this.rangeBar);\n if (this.drag && this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n this.rangeBar.classList.add(classNames.dragHorizontal);\n }\n else {\n this.rangeBar.classList.add(classNames.dragVertical);\n }\n }\n }\n };\n Slider.prototype.createLimitBar = function () {\n var firstElementClassName = this.type !== 'Range' ? classNames.limitBarDefault :\n classNames.limitBarFirst;\n firstElementClassName += ' ' + classNames.limits;\n this.limitBarFirst = (this.createElement('div', {\n attrs: { class: firstElementClassName }\n }));\n this.element.appendChild(this.limitBarFirst);\n if (this.type === 'Range') {\n this.limitBarSecond = (this.createElement('div', {\n attrs: {\n class: classNames.limitBarSecond + ' ' + classNames.limits\n }\n }));\n this.element.appendChild(this.limitBarSecond);\n }\n };\n Slider.prototype.setOrientClass = function () {\n if (this.orientation !== 'Vertical') {\n this.sliderContainer.classList.remove(classNames.verticalSlider);\n this.sliderContainer.classList.add(classNames.horizontalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'horizontal');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'horizontal');\n }\n }\n else {\n this.sliderContainer.classList.remove(classNames.horizontalSlider);\n this.sliderContainer.classList.add(classNames.verticalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'vertical');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'vertical');\n }\n }\n };\n Slider.prototype.setAriaAttributes = function (element) {\n var _this = this;\n var min = this.min;\n var max = this.max;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n min = this.customValues[0];\n max = this.customValues[this.customValues.length - 1];\n }\n if (this.type !== 'Range') {\n attributes(element, {\n 'aria-valuemin': min.toString(), 'aria-valuemax': max.toString()\n });\n }\n else {\n var range = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n [[min.toString(), (this.customValues[this.value[1]]).toString()],\n [(this.customValues[this.value[0]]).toString(), max.toString()]] :\n [[min.toString(), this.value[1].toString()], [this.value[0].toString(), max.toString()]];\n range.forEach(function (range, index) {\n var element = index === 0 ? _this.firstHandle : _this.secondHandle;\n if (element) {\n attributes(element, {\n 'aria-valuemin': range[0], 'aria-valuemax': range[1]\n });\n }\n });\n }\n };\n Slider.prototype.createSecondHandle = function () {\n this.secondHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle, 'role': 'slider', tabIndex: '0', 'aria-label': 'slider'\n }\n });\n this.secondHandle.classList.add(classNames.sliderSecondHandle);\n this.element.appendChild(this.secondHandle);\n };\n Slider.prototype.createFirstHandle = function () {\n this.firstHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle, 'role': 'slider', tabIndex: '0', 'aria-label': 'slider'\n }\n });\n this.firstHandle.classList.add(classNames.sliderFirstHandle);\n this.element.appendChild(this.firstHandle);\n if (this.isMaterialTooltip) {\n this.materialHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle + ' ' +\n classNames.sliderMaterialHandle\n }\n });\n this.element.appendChild(this.materialHandle);\n }\n };\n Slider.prototype.wireFirstHandleEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.firstHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.firstHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.firstHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.firstHandle, 'mouseleave touchend', this.handleLeave, this);\n }\n else {\n EventHandler.remove(this.firstHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.firstHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.firstHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.firstHandle, 'mouseleave touchend', this.handleLeave);\n }\n };\n Slider.prototype.wireSecondHandleEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.secondHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.secondHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.secondHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.secondHandle, 'mouseleave touchend', this.handleLeave, this);\n }\n else {\n EventHandler.remove(this.secondHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.secondHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.secondHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.secondHandle, 'mouseleave touchend', this.handleLeave);\n }\n };\n Slider.prototype.handleStart = function () {\n if (this.type !== 'Range') {\n this.firstHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.isMaterialTooltip) {\n this.materialHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.tooltipElement) {\n this.tooltipElement.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderTooltipStart);\n }\n }\n }\n };\n Slider.prototype.transitionEnd = function (e) {\n if (e.propertyName !== 'transform') {\n this.handleStart();\n if (!this.enableAnimation) {\n this.getHandle().style.transition = 'none';\n }\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n if ((this.isMaterial || this.isMaterial3) && this.tooltip.isVisible && this.type === 'Default') {\n this.tooltipElement.style.transition = this.transition.handle;\n }\n this.tooltipToggle(this.getHandle());\n this.closeTooltip();\n }\n };\n Slider.prototype.handleFocusOut = function () {\n if (this.firstHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.firstHandle.classList.remove(classNames.sliderHandleFocused);\n }\n if (this.type === 'Range') {\n if (this.secondHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.secondHandle.classList.remove(classNames.sliderHandleFocused);\n }\n }\n };\n Slider.prototype.handleFocus = function (e) {\n this.focusSliderElement();\n this.sliderBarClick(e);\n if (e.currentTarget === this.firstHandle) {\n this.firstHandle.classList.add(classNames.sliderHandleFocused);\n this.firstHandle.classList.add(classNames.sliderTabHandle);\n }\n else {\n this.secondHandle.classList.add(classNames.sliderHandleFocused);\n this.secondHandle.classList.add(classNames.sliderTabHandle);\n }\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n };\n Slider.prototype.handleOver = function (e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover') {\n this.tooltipToggle(e.currentTarget);\n }\n if (this.type === 'Default') {\n this.tooltipToggle(this.getHandle());\n }\n };\n Slider.prototype.handleLeave = function (e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover' &&\n !e.currentTarget.classList.contains(classNames.sliderHandleFocused) &&\n !e.currentTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeTooltip();\n }\n };\n Slider.prototype.setHandler = function () {\n this.createFirstHandle();\n if (this.type === 'Range') {\n this.createSecondHandle();\n }\n };\n Slider.prototype.setEnableRTL = function () {\n this.enableRtl && this.orientation !== 'Vertical' ? addClass([this.sliderContainer], classNames.rtl) :\n removeClass([this.sliderContainer], classNames.rtl);\n var preDir = (this.orientation !== 'Vertical') ? this.horDir : this.verDir;\n if (this.enableRtl) {\n this.horDir = 'right';\n this.verDir = 'bottom';\n }\n else {\n this.horDir = 'left';\n this.verDir = 'bottom';\n }\n var currDir = (this.orientation !== 'Vertical') ? this.horDir : this.verDir;\n if (preDir !== currDir) {\n if (this.orientation === 'Horizontal') {\n setStyleAttribute(this.firstHandle, { 'right': '', 'left': 'auto' });\n if (this.type === 'Range') {\n setStyleAttribute(this.secondHandle, { 'top': '', 'left': 'auto' });\n }\n }\n }\n this.setBarColor();\n };\n Slider.prototype.tooltipValue = function () {\n var _this = this;\n var text;\n var args = {\n value: this.value,\n text: ''\n };\n if (this.initialTooltip) {\n this.initialTooltip = false;\n this.setTooltipContent();\n args.text = text = (typeof (this.tooltipObj.content) === 'function' ? this.tooltipObj.content() : this.tooltipObj.content);\n this.trigger('tooltipChange', args, function (observedArgs) {\n _this.addTooltipClass(observedArgs.text);\n if (text !== observedArgs.text) {\n _this.customAriaText = observedArgs.text;\n if (_this.enableHtmlSanitizer) {\n observedArgs.text = SanitizeHtmlHelper.sanitize(observedArgs.text.toString());\n }\n else {\n observedArgs.text = observedArgs.text.toString();\n }\n var contentTemp = function () {\n return observedArgs.text;\n };\n _this.tooltipObj.content = initializeCSPTemplate(contentTemp);\n _this.setAriaAttrValue(_this.firstHandle);\n if (_this.type === 'Range') {\n _this.setAriaAttrValue(_this.secondHandle);\n }\n }\n });\n if (this.isMaterialTooltip) {\n this.setPreviousVal('change', this.value);\n }\n }\n };\n Slider.prototype.setTooltipContent = function () {\n var content;\n content = this.formatContent(this.tooltipFormatInfo, false);\n var contentTemp = function () {\n return content;\n };\n this.tooltipObj.content = initializeCSPTemplate(contentTemp);\n };\n Slider.prototype.formatContent = function (formatInfo, ariaContent) {\n var content = '';\n var handle1 = this.handleVal1;\n var handle2 = this.handleVal2;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n handle1 = this.customValues[this.handleVal1];\n handle2 = this.customValues[this.handleVal2];\n }\n if (!ariaContent) {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = (!isNullOrUndefined(formatInfo.format)) ? (this.formatString(handle2, formatInfo)\n .formatString + ' - ' + this.formatString(handle1, formatInfo).formatString) :\n (handle2.toString() + ' - ' + handle1.toString());\n }\n else {\n content = (!isNullOrUndefined(formatInfo.format)) ? (this.formatString(handle1, formatInfo)\n .formatString + ' - ' + this.formatString(handle2, formatInfo).formatString) :\n (handle1.toString() + ' - ' + handle2.toString());\n }\n }\n else {\n if (!isNullOrUndefined(handle1)) {\n content = (!isNullOrUndefined(formatInfo.format)) ?\n this.formatString(handle1, formatInfo).formatString : handle1.toString();\n }\n }\n return content;\n }\n else {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n (this.formatString(handle2, formatInfo).elementVal + ' - ' +\n this.formatString(handle1, formatInfo).elementVal) :\n (handle2.toString() + ' - ' + handle1.toString());\n }\n else {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n (this.formatString(handle1, formatInfo).elementVal + ' - ' +\n this.formatString(handle2, formatInfo).elementVal) :\n (handle1.toString() + ' - ' + handle2.toString());\n }\n }\n else {\n if (!isNullOrUndefined(handle1)) {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n this.formatString(handle1, formatInfo).elementVal : handle1.toString();\n }\n }\n return content;\n }\n };\n Slider.prototype.addTooltipClass = function (content) {\n if (this.isMaterialTooltip) {\n var count = content.toString().length;\n if (!this.tooltipElement) {\n var cssClass = count > 4 ? classNames.sliderMaterialRange : classNames.sliderMaterialDefault;\n this.tooltipObj.cssClass = classNames.sliderTooltip + ' ' + cssClass;\n }\n else {\n var cssClass = count > 4 ?\n { oldCss: classNames.sliderMaterialDefault, newCss: classNames.sliderMaterialRange } :\n { oldCss: classNames.sliderMaterialRange, newCss: classNames.sliderMaterialDefault };\n this.tooltipElement.classList.remove(cssClass.oldCss);\n if (!this.tooltipElement.classList.contains(cssClass.newCss)) {\n this.tooltipElement.classList.add(cssClass.newCss);\n this.tooltipElement.style.transform = count > 4 ? 'scale(1)' :\n this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n }\n };\n Slider.prototype.tooltipPlacement = function () {\n return this.orientation === 'Horizontal' ? (this.tooltip.placement === 'Before' ? 'TopCenter' : 'BottomCenter') :\n (this.tooltip.placement === 'Before' ? 'LeftCenter' : 'RightCenter');\n };\n Slider.prototype.tooltipBeforeOpen = function (args) {\n this.tooltipElement = args.element;\n if (this.tooltip.cssClass) {\n addClass([this.tooltipElement], this.tooltip.cssClass.split(' ').filter(function (css) { return css; }));\n }\n args.target.removeAttribute('aria-describedby');\n if (this.isMaterialTooltip) {\n this.tooltipElement.firstElementChild.classList.add(classNames.materialTooltipHide);\n this.handleStart();\n this.setTooltipTransform();\n }\n };\n Slider.prototype.tooltipCollision = function (position) {\n if (this.isBootstrap || this.isBootstrap4 || ((this.isMaterial || this.isMaterial3) && !this.isMaterialTooltip)) {\n var tooltipOffsetValue = this.isBootstrap4 ? bootstrap4TooltipOffset : bootstrapTooltipOffset;\n switch (position) {\n case 'TopCenter':\n this.tooltipObj.setProperties({ 'offsetY': -(tooltipOffsetValue) }, false);\n break;\n case 'BottomCenter':\n this.tooltipObj.setProperties({ 'offsetY': tooltipOffsetValue }, false);\n break;\n case 'LeftCenter':\n this.tooltipObj.setProperties({ 'offsetX': -(tooltipOffsetValue) }, false);\n break;\n case 'RightCenter':\n this.tooltipObj.setProperties({ 'offsetX': tooltipOffsetValue }, false);\n break;\n }\n }\n };\n Slider.prototype.materialTooltipEventCallBack = function (event) {\n this.sliderBarClick(event);\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n };\n Slider.prototype.wireMaterialTooltipEvent = function (destroy) {\n if (this.isMaterialTooltip) {\n if (!destroy) {\n EventHandler.add(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack, this);\n }\n else {\n EventHandler.remove(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack);\n }\n }\n };\n Slider.prototype.tooltipPositionCalculation = function (position) {\n var cssClass;\n switch (position) {\n case 'TopCenter':\n cssClass = classNames.horizontalTooltipBefore;\n break;\n case 'BottomCenter':\n cssClass = classNames.horizontalTooltipAfter;\n break;\n case 'LeftCenter':\n cssClass = classNames.verticalTooltipBefore;\n break;\n case 'RightCenter':\n cssClass = classNames.verticalTooltipAfter;\n break;\n }\n return cssClass;\n };\n Slider.prototype.getTooltipTransformProperties = function (className) {\n var transformProperties;\n if (this.tooltipElement) {\n var position = this.orientation === 'Horizontal' ?\n ((this.tooltipElement.clientHeight + 14) - (this.tooltipElement.clientHeight / 2)) :\n ((this.tooltipElement.clientWidth + 14) - (this.tooltipElement.clientWidth / 2));\n transformProperties = this.orientation === 'Horizontal' ?\n (className === classNames.horizontalTooltipBefore ? { rotate: 'rotate(45deg)', translate: \"translateY(\" + position + \"px)\" } :\n { rotate: 'rotate(225deg)', translate: \"translateY(\" + -(position) + \"px)\" }) :\n (className === classNames.verticalTooltipBefore ? { rotate: 'rotate(-45deg)', translate: \"translateX(\" + position + \"px)\" } :\n { rotate: 'rotate(-225deg)', translate: \"translateX(\" + (-position) + \"px)\" });\n }\n return transformProperties;\n };\n Slider.prototype.openMaterialTooltip = function () {\n var _this = this;\n if (this.isMaterialTooltip) {\n this.refreshTooltip(this.firstHandle);\n var tooltipContentElement = this.tooltipElement.firstElementChild;\n tooltipContentElement.classList.remove(classNames.materialTooltipHide);\n tooltipContentElement.classList.add(classNames.materialTooltipShow);\n this.firstHandle.style.cursor = 'default';\n this.tooltipElement.style.transition = this.scaleTransform;\n this.tooltipElement.classList.add(classNames.materialTooltipOpen);\n this.materialHandle.style.transform = 'scale(0)';\n if (tooltipContentElement.innerText.length > 4) {\n this.tooltipElement.style.transform = 'scale(1)';\n }\n else {\n this.tooltipElement.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n if (this.type === 'Default') {\n setTimeout(function () { if (_this.tooltipElement)\n _this.tooltipElement.style.transition = _this.transition.handle; }, 2500);\n }\n else {\n setTimeout(function () { if (_this.tooltipElement)\n _this.tooltipElement.style.transition = 'none'; }, 2500);\n }\n }\n };\n Slider.prototype.closeMaterialTooltip = function () {\n var _this = this;\n if (this.isMaterialTooltip) {\n var tooltipContentElement = this.tooltipElement.firstElementChild;\n this.tooltipElement.style.transition = this.scaleTransform;\n tooltipContentElement.classList.remove(classNames.materialTooltipShow);\n tooltipContentElement.classList.add(classNames.materialTooltipHide);\n this.firstHandle.style.cursor = '-webkit-grab';\n this.firstHandle.style.cursor = 'grab';\n if (this.materialHandle) {\n this.materialHandle.style.transform = 'scale(1)';\n }\n this.tooltipElement.classList.remove(classNames.materialTooltipOpen);\n this.setTooltipTransform();\n this.tooltipTarget = undefined;\n setTimeout(function () { if (_this.tooltipElement)\n _this.tooltipElement.style.transition = 'none'; }, 2500);\n }\n };\n Slider.prototype.checkTooltipPosition = function (args) {\n var tooltipClass = this.tooltipPositionCalculation(args.collidedPosition);\n if (this.tooltipCollidedPosition === undefined ||\n this.tooltipCollidedPosition !== args.collidedPosition || !args.element.classList.contains(tooltipClass)) {\n if (this.isMaterialTooltip) {\n if (tooltipClass !== undefined) {\n args.element.classList.remove(this.previousTooltipClass);\n args.element.classList.add(tooltipClass);\n this.previousTooltipClass = tooltipClass;\n }\n if (args.element.style.transform && args.element.classList.contains(classNames.materialTooltipOpen) &&\n args.element.firstElementChild.innerText.length <= 4) {\n args.element.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n this.tooltipCollidedPosition = args.collidedPosition;\n }\n if (this.isMaterialTooltip && this.tooltipElement && this.tooltipElement.style.transform.indexOf('translate') !== -1) {\n this.setTooltipTransform();\n }\n };\n Slider.prototype.setTooltipTransform = function () {\n var transformProperties = this.getTooltipTransformProperties(this.previousTooltipClass);\n if (isNullOrUndefined(this.tooltipElement))\n return;\n if (this.tooltipElement.firstElementChild.innerText.length > 4) {\n this.tooltipElement.style.transform = transformProperties.translate + \" scale(0.01)\";\n }\n else {\n this.tooltipElement.style.transform = transformProperties.translate + \" \" + transformProperties.rotate + \" scale(0.01)\";\n }\n };\n Slider.prototype.renderTooltip = function () {\n this.tooltipObj = new Tooltip({\n showTipPointer: this.isBootstrap || this.isMaterial || this.isMaterial3 || this.isBootstrap4 || this.isTailwind || this.isBootstrap5 || this.isFluent,\n cssClass: classNames.sliderTooltip,\n height: (this.isMaterial || this.isMaterial3) ? 30 : 'auto',\n animation: { open: { effect: 'None' }, close: { effect: 'FadeOut', duration: 500 } },\n opensOn: 'Custom',\n beforeOpen: this.tooltipBeforeOpen.bind(this),\n beforeCollision: this.checkTooltipPosition.bind(this),\n beforeClose: this.tooltipBeforeClose.bind(this),\n enableHtmlSanitizer: this.enableHtmlSanitizer\n });\n this.tooltipObj.appendTo(this.firstHandle);\n this.initializeTooltipProps();\n };\n Slider.prototype.initializeTooltipProps = function () {\n var tooltipShowOn = (this.tooltip.showOn === 'Auto' ? 'Hover' : this.tooltip.showOn);\n this.setProperties({ tooltip: { showOn: tooltipShowOn } }, true);\n this.tooltipObj.position = this.tooltipPlacement();\n this.tooltipCollision(this.tooltipObj.position);\n [this.firstHandle, this.rangeBar, this.secondHandle].forEach(function (handle) {\n if (!isNullOrUndefined(handle)) {\n handle.style.transition = 'none';\n }\n });\n if (this.isMaterialTooltip) {\n this.sliderContainer.classList.add(classNames.materialSlider);\n this.tooltipValue();\n this.tooltipObj.animation.close.effect = 'None';\n this.tooltipObj.open(this.firstHandle);\n }\n };\n Slider.prototype.tooltipBeforeClose = function () {\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n };\n Slider.prototype.setButtons = function () {\n this.firstBtn = this.createElement('div', { className: classNames.sliderButton + ' ' + classNames.firstButton });\n this.firstBtn.appendChild(this.createElement('span', { className: classNames.sliderButtonIcon }));\n if (this.isTailwind) {\n this.firstBtn.querySelector('span').classList.add('e-icons');\n }\n this.firstBtn.tabIndex = -1;\n this.secondBtn = this.createElement('div', { className: classNames.sliderButton + ' ' + classNames.secondButton });\n this.secondBtn.appendChild(this.createElement('span', { className: classNames.sliderButtonIcon }));\n if (this.isTailwind) {\n this.secondBtn.querySelector('span').classList.add('e-icons');\n }\n this.secondBtn.tabIndex = -1;\n this.sliderContainer.classList.add(classNames.sliderButtonClass);\n this.sliderContainer.appendChild(this.firstBtn);\n this.sliderContainer.appendChild(this.secondBtn);\n this.sliderContainer.appendChild(this.element);\n this.buttonTitle();\n };\n Slider.prototype.buttonTitle = function () {\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n this.l10n.setLocale(this.locale);\n var decrementTitle = this.l10n.getConstant('decrementTitle');\n var incrementTitle = this.l10n.getConstant('incrementTitle');\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, { 'aria-label': decrementTitle, title: decrementTitle });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, { 'aria-label': incrementTitle, title: incrementTitle });\n };\n Slider.prototype.buttonFocusOut = function () {\n if (this.isMaterial || this.isMaterial3) {\n this.getHandle().classList.remove('e-large-thumb-size');\n }\n };\n Slider.prototype.repeatButton = function (args) {\n var hVal = this.handleValueUpdate();\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n var value;\n if (args.target.parentElement.classList.contains(classNames.firstButton)\n || args.target.classList.contains(classNames.firstButton)) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), false));\n }\n else if (args.target.parentElement.classList.contains(classNames.secondButton)\n || (args.target.classList.contains(classNames.secondButton))) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), true));\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n if (value >= this.min && value <= this.max) {\n this.changeHandleValue(value);\n this.tooltipToggle(this.getHandle());\n }\n };\n Slider.prototype.repeatHandlerMouse = function (args) {\n args.preventDefault();\n if (args.type === ('mousedown') || args.type === ('touchstart')) {\n this.buttonClick(args);\n this.repeatInterval = setInterval(this.repeatButton.bind(this), 180, args);\n }\n };\n Slider.prototype.materialChange = function () {\n if (!this.getHandle().classList.contains('e-large-thumb-size')) {\n this.getHandle().classList.add('e-large-thumb-size');\n }\n };\n Slider.prototype.focusHandle = function () {\n if (!this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.getHandle().classList.add(classNames.sliderTabHandle);\n }\n };\n Slider.prototype.repeatHandlerUp = function (e) {\n this.changeEvent('changed', e);\n this.closeTooltip();\n clearInterval(this.repeatInterval);\n this.getHandle().focus();\n };\n Slider.prototype.customTickCounter = function (bigNum) {\n var tickCount = 4;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n if (bigNum > 4) {\n tickCount = 3;\n }\n if (bigNum > 7) {\n tickCount = 2;\n }\n if (bigNum > 14) {\n tickCount = 1;\n }\n if (bigNum > 28) {\n tickCount = 0;\n }\n }\n return tickCount;\n };\n // tslint:disable-next-line:max-func-body-length\n Slider.prototype.renderScale = function () {\n var liElementPosition = 0;\n var orien = this.orientation === 'Vertical' ? 'v' : 'h';\n var spanText;\n this.noOfDecimals = this.numberOfDecimals(this.step);\n this.ul = this.createElement('ul', {\n className: classNames.scale + ' ' + 'e-' + orien + '-scale ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', tabIndex: '-1', 'aria-hidden': 'true' }\n });\n this.ul.style.zIndex = '-1';\n if (Browser.isAndroid && orien === 'h') {\n this.ul.classList.add(classNames.sliderTickPosition);\n }\n var smallStep = this.ticks.smallStep;\n if (!this.ticks.showSmallTicks) {\n this.ticks.largeStep > 0 ? (smallStep = this.ticks.largeStep) :\n (smallStep = (parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min))));\n }\n else if (smallStep <= 0) {\n smallStep = parseFloat(formatUnit(this.step));\n }\n var min = this.fractionalToInteger(this.min);\n var max = this.fractionalToInteger(this.max);\n var steps = this.fractionalToInteger(smallStep);\n var bigNum = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 && this.customValues.length - 1;\n var customStep = this.customTickCounter(bigNum);\n var count = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n (bigNum * customStep) + bigNum : Math.abs((max - min) / steps);\n this.element.appendChild(this.ul);\n var li;\n var start = parseFloat(this.min.toString());\n if (orien === 'v') {\n start = parseFloat(this.max.toString());\n }\n var left = 0;\n var islargeTick;\n var tickWidth = 100 / count;\n if (tickWidth === Infinity) {\n tickWidth = 5;\n }\n for (var i = 0, y = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n this.customValues.length - 1 : 0, k = 0; i <= count; i++) {\n li = (this.createElement('li', {\n attrs: {\n class: classNames.tick, role: 'presentation', tabIndex: '-1',\n 'aria-hidden': 'true'\n }\n }));\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n islargeTick = i % (customStep + 1) === 0;\n if (islargeTick) {\n if (orien === 'h') {\n start = this.customValues[k];\n k++;\n }\n else {\n start = this.customValues[y];\n y--;\n }\n li.setAttribute('title', start.toString());\n }\n }\n else {\n li.setAttribute('title', start.toString());\n if (this.numberOfDecimals(this.max) === 0 && this.numberOfDecimals(this.min) === 0 &&\n this.numberOfDecimals(this.step) === 0) {\n if (orien === 'h') {\n islargeTick = ((start - parseFloat(this.min.toString())) % this.ticks.largeStep === 0) ? true : false;\n }\n else {\n islargeTick = (Math.abs(start - parseFloat(this.max.toString())) % this.ticks.largeStep === 0) ? true : false;\n }\n }\n else {\n var largestep = this.fractionalToInteger(this.ticks.largeStep);\n var startValue = this.fractionalToInteger(start);\n if (orien === 'h') {\n islargeTick = ((startValue - min) % largestep === 0) ? true : false;\n }\n else {\n islargeTick = (Math.abs(startValue - parseFloat(max.toString())) % largestep === 0) ? true : false;\n }\n }\n }\n if (islargeTick) {\n li.classList.add(classNames.large);\n }\n (orien === 'h') ? (li.style.width = tickWidth + '%') : (li.style.height = tickWidth + '%');\n var repeat = islargeTick ? (this.ticks.placement === 'Both' ? 2 : 1) : 0;\n if (islargeTick) {\n for (var j = 0; j < repeat; j++) {\n this.createTick(li, start, tickWidth);\n }\n }\n else if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start);\n }\n this.ul.appendChild(li);\n this.tickElementCollection.push(li);\n var decimalPoints = void 0;\n if (isNullOrUndefined(this.customValues)) {\n if (this.numberOfDecimals(smallStep) > this.numberOfDecimals(start)) {\n decimalPoints = this.numberOfDecimals(smallStep);\n }\n else {\n decimalPoints = this.numberOfDecimals(start);\n }\n if (orien === 'h') {\n start = this.makeRoundNumber(start + smallStep, decimalPoints);\n }\n else {\n if (this.min > this.max) {\n start = this.makeRoundNumber(start + smallStep, decimalPoints);\n }\n else {\n start = this.makeRoundNumber(start - smallStep, decimalPoints);\n }\n }\n left = this.makeRoundNumber(left + smallStep, decimalPoints);\n }\n }\n this.ticksAlignment(orien, tickWidth);\n };\n Slider.prototype.ticksAlignment = function (orien, tickWidth, triggerEvent) {\n if (triggerEvent === void 0) { triggerEvent = true; }\n this.firstChild = this.ul.firstElementChild;\n this.lastChild = this.ul.lastElementChild;\n this.firstChild.classList.add(classNames.sliderFirstTick);\n this.lastChild.classList.add(classNames.sliderLastTick);\n this.sliderContainer.classList.add(classNames.scale + '-' + this.ticks.placement.toLowerCase());\n if (orien === 'h') {\n this.firstChild.style.width = tickWidth / 2 + '%';\n this.lastChild.style.width = tickWidth / 2 + '%';\n }\n else {\n this.firstChild.style.height = tickWidth / 2 + '%';\n this.lastChild.style.height = tickWidth / 2 + '%';\n }\n var eventArgs = { ticksWrapper: this.ul, tickElements: this.tickElementCollection };\n if (triggerEvent) {\n this.trigger('renderedTicks', eventArgs);\n }\n this.scaleAlignment();\n };\n Slider.prototype.createTick = function (li, start, tickWidth) {\n var span = this.createElement('span', {\n className: classNames.tickValue + ' ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', tabIndex: '-1', 'aria-hidden': 'true' }\n });\n li.appendChild(span);\n if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start, span, tickWidth);\n }\n else {\n if (this.enableHtmlSanitizer) {\n span.innerHTML = SanitizeHtmlHelper.sanitize(start.toString());\n }\n else {\n span.innerHTML = start.toString();\n }\n }\n };\n Slider.prototype.formatTicksValue = function (li, start, spanElement, tickWidth) {\n var _this = this;\n var tickText = this.formatNumber(start);\n var text = !isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format) ?\n this.formatString(start, this.ticksFormatInfo).formatString : tickText;\n var eventArgs = { value: start, text: text, tickElement: li };\n this.trigger('renderingTicks', eventArgs, function (observedArgs) {\n li.setAttribute('title', observedArgs.text.toString());\n if (spanElement) {\n if (_this.enableHtmlSanitizer) {\n spanElement.innerHTML = SanitizeHtmlHelper.sanitize(observedArgs.text.toString());\n }\n else {\n spanElement.innerHTML = observedArgs.text.toString();\n }\n }\n });\n };\n Slider.prototype.scaleAlignment = function () {\n this.tickValuePosition();\n var smallTick = 12;\n var largeTick = 20;\n var half = largeTick / 2;\n var orien = this.orientation === 'Vertical' ? 'v' : 'h';\n if (this.orientation === 'Vertical') {\n (this.element.getBoundingClientRect().width <= 15) ?\n this.sliderContainer.classList.add(classNames.sliderSmallSize) :\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n else {\n (this.element.getBoundingClientRect().height <= 15) ?\n this.sliderContainer.classList.add(classNames.sliderSmallSize) :\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n };\n Slider.prototype.tickValuePosition = function () {\n this.firstChild = this.element.querySelector('ul').children[0];\n var first = this.firstChild.getBoundingClientRect();\n var firstChild;\n var otherChild;\n var smallStep = this.ticks.smallStep;\n var count = Math.abs((parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min)))) / smallStep;\n if (this.firstChild.children.length > 0) {\n firstChild = this.firstChild.children[0].getBoundingClientRect();\n }\n var tickElements = [this.sliderContainer.querySelectorAll('.' + classNames.tick + '.' +\n classNames.large + ' .' + classNames.tickValue)];\n var other;\n if (this.ticks.placement === 'Both') {\n other = [].slice.call(tickElements[0], 2);\n }\n else {\n other = [].slice.call(tickElements[0], 1);\n }\n var tickWidth = this.orientation === 'Vertical' ?\n (first.height * 2) : (first.width * 2);\n for (var i = 0; i < this.firstChild.children.length; i++) {\n if (this.orientation === 'Vertical') {\n this.firstChild.children[i].style.top = -(firstChild.height / 2) + 'px';\n }\n else {\n if (!this.enableRtl) {\n this.firstChild.children[i].style.left = -(firstChild.width / 2) + 'px';\n }\n else {\n this.firstChild.children[i].style.left = (tickWidth -\n this.firstChild.children[i].getBoundingClientRect().width) / 2 + 'px';\n }\n }\n }\n for (var i = 0; i < other.length; i++) {\n otherChild = other[i].getBoundingClientRect();\n if (this.orientation === 'Vertical') {\n setStyleAttribute(other[i], { top: (tickWidth - otherChild.height) / 2 + 'px' });\n }\n else {\n setStyleAttribute(other[i], { left: (tickWidth - otherChild.width) / 2 + 'px' });\n }\n }\n if (this.enableRtl && this.lastChild.children.length && count !== 0) {\n this.lastChild.children[0].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n if (this.ticks.placement === 'Both') {\n this.lastChild.children[1].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n }\n }\n if (count === 0) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.left = this.firstHandle.style.left;\n }\n else {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.right = this.firstHandle.style.right;\n this.firstChild.children[0].style.left =\n (this.firstChild.getBoundingClientRect().width / 2) + 2 + 'px';\n if (this.ticks.placement === 'Both') {\n this.firstChild.children[1].style.left =\n (this.firstChild.getBoundingClientRect().width / 2) + 2 + 'px';\n }\n }\n }\n if (this.orientation === 'Vertical') {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n }\n }\n };\n Slider.prototype.setAriaAttrValue = function (element) {\n var ariaValueText;\n var isTickFormatted = ((!isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format))) ? true : false;\n var text = !isTickFormatted ?\n this.formatContent(this.ticksFormatInfo, false) : this.formatContent(this.tooltipFormatInfo, false);\n var valuenow = isTickFormatted ? this.formatContent(this.ticksFormatInfo, true) :\n this.formatContent(this.tooltipFormatInfo, true);\n text = (!this.customAriaText) ? (text) : (this.customAriaText);\n if (text.split(' - ').length === 2) {\n ariaValueText = text.split(' - ');\n }\n else {\n ariaValueText = [text, text];\n }\n this.setAriaAttributes(element);\n if (this.type !== 'Range') {\n attributes(element, { 'aria-valuenow': valuenow, 'aria-valuetext': text });\n }\n else {\n // eslint-disable-next-line\n (!this.enableRtl) ? ((element === this.firstHandle) ?\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] }) :\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] })) :\n ((element === this.firstHandle) ?\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] }) :\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] }));\n }\n };\n Slider.prototype.handleValueUpdate = function () {\n var hVal;\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n hVal = this.handleVal1;\n }\n else {\n hVal = this.handleVal2;\n }\n }\n else {\n hVal = this.handleVal1;\n }\n return hVal;\n };\n Slider.prototype.getLimitCorrectedValues = function (value) {\n if (this.type === 'MinRange' || this.type === 'Default') {\n value = (this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd))[0];\n }\n else {\n if (this.activeHandle === 1) {\n value = (this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd))[0];\n }\n else {\n value = (this.getLimitValueAndPosition(value, this.limits.maxStart, this.limits.maxEnd))[0];\n }\n }\n return value;\n };\n Slider.prototype.focusSliderElement = function () {\n if (!this.isElementFocused) {\n this.element.focus();\n this.isElementFocused = true;\n }\n };\n Slider.prototype.buttonClick = function (args) {\n this.focusSliderElement();\n var value;\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n var hVal = this.handleValueUpdate();\n if ((args.keyCode === 40) || (args.keyCode === 37)\n || args.currentTarget.classList.contains(classNames.firstButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), false));\n }\n else if ((args.keyCode === 38) || (args.keyCode === 39) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), true));\n }\n else if ((args.keyCode === 33\n || args.currentTarget.classList.contains(classNames.firstButton))) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true));\n }\n else if ((args.keyCode === 34) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false));\n }\n else if ((args.keyCode === 36)) {\n value = parseFloat(this.min < this.max ? this.min.toString() : this.max.toString());\n }\n else if ((args.keyCode === 35)) {\n value = parseFloat(this.min < this.max ? this.max.toString() : this.min.toString());\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n this.changeHandleValue(value);\n if ((this.isMaterial || this.isMaterial3) && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n this.getHandle().focus();\n this.focusHandle();\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.add(this.firstBtn, 'mouseup touchend', this.buttonUp, this);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.add(this.secondBtn, 'mouseup touchend', this.buttonUp, this);\n }\n };\n Slider.prototype.tooltipToggle = function (target) {\n if (this.isMaterialTooltip) {\n // eslint-disable-next-line\n !this.tooltipElement.classList.contains(classNames.materialTooltipOpen) ?\n this.openMaterialTooltip() : this.refreshTooltip(this.firstHandle);\n }\n else {\n // eslint-disable-next-line\n !this.tooltipElement ? this.openTooltip(target) : this.refreshTooltip(target);\n }\n };\n Slider.prototype.buttonUp = function (args) {\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.remove(this.firstBtn, 'mouseup touchend', this.buttonUp);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.remove(this.secondBtn, 'mouseup touchend', this.buttonUp);\n }\n };\n Slider.prototype.setRangeBar = function () {\n if (this.orientation === 'Horizontal' && !isNullOrUndefined(this.rangeBar)) {\n if (this.type === 'MinRange') {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right = '0px') : (this.rangeBar.style.left = '0px');\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right =\n this.handlePos1 + 'px') : (this.rangeBar.style.left = this.handlePos1 + 'px');\n setStyleAttribute(this.rangeBar, { 'width': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n else if (!isNullOrUndefined(this.rangeBar)) {\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos1 + 'px' : '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.min > this.max ? this.element.clientHeight - this.handlePos1 + 'px' : this.handlePos1 + 'px' });\n }\n else {\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos2 + 'px' : this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.min > this.max ? this.handlePos1 - this.handlePos2 + 'px' : this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n };\n Slider.prototype.checkValidValueAndPos = function (value) {\n value = this.checkHandleValue(value);\n value = this.checkHandlePosition(value);\n return value;\n };\n Slider.prototype.setLimitBarPositions = function (fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarFirst.style.left = fromMinPostion + 'px';\n this.limitBarFirst.style.width = (fromMaxpostion - fromMinPostion) + 'px';\n }\n else {\n this.limitBarFirst.style.right = fromMinPostion + 'px';\n this.limitBarFirst.style.width = (fromMaxpostion - fromMinPostion) + 'px';\n }\n }\n else {\n this.limitBarFirst.style.bottom = (this.min < this.max ? fromMinPostion : fromMaxpostion) + 'px';\n this.limitBarFirst.style.height = (this.min < this.max ? (fromMaxpostion - fromMinPostion) : (fromMinPostion - fromMaxpostion)) + 'px';\n }\n if (this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarSecond.style.left = toMinPostion + 'px';\n this.limitBarSecond.style.width = (toMaxpostion - toMinPostion) + 'px';\n }\n else {\n this.limitBarSecond.style.right = toMinPostion + 'px';\n this.limitBarSecond.style.width = (toMaxpostion - toMinPostion) + 'px';\n }\n }\n else {\n this.limitBarSecond.style.bottom = (this.min < this.max ? toMinPostion : toMaxpostion) + 'px';\n this.limitBarSecond.style.height = (this.min < this.max ? (toMaxpostion - toMinPostion) : (toMinPostion - toMaxpostion)) + 'px';\n }\n }\n };\n Slider.prototype.setLimitBar = function () {\n if (this.type === 'Default' || this.type === 'MinRange') {\n var fromPosition = (this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true))[0];\n fromPosition = this.checkValidValueAndPos(fromPosition);\n var toPosition = (this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true))[0];\n toPosition = this.checkValidValueAndPos(toPosition);\n this.setLimitBarPositions(fromPosition, toPosition);\n }\n else if (this.type === 'Range') {\n var fromMinPostion = (this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true))[0];\n fromMinPostion = this.checkValidValueAndPos(fromMinPostion);\n var fromMaxpostion = (this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true))[0];\n fromMaxpostion = this.checkValidValueAndPos(fromMaxpostion);\n var toMinPostion = (this.getLimitValueAndPosition(this.limits.maxStart, this.limits.maxStart, this.limits.maxEnd, true))[0];\n toMinPostion = this.checkValidValueAndPos(toMinPostion);\n var toMaxpostion = (this.getLimitValueAndPosition(this.limits.maxEnd, this.limits.maxStart, this.limits.maxEnd, true))[0];\n toMaxpostion = this.checkValidValueAndPos(toMaxpostion);\n this.setLimitBarPositions(fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion);\n }\n };\n Slider.prototype.getLimitValueAndPosition = function (currentValue, minValue, maxValue, limitBar) {\n if (isNullOrUndefined(minValue)) {\n minValue = this.min < this.max ? this.min : this.max;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = minValue;\n }\n }\n if (isNullOrUndefined(maxValue)) {\n maxValue = this.min < this.max ? this.max : this.min;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = maxValue;\n }\n }\n if (currentValue < minValue) {\n currentValue = minValue;\n }\n if (currentValue > maxValue) {\n currentValue = maxValue;\n }\n return [currentValue, this.checkHandlePosition(currentValue)];\n };\n Slider.prototype.setValue = function () {\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n this.min = 0;\n this.max = this.customValues.length - 1;\n this.setBarColor();\n }\n this.setAriaAttributes(this.firstHandle);\n this.handleVal1 = isNullOrUndefined(this.value) ? this.checkHandleValue(parseFloat(this.min.toString())) :\n this.checkHandleValue(parseFloat(this.value.toString()));\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.preHandlePos1 = this.handlePos1;\n // eslint-disable-next-line\n isNullOrUndefined(this.activeHandle) ? (this.type === 'Range' ? this.activeHandle = 2 : this.activeHandle = 1) :\n // eslint-disable-next-line no-self-assign\n this.activeHandle = this.activeHandle;\n if (this.type === 'Default' || this.type === 'MinRange') {\n if (this.limits.enabled) {\n var values = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values[0];\n this.handlePos1 = values[1];\n this.preHandlePos1 = this.handlePos1;\n }\n this.setHandlePosition(null);\n this.handleStart();\n this.value = this.handleVal1;\n this.setAriaAttrValue(this.firstHandle);\n this.changeEvent('changed', null);\n }\n else {\n this.validateRangeValue();\n }\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n };\n Slider.prototype.rangeValueUpdate = function () {\n if (this.value === null || typeof (this.value) !== 'object') {\n this.value = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n };\n Slider.prototype.validateRangeValue = function () {\n this.rangeValueUpdate();\n this.setRangeValue();\n };\n Slider.prototype.modifyZindex = function () {\n if (this.type === 'Range' && !isNullOrUndefined(this.firstHandle) && !isNullOrUndefined(this.secondHandle)) {\n if (this.activeHandle === 1) {\n this.firstHandle.style.zIndex = (this.zIndex + 4) + '';\n this.secondHandle.style.zIndex = (this.zIndex + 3) + '';\n }\n else {\n this.firstHandle.style.zIndex = (this.zIndex + 3) + '';\n this.secondHandle.style.zIndex = (this.zIndex + 4) + '';\n }\n }\n else if (this.isMaterialTooltip && this.tooltipElement) {\n this.tooltipElement.style.zIndex = getZindexPartial(this.element) + '';\n }\n };\n Slider.prototype.setHandlePosition = function (event) {\n var _this = this;\n var handle;\n var pos = (this.activeHandle === 1) ? this.handlePos1 : this.handlePos2;\n if (this.isMaterialTooltip) {\n handle = [this.firstHandle, this.materialHandle];\n }\n else {\n handle = [this.getHandle()];\n }\n this.handleStart();\n handle.forEach(function (handle) {\n if (_this.orientation === 'Horizontal') {\n // eslint-disable-next-line\n _this.enableRtl ? (handle.style.right =\n pos + \"px\") : (handle.style.left = pos + \"px\");\n }\n else {\n handle.style.bottom = pos + \"px\";\n }\n });\n this.changeEvent('change', event);\n };\n Slider.prototype.getHandle = function () {\n return (this.activeHandle === 1) ? this.firstHandle : this.secondHandle;\n };\n Slider.prototype.setRangeValue = function () {\n this.updateRangeValue();\n this.activeHandle = 1;\n this.setHandlePosition(null);\n this.activeHandle = 2;\n this.setHandlePosition(null);\n this.activeHandle = 1;\n };\n Slider.prototype.changeEvent = function (eventName, e) {\n var previous = eventName === 'change' ? this.previousVal : this.previousChanged;\n if (this.type !== 'Range') {\n this.setProperties({ 'value': this.handleVal1 }, true);\n if (previous !== this.value && (!this.isMaterialTooltip || !this.initialTooltip)) {\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.initialTooltip = true;\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.firstHandle);\n }\n else {\n var value = this.value = [this.handleVal1, this.handleVal2];\n this.setProperties({ 'value': value }, true);\n if (previous.length === this.value.length\n && this.value[0] !== previous[0] || this.value[1] !== previous[1]) {\n this.initialTooltip = false;\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.initialTooltip = true;\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.getHandle());\n }\n this.hiddenInput.value = this.value.toString();\n };\n Slider.prototype.changeEventArgs = function (eventName, e) {\n var eventArgs;\n if (this.tooltip.isVisible && this.tooltipObj && this.initialTooltip) {\n this.tooltipValue();\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName, text: (typeof (this.tooltipObj.content) === 'function' ? this.tooltipObj.content() : this.tooltipObj.content), isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n else {\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName, text: isNullOrUndefined(this.ticksFormatInfo.format) ? this.value.toString() :\n (this.type !== 'Range' ? this.formatString(this.value, this.ticksFormatInfo).formatString :\n (this.formatString(this.value[0], this.ticksFormatInfo).formatString + ' - ' +\n this.formatString(this.value[1], this.ticksFormatInfo).formatString)),\n isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n return eventArgs;\n };\n Slider.prototype.setPreviousVal = function (eventName, value) {\n if (eventName === 'change') {\n this.previousVal = value;\n }\n else {\n this.previousChanged = value;\n }\n };\n Slider.prototype.updateRangeValue = function () {\n var values = this.value.toString().split(',').map(Number);\n if ((this.enableRtl && this.orientation !== 'Vertical') || this.rtl) {\n this.value = [values[1], values[0]];\n }\n else {\n this.value = [values[0], values[1]];\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n this.handleVal1 = this.checkHandleValue(this.value[1]);\n this.handleVal2 = this.checkHandleValue(this.value[0]);\n }\n else {\n this.handleVal1 = this.checkHandleValue(this.value[0]);\n this.handleVal2 = this.checkHandleValue(this.value[1]);\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.min < this.max && this.handlePos1 > this.handlePos2) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n if (this.min > this.max && this.handlePos1 < this.handlePos2) {\n this.handlePos2 = this.handlePos1;\n this.handleVal2 = this.handleVal1;\n }\n this.preHandlePos1 = this.handlePos1;\n this.preHandlePos2 = this.handlePos2;\n if (this.limits.enabled) {\n this.activeHandle = 1;\n var values_1 = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values_1[0];\n this.handlePos1 = values_1[1];\n this.preHandlePos1 = this.handlePos1;\n this.activeHandle = 2;\n values_1 = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = values_1[0];\n this.handlePos2 = values_1[1];\n this.preHandlePos2 = this.handlePos2;\n }\n };\n Slider.prototype.checkHandlePosition = function (value) {\n var pos;\n value = (100 *\n (value - (parseFloat(formatUnit(this.min))))) / ((parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min))));\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (value / 100);\n }\n else {\n pos = this.element.getBoundingClientRect().height * (value / 100);\n }\n if (((parseFloat(formatUnit(this.max))) === (parseFloat(formatUnit(this.min))))) {\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width;\n }\n else {\n pos = this.element.getBoundingClientRect().height;\n }\n }\n return pos;\n };\n Slider.prototype.checkHandleValue = function (value) {\n if (this.min === this.max) {\n return (parseFloat(formatUnit(this.max)));\n }\n var handle = this.tempStartEnd();\n if (value < handle.start) {\n value = handle.start;\n }\n else if (value > handle.end) {\n value = handle.end;\n }\n return value;\n };\n /**\n * It is used to reposition slider.\n *\n * @returns void\n */\n Slider.prototype.reposition = function () {\n var _this = this;\n if (!isNullOrUndefined(this.firstHandle))\n this.firstHandle.style.transition = 'none';\n if (this.type !== 'Default' && !isNullOrUndefined(this.rangeBar)) {\n this.rangeBar.style.transition = 'none';\n }\n if (this.type === 'Range' && !isNullOrUndefined(this.secondHandle)) {\n this.secondHandle.style.transition = 'none';\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.handleVal2) {\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n }\n if (this.orientation === 'Horizontal') {\n // eslint-disable-next-line\n this.enableRtl ? this.firstHandle.style.right =\n this.handlePos1 + \"px\" : this.firstHandle.style.left = this.handlePos1 + \"px\";\n if (this.isMaterialTooltip && !isNullOrUndefined(this.materialHandle)) {\n // eslint-disable-next-line\n this.enableRtl ? this.materialHandle.style.right =\n this.handlePos1 + \"px\" : this.materialHandle.style.left = this.handlePos1 + \"px\";\n }\n if (this.type === 'MinRange' && !isNullOrUndefined(this.rangeBar)) {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right = '0px') : (this.rangeBar.style.left = '0px');\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range' && !isNullOrUndefined(this.secondHandle) && !isNullOrUndefined(this.rangeBar)) {\n // eslint-disable-next-line\n this.enableRtl ? this.secondHandle.style.right =\n this.handlePos2 + \"px\" : this.secondHandle.style.left = this.handlePos2 + \"px\";\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right =\n this.handlePos1 + 'px') : (this.rangeBar.style.left = this.handlePos1 + 'px');\n setStyleAttribute(this.rangeBar, { 'width': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n else {\n this.firstHandle.style.bottom = this.handlePos1 + \"px\";\n if (this.isMaterialTooltip) {\n this.materialHandle.style.bottom = this.handlePos1 + \"px\";\n }\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos1 + 'px' : '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.min > this.max ? this.element.clientHeight - this.handlePos1 + 'px' : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range') {\n this.secondHandle.style.bottom = this.handlePos2 + \"px\";\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos2 + 'px' : this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.min > this.max ? this.handlePos1 - this.handlePos2 + 'px' : this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None' && this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n this.handleStart();\n if (!this.tooltip.isVisible) {\n setTimeout(function () {\n if (!isNullOrUndefined(_this.firstHandle))\n _this.firstHandle.style.transition = _this.scaleTransform;\n if (_this.type === 'Range' && !isNullOrUndefined(_this.secondHandle)) {\n _this.secondHandle.style.transition = _this.scaleTransform;\n }\n });\n }\n this.refreshTooltip(this.tooltipTarget);\n this.setBarColor();\n };\n Slider.prototype.changeHandleValue = function (value) {\n var position = null;\n if (this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n this.handleVal1 = this.checkHandleValue(value);\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.type === 'Range' && ((this.handlePos1 > this.handlePos2 && this.min < this.max) || (this.handlePos1 < this.handlePos2 && this.min > this.max))) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n if (this.handlePos1 !== this.preHandlePos1) {\n position = this.preHandlePos1 = this.handlePos1;\n }\n }\n this.modifyZindex();\n }\n else {\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n this.handleVal2 = this.checkHandleValue(value);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.type === 'Range' && ((this.handlePos2 < this.handlePos1 && this.min < this.max) || (this.handlePos2 > this.handlePos1 && this.min > this.max))) {\n this.handlePos2 = this.handlePos1;\n this.handleVal2 = this.handleVal1;\n }\n if (this.handlePos2 !== this.preHandlePos2) {\n position = this.preHandlePos2 = this.handlePos2;\n }\n }\n this.modifyZindex();\n }\n if (position !== null) {\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n this.setHandlePosition(null);\n }\n };\n // eslint-disable-next-line\n Slider.prototype.tempStartEnd = function () {\n if (this.min > this.max) {\n return {\n start: this.max,\n end: this.min\n };\n }\n else {\n return {\n start: this.min,\n end: this.max\n };\n }\n };\n // eslint-disable-next-line\n Slider.prototype.xyToPosition = function (position) {\n var pos;\n if (this.min === this.max) {\n return 100;\n }\n if (this.orientation === 'Horizontal') {\n var left = position.x - this.element.getBoundingClientRect().left;\n var num = this.element.offsetWidth / 100;\n this.val = (left / num);\n }\n else {\n var top_1 = position.y - this.element.getBoundingClientRect().top;\n var num = this.element.offsetHeight / 100;\n this.val = 100 - (top_1 / num);\n }\n var val = this.stepValueCalculation(this.val);\n if (val < 0) {\n val = 0;\n }\n else if (val > 100) {\n val = 100;\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n val = 100 - val;\n }\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (val / 100);\n }\n else {\n pos = this.element.getBoundingClientRect().height * (val / 100);\n }\n return pos;\n };\n Slider.prototype.stepValueCalculation = function (value) {\n if (this.step === 0) {\n this.step = 1;\n }\n var percentStep = (parseFloat(formatUnit(this.step))) / ((parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min))) / 100);\n var remain = value % Math.abs(percentStep);\n if (remain !== 0) {\n if ((percentStep / 2) > remain) {\n value -= remain;\n }\n else {\n value += Math.abs(percentStep) - remain;\n }\n }\n return value;\n };\n Slider.prototype.add = function (a, b, addition) {\n var precision;\n var x = Math.pow(10, precision || 3);\n var val;\n if (addition) {\n val = (Math.round(a * x) + Math.round(b * x)) / x;\n }\n else {\n val = (Math.round(a * x) - Math.round(b * x)) / x;\n }\n return val;\n };\n Slider.prototype.positionToValue = function (pos) {\n var val;\n var diff = parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min));\n if (this.orientation === 'Horizontal') {\n val = (pos / this.element.getBoundingClientRect().width) * diff;\n }\n else {\n val = (pos / this.element.getBoundingClientRect().height) * diff;\n }\n var total = this.add(val, parseFloat(this.min.toString()), true);\n return (total);\n };\n Slider.prototype.sliderBarClick = function (evt) {\n evt.preventDefault();\n // eslint-disable-next-line\n var pos;\n if (evt.type === 'mousedown' || evt.type === 'mouseup' || evt.type === 'click') {\n pos = { x: evt.clientX, y: evt.clientY };\n }\n else if (evt.type === 'touchend' || evt.type === 'touchstart') {\n pos = { x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY };\n }\n var handlepos = this.xyToPosition(pos);\n var handleVal = this.positionToValue(handlepos);\n if (this.type === 'Range' && (this.min < (this.max) && (this.handlePos2 - handlepos) < (handlepos - this.handlePos1) || (this.min > this.max) && (this.handlePos1 - handlepos) > (handlepos - this.handlePos2))) {\n this.activeHandle = 2;\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n }\n this.modifyZindex();\n this.secondHandle.focus();\n }\n else {\n this.activeHandle = 1;\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.modifyZindex();\n this.firstHandle.focus();\n }\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.add(classNames.materialTooltipActive);\n }\n var focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement && this.getHandle() !== focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n var handle = this.activeHandle === 1 ? this.firstHandle : this.secondHandle;\n var behindElement;\n if ((evt.type === 'click' || evt.type === 'mousedown') && evt.target === handle) {\n var eventX = evt.clientX, eventY = evt.clientY;\n behindElement = document.elementFromPoint(eventX, eventY);\n }\n if (evt.target === handle && behindElement != handle) {\n if ((this.isMaterial || this.isMaterial3) && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.sliderBarUp(evt);\n this.tooltipToggle(this.getHandle());\n return;\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n var transition = (this.isMaterial || this.isMaterial3) && this.tooltip.isVisible ?\n this.transitionOnMaterialTooltip : this.transition;\n this.getHandle().style.transition = transition.handle;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = transition.rangeBar;\n }\n this.setHandlePosition(evt);\n if (this.isMaterialTooltip) {\n this.initialTooltip = false;\n }\n if (evt.target != handle) {\n this.changeEvent('changed', evt);\n }\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n };\n Slider.prototype.handleValueAdjust = function (handleValue, assignValue, handleNumber) {\n if (handleNumber === 1) {\n this.handleVal1 = assignValue;\n this.handleVal2 = this.handleVal1 + this.minDiff;\n }\n else if (handleNumber === 2) {\n this.handleVal2 = assignValue;\n this.handleVal1 = this.handleVal2 - this.minDiff;\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n };\n Slider.prototype.dragRangeBarMove = function (event) {\n var _a, _b;\n if (event.type !== 'touchmove') {\n event.preventDefault();\n }\n this.rangeBarDragged = true;\n var pos;\n this.rangeBar.style.transition = 'none';\n this.firstHandle.style.transition = 'none';\n this.secondHandle.style.transition = 'none';\n var xPostion;\n var yPostion;\n if (event.type === 'mousemove') {\n _a = [event.clientX, event.clientY], xPostion = _a[0], yPostion = _a[1];\n }\n else {\n _b = [event.changedTouches[0].clientX, event.changedTouches[0].clientY], xPostion = _b[0], yPostion = _b[1];\n }\n if (!(this.limits.enabled && this.limits.startHandleFixed) && !(this.limits.enabled && this.limits.endHandleFixed)) {\n if (!this.enableRtl) {\n pos = { x: xPostion - this.firstPartRemain, y: yPostion + this.secondPartRemain };\n }\n else {\n pos = { x: xPostion + this.secondPartRemain, y: yPostion + this.secondPartRemain };\n }\n if (this.min > this.max) {\n this.handlePos2 = this.xyToPosition(pos);\n this.handleVal2 = this.positionToValue(this.handlePos2);\n }\n else {\n this.handlePos1 = this.xyToPosition(pos);\n this.handleVal1 = this.positionToValue(this.handlePos1);\n }\n if (!this.enableRtl) {\n pos = { x: xPostion + this.secondPartRemain, y: yPostion - this.firstPartRemain };\n }\n else {\n pos = { x: xPostion - this.firstPartRemain, y: yPostion - this.firstPartRemain };\n }\n if (this.min > this.max) {\n this.handlePos1 = this.xyToPosition(pos);\n this.handleVal1 = this.positionToValue(this.handlePos1);\n }\n else {\n this.handlePos2 = this.xyToPosition(pos);\n this.handleVal2 = this.positionToValue(this.handlePos2);\n }\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = value[0];\n this.handlePos1 = value[1];\n if (this.handleVal1 === this.limits.minEnd) {\n this.handleValueAdjust(this.handleVal1, this.limits.minEnd, 1);\n }\n if (this.handleVal1 === this.limits.minStart) {\n this.handleValueAdjust(this.handleVal1, this.limits.minStart, 1);\n }\n value = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = value[0];\n this.handlePos2 = value[1];\n if (this.handleVal2 === this.limits.maxStart) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxStart, 2);\n }\n if (this.handleVal2 === this.limits.maxEnd) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxEnd, 2);\n }\n }\n if (this.handleVal2 === (this.min > this.max ? this.min : this.max)) {\n this.handleValueAdjust(this.handleVal2, (this.min > this.max ? this.min : this.max), 2);\n }\n if (this.handleVal1 === (this.min > this.max ? this.max : this.min)) {\n this.handleValueAdjust(this.handleVal1, (this.min > this.max ? this.max : this.min), 1);\n }\n }\n this.activeHandle = 1;\n this.setHandlePosition(event);\n this.activeHandle = 2;\n this.setHandlePosition(event);\n this.tooltipToggle(this.rangeBar);\n this.setRangeBar();\n };\n Slider.prototype.sliderBarUp = function (event) {\n this.changeEvent('changed', event);\n this.handleFocusOut();\n this.firstHandle.classList.remove(classNames.sliderActiveHandle);\n if (this.type === 'Range') {\n this.initialTooltip = false;\n this.secondHandle.classList.remove(classNames.sliderActiveHandle);\n }\n this.closeTooltip();\n if (this.isMaterial || this.isMaterial3) {\n this.getHandle().classList.remove('e-large-thumb-size');\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.remove(classNames.materialTooltipActive);\n }\n }\n EventHandler.remove(document, 'mousemove touchmove', this.sliderBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.sliderBarUp);\n };\n Slider.prototype.sliderBarMove = function (evt) {\n if (evt.type !== 'touchmove') {\n evt.preventDefault();\n }\n var pos;\n if (evt.type === 'mousemove') {\n pos = { x: evt.clientX, y: evt.clientY };\n }\n else {\n pos = { x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY };\n }\n var handlepos = this.xyToPosition(pos);\n var handleVal = this.positionToValue(handlepos);\n handlepos = Math.round(handlepos);\n if (this.type !== 'Range' && this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n var valueAndPostion = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handlepos = valueAndPostion[1];\n handleVal = valueAndPostion[0];\n }\n this.handlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n }\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if ((this.min < this.max && handlepos > this.handlePos2 || (this.min > this.max && handlepos < this.handlePos2))) {\n handlepos = this.handlePos2;\n handleVal = this.handleVal2;\n }\n if (handlepos !== this.preHandlePos1) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n this.activeHandle = 1;\n }\n }\n }\n else if (this.activeHandle === 2) {\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if ((this.min < this.max && handlepos < this.handlePos1) || (this.min > this.max && handlepos > this.handlePos1)) {\n handlepos = this.handlePos1;\n handleVal = this.handleVal1;\n }\n if (handlepos !== this.preHandlePos2) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n this.activeHandle = 2;\n }\n }\n }\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n this.getHandle().style.transition = this.scaleTransform;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n this.setHandlePosition(evt);\n if ((this.isMaterial || this.isMaterial3) && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n };\n Slider.prototype.dragRangeBarUp = function (event) {\n if (!this.rangeBarDragged) {\n this.focusSliderElement();\n this.sliderBarClick(event);\n }\n else {\n this.isDragComplete = true;\n }\n this.changeEvent('changed', event);\n this.closeTooltip();\n EventHandler.remove(document, 'mousemove touchmove', this.dragRangeBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.dragRangeBarUp);\n this.rangeBarDragged = false;\n };\n Slider.prototype.checkRepeatedValue = function (currentValue) {\n if (this.type === 'Range') {\n var previousVal = this.enableRtl && this.orientation !== 'Vertical' ? (this.activeHandle === 1 ?\n this.previousVal[1] : this.previousVal[0]) :\n (this.activeHandle === 1 ? this.previousVal[0] : this.previousVal[1]);\n if (currentValue === previousVal) {\n return 0;\n }\n }\n else {\n if (currentValue === this.previousVal) {\n return 0;\n }\n }\n return 1;\n };\n Slider.prototype.refreshTooltip = function (target) {\n if (this.tooltip.isVisible && this.tooltipObj) {\n this.tooltipValue();\n if (target) {\n this.tooltipObj.refresh(target);\n this.tooltipTarget = target;\n }\n }\n };\n Slider.prototype.openTooltip = function (target) {\n if (this.tooltip.isVisible && this.tooltipObj && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.open(target);\n this.tooltipTarget = target;\n }\n };\n Slider.prototype.closeTooltip = function () {\n if (this.tooltip.isVisible && this.tooltipObj && this.tooltip.showOn !== 'Always' && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.close();\n this.tooltipTarget = undefined;\n }\n };\n Slider.prototype.keyDown = function (event) {\n switch (event.keyCode) {\n case 37:\n case 38:\n case 39:\n case 40:\n case 33:\n case 34:\n case 36:\n case 35:\n event.preventDefault();\n this.buttonClick(event);\n break;\n }\n };\n Slider.prototype.wireButtonEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.firstBtn, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.secondBtn, 'focusout', this.sliderFocusOut, this);\n }\n else {\n EventHandler.remove(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.firstBtn, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.secondBtn, 'focusout', this.sliderFocusOut);\n }\n };\n Slider.prototype.rangeBarMousedown = function (event) {\n var _a, _b;\n event.preventDefault();\n this.focusSliderElement();\n if (this.type === 'Range' && this.drag && event.target === this.rangeBar) {\n var xPostion = void 0;\n var yPostion = void 0;\n if (event.type === 'mousedown') {\n _a = [event.clientX, event.clientY], xPostion = _a[0], yPostion = _a[1];\n }\n else if (event.type === 'touchstart') {\n _b = [event.changedTouches[0].clientX, event.changedTouches[0].clientY], xPostion = _b[0], yPostion = _b[1];\n }\n if (this.orientation === 'Horizontal') {\n this.firstPartRemain = xPostion - this.rangeBar.getBoundingClientRect().left;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().right - xPostion;\n }\n else {\n this.firstPartRemain = yPostion - this.rangeBar.getBoundingClientRect().top;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().bottom - yPostion;\n }\n this.minDiff = this.handleVal2 - this.handleVal1;\n this.tooltipToggle(this.rangeBar);\n var focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n EventHandler.add(document, 'mousemove touchmove', this.dragRangeBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.dragRangeBarUp, this);\n }\n };\n Slider.prototype.elementClick = function (event) {\n if (this.isDragComplete) {\n this.isDragComplete = false;\n return;\n }\n event.preventDefault();\n this.focusSliderElement();\n this.sliderBarClick(event);\n this.focusHandle();\n };\n Slider.prototype.wireEvents = function () {\n this.onresize = this.reposition.bind(this);\n window.addEventListener('resize', this.onresize);\n if (this.enabled && !this.readonly) {\n EventHandler.add(this.element, 'click', this.elementClick, this);\n if (this.type === 'Range' && this.drag) {\n EventHandler.add(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown, this);\n }\n EventHandler.add(this.sliderContainer, 'keydown', this.keyDown, this);\n EventHandler.add(this.sliderContainer, 'keyup', this.keyUp, this);\n EventHandler.add(this.element, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover, this);\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n if (this.showButtons) {\n this.wireButtonEvt(false);\n }\n this.wireMaterialTooltipEvent(false);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n }\n };\n Slider.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.elementClick);\n if (this.type === 'Range' && this.drag) {\n EventHandler.remove(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown);\n }\n EventHandler.remove(this.sliderContainer, 'keydown', this.keyDown);\n EventHandler.remove(this.sliderContainer, 'keyup', this.keyUp);\n EventHandler.remove(this.element, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover);\n this.wireFirstHandleEvt(true);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(true);\n }\n if (this.showButtons) {\n this.wireButtonEvt(true);\n }\n this.wireMaterialTooltipEvent(true);\n EventHandler.remove(this.element, 'reset', this.formResetHandler);\n };\n Slider.prototype.formResetHandler = function () {\n this.setProperties({ 'value': this.formResetValue }, true);\n this.setValue();\n };\n Slider.prototype.keyUp = function (event) {\n if (event.keyCode === 9 && event.target.classList.contains(classNames.sliderHandle)) {\n this.focusSliderElement();\n if (!event.target.classList.contains(classNames.sliderTabHandle)) {\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n event.target.classList.add(classNames.sliderTabHandle);\n var parentElement = event.target.parentElement;\n if (parentElement === this.element) {\n parentElement.querySelector('.' + classNames.sliderTrack).classList.add(classNames.sliderTabTrack);\n if (this.type === 'Range' || this.type === 'MinRange') {\n parentElement.querySelector('.' + classNames.rangeBar).classList.add(classNames.sliderTabRange);\n }\n }\n if (this.type === 'Range') {\n (event.target.previousSibling).classList.contains(classNames.sliderHandle) ?\n this.activeHandle = 2 : this.activeHandle = 1;\n }\n this.getHandle().focus();\n this.tooltipToggle(this.getHandle());\n }\n }\n this.closeTooltip();\n this.changeEvent('changed', event);\n };\n Slider.prototype.hover = function (event) {\n if (!isNullOrUndefined(event)) {\n if (event.type === 'mouseover' || event.type === 'touchmove' || event.type === 'mousemove' ||\n event.type === 'pointermove' || event.type === 'touchstart') {\n this.sliderContainer.classList.add(classNames.sliderHover);\n }\n else {\n this.sliderContainer.classList.remove(classNames.sliderHover);\n var curTarget = event.currentTarget;\n if (this.tooltip.isVisible && this.tooltip.showOn !== 'Always' && this.tooltipObj && this.isMaterialTooltip &&\n !curTarget.classList.contains(classNames.sliderHandleFocused) &&\n !curTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeMaterialTooltip();\n }\n }\n }\n };\n Slider.prototype.sliderFocusOut = function (event) {\n if (event.relatedTarget !== this.secondHandle && event.relatedTarget !== this.firstHandle &&\n event.relatedTarget !== this.element && event.relatedTarget !== this.firstBtn && event.relatedTarget !== this.secondBtn) {\n this.closeMaterialTooltip();\n this.closeTooltip();\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n if (this.element.querySelector('.' + classNames.sliderTabTrack)) {\n this.element.querySelector('.' + classNames.sliderTabTrack).classList.remove(classNames.sliderTabTrack);\n if ((this.type === 'Range' || this.type === 'MinRange') &&\n this.element.querySelector('.' + classNames.sliderTabRange)) {\n this.element.querySelector('.' + classNames.sliderTabRange).classList.remove(classNames.sliderTabRange);\n }\n }\n this.hiddenInput.focus();\n this.hiddenInput.blur();\n this.isElementFocused = false;\n }\n };\n Slider.prototype.removeElement = function (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n };\n Slider.prototype.changeSliderType = function (type, args) {\n if (this.isMaterialTooltip && this.materialHandle) {\n this.sliderContainer.classList.remove(classNames.materialSlider);\n this.removeElement(this.materialHandle);\n this.materialHandle = undefined;\n }\n this.removeElement(this.firstHandle);\n this.firstHandle = undefined;\n if (type !== 'Default') {\n if (type === 'Range') {\n this.removeElement(this.secondHandle);\n this.secondHandle = undefined;\n }\n this.removeElement(this.rangeBar);\n this.rangeBar = undefined;\n }\n if (this.tooltip.isVisible && !isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n }\n if (this.limits.enabled) {\n if (type === 'MinRange' || type === 'Default') {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n this.removeElement(this.limitBarFirst);\n this.limitBarFirst = undefined;\n }\n }\n else {\n if (!isNullOrUndefined(this.limitBarSecond)) {\n this.removeElement(this.limitBarSecond);\n this.limitBarSecond = undefined;\n }\n }\n }\n this.activeHandle = 1;\n this.getThemeInitialization();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setHandler();\n this.setOrientClass();\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n this.setValue();\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n this.wireMaterialTooltipEvent(false);\n }\n this.setBarColor();\n if (args !== 'tooltip') {\n this.updateConfig();\n }\n };\n Slider.prototype.changeRtl = function () {\n if (!this.enableRtl && this.type === 'Range') {\n this.value = [this.handleVal2, this.handleVal1];\n }\n this.updateConfig();\n if (this.tooltip.isVisible) {\n this.tooltipObj.refresh(this.firstHandle);\n }\n if (this.showButtons) {\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, { 'aria-label': 'Decrease', title: 'Decrease' });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, { 'aria-label': 'Increase', title: 'Increase' });\n }\n };\n Slider.prototype.changeOrientation = function () {\n this.changeSliderType(this.type, 'null');\n };\n Slider.prototype.updateConfig = function () {\n this.setEnableRTL();\n this.setValue();\n if (this.tooltip.isVisible) {\n this.refreshTooltip(this.tooltipTarget);\n }\n if (this.ticks.placement !== 'None') {\n if (this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n }\n this.limitsPropertyChange();\n };\n Slider.prototype.limitsPropertyChange = function () {\n if (this.limits.enabled) {\n if (isNullOrUndefined(this.limitBarFirst) && this.type !== 'Range') {\n this.createLimitBar();\n }\n if (isNullOrUndefined(this.limitBarFirst) && isNullOrUndefined(this.limitBarSecond) && this.type === 'Range') {\n this.createLimitBar();\n }\n this.setLimitBar();\n this.setValue();\n }\n else {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n detach(this.limitBarFirst);\n }\n if (!isNullOrUndefined(this.limitBarSecond)) {\n detach(this.limitBarSecond);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Slider.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it removes the attributes and classes.\n *\n * @method destroy\n * @return {void}\n */\n Slider.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n window.removeEventListener('resize', this.onresize);\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n this.firstHandle.removeAttribute('aria-orientation');\n if (this.type === 'Range') {\n this.secondHandle.removeAttribute('aria-orientation');\n }\n this.sliderContainer.parentNode.insertBefore(this.element, this.sliderContainer);\n detach(this.sliderContainer);\n if (this.tooltip.isVisible) {\n this.tooltipObj.destroy();\n }\n this.element.innerHTML = '';\n this.hiddenInput = null;\n this.sliderContainer = null;\n this.sliderTrack = null;\n this.rangeBar = null;\n this.firstHandle = null;\n this.secondHandle = null;\n this.tickElementCollection = null;\n this.ul = null;\n this.firstBtn = null;\n this.secondBtn = null;\n this.materialHandle = null;\n this.tooltipObj = null;\n this.tooltipTarget = null;\n this.limitBarFirst = null;\n this.limitBarSecond = null;\n this.firstChild = null;\n this.lastChild = null;\n this.tooltipElement = null;\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @private\n */\n // tslint:disable-next-line\n Slider.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'value':\n if (newProp && oldProp) {\n var value = isNullOrUndefined(newProp.value) ?\n (this.type === 'Range' ? [this.min, this.max] : this.min) : newProp.value;\n this.setProperties({ 'value': value }, true);\n if (!isNullOrUndefined(oldProp.value) && oldProp.value.toString() !== value.toString()) {\n this.setValue();\n this.refreshTooltip(this.tooltipTarget);\n if (this.type === 'Range') {\n if (isNullOrUndefined(newProp.value) || oldProp.value[1] === value[1]) {\n this.activeHandle = 1;\n }\n else {\n this.activeHandle = 2;\n }\n }\n }\n }\n break;\n case 'min':\n case 'step':\n case 'max':\n this.setMinMaxValue();\n break;\n case 'tooltip':\n if (!isNullOrUndefined(newProp.tooltip) && !isNullOrUndefined(oldProp.tooltip)) {\n this.setTooltip(prop);\n if (!this.showButtons) {\n this.wireEvents();\n }\n }\n break;\n case 'type':\n if (!isNullOrUndefined(oldProp) && Object.keys(oldProp).length\n && !isNullOrUndefined(oldProp.type)) {\n this.changeSliderType(oldProp.type, prop);\n this.setZindex();\n }\n break;\n case 'enableRtl':\n if (oldProp.enableRtl !== newProp.enableRtl && this.orientation !== 'Vertical') {\n this.rtl = oldProp.enableRtl;\n this.changeRtl();\n }\n break;\n case 'limits':\n this.limitsPropertyChange();\n break;\n case 'orientation':\n this.changeOrientation();\n break;\n case 'ticks':\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, function (className) {\n if (className.match(/e-scale-/)) {\n _this.sliderContainer.classList.remove(className);\n }\n });\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n break;\n case 'locale':\n if (this.showButtons) {\n this.buttonTitle();\n }\n break;\n case 'showButtons':\n if (newProp.showButtons) {\n this.setButtons();\n this.reposition();\n if (this.enabled && !this.readonly) {\n this.wireButtonEvt(false);\n }\n }\n else {\n if (this.firstBtn && this.secondBtn) {\n this.sliderContainer.removeChild(this.firstBtn);\n this.sliderContainer.removeChild(this.secondBtn);\n this.sliderContainer.classList.remove(classNames.sliderButtonClass);\n this.firstBtn = undefined;\n this.secondBtn = undefined;\n this.reposition();\n }\n }\n break;\n case 'enabled':\n this.setEnabled();\n break;\n case 'readonly':\n this.setReadOnly();\n break;\n case 'customValues':\n this.setValue();\n this.reposition();\n break;\n case 'colorRange':\n this.reposition();\n break;\n case 'width':\n this.setElementWidth(newProp.width);\n this.setMinMaxValue();\n if (this.limits) {\n this.limitsPropertyChange();\n }\n break;\n }\n }\n };\n Slider.prototype.setReadOnly = function () {\n if (this.readonly) {\n this.unwireEvents();\n this.sliderContainer.classList.add(classNames.readonly);\n }\n else {\n this.wireEvents();\n this.sliderContainer.classList.remove(classNames.readonly);\n }\n };\n Slider.prototype.setMinMaxValue = function () {\n var _this = this;\n this.setValue();\n this.refreshTooltip(this.tooltipTarget);\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n if (this.ul) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, function (className) {\n if (className.match(/e-scale-/)) {\n _this.sliderContainer.classList.remove(className);\n }\n });\n }\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n };\n Slider.prototype.setZindex = function () {\n this.zIndex = 6;\n if (!isNullOrUndefined(this.ticks) && this.ticks.placement !== 'None' && !isNullOrUndefined(this.ul) && !isNullOrUndefined(this.element)) {\n this.ul.style.zIndex = (this.zIndex + -7) + '';\n this.element.style.zIndex = (this.zIndex + 2) + '';\n }\n if (!this.isMaterial && !this.isMaterial3 && !isNullOrUndefined(this.ticks) && this.ticks.placement === 'Both') {\n this.element.style.zIndex = (this.zIndex + 2) + '';\n }\n if (!isNullOrUndefined(this.firstHandle))\n this.firstHandle.style.zIndex = (this.zIndex + 3) + '';\n if (this.type === 'Range' && !isNullOrUndefined(this.secondHandle)) {\n this.secondHandle.style.zIndex = (this.zIndex + 4) + '';\n }\n };\n Slider.prototype.setTooltip = function (args) {\n this.changeSliderType(this.type, args);\n };\n Slider.prototype.setBarColor = function () {\n var trackPosition;\n var trackClassName;\n var child = this.sliderTrack.lastElementChild;\n while (child) {\n this.sliderTrack.removeChild(child);\n child = this.sliderTrack.lastElementChild;\n }\n for (var i = 0; i < this.colorRange.length; i++) {\n if (!isNullOrUndefined(this.colorRange[i].start) && !isNullOrUndefined(this.colorRange[i].end)) {\n if (this.colorRange[i].end > this.colorRange[i].start) {\n if (this.colorRange[i].start < this.min) {\n this.colorRange[i].start = this.min;\n }\n if (this.colorRange[i].end > this.max) {\n this.colorRange[i].end = this.max;\n }\n var startingPosition = this.checkHandlePosition(this.colorRange[i].start);\n var endPosition = this.checkHandlePosition(this.colorRange[i].end);\n var trackContainer = this.createElement('div');\n trackContainer.style.backgroundColor = this.colorRange[i].color;\n trackContainer.style.border = '1px solid ' + this.colorRange[i].color;\n if (this.orientation === 'Horizontal') {\n trackClassName = classNames.sliderHorizantalColor;\n if (this.enableRtl) {\n if (isNullOrUndefined(this.customValues)) {\n trackPosition = this.checkHandlePosition(this.max) - this.checkHandlePosition(this.colorRange[i].end);\n }\n else {\n trackPosition = this.checkHandlePosition(this.customValues.length - this.colorRange[i].end - 1);\n }\n }\n else {\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n }\n trackContainer.style.width = endPosition - startingPosition + 'px';\n trackContainer.style.left = trackPosition + 'px';\n }\n else {\n trackClassName = classNames.sliderVerticalColor;\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n trackContainer.style.height = endPosition - startingPosition + 'px';\n trackContainer.style.bottom = trackPosition + 'px';\n }\n trackContainer.classList.add(trackClassName);\n this.sliderTrack.appendChild(trackContainer);\n }\n }\n }\n };\n /**\n * Gets the component name\n *\n * @private\n */\n Slider.prototype.getModuleName = function () {\n return 'slider';\n };\n __decorate([\n Property(null)\n ], Slider.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Slider.prototype, \"customValues\", void 0);\n __decorate([\n Property(1)\n ], Slider.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], Slider.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], Slider.prototype, \"min\", void 0);\n __decorate([\n Property(100)\n ], Slider.prototype, \"max\", void 0);\n __decorate([\n Property(false)\n ], Slider.prototype, \"readonly\", void 0);\n __decorate([\n Property('Default')\n ], Slider.prototype, \"type\", void 0);\n __decorate([\n Collection([{}], ColorRangeData)\n ], Slider.prototype, \"colorRange\", void 0);\n __decorate([\n Complex({}, TicksData)\n ], Slider.prototype, \"ticks\", void 0);\n __decorate([\n Complex({}, LimitData)\n ], Slider.prototype, \"limits\", void 0);\n __decorate([\n Property(true)\n ], Slider.prototype, \"enabled\", void 0);\n __decorate([\n Complex({}, TooltipData)\n ], Slider.prototype, \"tooltip\", void 0);\n __decorate([\n Property(false)\n ], Slider.prototype, \"showButtons\", void 0);\n __decorate([\n Property(true)\n ], Slider.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property('Horizontal')\n ], Slider.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Slider.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Slider.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"changed\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"renderingTicks\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"renderedTicks\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"tooltipChange\", void 0);\n Slider = __decorate([\n NotifyPropertyChanges\n ], Slider);\n return Slider;\n}(Component));\nexport { Slider };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable prefer-spread */\nimport { Component, Event, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Browser, closest, detach, EventHandler, getInstance, select, selectAll, formatUnit } from '@syncfusion/ej2-base';\nimport { addClass, attributes, classList, isNullOrUndefined, L10n } from '@syncfusion/ej2-base';\nimport { remove, removeClass, rippleEffect } from '@syncfusion/ej2-base';\nimport { SplitButton, getModel } from '@syncfusion/ej2-splitbuttons';\nimport { Deferred } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip, getZindexPartial, Popup, isCollide } from '@syncfusion/ej2-popups';\nimport { Input } from './../input/index';\nimport { NumericTextBox } from './../numerictextbox/index';\nimport { Slider } from './../slider/slider';\nvar APPLY = 'e-apply';\nvar CANCEL = 'e-cancel';\nvar CURRENT = 'e-current';\nvar CONTAINER = 'e-container';\nvar CTRLBTN = 'e-ctrl-btn';\nvar CTRLSWITCH = 'e-switch-ctrl-btn';\nvar DISABLED = 'e-disabled';\nvar FORMATSWITCH = 'e-value-switch-btn';\nvar HANDLER = 'e-handler';\nvar HEX = 'e-hex';\nvar HIDEHEX = 'e-hide-hex-value';\nvar HIDEOPACITY = 'e-hide-opacity';\nvar HIDERGBA = 'e-hide-switchable-value';\nvar HIDEVALUE = 'e-hide-value';\nvar HIDEVALUESWITCH = 'e-hide-valueswitcher';\nvar HSVAREA = 'e-hsv-color';\nvar HSVCONTAINER = 'e-hsv-container';\nvar INPUTWRAPPER = 'e-selected-value';\nvar MODESWITCH = 'e-mode-switch-btn';\nvar NOCOLOR = 'e-nocolor-item';\nvar OPACITY = 'e-opacity-value';\nvar PALETTES = 'e-palette';\nvar PALETTECONTENT = 'e-color-palette';\nvar PICKERCONTENT = 'e-color-picker';\nvar PREVIEW = 'e-preview-container';\nvar PREVIOUS = 'e-previous';\nvar RTL = 'e-rtl';\nvar SHOWVALUE = 'e-show-value';\nvar SELECT = 'e-selected';\nvar SPLITPREVIEW = 'e-split-preview';\nvar TILE = 'e-tile';\nvar presets = {\n default: ['#000000', '#f44336', '#e91e63', '#9c27b0', '#673ab7', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#ffeb3b',\n '#ffffff', '#ffebee', '#fce4ec', '#f3e5f5', '#ede7f6', '#e3f2fd', '#e1f5fe', '#e0f7fa', '#e0f2f1', '#fffde7',\n '#f2f2f2', '#ffcdd2', '#f8bbd0', '#e1bee7', '#d1c4e9', '#bbdefb', '#b3e5fc', '#b2ebf2', '#b2dfdb', '#fff9c4',\n '#e6e6e6', '#ef9a9a', '#f48fb1', '#ce93d8', '#b39ddb', '#90caf9', '#81d4fa', '#80deea', '#80cbc4', '#fff59d',\n '#cccccc', '#e57373', '#f06292', '#ba68c8', '#9575cd', '#64b5f6', '#4fc3f7', '#4dd0e1', '#4db6ac', '#fff176',\n '#b3b3b3', '#ef5350', '#ec407a', '#ab47bc', '#7e57c2', '#42a5f5', '#29b6f6', '#26c6da', '#26a69a', '#ffee58',\n '#999999', '#e53935', '#d81b60', '#8e24aa', '#5e35b1', '#1e88e5', '#039be5', '#00acc1', '#00897b', '#fdd835',\n '#808080', '#d32f2f', '#c2185b', '#7b1fa2', '#512da8', '#1976d2', '#0288d1', '#0097a7', '#00796b', '#fbc02d',\n '#666666', '#c62828', '#ad1457', '#6a1b9a', '#4527a0', '#1565c0', '#0277bd', '#00838f', '#00695c', '#f9a825',\n '#4d4d4d', '#b71c1c', '#880e4f', '#4a148c', '#311b92', '#0d47a1', '#01579b', '#006064', '#004d40', '#f57f17']\n};\n/**\n * ColorPicker component is a user interface to select and adjust color values. It provides supports for various\n * color specification like Red Green Blue, Hue Saturation Value and Hex codes.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ColorPicker = /** @class */ (function (_super) {\n __extends(ColorPicker, _super);\n function ColorPicker(options, element) {\n return _super.call(this, options, element) || this;\n }\n ColorPicker.prototype.preRender = function () {\n var ele = this.element;\n this.formElement = closest(this.element, 'form');\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n var localeText = { Apply: 'Apply', Cancel: 'Cancel', ModeSwitcher: 'Switch Mode' };\n this.l10n = new L10n('colorpicker', localeText, this.locale);\n if (ele.getAttribute('ejs-for') && !ele.getAttribute('name')) {\n ele.setAttribute('name', ele.id);\n }\n };\n /**\n * To Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n ColorPicker.prototype.render = function () {\n this.initWrapper();\n if (this.inline) {\n this.createWidget();\n }\n else {\n this.createSplitBtn();\n }\n if (!this.enableOpacity) {\n addClass([this.container.parentElement], HIDEOPACITY);\n }\n this.renderComplete();\n };\n ColorPicker.prototype.initWrapper = function () {\n var wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(wrapper, this.element);\n wrapper.appendChild(this.element);\n attributes(this.element, { 'tabindex': '-1', 'spellcheck': 'false', 'aria-label': 'colorpicker' });\n this.container = this.createElement('div', { className: CONTAINER });\n this.getWrapper().appendChild(this.container);\n var value = this.value ? this.roundValue(this.value).toLowerCase() : '#008000ff';\n if (this.noColor && this.mode === 'Palette' && this.value === '') {\n value = '';\n }\n var slicedValue = value.slice(0, 7);\n if (isNullOrUndefined(this.initialInputValue)) {\n this.initialInputValue = slicedValue;\n }\n this.element.value = slicedValue;\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': slicedValue }, true);\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.tileRipple = rippleEffect(this.container, { selector: '.' + TILE });\n this.ctrlBtnRipple = rippleEffect(this.container, { selector: '.e-btn' });\n };\n ColorPicker.prototype.getWrapper = function () {\n return this.element.parentElement;\n };\n ColorPicker.prototype.createWidget = function () {\n if (this.mode === 'Palette') {\n this.createPalette();\n if (!this.inline) {\n this.firstPaletteFocus();\n }\n }\n else {\n this.createPicker();\n if (!this.inline) {\n this.getDragHandler().focus();\n }\n }\n this.isRgb = true;\n this.createInput();\n this.createCtrlBtn();\n if (!this.disabled) {\n this.wireEvents();\n }\n if (this.inline && this.disabled) {\n this.toggleDisabled(true);\n }\n if (Browser.isDevice) {\n this.refreshPopupPos();\n }\n };\n ColorPicker.prototype.createSplitBtn = function () {\n var _this = this;\n var splitButton = this.createElement('button', { className: 'e-split-colorpicker' });\n this.getWrapper().appendChild(splitButton);\n this.splitBtn = new SplitButton({\n iconCss: 'e-selected-color',\n target: this.container,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n createPopupOnClick: this.createPopupOnClick,\n open: this.onOpen.bind(this),\n click: function () {\n _this.trigger('change', {\n currentValue: { hex: _this.value.slice(0, 7), rgba: _this.convertToRgbString(_this.hexToRgb(_this.value)) },\n previousValue: { hex: null, rgba: null }, value: _this.value\n });\n }\n });\n this.splitBtn.createElement = this.createElement;\n this.splitBtn.appendTo(splitButton);\n var preview = this.createElement('span', { className: SPLITPREVIEW });\n select('.e-selected-color', splitButton).appendChild(preview);\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(this.value));\n var popupEle = this.getPopupEle();\n addClass([popupEle], 'e-colorpicker-popup');\n if (this.cssClass) {\n addClass([popupEle], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (Browser.isDevice && !this.createPopupOnClick) {\n var popupInst = this.getPopupInst();\n popupInst.relateTo = document.body;\n popupInst.position = { X: 'center', Y: 'center' };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupEle.style.zIndex = getZindexPartial(this.splitBtn.element).toString();\n }\n this.bindCallBackEvent();\n };\n ColorPicker.prototype.onOpen = function () {\n this.trigger('open', { element: this.container });\n if (!Browser.isDevice) {\n var popupInst = this.getPopupInst();\n var collision = isCollide(popupInst.element);\n if (collision.length > 0) {\n popupInst.collision = { X: 'flip', Y: 'fit' };\n popupInst.position = { X: 'right', Y: 'bottom' };\n popupInst.targetType = 'container';\n }\n }\n };\n ColorPicker.prototype.getPopupInst = function () {\n return getInstance(this.getPopupEle(), Popup);\n };\n ColorPicker.prototype.bindCallBackEvent = function () {\n var _this = this;\n this.splitBtn.beforeOpen = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observeOpenArgs) {\n if (!observeOpenArgs.cancel) {\n var popupEle = _this.getPopupEle();\n popupEle.style.top = formatUnit(0 + pageYOffset);\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.display = 'block';\n _this.createWidget();\n popupEle.style.display = '';\n if (Browser.isDevice) {\n if (_this.createPopupOnClick) {\n var popupInst = _this.getPopupInst();\n popupInst.relateTo = document.body;\n popupInst.position = { X: 'center', Y: 'center' };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupEle.style.zIndex = getZindexPartial(_this.splitBtn.element).toString();\n }\n _this.modal = _this.createElement('div');\n _this.modal.className = 'e-' + _this.getModuleName() + ' e-modal';\n _this.modal.style.display = 'none';\n document.body.insertBefore(_this.modal, popupEle);\n document.body.className += ' e-colorpicker-overflow';\n _this.modal.style.display = 'block';\n _this.modal.style.zIndex = (Number(popupEle.style.zIndex) - 1).toString();\n }\n }\n args.cancel = observeOpenArgs.cancel;\n callBackPromise.resolve(observeOpenArgs);\n });\n return callBackPromise;\n };\n this.splitBtn.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n if (!isNullOrUndefined(args.event)) {\n var beforeCloseArgs = { element: _this.container, event: args.event, cancel: false };\n _this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n if (Browser.isDevice && args.event.target === _this.modal) {\n observedCloseArgs.cancel = true;\n }\n if (!observedCloseArgs.cancel) {\n _this.onPopupClose();\n }\n args.cancel = observedCloseArgs.cancel;\n callBackPromise.resolve(observedCloseArgs);\n });\n }\n else {\n callBackPromise.resolve(args);\n }\n return callBackPromise;\n };\n };\n ColorPicker.prototype.onPopupClose = function () {\n this.unWireEvents();\n this.destroyOtherComp();\n this.container.style.width = '';\n select('.' + SPLITPREVIEW, this.splitBtn.element).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n this.container.innerHTML = '';\n removeClass([this.container], [PICKERCONTENT, PALETTECONTENT]);\n if (Browser.isDevice && this.modal) {\n removeClass([document.body], 'e-colorpicker-overflow');\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n ColorPicker.prototype.createPalette = function () {\n classList(this.container, [PALETTECONTENT], [PICKERCONTENT]);\n if (this.presetColors) {\n var paletteGroup = this.createElement('div', { className: 'e-custom-palette' });\n this.appendElement(paletteGroup);\n var keys = Object.keys(this.presetColors);\n if (keys.length === 1) {\n this.appendPalette(this.presetColors[keys[0]], keys[0], paletteGroup);\n }\n else {\n for (var i = 0, len = keys.length; i < len; i++) {\n this.appendPalette(this.presetColors[keys[i]], keys[i], paletteGroup);\n }\n }\n if (selectAll('.e-row', paletteGroup).length > 10) {\n addClass([paletteGroup], 'e-palette-group');\n }\n }\n else {\n this.appendPalette(presets.default, 'default');\n }\n if (this.mode === 'Palette' && !this.modeSwitcher && this.noColor) {\n this.setNoColor();\n }\n var width = parseInt(getComputedStyle(this.container).borderBottomWidth, 10);\n this.container.style.width = formatUnit(this.container.children[0].offsetWidth + width + width);\n this.rgb = this.hexToRgb(this.roundValue(this.value));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n };\n ColorPicker.prototype.firstPaletteFocus = function () {\n if (!select('.' + SELECT, this.container.children[0])) {\n selectAll('.' + PALETTES, this.container)[0].focus();\n }\n };\n ColorPicker.prototype.appendPalette = function (colors, key, refEle) {\n var palette = this.createElement('div', { className: PALETTES, attrs: { 'tabindex': '0', 'role': 'grid' } });\n if (refEle) {\n refEle.appendChild(palette);\n }\n else {\n this.appendElement(palette);\n }\n var row;\n var tile;\n var roundedColor;\n for (var i = 0, len = colors.length; i < len; i++) {\n if (i === 0 || i % this.columns === 0) {\n row = this.createElement('div', {\n className: 'e-row', attrs: { 'role': 'row' }\n });\n palette.appendChild(row);\n }\n roundedColor = this.roundValue(colors[i]).toLowerCase();\n tile = this.createElement('span', {\n className: TILE, attrs: { 'role': 'gridcell', 'aria-label': roundedColor, 'aria-selected': 'false', 'tabindex': '0' }\n });\n this.trigger('beforeTileRender', { element: tile, presetName: key, value: colors[i] });\n row.appendChild(tile);\n if (this.value === roundedColor) {\n this.addTileSelection(tile);\n palette.focus();\n }\n tile.style.backgroundColor = this.convertToRgbString(this.hexToRgb(roundedColor));\n }\n };\n ColorPicker.prototype.setNoColor = function () {\n var noColorEle = this.container.querySelector('.e-row').children[0];\n noColorEle.classList.add(NOCOLOR);\n if (!this.value) {\n noColorEle.classList.add(SELECT);\n closest(noColorEle, '.' + PALETTES).focus();\n }\n ['aria-selected', 'aria-label'].forEach(function (attr) { noColorEle.removeAttribute(attr); });\n noColorEle.style.backgroundColor = '';\n };\n ColorPicker.prototype.appendElement = function (ele, insertPos) {\n if (insertPos === void 0) { insertPos = 0; }\n var refEle = this.container.children[insertPos];\n if (refEle) {\n this.container.insertBefore(ele, refEle);\n }\n else {\n this.container.appendChild(ele);\n }\n };\n ColorPicker.prototype.addTileSelection = function (ele) {\n ele.classList.add(SELECT);\n ele.setAttribute('aria-selected', 'true');\n };\n ColorPicker.prototype.createPicker = function () {\n classList(this.container, [PICKERCONTENT], [PALETTECONTENT]);\n var hsvContainer = this.createElement('div', { className: HSVCONTAINER });\n this.appendElement(hsvContainer);\n hsvContainer.appendChild(this.createElement('div', { className: HSVAREA }));\n var dragHandler = this.createElement('span', { className: HANDLER, attrs: { 'tabindex': '0' } });\n hsvContainer.appendChild(dragHandler);\n if (this.value === null || this.value === '') {\n this.value = '#008000ff';\n }\n this.rgb = this.hexToRgb(this.value);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHsvContainerBg();\n this.setHandlerPosition();\n this.createSlider();\n this.createDragTooltip();\n };\n ColorPicker.prototype.setHsvContainerBg = function (h) {\n if (h === void 0) { h = this.hsv[0]; }\n this.getHsvContainer().style.backgroundColor = this.convertToRgbString(this.hsvToRgb(h, 100, 100, 1));\n };\n ColorPicker.prototype.getHsvContainer = function () {\n return select('.' + HSVCONTAINER, this.container);\n };\n ColorPicker.prototype.setHandlerPosition = function () {\n var dragHandler = this.getDragHandler();\n var hsvArea = select('.' + HSVAREA, this.container);\n if (this.enableRtl) {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * Math.abs(100 - this.hsv[1]) / 100);\n }\n else {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * this.hsv[1] / 100);\n }\n dragHandler.style.top = formatUnit(hsvArea.offsetHeight * (100 - this.hsv[2]) / 100);\n };\n ColorPicker.prototype.createSlider = function () {\n var sliderPreviewWrapper = this.createElement('div', { className: 'e-slider-preview' });\n this.appendElement(sliderPreviewWrapper, 1);\n this.createPreview(sliderPreviewWrapper);\n var sliderWrapper = this.createElement('div', { className: 'e-colorpicker-slider' });\n sliderPreviewWrapper.insertBefore(sliderWrapper, sliderPreviewWrapper.children[0]);\n var slider = this.createElement('div', { className: 'e-hue-slider' });\n sliderWrapper.appendChild(slider);\n this.hueSlider = new Slider({\n value: this.hsv[0],\n min: 0,\n max: 359,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.hueChange.bind(this)\n });\n this.hueSlider.createElement = this.createElement;\n this.hueSlider.appendTo(slider);\n if (this.enableOpacity) {\n slider = this.createElement('div', { className: 'e-opacity-slider' });\n sliderWrapper.appendChild(slider);\n this.createOpacitySlider(slider);\n }\n };\n ColorPicker.prototype.createOpacitySlider = function (slider) {\n this.opacitySlider = new Slider({\n value: this.rgb[3] * 100,\n min: 0,\n max: 100,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.opacityChange.bind(this)\n });\n this.opacitySlider.createElement = this.createElement;\n this.opacitySlider.appendTo(slider);\n var opacityBgTrack = this.createElement('div', { className: 'e-opacity-empty-track' });\n slider.appendChild(opacityBgTrack);\n this.updateOpacitySliderBg();\n };\n ColorPicker.prototype.updateOpacitySliderBg = function () {\n var direction = this.enableRtl ? 'to left' : 'to right';\n var opacityEle = select('.e-opacity-empty-track', this.opacitySlider.element);\n if (opacityEle) {\n opacityEle.style.background =\n 'linear-gradient(' + direction + ', rgba(' + this.rgb.slice(0, 3) + ', 0) 0%, ' +\n this.convertToRgbString(this.rgb.slice(0, 3)) + ' 100%)';\n }\n };\n ColorPicker.prototype.hueChange = function (args) {\n this.hsv[0] = args.value;\n this.setHsvContainerBg();\n this.convertToOtherFormat();\n };\n ColorPicker.prototype.opacityChange = function (args) {\n var value = args.value;\n var pValue = this.rgbToHex(this.rgb);\n this.hsv[3] = value / 100;\n this.rgb[3] = value / 100;\n var cValue = this.rgbToHex(this.rgb);\n this.updateOpacityInput(value);\n var rgb = this.convertToRgbString(this.rgb);\n this.updatePreview(rgb);\n this.triggerEvent(cValue, pValue, rgb);\n };\n ColorPicker.prototype.updateOpacityInput = function (value) {\n if (this.enableOpacity && !this.getWrapper().classList.contains(HIDEVALUE)) {\n var opacityTextBoxInst = getInstance(select('.' + OPACITY, this.container), NumericTextBox);\n opacityTextBoxInst.value = value;\n opacityTextBoxInst.dataBind();\n }\n };\n ColorPicker.prototype.createPreview = function (parentEle) {\n var previewContainer = this.createElement('div', { className: PREVIEW });\n parentEle.appendChild(previewContainer);\n var preview = this.createElement('span', { className: 'e-preview ' + CURRENT });\n previewContainer.appendChild(preview);\n var colorValue = this.convertToRgbString(this.rgb);\n preview.style.backgroundColor = colorValue;\n preview = this.createElement('span', { className: 'e-preview ' + PREVIOUS });\n previewContainer.appendChild(preview);\n preview.style.backgroundColor = colorValue;\n };\n ColorPicker.prototype.isPicker = function () {\n return !this.container.classList.contains(PALETTECONTENT);\n };\n ColorPicker.prototype.getPopupEle = function () {\n return this.container.parentElement;\n };\n ColorPicker.prototype.createNumericInput = function (element, value, label, max) {\n var _this = this;\n var numericInput = new NumericTextBox({\n value: value,\n placeholder: label,\n min: 0,\n max: max,\n format: '###.##',\n showSpinButton: false,\n floatLabelType: 'Always',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true,\n change: function (args) {\n if (args.event) {\n _this.inputHandler(args.event);\n }\n }\n });\n numericInput.createElement = this.createElement;\n numericInput.appendTo(element);\n };\n ColorPicker.prototype.createInput = function () {\n var isPicker = this.isPicker();\n var wrapper = this.getWrapper();\n if ((isPicker && !wrapper.classList.contains(HIDEVALUE)) || (!isPicker && wrapper.classList.contains(SHOWVALUE))) {\n var inputWrap = this.createElement('div', { className: INPUTWRAPPER });\n if (isPicker) {\n this.appendElement(inputWrap, 2);\n }\n else {\n this.appendElement(inputWrap, 1);\n }\n var container = this.createElement('div', { className: 'e-input-container' });\n inputWrap.appendChild(container);\n if (!wrapper.classList.contains(HIDEVALUESWITCH)) {\n this.appendValueSwitchBtn(inputWrap);\n }\n if (!wrapper.classList.contains(HIDEHEX)) {\n var hexInput = this.createElement('input', {\n className: HEX,\n attrs: { 'maxlength': '7', 'spellcheck': 'false', 'aria-label': 'HEX' }\n });\n container.appendChild(hexInput);\n Input.createInput({\n element: hexInput,\n floatLabelType: 'Always',\n properties: {\n placeholder: 'HEX',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true\n }\n }, this.createElement);\n Input.setValue(this.value.slice(0, 7), hexInput);\n hexInput.addEventListener('input', this.inputHandler.bind(this));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n var label = void 0;\n var value = void 0;\n if (this.isRgb) {\n label = 'RGB';\n value = this.rgb;\n }\n else {\n label = 'HSV';\n value = this.hsv;\n }\n var clsName = ['rh', 'gs', 'bv'];\n for (var i = 0; i < 3; i++) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: 'e-' + clsName[i] + '-value' })), value[i], label[i], 255);\n }\n if (this.enableOpacity) {\n this.appendOpacityValue(container);\n }\n }\n }\n };\n ColorPicker.prototype.appendOpacityValue = function (container) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: OPACITY })), this.rgb[3] * 100, 'A', 100);\n };\n ColorPicker.prototype.appendValueSwitchBtn = function (targetEle) {\n var valueSwitchBtn = this.createElement('button', {\n className: 'e-icons e-css e-btn e-flat e-icon-btn ' + FORMATSWITCH,\n attrs: { 'title': 'Toggle format' }\n });\n targetEle.appendChild(valueSwitchBtn);\n if (this.isPicker() && !this.getWrapper().classList.contains(HIDERGBA)) {\n valueSwitchBtn.addEventListener('click', this.formatSwitchHandler.bind(this));\n }\n };\n ColorPicker.prototype.createCtrlBtn = function () {\n if (this.modeSwitcher || this.showButtons) {\n this.l10n.setLocale(this.locale);\n var btnWrapper = this.createElement('div', { className: CTRLSWITCH });\n this.container.appendChild(btnWrapper);\n if (this.showButtons) {\n var controlBtnWrapper = this.createElement('div', { className: CTRLBTN });\n btnWrapper.appendChild(controlBtnWrapper);\n var apply = this.l10n.getConstant('Apply');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: apply,\n className: 'e-btn e-css e-flat e-primary e-small ' + APPLY,\n attrs: { 'title': apply }\n }));\n var cancel = this.l10n.getConstant('Cancel');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: cancel,\n className: 'e-btn e-css e-flat e-small ' + CANCEL,\n attrs: { 'title': cancel }\n }));\n }\n if (this.modeSwitcher) {\n this.appendModeSwitchBtn();\n }\n }\n };\n ColorPicker.prototype.appendModeSwitchBtn = function () {\n var modeSwitcher = this.createElement('button', {\n className: 'e-icons e-btn e-flat e-icon-btn ' + MODESWITCH, attrs: { title: this.l10n.getConstant('ModeSwitcher') }\n });\n select('.' + CTRLSWITCH, this.container).insertBefore(modeSwitcher, select('.' + CTRLBTN, this.container));\n };\n ColorPicker.prototype.createDragTooltip = function () {\n var _this = this;\n var tooltip = new Tooltip({\n opensOn: 'Custom',\n showTipPointer: false,\n cssClass: 'e-color-picker-tooltip',\n htmlAttributes: { title: 'tooltip' },\n beforeOpen: function (args) {\n _this.tooltipEle = args.element;\n },\n animation: { open: { effect: 'None' }, close: { effect: 'None' } }\n });\n tooltip.createElement = this.createElement;\n tooltip.appendTo(this.container);\n tooltip.open(this.container);\n this.tooltipEle.style.zIndex = getZindexPartial(this.tooltipEle).toString();\n this.tooltipEle.setAttribute('aria-label', 'colorpicker-tooltip');\n select('.e-tip-content', this.tooltipEle).appendChild(this.createElement('div', { className: 'e-tip-transparent' }));\n };\n ColorPicker.prototype.getTooltipInst = function () {\n return getInstance(this.container, Tooltip);\n };\n ColorPicker.prototype.setTooltipOffset = function (value) {\n this.getTooltipInst().offsetY = value;\n };\n ColorPicker.prototype.toggleDisabled = function (enable) {\n if (enable) {\n this.getWrapper().classList.add(DISABLED);\n }\n else {\n this.getWrapper().classList.remove(DISABLED);\n }\n if (this.showButtons) {\n ([].slice.call(selectAll('.e-btn', this.container))).forEach(function (ele) {\n if (enable) {\n attributes(ele, { 'disabled': '' });\n }\n else {\n ele.removeAttribute('disabled');\n }\n });\n }\n };\n ColorPicker.prototype.convertToRgbString = function (rgb) {\n return rgb.length ? rgb.length === 4 ? 'rgba(' + rgb.join() + ')' : 'rgb(' + rgb.join() + ')' : '';\n };\n ColorPicker.prototype.convertToHsvString = function (hsv) {\n return hsv.length === 4 ? 'hsva(' + hsv.join() + ')' : 'hsv(' + hsv.join() + ')';\n };\n ColorPicker.prototype.updateHsv = function () {\n this.hsv[1] = this.hsv[1] > 100 ? 100 : this.hsv[1];\n this.hsv[2] = this.hsv[2] > 100 ? 100 : this.hsv[2];\n this.setHandlerPosition();\n };\n ColorPicker.prototype.convertToOtherFormat = function (isKey) {\n if (isKey === void 0) { isKey = false; }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hsvToRgb.apply(this, this.hsv);\n var cValue = this.rgbToHex(this.rgb);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.updateInput(cValue);\n this.triggerEvent(cValue, pValue, rgba, isKey);\n };\n ColorPicker.prototype.updateInput = function (value) {\n var wrapper = this.getWrapper();\n if (!wrapper.classList.contains(HIDEVALUE)) {\n if (!wrapper.classList.contains(HIDEHEX)) {\n Input.setValue(value.substr(0, 7), select('.' + HEX, this.container));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n if (this.isRgb) {\n this.updateValue(this.rgb, false);\n }\n else {\n this.updateValue(this.hsv, false);\n }\n }\n }\n };\n ColorPicker.prototype.updatePreview = function (value) {\n if (this.enableOpacity) {\n this.updateOpacitySliderBg();\n }\n select('.e-tip-transparent', this.tooltipEle).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + PREVIOUS, this.container).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n };\n ColorPicker.prototype.getDragHandler = function () {\n return select('.' + HANDLER, this.container);\n };\n ColorPicker.prototype.removeTileSelection = function () {\n var selectedEle = [].slice.call(selectAll('.' + SELECT, this.container.children[0]));\n selectedEle.forEach(function (ele) {\n ele.classList.remove(SELECT);\n ele.setAttribute('aria-selected', 'false');\n });\n };\n ColorPicker.prototype.convertRgbToNumberArray = function (value) {\n return (value.slice(value.indexOf('(') + 1, value.indexOf(')'))).split(',').map(function (n, i) {\n return (i !== 3) ? parseInt(n, 10) : parseFloat(n);\n });\n };\n /**\n * To get color value in specified type.\n *\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @method getValue\n * @returns {string} - Color value\n */\n ColorPicker.prototype.getValue = function (value, type) {\n if (!value) {\n value = this.value;\n }\n type = !type ? 'hex' : type.toLowerCase();\n if (value[0] === 'r') {\n var cValue = this.convertRgbToNumberArray(value);\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue.slice(0, 3)));\n }\n else {\n if (type === 'hsva') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n if (value[0] === 'h') {\n var cValue = this.hsvToRgb.apply(this, this.convertRgbToNumberArray(value));\n if (type === 'rgba') {\n return this.convertToRgbString(cValue);\n }\n else {\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'rgb') {\n return this.convertToRgbString(cValue.slice(0, 3));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n value = this.roundValue(value);\n var rgb = this.hexToRgb(value);\n if (type === 'rgb' || type === 'hsv') {\n rgb = rgb.slice(0, 3);\n }\n if (type === 'rgba' || type === 'rgb') {\n return this.convertToRgbString(rgb);\n }\n else {\n if (type === 'hsva' || type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, rgb));\n }\n else {\n if (type === 'hex') {\n return value.slice(0, 7);\n }\n else {\n if (type === 'a') {\n return rgb[3].toString();\n }\n else {\n return 'null';\n }\n }\n }\n }\n }\n }\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @method toggle\n * @returns {void}\n */\n ColorPicker.prototype.toggle = function () {\n if (this.container.parentElement.classList.contains('e-popup-close')) {\n this.splitBtn.toggle();\n }\n else {\n this.closePopup(null);\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ColorPicker.prototype.getModuleName = function () {\n return 'colorpicker';\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ColorPicker.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ColorPicker.prototype.wireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.add(dragHandler, 'keydown', this.pickerKeyDown, this);\n var ctrlBtn = select('.' + CTRLBTN, this.container);\n if (ctrlBtn) {\n EventHandler.add(ctrlBtn, 'keydown', this.ctrlBtnKeyDown, this);\n }\n EventHandler.add(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown, this);\n if (this.modeSwitcher || this.showButtons) {\n this.addCtrlSwitchEvent();\n }\n EventHandler.add(select('.' + PREVIOUS, this.container), 'click', this.previewHandler, this);\n }\n else {\n EventHandler.add(this.container, 'click', this.paletteClickHandler, this);\n EventHandler.add(this.container, 'keydown', this.paletteKeyDown, this);\n }\n };\n ColorPicker.prototype.formResetHandler = function () {\n this.value = this.initialInputValue;\n attributes(this.element, { 'value': this.initialInputValue });\n };\n ColorPicker.prototype.addCtrlSwitchEvent = function () {\n var ctrlSwitchBtn = select('.' + CTRLSWITCH, this.container);\n if (ctrlSwitchBtn) {\n EventHandler.add(ctrlSwitchBtn, 'click', this.btnClickHandler, this);\n }\n };\n ColorPicker.prototype.ctrlBtnKeyDown = function (e) {\n if (e.keyCode === 13) {\n var applyBtn = select('.' + APPLY, this.container);\n if (applyBtn) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue);\n }\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.pickerKeyDown = function (e) {\n switch (e.keyCode) {\n case 39:\n this.handlerDragPosition(1, this.enableRtl ? -1 : 1, e);\n break;\n case 37:\n this.handlerDragPosition(1, this.enableRtl ? 1 : -1, e);\n break;\n case 38:\n this.handlerDragPosition(2, 1, e);\n break;\n case 40:\n this.handlerDragPosition(2, -1, e);\n break;\n case 13: {\n e.preventDefault();\n var cValue = this.rgbToHex(this.rgb);\n this.enterKeyHandler(cValue, e);\n }\n }\n };\n ColorPicker.prototype.enterKeyHandler = function (value, e) {\n this.triggerChangeEvent(value);\n if (!this.inline) {\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.closePopup = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.container, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n _this.splitBtn.toggle();\n _this.onPopupClose();\n }\n });\n };\n ColorPicker.prototype.triggerChangeEvent = function (value) {\n var hex = value.slice(0, 7);\n this.trigger('change', {\n currentValue: { hex: hex, rgba: this.convertToRgbString(this.rgb) },\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) },\n value: this.enableOpacity ? value : hex\n });\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\n this.element.value = hex ? hex : '#000000';\n };\n ColorPicker.prototype.handlerDragPosition = function (prob, value, e) {\n e.preventDefault();\n this.hsv[prob] += value * (e.ctrlKey ? 1 : 3);\n if (this.hsv[prob] < 0) {\n this.hsv[prob] = 0;\n }\n this.updateHsv();\n this.convertToOtherFormat(true);\n };\n ColorPicker.prototype.handlerDown = function (e) {\n e.preventDefault();\n if (e.type === 'mousedown') {\n this.clientX = Math.abs(e.pageX - pageXOffset);\n this.clientY = Math.abs(e.pageY - pageYOffset);\n this.setTooltipOffset(8);\n }\n else {\n this.clientX = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n this.clientY = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n this.setTooltipOffset(-8);\n }\n this.setHsv(this.clientX, this.clientY);\n this.getDragHandler().style.transition = 'left .4s cubic-bezier(.25, .8, .25, 1), top .4s cubic-bezier(.25, .8, .25, 1)';\n this.updateHsv();\n this.convertToOtherFormat();\n this.getDragHandler().focus();\n EventHandler.add(document, 'mousemove touchmove', this.handlerMove, this);\n EventHandler.add(document, 'mouseup touchend', this.handlerEnd, this);\n };\n ColorPicker.prototype.handlerMove = function (e) {\n if (e.type !== 'touchmove') {\n e.preventDefault();\n }\n var x;\n var y;\n if (e.type === 'mousemove') {\n x = Math.abs(e.pageX - pageXOffset);\n y = Math.abs(e.pageY - pageYOffset);\n }\n else {\n x = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n y = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n }\n this.setHsv(x, y);\n var dragHandler = this.getDragHandler();\n this.updateHsv();\n this.convertToOtherFormat();\n this.getTooltipInst().refresh(dragHandler);\n if (!this.tooltipEle.style.transform) {\n if (Math.abs(this.clientX - x) > 8 || Math.abs(this.clientY - y) > 8) {\n select('.' + HSVAREA, this.container).style.cursor = 'pointer';\n dragHandler.style.transition = 'none';\n if (!this.inline) {\n this.tooltipEle.style.zIndex = (parseInt(this.getPopupEle().style.zIndex, 10) + 1).toString();\n }\n this.tooltipEle.style.transform = 'rotate(45deg)';\n dragHandler.classList.add('e-hide-handler');\n }\n }\n };\n ColorPicker.prototype.setHsv = function (clientX, clientY) {\n var ele = select('.' + HSVAREA, this.container);\n var position = ele.getBoundingClientRect();\n if (this.enableRtl) {\n clientX = clientX > position.right ? 0 : Math.abs(clientX - position.right);\n }\n else {\n clientX = clientX > position.left ? Math.abs(clientX - position.left) : 0;\n }\n clientY = clientY > position.top ? Math.abs(clientY - position.top) : 0;\n this.hsv[2] = Math.round(Number(100 * (ele.offsetHeight -\n Math.max(0, Math.min(ele.offsetHeight, (clientY - ele.offsetTop)))) / ele.offsetHeight) * 10) / 10;\n this.hsv[1] =\n Math.round(Number(100 * (Math.max(0, Math.min(ele.offsetWidth, (clientX - ele.offsetLeft)))) / ele.offsetWidth) * 10) / 10;\n };\n ColorPicker.prototype.handlerEnd = function (e) {\n if (e.type !== 'touchend') {\n e.preventDefault();\n }\n EventHandler.remove(document, 'mousemove touchmove', this.handlerMove);\n EventHandler.remove(document, 'mouseup touchend', this.handlerEnd);\n var dragHandler = this.getDragHandler();\n select('.' + HSVAREA, this.container).style.cursor = '';\n if (this.tooltipEle.style.transform) {\n this.tooltipEle.style.transform = '';\n dragHandler.classList.remove('e-hide-handler');\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n };\n ColorPicker.prototype.btnClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.' + MODESWITCH)) {\n e.stopPropagation();\n this.switchToPalette();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n }\n };\n ColorPicker.prototype.switchToPalette = function () {\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Palette' });\n this.unWireEvents();\n this.destroyOtherComp();\n detach(select('.e-slider-preview', this.container));\n if (!this.getWrapper().classList.contains(HIDEVALUE)) {\n remove(select('.' + INPUTWRAPPER, this.container));\n }\n detach(this.getHsvContainer());\n this.createPalette();\n this.firstPaletteFocus();\n this.createInput();\n this.refreshPopupPos();\n //for image editor popup position refreshing\n if (this.element.parentElement && this.element.parentElement.parentElement && this.element.parentElement.parentElement.classList.contains('e-ie-ddb-popup')) {\n this.refreshImageEditorPopupPos();\n }\n ;\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Palette' });\n };\n //for image editor popup position refreshing\n ColorPicker.prototype.refreshImageEditorPopupPos = function () {\n if (Browser.isDevice) {\n var popupEle = this.getPopupEle();\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.top = formatUnit(0 + pageYOffset);\n var btnElem = document.querySelector(\"#\" + this.element.parentElement.parentElement.id.split('-popup')[0]);\n if (btnElem) {\n popupEle.parentElement.ej2_instances[0].refreshPosition(btnElem);\n }\n }\n };\n ColorPicker.prototype.refreshPopupPos = function () {\n if (!this.inline) {\n var popupEle = this.getPopupEle();\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.top = formatUnit(0 + pageYOffset);\n this.getPopupInst().refreshPosition(this.splitBtn.element.parentElement);\n }\n };\n ColorPicker.prototype.formatSwitchHandler = function () {\n if (this.isRgb) {\n this.updateValue(this.hsv, true, 3, [360, 100, 100]);\n this.isRgb = false;\n }\n else {\n this.updateValue(this.rgb, true, 2);\n this.isRgb = true;\n }\n };\n ColorPicker.prototype.updateValue = function (value, format, idx, max) {\n var clsName = ['e-rh-value', 'e-gs-value', 'e-bv-value'];\n var inst;\n for (var i = 0, len = clsName.length; i < len; i++) {\n inst = getInstance(select('.' + clsName[i], this.container), NumericTextBox);\n inst.value = Math.round(value[i]);\n if (format) {\n inst.placeholder = clsName[i].substr(idx, 1).toUpperCase();\n inst.max = max ? max[i] : 255;\n }\n inst.dataBind();\n }\n };\n ColorPicker.prototype.previewHandler = function (e) {\n var target = e.target;\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.convertRgbToNumberArray(target.style.backgroundColor);\n if (!this.rgb[3]) {\n this.rgb[3] = 1;\n }\n var cValue = this.rgbToHex(this.rgb);\n var hsv = this.rgbToHsv.apply(this, this.rgb);\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n }\n this.setHsvContainerBg(hsv[0]);\n if (this.enableOpacity && hsv[3] !== this.hsv[3]) {\n this.opacitySlider.setProperties({ 'value': hsv[3] * 100 }, true);\n this.opacitySlider.refresh();\n this.updateOpacitySliderBg();\n }\n this.hsv = hsv;\n this.setHandlerPosition();\n this.updateInput(cValue);\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = this.convertToRgbString(this.rgb);\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb));\n };\n ColorPicker.prototype.paletteClickHandler = function (e) {\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(TILE)) {\n this.removeTileSelection();\n this.addTileSelection(target);\n if (target.classList.contains(NOCOLOR)) {\n this.noColorTile();\n }\n else {\n var cValue = target.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(this.roundValue(cValue));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb));\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n }\n else {\n if (closest(target, '.' + MODESWITCH)) {\n this.switchToPicker();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n else {\n if (this.getWrapper().classList.contains(SHOWVALUE) && closest(target, '.' + FORMATSWITCH)) {\n this.formatSwitchHandler();\n }\n }\n }\n }\n };\n ColorPicker.prototype.noColorTile = function (isKey) {\n if (isKey === void 0) { isKey = false; }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = [];\n this.hsv = [];\n this.triggerEvent('', pValue, '', isKey);\n };\n ColorPicker.prototype.switchToPicker = function () {\n var wrapper = this.getWrapper();\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Picker' });\n this.unWireEvents();\n ([].slice.call(selectAll('.' + PALETTES, this.container))).forEach(function (ele) {\n detach(ele);\n });\n if (wrapper.classList.contains(SHOWVALUE)) {\n detach(select('.' + INPUTWRAPPER, this.container));\n }\n this.container.style.width = '';\n var grpEle = select('.e-custom-palette', this.container);\n if (this.presetColors) {\n remove(grpEle);\n }\n this.createPicker();\n this.getDragHandler().focus();\n this.createInput();\n this.refreshPopupPos();\n //for image editor popup position refreshing\n if (this.element.parentElement && this.element.parentElement.parentElement && this.element.parentElement.parentElement.classList.contains('e-ie-ddb-popup')) {\n this.refreshImageEditorPopupPos();\n }\n ;\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Picker' });\n };\n ColorPicker.prototype.ctrlBtnClick = function (ele, e) {\n if (ele.classList.contains(APPLY)) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue);\n }\n if (!this.inline) {\n this.closePopup(e);\n this.splitBtn.element.focus();\n }\n else if (ele.classList.contains(CANCEL)) {\n var beforeCloseArgs = { element: this.container, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs);\n }\n };\n ColorPicker.prototype.paletteKeyDown = function (e) {\n var target = e.target;\n if (!target.classList.contains(PALETTES)) {\n return;\n }\n var selectedEle;\n var idx;\n var tiles = [].slice.call(selectAll('.' + TILE, target));\n var prevSelectedEle = (tiles.filter(function (tile) { return tile.classList.contains('e-selected'); })).pop();\n switch (!e.altKey && e.keyCode) {\n case 39:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? -1 : 1)]\n : tiles[this.enableRtl ? tiles.length - 1 : 0];\n this.keySelectionChanges(selectedEle);\n break;\n case 37:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? 1 : -1)]\n : tiles[this.enableRtl ? 0 : tiles.length - 1];\n this.keySelectionChanges(selectedEle);\n break;\n case 38:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, -this.columns) : 0;\n selectedEle = tiles[idx] ? tiles[idx] : tiles[idx - this.columns];\n this.keySelectionChanges(selectedEle);\n break;\n case 40:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, this.columns) : tiles.length - 1;\n if (tiles[idx]) {\n selectedEle = tiles[idx];\n }\n else {\n idx %= tiles.length;\n idx += tiles[tiles.length - 1].parentElement.childElementCount;\n selectedEle = tiles[idx];\n }\n this.keySelectionChanges(selectedEle);\n break;\n case 13:\n e.preventDefault();\n if (prevSelectedEle) {\n var cValue = prevSelectedEle.getAttribute('aria-label');\n this.enterKeyHandler(cValue ? cValue : '', e);\n }\n }\n };\n ColorPicker.prototype.keySelectionChanges = function (newEle) {\n this.removeTileSelection();\n this.addTileSelection(newEle);\n if (newEle.classList.contains(NOCOLOR)) {\n this.noColorTile(true);\n }\n else {\n var cValue = newEle.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(cValue);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), true);\n }\n };\n ColorPicker.prototype.tilePosition = function (items, element, cIdx) {\n items = Array.prototype.slice.call(items);\n var n = items.length;\n var emptyCount = this.columns - items[n - 1].parentElement.childElementCount;\n var idx = items.indexOf(element);\n idx += cIdx;\n if (idx < 0) {\n idx += n + emptyCount;\n }\n else {\n idx %= n + emptyCount;\n }\n return idx;\n };\n ColorPicker.prototype.inputHandler = function (e) {\n var target = e.target;\n if (!target.value.length) {\n return;\n }\n var hsv;\n var pValue;\n var label = select('.e-float-text', target.parentElement).textContent;\n switch (label) {\n case 'HEX': {\n var value = '';\n if ((target.value[0] === '#' && target.value.length !== 5) || (target.value[0] !== '#' && target.value.length !== 4)) {\n value = this.roundValue(target.value);\n }\n if (value.length === 9) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(value + value.substr(-2));\n this.inputValueChange(this.rgbToHsv.apply(this, this.rgb), pValue, target.value);\n }\n else {\n return;\n }\n break;\n }\n case 'R':\n if (this.rgb[0] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[0] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'G':\n if (this.rgb[1] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[1] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'B':\n if (this.rgb[2] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[2] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'H':\n this.hueSlider.value = Number(target.value);\n break;\n case 'S':\n if (this.hsv[1] !== Number(target.value)) {\n this.hsv[1] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat();\n }\n break;\n case 'V':\n if (this.hsv[2] !== Number(target.value)) {\n this.hsv[2] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat();\n }\n break;\n case 'A':\n this.opacitySlider.value = Number(target.value);\n break;\n }\n };\n ColorPicker.prototype.inputValueChange = function (hsv, pValue, value) {\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n this.setHsvContainerBg(hsv[0]);\n }\n this.hsv = hsv;\n var cValue = this.rgbToHex(this.rgb);\n this.setHandlerPosition();\n this.updateInput(value ? value : cValue);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.triggerEvent(cValue, pValue, rgba);\n };\n ColorPicker.prototype.triggerEvent = function (cValue, pValue, rgba, isKey) {\n if (isKey === void 0) { isKey = false; }\n var hex = cValue.slice(0, 7);\n if (!this.showButtons && !isKey) {\n this.trigger('change', { currentValue: { hex: hex, rgba: rgba },\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) }, value: cValue });\n if (this.enableOpacity) {\n this.setProperties({ 'value': cValue }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\n this.element.value = hex ? hex : '#000000';\n }\n else {\n this.trigger('select', {\n currentValue: { hex: hex, rgba: rgba },\n previousValue: { hex: pValue.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(pValue)) }\n });\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n ColorPicker.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n ['tabindex', 'spellcheck'].forEach(function (attr) { _this.element.removeAttribute(attr); });\n if (this.inline) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n else {\n if (this.isPopupOpen()) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n this.splitBtn.destroy();\n this.splitBtn = null;\n }\n this.tileRipple();\n this.tileRipple = null;\n this.ctrlBtnRipple();\n this.ctrlBtnRipple = null;\n if (this.element.nextElementSibling) {\n detach(this.element.nextElementSibling);\n }\n if (wrapper) {\n wrapper.parentElement.insertBefore(this.element, wrapper);\n detach(wrapper);\n }\n this.container = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n ColorPicker.prototype.destroyOtherComp = function () {\n if (this.isPicker()) {\n var popup = closest(this.hueSlider.element, '.e-color-picker');\n var numericElemColl = popup.querySelectorAll('.e-numerictextbox');\n for (var i = 0; i < numericElemColl.length; i++) {\n getInstance(numericElemColl[i], NumericTextBox).destroy();\n }\n this.hueSlider.destroy();\n if (this.enableOpacity) {\n this.opacitySlider.destroy();\n this.opacitySlider = null;\n }\n this.hueSlider = null;\n var tooltipInst = this.getTooltipInst();\n tooltipInst.close();\n tooltipInst.destroy();\n this.tooltipEle = null;\n }\n };\n ColorPicker.prototype.isPopupOpen = function () {\n return this.getPopupEle().classList.contains('e-popup-open');\n };\n ColorPicker.prototype.unWireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.remove(dragHandler, 'keydown', this.pickerKeyDown);\n var ctrlBtn = select('.' + CTRLBTN, this.container);\n if (ctrlBtn) {\n EventHandler.remove(ctrlBtn, 'keydown', this.ctrlBtnKeyDown);\n }\n EventHandler.remove(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown);\n if (this.modeSwitcher || this.showButtons) {\n EventHandler.remove(select('.' + CTRLSWITCH, this.container), 'click', this.btnClickHandler);\n }\n EventHandler.remove(select('.' + PREVIOUS, this.container), 'click', this.previewHandler);\n }\n else {\n EventHandler.remove(this.container, 'click', this.paletteClickHandler);\n EventHandler.remove(this.container, 'keydown', this.paletteKeyDown);\n }\n };\n ColorPicker.prototype.roundValue = function (value) {\n if (!value) {\n return '';\n }\n if (value[0] !== '#') {\n value = '#' + value;\n }\n var len = value.length;\n if (len === 4) {\n value += 'f';\n len = 5;\n }\n if (len === 5) {\n var tempValue = '';\n for (var i = 1, len_1 = value.length; i < len_1; i++) {\n tempValue += (value.charAt(i) + value.charAt(i));\n }\n value = '#' + tempValue;\n len = 9;\n }\n if (len === 7) {\n value += 'ff';\n }\n return value;\n };\n ColorPicker.prototype.hexToRgb = function (hex) {\n if (!hex) {\n return [];\n }\n hex = hex.trim();\n if (hex.length !== 9) {\n hex = this.roundValue(hex);\n }\n var opacity = Number((parseInt(hex.slice(-2), 16) / 255).toFixed(2));\n hex = hex.slice(1, 7);\n var bigInt = parseInt(hex, 16);\n var h = [];\n h.push((bigInt >> 16) & 255);\n h.push((bigInt >> 8) & 255);\n h.push(bigInt & 255);\n h.push(opacity);\n return h;\n };\n ColorPicker.prototype.rgbToHsv = function (r, g, b, opacity) {\n if (this.rgb && !this.rgb.length) {\n return [];\n }\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0;\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n var hsv = [Math.round(h * 360), Math.round(s * 1000) / 10, Math.round(v * 1000) / 10];\n if (!isNullOrUndefined(opacity)) {\n hsv.push(opacity);\n }\n return hsv;\n };\n ColorPicker.prototype.hsvToRgb = function (h, s, v, opacity) {\n var r;\n var g;\n var b;\n s /= 100;\n v /= 100;\n if (s === 0) {\n r = g = b = v;\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), opacity];\n }\n h /= 60;\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n }\n var rgb = [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n if (!isNullOrUndefined(opacity)) {\n rgb.push(opacity);\n }\n return rgb;\n };\n ColorPicker.prototype.rgbToHex = function (rgb) {\n return rgb.length ? ('#' + this.hex(rgb[0]) + this.hex(rgb[1]) + this.hex(rgb[2]) +\n (!isNullOrUndefined(rgb[3]) ? (rgb[3] !== 0 ? (Math.round(rgb[3] * 255) + 0x10000).toString(16).substr(-2) : '00') : '')) : '';\n };\n ColorPicker.prototype.hex = function (x) {\n return ('0' + x.toString(16)).slice(-2);\n };\n ColorPicker.prototype.changeModeSwitcherProp = function (prop) {\n var ctrlSwitchWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlSwitchWrapper) {\n this.appendModeSwitchBtn();\n }\n else {\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n }\n else {\n if (ctrlSwitchWrapper) {\n if (this.showButtons) {\n detach(select('.' + MODESWITCH, ctrlSwitchWrapper));\n }\n else {\n remove(ctrlSwitchWrapper);\n }\n }\n }\n };\n ColorPicker.prototype.changeShowBtnProps = function (prop) {\n var ctrlBtnWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlBtnWrapper) {\n remove(ctrlBtnWrapper);\n }\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n else {\n if (this.modeSwitcher) {\n detach(select('.' + CTRLBTN, ctrlBtnWrapper));\n }\n else {\n remove(ctrlBtnWrapper);\n }\n }\n };\n ColorPicker.prototype.changeValueProp = function (newProp) {\n if (this.isPicker()) {\n this.rgb = this.hexToRgb(newProp);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHandlerPosition();\n detach(closest(this.hueSlider.element, '.e-slider-preview'));\n this.createSlider();\n this.setHsvContainerBg();\n this.updateInput(newProp);\n if (this.rgb.length === 4) {\n this.updateOpacityInput(this.rgb[3] * 100);\n }\n }\n else {\n this.removeTileSelection();\n var ele = this.container.querySelector('span[aria-label=\"' + this.roundValue(newProp) + '\"]');\n if (ele) {\n this.addTileSelection(ele);\n }\n }\n };\n ColorPicker.prototype.setInputEleProps = function () {\n remove(select('.' + INPUTWRAPPER, this.container));\n this.createInput();\n };\n ColorPicker.prototype.changeDisabledProp = function (newProp) {\n if (this.isPicker()) {\n this.hueSlider.enabled = !newProp;\n this.opacitySlider.enabled = !newProp;\n this.setInputEleProps();\n }\n if (newProp) {\n this.toggleDisabled(true);\n this.unWireEvents();\n }\n else {\n this.toggleDisabled(false);\n this.wireEvents();\n }\n };\n ColorPicker.prototype.changeCssClassProps = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n var popupWrapper = this.getPopupEle();\n if (oldProp) {\n removeClass([wrapper, popupWrapper], oldProp.split(' '));\n }\n if (newProp) {\n addClass([wrapper, popupWrapper], newProp.replace(/\\s+/g, ' ').trim().split(' '));\n }\n };\n ColorPicker.prototype.changeRtlProps = function (newProp) {\n if (newProp) {\n addClass([this.getWrapper()], 'e-rtl');\n }\n else {\n removeClass([this.getWrapper()], 'e-rtl');\n }\n };\n ColorPicker.prototype.changePaletteProps = function () {\n detach(this.container.children[0]);\n this.container.style.width = '';\n this.createPalette();\n };\n ColorPicker.prototype.changeOpacityProps = function (newProp) {\n var wrapper = this.getWrapper();\n if (newProp) {\n removeClass([this.container.parentElement], HIDEOPACITY);\n this.createOpacitySlider(select('.e-colorpicker-slider', this.container).appendChild(this.createElement('div', { className: 'e-opacity-slider' })));\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n this.appendOpacityValue(select('.e-input-container', this.container));\n }\n }\n else {\n addClass([this.container.parentElement], HIDEOPACITY);\n this.opacitySlider.destroy();\n remove(this.opacitySlider.element);\n this.opacitySlider = null;\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n remove(select('.' + OPACITY, this.container).parentElement);\n }\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ColorPickerModel} newProp - Specifies new properties\n * @param {ColorPickerModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n ColorPicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (!isNullOrUndefined(newProp.value)) {\n var value = this.roundValue(newProp.value);\n if (value.length === 9) {\n this.element.value = this.roundValue(value).slice(0, 7);\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n if (preview) {\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(newProp.value));\n }\n }\n else if (this.noColor && this.mode === 'Palette' && this.value === '') {\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n preview.style.backgroundColor = '';\n }\n else {\n this.value = oldProp.value;\n }\n }\n if (!this.inline && isNullOrUndefined(newProp.inline)) {\n var otherCompModel = ['disabled', 'enableRtl'];\n this.splitBtn.setProperties(getModel(newProp, otherCompModel));\n if (!this.isPopupOpen()) {\n this.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n this.changeRtlProps(newProp.enableRtl);\n return;\n }\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'inline':\n if (newProp.inline) {\n this_1.getWrapper().appendChild(this_1.container);\n this_1.splitBtn.destroy();\n detach(this_1.element.nextElementSibling);\n if (!this_1.container.children.length) {\n this_1.createWidget();\n }\n }\n else {\n this_1.destroyOtherComp();\n this_1.unWireEvents();\n this_1.container.innerHTML = '';\n this_1.createSplitBtn();\n }\n break;\n case 'cssClass': {\n this_1.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n var props = newProp.cssClass.split(' ').concat(oldProp.cssClass.split(' '));\n props = props.reduce(function (a, b) { if (a.indexOf(b) < 0) {\n a.push(b);\n } return a; }, []);\n var count_1 = 0;\n props.forEach(function (cls) {\n if (count_1 === 0 &&\n (cls === HIDEVALUE || cls === HIDEVALUESWITCH || cls === SHOWVALUE || cls === HIDEHEX || cls === HIDERGBA)) {\n var inputWrap = select('.' + INPUTWRAPPER, _this.container);\n if (inputWrap) {\n remove(select('.' + INPUTWRAPPER, _this.container));\n }\n _this.createInput();\n count_1++;\n }\n });\n break;\n }\n case 'enableRtl':\n if (this_1.isPicker()) {\n this_1.hueSlider.enableRtl = newProp.enableRtl;\n if (this_1.enableOpacity) {\n this_1.opacitySlider.enableRtl = newProp.enableRtl;\n }\n this_1.setInputEleProps();\n }\n this_1.changeRtlProps(newProp.enableRtl);\n break;\n case 'disabled':\n this_1.changeDisabledProp(newProp.disabled);\n break;\n case 'value':\n if (this_1.value !== oldProp.value) {\n this_1.changeValueProp(newProp.value);\n }\n break;\n case 'showButtons':\n this_1.changeShowBtnProps(newProp.showButtons);\n break;\n case 'mode':\n if (newProp.mode === 'Picker') {\n this_1.switchToPicker();\n }\n else {\n this_1.switchToPalette();\n }\n break;\n case 'modeSwitcher':\n this_1.changeModeSwitcherProp(newProp.modeSwitcher);\n break;\n case 'columns':\n case 'presetColors':\n if (!this_1.isPicker()) {\n this_1.changePaletteProps();\n }\n break;\n case 'noColor':\n if (newProp.noColor) {\n if (this_1.mode === 'Palette' && !this_1.modeSwitcher) {\n this_1.setNoColor();\n }\n }\n else {\n this_1.changePaletteProps();\n }\n break;\n case 'enableOpacity':\n this_1.changeOpacityProps(newProp.enableOpacity);\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n /**\n * Sets the focus to Colorpicker\n * its native method\n *\n * @public\n * @returns {void}\n */\n ColorPicker.prototype.focusIn = function () {\n this.element.parentElement.focus();\n };\n __decorate([\n Property('#008000ff')\n ], ColorPicker.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ColorPicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"disabled\", void 0);\n __decorate([\n Property('Picker')\n ], ColorPicker.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(null)\n ], ColorPicker.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"showButtons\", void 0);\n __decorate([\n Property(10)\n ], ColorPicker.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"inline\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"noColor\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeModeSwitch\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"onModeSwitch\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"created\", void 0);\n ColorPicker = __decorate([\n NotifyPropertyChanges\n ], ColorPicker);\n return ColorPicker;\n}(Component));\nexport { ColorPicker };\n","/* eslint-disable */\nimport { createElement, Browser, isBlazor, isNullOrUndefined, closest, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport { Toolbar as Tool, Menu } from '@syncfusion/ej2-navigations';\n// eslint-disable-next-line max-len\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { ColorPicker, Slider } from '@syncfusion/ej2-inputs';\nimport { cloneObject } from '../drawing/drawing-util';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { Query } from '@syncfusion/ej2-data';\nimport { DynamicStampItem, SignStampItem, StandardBusinessStampItem } from '../base/types';\n/**\n * @hidden\n */\nvar AnnotationToolbar = /** @class */ (function () {\n function AnnotationToolbar(viewer, viewerBase, toolbar) {\n var _this = this;\n this.toolbarBorderHeight = 1;\n /**\n * @private\n */\n this.isToolbarHidden = false;\n /**\n * @private\n */\n this.isMobileAnnotEnabled = false;\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n this.isStrikethroughEnabled = false;\n this.isHighlightBtnVisible = true;\n this.isCommentBtnVisible = true;\n this.isUnderlineBtnVisible = true;\n this.isStrikethroughBtnVisible = true;\n this.isColorToolVisible = true;\n this.isOpacityToolVisible = true;\n this.isDeleteAnnotationToolVisible = true;\n this.isCurrentAnnotationOpacitySet = false;\n this.isStampBtnVisible = false;\n this.isShapeBtnVisible = false;\n this.isSignatureBtnVisible = false;\n this.isInkBtnVisible = false;\n this.isFontFamilyToolVisible = false;\n this.isFontSizeToolVisible = false;\n this.isFontAlignToolVisible = false;\n this.isFontColorToolVisible = false;\n this.isFontStylesToolVisible = false;\n this.isCommentPanelBtnVisible = false;\n this.isFreeTextBtnVisible = false;\n this.isCalibrateBtnVisible = false;\n this.isStrokeColorToolVisible = false;\n this.isThicknessToolVisible = false;\n this.stampMenu = [];\n this.stampParentID = '';\n /**\n * @private\n */\n this.inkAnnotationSelected = false;\n /**\n * @private\n */\n this.openSignaturePopup = false;\n this.isSavedSignatureClicked = false;\n this.saveSignatureCount = 0;\n this.saveInitialCount = 0;\n /**\n * @private\n */\n this.isToolbarCreated = false;\n // eslint-disable-next-line\n this.addStampImage = function (args) {\n // eslint-disable-next-line\n var proxy = _this;\n // eslint-disable-next-line\n var upoadedFiles = args.target.files;\n if (args.target.files[0] !== null) {\n var uploadedFile = upoadedFiles[0];\n _this.pdfViewer.annotationModule.stampAnnotationModule.customStampName = uploadedFile.name.split('.')[0];\n if (uploadedFile.type.split('/')[0] === 'image') {\n var reader = new FileReader();\n // eslint-disable-next-line\n reader.onload = function (e) {\n var uploadedFileUrl = e.currentTarget.result;\n proxy.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n proxy.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n proxy.pdfViewerBase.stampAdded = true;\n _this.pdfViewer.annotationModule.stampAnnotationModule.createCustomStampAnnotation(uploadedFileUrl);\n proxy.pdfViewerBase.stampAdded = false;\n };\n reader.readAsDataURL(uploadedFile);\n }\n }\n args.target.value = '';\n args.currentTarget.value = '';\n };\n this.popupPosition = function (colorElement, buttonElement) {\n if (colorElement && colorElement.element) {\n var buttonBounds = buttonElement.getBoundingClientRect();\n var elements = colorElement.element.getElementsByClassName(\"e-container e-color-palette\")[0].getElementsByClassName(\"e-palette\")[0].getBoundingClientRect();\n var mainContainerBounds = this.pdfViewerBase.mainContainer.getBoundingClientRect();\n if (elements.left + elements.width > mainContainerBounds.width) {\n colorElement.element.parentElement.style.left = (elements.left - elements.width) + buttonBounds.width + 'px';\n }\n }\n };\n this.onShapeToolbarClicked = function (args) {\n var elementId = _this.pdfViewer.element.id;\n var shapeAnnotationModule = _this.pdfViewer.annotation.shapeAnnotationModule;\n if (!Browser.isDevice) {\n _this.deselectAllItems();\n _this.resetFreeTextAnnot();\n }\n else {\n // eslint:disable-next-line\n var element = args.originalEvent.target;\n _this.pdfViewer.toolbarModule.selectItem(element.parentElement);\n }\n switch (args.originalEvent.target.id) {\n case elementId + '_shape_line':\n case elementId + '_shape_lineIcon':\n shapeAnnotationModule.setAnnotationType('Line');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.lineFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.lineStrokeColor);\n _this.handleShapeTool(elementId + '_shape_line');\n break;\n case elementId + '_shape_arrow':\n case elementId + '_shape_arrowIcon':\n shapeAnnotationModule.setAnnotationType('Arrow');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.arrowFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.arrowStrokeColor);\n _this.handleShapeTool(elementId + '_shape_arrow');\n break;\n case elementId + '_shape_rectangle':\n case elementId + '_shape_rectangleIcon':\n shapeAnnotationModule.setAnnotationType('Rectangle');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.rectangleFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.rectangleStrokeColor);\n _this.handleShapeTool(elementId + '_shape_rectangle');\n break;\n case elementId + '_shape_circle':\n case elementId + '_shape_circleIcon':\n shapeAnnotationModule.setAnnotationType('Circle');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.circleFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.circleStrokeColor);\n _this.handleShapeTool(elementId + '_shape_circle');\n break;\n case elementId + '_shape_pentagon':\n case elementId + '_shape_pentagonIcon':\n shapeAnnotationModule.setAnnotationType('Polygon');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.polygonFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.polygonStrokeColor);\n _this.handleShapeTool(elementId + '_shape_pentagon');\n break;\n }\n // this.pdfViewer.clearSelection();\n };\n this.pdfViewer = viewer;\n this.pdfViewerBase = viewerBase;\n this.primaryToolbar = toolbar;\n }\n /**\n * @private\n */\n AnnotationToolbar.prototype.initializeAnnotationToolbar = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_annotation_toolbar', className: 'e-pv-annotation-toolbar' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n this.toolbar = new Tool({\n width: '', height: '', overflowMode: 'Popup', cssClass: 'e-pv-toolbar-scroll',\n items: this.createToolbarItems(), clicked: this.onToolbarClicked.bind(this),\n created: function () {\n _this.createDropDowns();\n }\n });\n this.toolbar.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.appendTo(this.toolbarElement);\n this.afterToolbarCreation();\n this.createStampContainer();\n this.createSignContainer();\n this.applyAnnotationToolbarSettings();\n this.updateToolbarItems();\n this.showAnnotationToolbar(null, true);\n this.toolbarElement.setAttribute('aria-label', \"Annotation Toolbar\");\n };\n AnnotationToolbar.prototype.createMobileAnnotationToolbar = function (isEnable, isPath) {\n var _this = this;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n if (this.toolbarElement == null && isEnable) {\n this.isMobileAnnotEnabled = true;\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_annotation_toolbar', className: 'e-pv-annotation-toolbar' });\n this.pdfViewerBase.viewerMainContainer.insertBefore(this.toolbarElement, this.pdfViewerBase.viewerContainer);\n this.toolbar = new Tool({\n width: '', height: '', overflowMode: 'Popup',\n items: this.createMobileToolbarItems(isPath), clicked: this.onToolbarClicked.bind(this),\n created: function () {\n _this.createDropDowns(isPath);\n }\n });\n this.toolbar.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.pdfViewerBase.navigationPane.goBackToToolbar();\n this.pdfViewer.toolbarModule.showToolbar(false);\n this.toolbar.appendTo(this.toolbarElement);\n this.deleteItem = this.pdfViewerBase.getElement('_annotation_delete');\n this.deleteItem.firstElementChild.id = this.pdfViewer.element.id + '_annotation_delete';\n }\n else if (this.toolbarElement != null) {\n if (isEnable) {\n this.isMobileAnnotEnabled = true;\n this.pdfViewerBase.navigationPane.goBackToToolbar();\n this.pdfViewer.toolbarModule.showToolbar(false);\n this.toolbarElement.style.display = 'block';\n }\n else if (!isEnable) {\n this.isMobileAnnotEnabled = false;\n this.pdfViewer.toolbarModule.showToolbar(true);\n this.hideMobileAnnotationToolbar();\n }\n }\n }\n else {\n this.isMobileAnnotEnabled = true;\n }\n };\n AnnotationToolbar.prototype.hideMobileAnnotationToolbar = function () {\n if (this.toolbarElement != null) {\n if (this.pdfViewer.selectedItems.annotations.length > 0 || (!isNullOrUndefined(this.pdfViewer.annotationModule.textMarkupAnnotationModule) && this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation)) {\n if (this.propertyToolbar && this.propertyToolbar.element.children.length > 0) {\n this.propertyToolbar.element.style.display = 'block';\n this.toolbarCreated = true;\n }\n }\n else {\n if (this.toolbar.element.children.length > 0) {\n this.toolbarCreated = true;\n }\n else {\n this.toolbarCreated = false;\n }\n if (this.propertyToolbar && this.propertyToolbar.element.style.display !== 'none') {\n this.propertyToolbar.element.style.display = 'none';\n if (!this.toolbarCreated) {\n var editIcon = document.getElementById(this.pdfViewer.element.id + '_annotationIcon');\n if (editIcon && editIcon.parentElement.classList.contains('e-pv-select')) {\n this.createAnnotationToolbarForMobile();\n }\n }\n }\n }\n if (this.toolbarElement.children.length > 0) {\n this.toolbarElement.style.display = 'block';\n }\n this.adjustMobileViewer();\n }\n else if (this.toolbarCreated && this.propertyToolbar && this.propertyToolbar.element.children.length > 0) {\n this.propertyToolbar.element.style.display = 'none';\n this.adjustMobileViewer();\n this.toolbarCreated = false;\n }\n };\n AnnotationToolbar.prototype.FreeTextForMobile = function () {\n var _this = this;\n this.hideExistingTool();\n // eslint-disable-next-line max-len\n this.freetextToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_freeTextToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.freetextToolbarElement);\n // eslint-disable-next-line max-len\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n var fontFamilyTemplate = this.getTemplate('input', '_annotation_fontname', 'e-pv-annotation-fontname-container');\n var fontSizeTemplate = this.getTemplate('input', '_annotation_fontsize', 'e-pv-annotation-fontsize-container');\n var textColorTemplate = this.getTemplate('span', '_annotation_textcolor', 'e-pv-annotation-textcolor-container');\n var alignmentTemplate = this.getTemplate('span', '_annotation_textalign', 'e-pv-annotation-textalign-container');\n // eslint-disable-next-line max-len\n var textPropertiesTemplate = this.getTemplate('span', '_annotation_textproperties', 'e-pv-annotation-textprop-container');\n // eslint:disable-next-line\n var items;\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { type: 'Separator', align: 'Left', cssClass: 'e-pv-hightlight-separator-container' },\n { template: fontFamilyTemplate },\n { template: fontSizeTemplate },\n { template: textColorTemplate },\n { template: alignmentTemplate },\n { template: textPropertiesTemplate },\n { template: colorTemplate },\n { template: strokeTemplate },\n { template: thicknessTemplate },\n { template: opacityTemplate },\n ];\n this.toolbar = new Tool({\n items: items, width: '', height: '', overflowMode: 'Scrollable', created: function () {\n // eslint-disable-next-line max-len\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(_this.pdfViewer.element.id + '_annotation_freeTextEdit');\n }\n });\n this.toolbar.appendTo(this.freetextToolbarElement);\n this.showFreeTextPropertiesTool();\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.createPropertyTools = function (shapeType) {\n var _this = this;\n if (shapeType !== \"\") {\n if (this.propertyToolbar) {\n this.propertyToolbar.destroy();\n }\n if (this.toolbar) {\n this.toolbar.destroy();\n }\n // eslint-disable-next-line max-len\n var shapeToolbarElement = void 0;\n shapeToolbarElement = document.getElementById(this.pdfViewer.element.id + '_propertyToolbar');\n if (shapeToolbarElement) {\n shapeToolbarElement.parentElement.removeChild(shapeToolbarElement);\n }\n // eslint-disable-next-line max-len\n shapeToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_propertyToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(shapeToolbarElement);\n var id_1;\n var propertyToolbar = new Tool({\n // eslint-disable-next-line max-len\n items: this.createPropertyToolbarForMobile(shapeType), width: '', height: '', overflowMode: 'Scrollable',\n created: function () {\n if (!isNullOrUndefined(_this.pdfViewer.annotationModule.textMarkupAnnotationModule) && _this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n id_1 = _this.pdfViewer.element.id + '_underlineIcon';\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n id_1 = _this.pdfViewer.element.id + '_annotation_freeTextEdit';\n // eslint-disable-next-line max-len\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Stamp' || _this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'StickyNotes' || _this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Image') {\n id_1 = _this.pdfViewer.element.id + '_annotation_stamp';\n // eslint-disable-next-line max-len\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || _this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText') {\n id_1 = _this.pdfViewer.element.id + '_annotation_handwrittenSign';\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage') {\n id_1 = _this.pdfViewer.element.id + '_annotation_handwrittenImage';\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ink' || _this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Path') {\n id_1 = _this.pdfViewer.element.id + '_annotation_inkIcon';\n }\n else if (shapeType === 'Highlight' || shapeType === 'Underline' || shapeType === 'Strikethrough') {\n id_1 = _this.pdfViewer.element.id + '_highlightIcon';\n }\n else {\n id_1 = _this.pdfViewer.element.id + '_annotation_shapesIcon';\n }\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(id_1);\n }\n });\n propertyToolbar.isStringTemplate = true;\n propertyToolbar.appendTo(shapeToolbarElement);\n if (!isNullOrUndefined(this.pdfViewer.annotationModule.textMarkupAnnotationModule) && !this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line') {\n this.enableItems(this.colorDropDownElement.parentElement, false);\n }\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature') {\n var commentIcon = document.getElementById(this.pdfViewer.element.id + '_annotation_commentPanel');\n this.enableItems(commentIcon.parentElement, false);\n }\n }\n this.showPropertyTool(propertyToolbar, id_1);\n }\n };\n AnnotationToolbar.prototype.showPropertyTool = function (existingTool, id) {\n if (this.toolbar) {\n this.toolbar.destroy();\n }\n this.propertyToolbar = existingTool;\n this.applyProperiesToolSettings(id);\n //this.propertyToolbar.element.style.display = 'block';\n if (this.pdfViewer.selectedItems.annotations[0]) {\n // eslint:disable-next-line\n var selectedAnnotation = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line max-len\n if (selectedAnnotation.shapeAnnotationType !== 'SignatureText' && selectedAnnotation.shapeAnnotationType !== 'HandWrittenSignature' && selectedAnnotation.shapeAnnotationType !== 'Stamp' && selectedAnnotation.shapeAnnotationType !== 'Image' && selectedAnnotation.shapeAnnotationType !== 'Ink' && selectedAnnotation.shapeAnnotationType !== 'Path' && selectedAnnotation.shapeAnnotationType !== 'StickyNotes') {\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.selectedItems.annotations[0].fillColor);\n this.updateColorInIcon(this.strokeDropDownElement, this.pdfViewer.selectedItems.annotations[0].strokeColor);\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n // eslint:disable-next-line\n var fontFamily = this.fontFamilyElement;\n fontFamily.ej2_instances[0].value = this.pdfViewer.selectedItems.annotations[0].fontFamily;\n // eslint:disable-next-line\n var fontColor = this.fontColorElement;\n fontColor.children[0].style.borderBottomColor = this.pdfViewer.selectedItems.annotations[0].fontColor;\n this.pdfViewer.annotation.modifyTextAlignment(this.pdfViewer.selectedItems.annotations[0].textAlign);\n this.updateTextAlignInIcon(this.pdfViewer.selectedItems.annotations[0].textAlign);\n }\n }\n else {\n if (this.strokeDropDownElement) {\n this.updateColorInIcon(this.strokeDropDownElement, this.pdfViewer.selectedItems.annotations[0].strokeColor);\n }\n }\n }\n this.toolbarCreated = true;\n this.adjustMobileViewer();\n };\n AnnotationToolbar.prototype.stampToolMobileForMobile = function (args) {\n var _this = this;\n this.hideExistingTool();\n if (this.stampToolbarElement) {\n this.stampToolbarElement.parentElement.removeChild(this.stampToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.stampToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_stampToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.stampToolbarElement);\n // eslint-disable-next-line max-len\n this.toolbar = new Tool({\n items: this.createStampToolbarItemsForMobile(), width: '', height: '', overflowMode: 'Scrollable', clicked: this.onShapeToolbarClicked.bind(this),\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(args);\n }\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.stampToolbarElement);\n this.showStampPropertiesTool();\n //this.afterShapeToolbarCreationForMobile();\n };\n AnnotationToolbar.prototype.shapeToolMobile = function (args) {\n var _this = this;\n this.hideExistingTool();\n if (this.shapeToolbarElement) {\n this.shapeToolbarElement.parentElement.removeChild(this.shapeToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.shapeToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_shapeToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.shapeToolbarElement);\n // eslint-disable-next-line max-len\n this.toolbar = new Tool({\n items: this.createShapeToolbarItemsForMobile(), width: '', height: '', overflowMode: 'Scrollable', clicked: this.onShapeToolbarClicked.bind(this),\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(args.originalEvent.target.id);\n }\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.shapeToolbarElement);\n this.afterShapeToolbarCreationForMobile();\n this.showShapeTool();\n };\n AnnotationToolbar.prototype.calibrateToolMobile = function (args) {\n var _this = this;\n this.hideExistingTool();\n if (this.calibrateToolbarElement) {\n this.calibrateToolbarElement.parentElement.removeChild(this.calibrateToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.calibrateToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_calibrateToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.calibrateToolbarElement);\n // eslint-disable-next-line max-len\n this.toolbar = new Tool({\n items: this.createCalibrateToolbarItemsForMobile(), width: '', height: '', overflowMode: 'Scrollable', clicked: this.onCalibrateToolbarClicked.bind(this),\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(args.originalEvent.target.id);\n }\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.calibrateToolbarElement);\n this.afterCalibrateToolbarCreationForMobile();\n this.showShapeTool();\n };\n AnnotationToolbar.prototype.textMarkupForMobile = function (args) {\n var _this = this;\n this.hideExistingTool();\n if (this.textMarkupToolbarElement) {\n this.textMarkupToolbarElement.parentElement.removeChild(this.textMarkupToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.textMarkupToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_mobileAnnotationToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.textMarkupToolbarElement);\n // eslint-disable-next-line max-len\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint:disable-next-line\n var items;\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { type: 'Separator', align: 'Left', cssClass: 'e-pv-hightlight-separator-container' },\n { template: colorTemplate, align: 'left' },\n { template: opacityTemplate, align: 'left' }\n ];\n this.propertyToolbar = new Tool({\n items: items, width: '', height: '', overflowMode: 'Scrollable',\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(args.originalEvent.target.id);\n }\n });\n this.propertyToolbar.isStringTemplate = true;\n this.propertyToolbar.appendTo(this.textMarkupToolbarElement);\n this.showTextMarkupPropertiesTool();\n };\n AnnotationToolbar.prototype.showShapeTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 7, 7);\n }\n else {\n this.showColorEditTool(false, 7, 7);\n }\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 8, 8);\n }\n else {\n this.showStrokeColorEditTool(false, 8, 8);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 9, 9);\n }\n else {\n this.showThicknessEditTool(false, 9, 9);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 10, 10);\n }\n else {\n this.showOpacityEditTool(false, 10, 10);\n }\n }\n };\n AnnotationToolbar.prototype.signatureInkForMobile = function () {\n var _this = this;\n this.hideExistingTool();\n if (this.signatureInkToolbarElement) {\n this.signatureInkToolbarElement.parentElement.removeChild(this.signatureInkToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.signatureInkToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_mobileAnnotationToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.signatureInkToolbarElement);\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n // eslint:disable-next-line\n var items;\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { template: opacityTemplate, align: 'left' },\n { template: strokeTemplate, aign: 'left' },\n { template: thicknessTemplate, align: 'left' }\n ];\n this.toolbar = new Tool({\n items: items, width: '', height: '', overflowMode: 'Scrollable',\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(_this.pdfViewer.element.id + '_annotation_inkIcon');\n }\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.signatureInkToolbarElement);\n };\n AnnotationToolbar.prototype.hideExistingTool = function () {\n if (this.toolbar && !this.pdfViewer.enableDesktopMode) {\n this.toolbar.destroy();\n }\n if (this.propertyToolbar && !this.pdfViewer.enableDesktopMode) {\n this.propertyToolbar.destroy();\n }\n var mobileAnnotationToolbar = document.getElementById(this.pdfViewer.element.id + '_mobileAnnotationToolbar');\n if (mobileAnnotationToolbar) {\n mobileAnnotationToolbar.style.display = 'none';\n }\n };\n AnnotationToolbar.prototype.applyProperiesToolSettings = function (type) {\n switch (type) {\n case this.pdfViewer.element.id + '_underlineIcon':\n case this.pdfViewer.element.id + '_highlightIcon':\n this.showTextMarkupPropertiesTool();\n break;\n case this.pdfViewer.element.id + '_annotation_freeTextEdit':\n this.showFreeTextPropertiesTool();\n break;\n case this.pdfViewer.element.id + '_annotation_shapesIcon':\n this.shapePropertiesTool();\n break;\n case 'stampTool':\n case this.pdfViewer.element.id + '_annotation_stamp':\n this.showStampPropertiesTool();\n break;\n case this.pdfViewer.element.id + '_annotation_handwrittenSign':\n case this.pdfViewer.element.id + '_annotation_inkIcon':\n this.showInkPropertiesTool();\n break;\n case this.pdfViewer.element.id + '_annotation_handwrittenImage':\n this.showImagePropertyTool();\n break;\n }\n };\n AnnotationToolbar.prototype.showImagePropertyTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 0, 0);\n }\n else {\n this.showOpacityEditTool(false, 0, 0);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 1, 1);\n }\n else {\n this.showCommentPanelTool(false, 1, 1);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 2, 2);\n }\n else {\n this.showAnnotationDeleteTool(false, 2, 2);\n }\n }\n };\n AnnotationToolbar.prototype.showFreeTextPropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('FontFamilyAnnotationTool') !== -1) {\n this.showFontFamilyAnnotationTool(true, 2, 2);\n }\n else {\n this.showFontFamilyAnnotationTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('FontSizeAnnotationTool') !== -1) {\n this.showFontSizeAnnotationTool(true, 3, 3);\n }\n else {\n this.showFontSizeAnnotationTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('FontColorAnnotationTool') !== -1) {\n this.showFontColorAnnotationTool(true, 4, 4);\n }\n else {\n this.showFontColorAnnotationTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('FontAlignAnnotationTool') !== -1) {\n this.showFontAlignAnnotationTool(true, 5, 5);\n }\n else {\n this.showFontAlignAnnotationTool(false, 5, 5);\n }\n if (annotationToolbarItems.indexOf('FontStylesAnnotationTool') !== -1) {\n this.showFontStylesAnnotationTool(true, 6, 6);\n }\n else {\n this.showFontStylesAnnotationTool(false, 6, 6);\n }\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 7, 7);\n }\n else {\n this.showColorEditTool(false, 7, 7);\n }\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 8, 8);\n }\n else {\n this.showStrokeColorEditTool(false, 8, 8);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 9, 9);\n }\n else {\n this.showThicknessEditTool(false, 9, 9);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 10, 10);\n }\n else {\n this.showOpacityEditTool(false, 10, 10);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 11, 11);\n }\n else {\n this.showCommentPanelTool(false, 11, 11);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 12, 12);\n }\n else {\n this.showAnnotationDeleteTool(false, 12, 12);\n }\n if (annotationToolbarItems.indexOf('FreeTextAnnotationTool') !== -1) {\n this.showFreeTextAnnotationTool(true, 0, 0);\n }\n else {\n this.showFreeTextAnnotationTool(false, 0, 0);\n this.applyHideToToolbar(false, 1, 1);\n }\n }\n };\n AnnotationToolbar.prototype.shapePropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 2, 2);\n }\n else {\n this.showColorEditTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 3, 3);\n }\n else {\n this.showStrokeColorEditTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 4, 4);\n }\n else {\n this.showThicknessEditTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 5, 5);\n }\n else {\n this.showOpacityEditTool(false, 5, 5);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 6, 6);\n }\n else {\n this.showCommentPanelTool(false, 6, 6);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 7, 7);\n }\n else {\n this.showAnnotationDeleteTool(false, 7, 7);\n }\n if (annotationToolbarItems.indexOf('ShapeTool') !== -1) {\n this.showShapeAnnotationTool(true, 0, 0);\n }\n else {\n this.showShapeAnnotationTool(false, 0, 0);\n this.applyHideToToolbar(false, 1, 1);\n }\n }\n };\n AnnotationToolbar.prototype.showStampPropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 2, 2);\n }\n else {\n this.showOpacityEditTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 3, 3);\n }\n else {\n this.showCommentPanelTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 4, 4);\n }\n else {\n this.showAnnotationDeleteTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('StampAnnotationTool') !== -1) {\n this.showStampAnnotationTool(true, 0, 0);\n }\n else {\n this.showStampAnnotationTool(false, 0, 0);\n this.applyHideToToolbar(false, 1, 1);\n }\n }\n };\n AnnotationToolbar.prototype.showTextMarkupPropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 2, 2);\n }\n else {\n this.showColorEditTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 3, 3);\n }\n else {\n this.showOpacityEditTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 4, 4);\n }\n else {\n this.showCommentPanelTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 5, 5);\n }\n else {\n this.showAnnotationDeleteTool(false, 5, 5);\n }\n if (annotationToolbarItems.includes(\"HighlightTool\") || annotationToolbarItems.includes(\"UnderlineTool\") || annotationToolbarItems.includes(\"StrikethroughTool\")) {\n this.applyHideToToolbar(true, 0, 0);\n }\n else {\n this.applyHideToToolbar(false, 0, 0);\n this.applyHideToToolbar(false, 1, 1);\n }\n }\n };\n AnnotationToolbar.prototype.showInkPropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 2, 2);\n }\n else {\n this.showStrokeColorEditTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 3, 3);\n }\n else {\n this.showThicknessEditTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 4, 4);\n }\n else {\n this.showOpacityEditTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 5, 5);\n }\n else {\n this.showCommentPanelTool(false, 5, 5);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 6, 6);\n }\n else {\n this.showAnnotationDeleteTool(false, 6, 6);\n }\n if (annotationToolbarItems.indexOf('HandWrittenSignatureTool') !== -1) {\n this.showSignatureTool(true, 0, 0);\n }\n else {\n this.showSignatureTool(false, 0, 0);\n this.applyHideToToolbar(false, 1, 1);\n }\n }\n };\n /**\n * @private\n */\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createAnnotationToolbarForMobile = function (id) {\n var hideToolbar;\n if (id) {\n var editIcon = document.getElementById(id);\n if (editIcon.parentElement.classList.contains('e-pv-select')) {\n hideToolbar = true;\n editIcon.parentElement.classList.remove('e-pv-select');\n }\n else {\n hideToolbar = false;\n this.pdfViewer.toolbarModule.selectItem(editIcon.parentElement);\n }\n }\n if (hideToolbar) {\n this.toolbarCreated = false;\n this.adjustMobileViewer();\n if (this.toolbar) {\n this.toolbar.destroy();\n }\n if (this.propertyToolbar) {\n this.propertyToolbar.destroy();\n }\n var mobileAnnotationToolbar = document.getElementById(this.pdfViewer.element.id + '_mobileAnnotationToolbar');\n if (mobileAnnotationToolbar) {\n mobileAnnotationToolbar.style.display = 'none';\n }\n return [];\n }\n else {\n this.isToolbarCreated = true;\n if (this.propertyToolbar) {\n this.propertyToolbar.destroy();\n }\n if (this.toolbarElement) {\n this.toolbarElement.parentElement.removeChild(this.toolbarElement);\n }\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_mobileAnnotationToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left;' });\n //this.toolbarElement.append(this.pdfViewerBase.viewerContainer);\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n var stampTemplate = this.getTemplate('span', '_annotation_stamp', 'e-pv-annotation-stamp-container');\n var signTemplate = this.getTemplate('span', '_annotation_signature', 'e-pv-annotation-handwritten-container');\n // eslint:disable-next-line\n var items = void 0;\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-comment-icon e-pv-icon', className: 'e-pv-comment-container', id: this.pdfViewer.element.id + '_comment' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-highlight-icon e-pv-icon', className: 'e-pv-highlight-container', id: this.pdfViewer.element.id + '_highlight' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-underline-icon e-pv-icon', className: 'e-pv-underline-container', id: this.pdfViewer.element.id + '_underline' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-strikethrough-icon e-pv-icon', className: 'e-pv-strikethrough-container', id: this.pdfViewer.element.id + '_strikethrough' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-annotation-shape-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_annotation_shapes' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-annotation-calibrate-icon e-pv-icon', className: 'e-pv-annotation-calibrate-container', id: this.pdfViewer.element.id + '_annotation_calibrate' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-freetext-icon e-pv-icon', className: 'e-pv-annotation-freetextedit-container', id: this.pdfViewer.element.id + '_annotation_freeTextEdit' },\n { type: 'Separator', align: 'Left' },\n { template: stampTemplate },\n { type: 'Separator', align: 'Left' },\n { template: signTemplate, align: 'Left', },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-inkannotation-icon e-pv-icon', className: 'e-pv-annotation-ink-container', id: this.pdfViewer.element.id + '_annotation_ink', align: 'Left', },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-comment-panel-icon e-pv-icon', className: 'e-pv-comment-panel-icon-container', id: this.pdfViewer.element.id + '_annotation_commentPanel', align: 'Right' }\n ];\n if (this.toolbarCreated && this.toolbar) {\n this.toolbar.destroy();\n this.toolbarCreated = false;\n this.adjustMobileViewer();\n }\n else {\n // eslint-disable-next-line max-len\n this.toolbar = new Tool({ items: items, width: '', height: '', overflowMode: 'Scrollable', clicked: this.onToolbarClicked.bind(this) });\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.toolbarElement);\n this.afterMobileToolbarCreation();\n this.createStampContainer();\n this.createSignContainer();\n this.applyMobileAnnotationToolbarSettings();\n this.toolbarCreated = true;\n this.adjustMobileViewer();\n }\n return items;\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.adjustMobileViewer = function () {\n var toolbarHeight;\n if (this.toolbarElement) {\n toolbarHeight = this.toolbarElement.clientHeight;\n }\n var isPrimaryTool = false;\n if (this.toolbarElement && this.toolbarElement.children.length === 0 && this.propertyToolbar && this.propertyToolbar.element.children.length > 0) {\n toolbarHeight = this.propertyToolbar.element.clientHeight;\n if (this.pdfViewer.toolbarModule.toolbarElement.style.display === 'none') {\n this.pdfViewer.toolbarModule.toolbarElement.style.display = 'block';\n }\n }\n else if (this.freetextToolbarElement && this.freetextToolbarElement.children.length > 0) {\n toolbarHeight = this.freetextToolbarElement.clientHeight;\n }\n else if (toolbarHeight === 0 && this.pdfViewer.toolbarModule.toolbar) {\n toolbarHeight = this.pdfViewer.toolbarModule.toolbarElement.clientHeight;\n isPrimaryTool = true;\n }\n else if (!toolbarHeight && this.propertyToolbar && this.propertyToolbar.element.children.length > 0) {\n toolbarHeight = this.propertyToolbar.element.clientHeight;\n }\n if (this.pdfViewer.enableToolbar && this.toolbarCreated) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.updateViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (toolbarHeight + toolbarHeight)) + 'px';\n }\n else {\n if (!isPrimaryTool) {\n if (this.pdfViewerBase.viewerContainer.style.height.split('%').length > 1) {\n this.pdfViewerBase.viewerContainer.style.height = this.resetViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (-toolbarHeight)) + 'px';\n }\n else {\n this.pdfViewerBase.viewerContainer.style.height = this.resetViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (toolbarHeight)) + 'px';\n }\n }\n }\n };\n /**\n * Shows /hides the toolbar in the PdfViewer\n * @param {boolean} enableToolbar - If set true , its show the Toolbar\n * @returns void\n */\n AnnotationToolbar.prototype.showToolbar = function (enable) {\n var toolbar = this.toolbarElement;\n if (enable) {\n toolbar.style.display = 'block';\n if (Browser.isDevice && this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.hideMobileAnnotationToolbar();\n }\n }\n else {\n toolbar.style.display = 'none';\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createMobileToolbarItems = function (isPath) {\n var colorTemplate = this.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) });\n // eslint-disable-next-line max-len\n if (!isPath) {\n items.push({ template: colorTemplate, align: 'right' });\n items.push({ template: opacityTemplate, align: 'right' });\n items.push({ type: 'Separator', align: 'right' });\n }\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-annotation-delete-icon e-pv-icon', className: 'e-pv-annotation-delete-container', id: this.pdfViewer.element.id + '_annotation_delete', align: 'right' });\n return items;\n };\n AnnotationToolbar.prototype.goBackToToolbar = function () {\n this.isMobileAnnotEnabled = false;\n if (this.toolbarElement.children.length > 0) {\n this.toolbarElement.style.display = 'block';\n }\n else {\n this.toolbarCreated = false;\n this.toolbar.destroy();\n this.createAnnotationToolbarForMobile();\n }\n var page = this.pdfViewerBase.getSelectTextMarkupCurrentPage();\n if (page) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage = null;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.clearAnnotationSelection(page);\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createToolbarItems = function () {\n var colorTemplate = this.getTemplate('button', '_annotation_color', 'e-pv-annotation-color-container');\n var strokeTemplate = this.getTemplate('button', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('button', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('button', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n var shapesTemplate = this.getTemplate('button', '_annotation_shapes', 'e-pv-annotation-shapes-container');\n var calibrateTemplate = this.getTemplate('button', '_annotation_calibrate', 'e-pv-annotation-calibrate-container');\n var stampTemplate = this.getTemplate('span', '_annotation_stamp', 'e-pv-annotation-stamp-container');\n var fontFamilyTemplate = this.getTemplate('button', '_annotation_fontname', 'e-pv-annotation-fontname-container');\n var fontSizeTemplate = this.getTemplate('button', '_annotation_fontsize', 'e-pv-annotation-fontsize-container');\n var textColorTemplate = this.getTemplate('button', '_annotation_textcolor', 'e-pv-annotation-textcolor-container');\n var alignmentTemplate = this.getTemplate('button', '_annotation_textalign', 'e-pv-annotation-textalign-container');\n var textPropertiesTemplate = this.getTemplate('button', '_annotation_textproperties', 'e-pv-annotation-textprop-container');\n var signTemplate = this.getTemplate('button', '_annotation_signature', 'e-pv-annotation-handwritten-container');\n // eslint-disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-highlight-icon e-pv-icon', className: 'e-pv-highlight-container', id: this.pdfViewer.element.id + '_highlight', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-underline-icon e-pv-icon', className: 'e-pv-underline-container', id: this.pdfViewer.element.id + '_underline', align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-strikethrough-icon e-pv-icon', className: 'e-pv-strikethrough-container', id: this.pdfViewer.element.id + '_strikethrough', align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-hightlight-separator-container' });\n items.push({ template: shapesTemplate, align: 'Left', cssClass: 'e-pv-shape-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-shape-separator-container' });\n items.push({ template: calibrateTemplate, align: 'Left', cssClass: 'e-pv-calibrate-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-calibrate-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-freetext-icon e-pv-icon', className: 'e-pv-annotation-freetextedit-container', id: this.pdfViewer.element.id + '_annotation_freeTextEdit', align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-freetext-separator-container' });\n items.push({ template: stampTemplate, align: 'Left', cssClass: 'e-pv-stamp-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-stamp-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ template: signTemplate, align: 'Left', cssClass: 'e-pv-sign-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-sign-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-inkannotation-icon e-pv-icon', className: 'e-pv-annotation-ink-container', id: this.pdfViewer.element.id + '_annotation_ink', align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-ink-separator-container' });\n items.push({ template: fontFamilyTemplate, align: 'Left', cssClass: 'e-pv-fontfamily-container' });\n items.push({ template: fontSizeTemplate, align: 'Left', cssClass: 'e-pv-fontsize-container' });\n items.push({ template: textColorTemplate, align: 'Left', cssClass: 'e-pv-text-color-container' });\n items.push({ template: alignmentTemplate, align: 'Left', cssClass: 'e-pv-alignment-container' });\n items.push({ template: textPropertiesTemplate, align: 'Left', cssClass: 'e-pv-text-properties-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-text-separator-container' });\n items.push({ template: colorTemplate, align: 'Left', cssClass: 'e-pv-color-template-container' });\n items.push({ template: strokeTemplate, align: 'Left', cssClass: 'e-pv-stroke-template-container' });\n items.push({ template: thicknessTemplate, align: 'Left', cssClass: 'e-pv-thickness-template-container' });\n items.push({ template: opacityTemplate, align: 'Left', cssClass: 'e-pv-opacity-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-opacity-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-annotation-delete-icon e-pv-icon', className: 'e-pv-annotation-delete-container', id: this.pdfViewer.element.id + '_annotation_delete', align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-comment-panel-icon e-pv-icon', className: 'e-pv-comment-panel-icon-container', id: this.pdfViewer.element.id + '_annotation_commentPanel', align: 'Right' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-annotation-tools-close-icon e-pv-icon', className: 'e-pv-annotation-tools-close-container', id: this.pdfViewer.element.id + '_annotation_close', align: 'Right' });\n return items;\n };\n AnnotationToolbar.prototype.createSignContainer = function () {\n var _this = this;\n this.handWrittenSignatureItem = this.pdfViewerBase.getElement('_annotation_signature');\n // eslint-disable-next-line max-len\n this.primaryToolbar.createTooltip(this.pdfViewerBase.getElement('_annotation_signature'), this.pdfViewer.localeObj.getConstant('SignatureFieldDialogHeaderText'));\n this.handWrittenSignatureItem.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('SignatureFieldDialogHeaderText'));\n // eslint-disable-next-line\n var proxy = this;\n var items = [];\n if (this.pdfViewer.handWrittenSignatureSettings.signatureItem.length === 0 || this.pdfViewer.handWrittenSignatureSettings.signatureItem.length == 2) {\n items = [\n {\n text: 'ADD SIGNATURE'\n },\n {\n separator: true\n },\n {\n text: 'ADD INITIAL'\n }\n ];\n }\n else {\n if (this.pdfViewer.handWrittenSignatureSettings.signatureItem[0] === 'Signature') {\n items = [\n {\n text: 'ADD SIGNATURE'\n }\n ];\n }\n else {\n items = [\n {\n text: 'ADD INITIAL'\n }\n ];\n }\n }\n var saveOptions = {\n items: items,\n iconCss: 'e-pv-handwritten-icon e-pv-icon',\n cssClass: 'e-pv-handwritten-popup',\n open: function (args) {\n proxy.openSignature();\n },\n beforeItemRender: function (args) {\n _this.pdfViewer.clearSelection(_this.pdfViewerBase.currentPageNumber - 1);\n if (args.element && args.element.className.indexOf(\"e-separator\") !== -1) {\n args.element.style.margin = \"8px 0\";\n args.element.setAttribute('role', 'menuitem');\n args.element.setAttribute('aria-label', 'separator');\n }\n if (args.item.text === 'ADD SIGNATURE') {\n args.element.innerHTML = '';\n _this.saveSignatureCount = 0;\n for (var collection = _this.pdfViewerBase.signatureModule.signaturecollection.length; collection > 0; collection--) {\n if (_this.saveSignatureCount < _this.pdfViewerBase.signatureModule.getSaveLimit(_this.pdfViewer.handWrittenSignatureSettings.saveSignatureLimit)) {\n args.element.style.display = 'block';\n // eslint-disable-next-line\n var signatureCollection = _this.pdfViewerBase.signatureModule.signaturecollection[collection - 1];\n // eslint-disable-next-line\n var collectionKey = signatureCollection.image[0].imageData;\n var signatureID = signatureCollection.image[0].id.split('_')[1];\n if (!signatureCollection.isInitial && collectionKey !== '') {\n // eslint-disable-next-line max-len\n var signatureContainer = createElement('div');\n signatureContainer.id = 's' + signatureID;\n signatureContainer.style.display = 'block';\n signatureContainer.style.paddingBottom = '10px';\n var signatureSpan = createElement('span');\n signatureSpan.id = 'sign_border_' + signatureID;\n signatureSpan.classList.add('e-pv-align-border');\n var signatureImage = void 0;\n if (signatureCollection.image[0].signatureType === 'SignatureText') {\n signatureImage = createElement('div');\n signatureImage.classList.add('e-pv-align-border-div');\n signatureImage.innerText = collectionKey;\n signatureImage.style.fontFamily = signatureCollection.image[0].fontFamily;\n signatureImage.style.fontSize = '15px';\n signatureImage.style.display = 'inline-flex';\n signatureImage.style.alignItems = 'center';\n signatureImage.style.position = 'relative';\n signatureImage.id = 'sign_' + signatureID;\n signatureImage.style.width = '80px';\n signatureImage.style.height = '53px';\n signatureImage.style.overflow = 'hidden';\n signatureImage.style.textOverflow = 'ellipsis';\n signatureImage.style.paddingLeft = '11px';\n }\n else {\n signatureImage = createElement('img');\n signatureImage.id = 'sign_' + signatureID;\n signatureImage.src = collectionKey;\n signatureImage.width = 80;\n signatureImage.height = 32;\n signatureImage.classList.add('e-pv-signatureimage');\n signatureImage.style.paddingLeft = '20px';\n signatureImage.style.paddingRight = '18px';\n signatureImage.style.paddingTop = '12px';\n signatureImage.style.paddingBottom = '12px';\n signatureImage.style.boxSizing = 'content-box';\n signatureImage.setAttribute('alt', 'Saved Signature');\n }\n signatureImage.addEventListener('mouseover', _this.hoverSignatureImage.bind(_this));\n signatureImage.addEventListener('mouseleave', _this.leaveSignatureImage.bind(_this));\n var signatureDeleteSpan = createElement('span');\n signatureDeleteSpan.id = 'delete_' + signatureID;\n signatureDeleteSpan.classList.add('e-pv-delete');\n signatureDeleteSpan.classList.add('e-pv-align');\n signatureSpan.append(signatureImage);\n signatureSpan.append(signatureDeleteSpan);\n signatureContainer.append(signatureSpan);\n args.element.appendChild(signatureContainer);\n args.element.style.pointerEvents = 'auto';\n args.element.style.background = 'none';\n _this.pdfViewerBase.getElement('_annotation_signature-popup').style.width = '206px';\n _this.saveSignatureCount++;\n }\n }\n }\n var addInitialSpan = createElement('button');\n addInitialSpan.classList.add(\"e-control\", \"e-btn\", \"e-lib\", \"e-outline\", \"e-primary\");\n addInitialSpan.textContent = _this.pdfViewer.localeObj.getConstant('HandwrittenSignatureDialogHeaderText');\n _this.pdfViewer.locale === 'en-US' ? addInitialSpan.style.width = \"130px\" : addInitialSpan.style.width = \"auto\";\n addInitialSpan.style.height = \"36px\";\n addInitialSpan.addEventListener('click', _this.clickSignature.bind(_this));\n args.element.appendChild(addInitialSpan);\n args.element.addEventListener('mouseover', _this.hoverInitialBtn.bind(_this));\n args.element.style.width = '206px';\n args.element.style.display = 'flex';\n args.element.style.flexDirection = 'column';\n args.element.style.height = 'auto';\n args.element.style.alignItems = 'center';\n args.element.setAttribute('role', 'menuitem');\n }\n if (args.item.text === 'ADD INITIAL') {\n _this.saveInitialCount = 0;\n args.element.innerHTML = '';\n for (var collection = _this.pdfViewerBase.signatureModule.signaturecollection.length; collection > 0; collection--) {\n if (_this.saveInitialCount < _this.pdfViewerBase.signatureModule.getSaveLimit(_this.pdfViewer.handWrittenSignatureSettings.saveInitialLimit)) {\n // eslint-disable-next-line\n var signatureCollection = _this.pdfViewerBase.signatureModule.signaturecollection[collection - 1];\n // eslint-disable-next-line\n var collectionKey = signatureCollection.image[0].imageData;\n var signatureID = signatureCollection.image[0].id.split('_')[1];\n if (signatureCollection.isInitial && collectionKey !== '') {\n var signatureContainer = createElement('div');\n signatureContainer.id = 's' + signatureID;\n signatureContainer.style.display = 'block';\n signatureContainer.style.paddingBottom = '10px';\n var signatureSpan = createElement('span');\n signatureSpan.id = 'sign_border_' + signatureID;\n signatureSpan.classList.add('e-pv-align-border');\n var signatureImage = void 0;\n if (signatureCollection.image[0].signatureType === 'SignatureText') {\n signatureImage = createElement('div');\n signatureImage.classList.add('e-pv-align-border-div');\n signatureImage.innerText = collectionKey;\n signatureImage.style.fontFamily = signatureCollection.image[0].fontFamily;\n signatureImage.style.fontSize = '15px';\n signatureImage.style.display = 'inline-flex';\n signatureImage.style.alignItems = 'center';\n signatureImage.style.position = 'relative';\n signatureImage.id = 'sign_' + signatureID;\n signatureImage.style.width = '80px';\n signatureImage.style.height = '53px';\n signatureImage.style.overflow = 'hidden';\n signatureImage.style.textOverflow = 'ellipsis';\n signatureImage.style.paddingLeft = '11px';\n }\n else {\n signatureImage = createElement('img');\n signatureImage.id = 'sign_' + signatureID;\n signatureImage.src = collectionKey;\n signatureImage.width = 80;\n signatureImage.height = 32;\n signatureImage.classList.add('e-pv-signatureimage');\n signatureImage.style.paddingLeft = '20px';\n signatureImage.style.paddingRight = '18px';\n signatureImage.style.paddingTop = '12px';\n signatureImage.style.paddingBottom = '12px';\n signatureImage.style.boxSizing = 'content-box';\n signatureImage.setAttribute('alt', 'Saved Initial');\n }\n signatureImage.addEventListener('mouseover', _this.hoverSignatureImage.bind(_this));\n signatureImage.addEventListener('mouseleave', _this.leaveSignatureImage.bind(_this));\n signatureImage.width = 80;\n signatureImage.height = 32;\n var signatureDeleteSpan = createElement('span');\n signatureDeleteSpan.id = 'delete_' + signatureID;\n signatureDeleteSpan.classList.add('e-pv-delete');\n signatureDeleteSpan.classList.add('e-pv-align');\n signatureSpan.append(signatureImage);\n signatureSpan.append(signatureDeleteSpan);\n signatureContainer.append(signatureSpan);\n args.element.appendChild(signatureContainer);\n // eslint-disable-next-line max-len\n args.element.style.pointerEvents = 'auto';\n args.element.style.background = 'none';\n _this.pdfViewerBase.getElement('_annotation_signature-popup').style.width = '206px';\n _this.saveInitialCount++;\n }\n }\n }\n _this.isSignatureIteam = false;\n var addInitialSpan = createElement('button');\n addInitialSpan.classList.add(\"e-control\", \"e-btn\", \"e-lib\", \"e-outline\", \"e-primary\");\n addInitialSpan.textContent = _this.pdfViewer.localeObj.getConstant('HandwrittenInitialDialogHeaderText');\n _this.pdfViewer.locale === 'en-US' ? addInitialSpan.style.width = \"130px\" : addInitialSpan.style.width = \"auto\";\n addInitialSpan.style.height = \"36px\";\n addInitialSpan.addEventListener('click', _this.clickInitial.bind(_this));\n args.element.appendChild(addInitialSpan);\n args.element.addEventListener('mouseover', _this.hoverInitialBtn.bind(_this));\n args.element.style.width = '206px';\n args.element.style.display = 'flex';\n args.element.style.flexDirection = 'column';\n args.element.style.height = 'auto';\n args.element.style.alignItems = 'center';\n args.element.setAttribute('role', 'menuitem');\n }\n },\n select: function (args) {\n _this.pdfViewer.clearSelection(_this.pdfViewerBase.currentPageNumber - 1);\n }\n };\n var drpDownBtn = new DropDownButton(saveOptions);\n if (this.pdfViewer.enableRtl) {\n drpDownBtn.enableRtl = this.pdfViewer.enableRtl;\n }\n drpDownBtn.appendTo(this.handWrittenSignatureItem);\n };\n AnnotationToolbar.prototype.updateSignatureCount = function () {\n var count = 0;\n this.openSignaturePopup = false;\n // eslint-disable-next-line\n var signatureCollection = this.pdfViewerBase.signatureModule.signaturecollection;\n for (var collection = 0; collection < signatureCollection.length; collection++) {\n // eslint-disable-next-line\n var colletionList = signatureCollection[collection];\n if (colletionList.image[0].imageData === '') {\n count++;\n }\n }\n };\n AnnotationToolbar.prototype.openSignature = function () {\n this.saveInitialCount = 0;\n this.saveSignatureCount = 0;\n for (var collection = this.pdfViewerBase.signatureModule.signaturecollection.length; collection > 0; collection--) {\n if (this.saveSignatureCount < this.pdfViewerBase.signatureModule.getSaveLimit(this.pdfViewer.handWrittenSignatureSettings.saveSignatureLimit)) {\n // eslint-disable-next-line\n var signatureCollection = this.pdfViewerBase.signatureModule.signaturecollection[collection - 1];\n if (signatureCollection.image[0].imageData !== '') {\n if (!signatureCollection.isInitial) {\n this.saveSignatureCount++;\n // eslint-disable-next-line\n var addedSignature = document.getElementById('sign_border_' + signatureCollection.image[0].id.split('_')[1] + '');\n // eslint-disable-next-line\n var deleteSignature = document.getElementById('delete_' + signatureCollection.image[0].id.split('_')[1] + '');\n deleteSignature.style.backgroundClip = 'content-box';\n addedSignature.addEventListener('click', this.renderAddedSignature.bind(this));\n deleteSignature.addEventListener('click', this.deleteSavedSign.bind(this));\n deleteSignature.addEventListener('mouseover', this.hoverSignatureDelete.bind(this));\n deleteSignature.addEventListener('mouseleave', this.leaveSignatureDelete.bind(this));\n addedSignature.addEventListener('mouseover', this.hoverSignatureDelete.bind(this));\n addedSignature.addEventListener('mouseleave', this.leaveSignatureDelete.bind(this));\n }\n }\n }\n }\n for (var collection = this.pdfViewerBase.signatureModule.signaturecollection.length; collection > 0; collection--) {\n if (this.saveInitialCount < this.pdfViewerBase.signatureModule.getSaveLimit(this.pdfViewer.handWrittenSignatureSettings.saveInitialLimit)) {\n // eslint-disable-next-line\n var signatureCollection = this.pdfViewerBase.signatureModule.signaturecollection[collection - 1];\n if (signatureCollection.image[0].imageData !== '') {\n if (signatureCollection.isInitial) {\n this.saveInitialCount++;\n // eslint-disable-next-line\n var addedSignature = document.getElementById('sign_border_' + signatureCollection.image[0].id.split('_')[1] + '');\n // eslint-disable-next-line\n var deleteSignature = document.getElementById('delete_' + signatureCollection.image[0].id.split('_')[1] + '');\n deleteSignature.style.backgroundClip = 'content-box';\n addedSignature.addEventListener('click', this.renderAddedSignature.bind(this));\n deleteSignature.addEventListener('click', this.deleteSavedSign.bind(this));\n deleteSignature.addEventListener('mouseover', this.hoverSignatureDelete.bind(this));\n deleteSignature.addEventListener('mouseleave', this.leaveSignatureDelete.bind(this));\n addedSignature.addEventListener('mouseover', this.hoverSignatureDelete.bind(this));\n addedSignature.addEventListener('mouseleave', this.leaveSignatureDelete.bind(this));\n }\n }\n }\n }\n };\n AnnotationToolbar.prototype.hoverSignatureDelete = function () {\n var eventTarget = event.target;\n if (eventTarget.id === 'sign_' + eventTarget.id.split('_')[1] || eventTarget.classList.contains('e-pv-delete')) {\n eventTarget.classList.add('e-pv-signaturehover');\n eventTarget.style.cursor = 'pointer';\n }\n };\n AnnotationToolbar.prototype.hoverInitialBtn = function (event) {\n var eventTarget = event.target;\n var currentFieldID = '';\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.userAgent.indexOf('Trident') !== -1) {\n currentFieldID = eventTarget.id;\n }\n else {\n currentFieldID = isNullOrUndefined(event.path) ? event.composedPath()[0].id : event.path[0].id;\n }\n if (currentFieldID !== 'sign_' + currentFieldID.split(\"_\")[1] && currentFieldID !== 'delete_' + currentFieldID.split(\"_\")[1]) {\n var liElement = document.getElementById(eventTarget.id);\n if (isNullOrUndefined(liElement)) {\n liElement = document.getElementById(eventTarget.parentElement.id);\n }\n if (liElement != null && (eventTarget.id !== 'sign_' + eventTarget.id.split('_')[1] || eventTarget.id !== 'sign_border_' + eventTarget.id.split('_')[2])) {\n liElement.style.background = 'transparent';\n liElement.style.cursor = 'default';\n }\n else if (liElement.parentElement != null && (eventTarget.id !== 'sign_' + eventTarget.id.split('_')[1] || eventTarget.id !== 'sign_border_' + eventTarget.id.split('_')[2])) {\n liElement.parentElement.style.background = 'transparent';\n liElement.parentElement.style.cursor = 'default';\n }\n }\n };\n AnnotationToolbar.prototype.hoverSignatureImage = function () {\n var eventTarget = event.target;\n if (eventTarget.id === 'sign_' + eventTarget.id.split('_')[1] || eventTarget.classList.contains('e-pv-delete')) {\n eventTarget.classList.add('e-pv-signaturehover');\n eventTarget.classList.remove('e-pv-signatureimage');\n eventTarget.style.cursor = 'pointer';\n }\n };\n AnnotationToolbar.prototype.leaveSignatureDelete = function () {\n var eventTarget = event.target;\n if (eventTarget.id === 'sign_' + eventTarget.id.split('_')[1] || eventTarget.classList.contains('e-pv-delete')) {\n eventTarget.classList.remove('e-pv-signaturehover');\n if (eventTarget.children[0] && eventTarget.children[0].tagName === 'IMG') {\n eventTarget.children[0].classList.remove('e-pv-signaturehover');\n }\n eventTarget.style.cursor = 'default';\n }\n };\n AnnotationToolbar.prototype.clickSignature = function () {\n this.pdfViewerBase.isInitialField = false;\n this.addSignature();\n };\n AnnotationToolbar.prototype.clickInitial = function () {\n this.pdfViewerBase.isInitialField = true;\n this.addSignature();\n };\n AnnotationToolbar.prototype.leaveSignatureImage = function () {\n var eventTarget = event.target;\n if (eventTarget.id === 'sign_' + eventTarget.id.split('_')[1] || eventTarget.classList.contains('e-pv-delete')) {\n eventTarget.classList.remove('e-pv-signaturehover');\n if (eventTarget.tagName === 'IMG')\n eventTarget.classList.add('e-pv-signatureimage');\n if (eventTarget.children[0] && eventTarget.children[0].tagName === 'IMG') {\n eventTarget.children[0].classList.remove('e-pv-signaturehover');\n eventTarget.children[0].classList.add('e-pv-signatureimage');\n }\n eventTarget.style.cursor = 'default';\n }\n };\n AnnotationToolbar.prototype.addSignature = function () {\n this.deselectAllItems();\n this.showSignaturepanel();\n };\n AnnotationToolbar.prototype.renderAddedSignature = function () {\n this.pdfViewerBase.isAddedSignClicked = true;\n this.isSavedSignatureClicked = true;\n this.pdfViewerBase.signatureModule.RenderSavedSignature();\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.deleteSavedSign = function (event) {\n event.stopPropagation();\n // eslint-disable-next-line\n var signaturecollection = this.pdfViewerBase.signatureModule.signaturecollection;\n for (var collection = signaturecollection.length; collection > 0; collection--) {\n if (event.target.parentElement.children[0].id === 'sign_' + signaturecollection[collection - 1].image[0].id.split('_')[1]) {\n // eslint-disable-next-line\n var RemoveSignature = signaturecollection[collection - 1];\n RemoveSignature.image[0].imageData = '';\n this.pdfViewerBase.signatureModule.signaturecollection.splice(collection - 1, 1);\n break;\n }\n }\n event.target.parentElement.remove();\n };\n AnnotationToolbar.prototype.getTemplate = function (elementName, id, className) {\n var element = createElement(elementName, { id: this.pdfViewer.element.id + id });\n if (className) {\n element.className = className;\n }\n return element.outerHTML;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createStampContainer = function () {\n var _this = this;\n this.stampElement = this.pdfViewerBase.getElement('_annotation_stamp');\n // eslint-disable-next-line max-len\n this.primaryToolbar.createTooltip(this.pdfViewerBase.getElement('_annotation_stamp'), this.pdfViewer.localeObj.getConstant('Add Stamp'));\n this.stampElement.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Add Stamp'));\n var contextMenuElement = createElement('ul', { id: this.pdfViewer.element.id + 'contextMenuElement' });\n this.pdfViewerBase.getElement('_annotation_stamp').appendChild(contextMenuElement);\n var items = [];\n if (this.pdfViewer.stampSettings.dynamicStamps && this.pdfViewer.stampSettings.dynamicStamps.length > 0) {\n var dynamicStamps_1 = [];\n items.push({ text: this.pdfViewer.localeObj.getConstant('Dynamic'), label: 'Dynamic', items: dynamicStamps_1 });\n this.pdfViewer.stampSettings.dynamicStamps.forEach(function (stampItem, index) {\n var name = DynamicStampItem[stampItem];\n switch (name) {\n case 'NotApproved':\n name = 'Not Approved';\n break;\n }\n dynamicStamps_1.push({ text: _this.pdfViewer.localeObj.getConstant(name), label: name });\n });\n }\n if (this.pdfViewer.stampSettings.signStamps && this.pdfViewer.stampSettings.signStamps.length > 0) {\n var signStamps_1 = [];\n items.push({ text: this.pdfViewer.localeObj.getConstant('Sign Here'), label: 'Sign Here', items: signStamps_1 });\n this.pdfViewer.stampSettings.signStamps.forEach(function (stampItem, index) {\n var name = SignStampItem[stampItem];\n switch (name) {\n case 'InitialHere':\n name = 'Initial Here';\n break;\n case 'SignHere':\n name = 'Sign Here';\n break;\n }\n signStamps_1.push({ text: _this.pdfViewer.localeObj.getConstant(name), label: name });\n });\n }\n if (this.pdfViewer.stampSettings.standardBusinessStamps && this.pdfViewer.stampSettings.standardBusinessStamps.length > 0) {\n var standardsBusinessStamps_1 = [];\n items.push({ text: this.pdfViewer.localeObj.getConstant('Standard Business'), label: 'Standard Business', items: standardsBusinessStamps_1 });\n this.pdfViewer.stampSettings.standardBusinessStamps.forEach(function (stampItem, index) {\n var name = StandardBusinessStampItem[stampItem];\n switch (name) {\n case 'NotApproved':\n name = 'Not Approved';\n break;\n case 'ForPublicRelease':\n name = 'For Public Release';\n break;\n case 'NotForPublicRelease':\n name = 'Not For Public Release';\n break;\n case 'ForComment':\n name = 'For Comment';\n break;\n case 'PreliminaryResults':\n name = 'Preliminary Results';\n break;\n case 'InformationOnly':\n name = 'Information Only';\n break;\n }\n standardsBusinessStamps_1.push({ text: _this.pdfViewer.localeObj.getConstant(name), label: name });\n });\n }\n if (this.pdfViewer.customStampSettings.enableCustomStamp && !Browser.isDevice) {\n if (items.length > 0) {\n items.push({ separator: true });\n }\n items.push({ text: this.pdfViewer.localeObj.getConstant('Custom Stamp'), label: 'Custom Stamp', items: [] });\n this.pdfViewerBase.customStampCollection = this.pdfViewer.customStampSettings.customStamps ? this.pdfViewer.customStampSettings.customStamps : [];\n }\n this.stampMenu = [\n {\n iconCss: 'e-pv-stamp-icon e-pv-icon',\n items: items\n }\n ];\n var menuOptions = {\n items: this.stampMenu,\n cssClass: 'e-custom-scroll',\n showItemOnClick: true,\n enableScrolling: true,\n beforeOpen: function (args) {\n _this.resetFreeTextAnnot();\n if (args.parentItem.text === '' && _this.pdfViewer.customStampSettings.isAddToMenu && args.items.length > 0) {\n // eslint-disable-next-line\n var currentElements = null;\n for (var i = 0; i < args.items.length; i++) {\n if (args.items[i].text === _this.pdfViewer.localeObj.getConstant('Custom Stamp')) {\n args.items[i].items = [];\n currentElements = args.items[i];\n break;\n }\n }\n // eslint-disable-next-line\n var elements = _this.pdfViewerBase.customStampCollection;\n // eslint-disable-next-line\n var stampElements = _this.pdfViewer.customStampSettings.customStamps;\n if (elements.length === 0 && stampElements && stampElements.length > 0) {\n for (var n = 0; n < stampElements.length; n++) {\n // eslint-disable-next-line max-len\n elements.push({ customStampName: stampElements[n].customStampName, customStampImageSource: stampElements[n].customStampImageSource });\n }\n }\n for (var m = 0; m < elements.length; m++) {\n if (currentElements != null) {\n currentElements.items.push({ text: elements[m].customStampName });\n for (var i = 0; i < args.items.length; i++) {\n if (args.items[i].text === _this.pdfViewer.localeObj.getConstant('Custom Stamp')) {\n var liElem = args.element.children[i];\n if (liElem && !liElem.childElementCount) {\n var span = document.createElement('span');\n span.className = 'e-icons e-caret e-menu-caret-icon';\n liElem.appendChild(span);\n liElem.setAttribute('aria-haspopup', 'true');\n liElem.setAttribute('aria-expanded', 'false');\n }\n }\n }\n }\n }\n }\n if (args.parentItem.text === _this.pdfViewer.localeObj.getConstant('Custom Stamp')) {\n // eslint-disable-next-line\n var stampElements = _this.pdfViewer.customStampSettings.customStamps;\n if (stampElements && stampElements.length > 10) {\n closest(args.element, '.e-menu-wrapper').style.height = '350px';\n }\n }\n _this.stampParentID = args.parentItem.text;\n _this.menuItems.showItemOnClick = false;\n },\n beforeClose: function (args) {\n // eslint-disable-next-line max-len\n if ((args.parentItem && args.parentItem.text !== _this.pdfViewer.localeObj.getConstant('Custom Stamp') && args.parentItem.text !== 'Standard Business' && args.parentItem.text !== 'Dynamic' && args.parentItem.text !== 'Sign Here') || !args.parentItem) {\n _this.menuItems.showItemOnClick = true;\n }\n },\n select: function (args) {\n _this.pdfViewerBase.isAlreadyAdded = false;\n if (args.item.text === _this.pdfViewer.localeObj.getConstant('Custom Stamp')) {\n _this.updateInteractionTools();\n _this.checkStampAnnotations();\n _this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n // eslint-disable-next-line\n var stampImage = document.getElementById(_this.pdfViewer.element.id + '_stampElement');\n if (stampImage) {\n stampImage.click();\n }\n _this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n // eslint-disable-next-line max-len\n }\n else if (_this.stampParentID === _this.pdfViewer.localeObj.getConstant('Custom Stamp') && args.item.text !== '') {\n // eslint-disable-next-line\n var elements = _this.pdfViewerBase.customStampCollection;\n for (var n = 0; n < elements.length; n++) {\n if (elements[n].customStampName === args.item.text) {\n _this.pdfViewer.annotationModule.stampAnnotationModule.customStampName = args.item.text;\n _this.checkStampAnnotations();\n _this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n _this.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n _this.pdfViewerBase.stampAdded = true;\n _this.pdfViewerBase.isAlreadyAdded = true;\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.stampAnnotationModule.createCustomStampAnnotation(elements[n].customStampImageSource);\n _this.pdfViewerBase.stampAdded = false;\n }\n }\n // eslint-disable-next-line max-len\n }\n else if (args.item.text !== _this.pdfViewer.localeObj.getConstant('Dynamic') && args.item.text !== '' && args.item.text !== 'Standard Business' && (_this.stampParentID === 'Sign Here' || args.item.text !== 'Sign Here')) {\n _this.updateInteractionTools();\n _this.checkStampAnnotations();\n _this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n _this.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n _this.pdfViewerBase.stampAdded = true;\n _this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n if (_this.stampParentID === _this.pdfViewer.localeObj.getConstant('Dynamic')) {\n _this.pdfViewerBase.isDynamicStamp = true;\n _this.pdfViewer.annotationModule.stampAnnotationModule.retrieveDynamicStampAnnotation(args.item.label);\n }\n else {\n _this.pdfViewerBase.isDynamicStamp = false;\n _this.pdfViewer.annotationModule.stampAnnotationModule.retrievestampAnnotation(args.item.label);\n }\n if (Browser.isDevice) {\n _this.stampToolMobileForMobile(_this.pdfViewer.element.id + '_annotation_stamp');\n }\n }\n }\n };\n this.menuItems = new Menu(menuOptions, '#' + this.pdfViewer.element.id + 'contextMenuElement');\n contextMenuElement.parentElement.classList.add('e-pv-stamp');\n if (this.pdfViewer.enableRtl) {\n this.menuItems.enableRtl = true;\n }\n return contextMenuElement;\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.createCustomStampElement = function () {\n // eslint-disable-next-line\n var stampImage = createElement('input', { id: this.pdfViewer.element.id + '_stampElement', attrs: { 'type': 'file' } });\n stampImage.setAttribute('accept', '.jpg,.jpeg,.png');\n stampImage.style.position = 'absolute';\n stampImage.style.left = '0px';\n stampImage.style.top = '0px';\n stampImage.style.visibility = 'hidden';\n document.body.appendChild(stampImage);\n stampImage.addEventListener('change', this.addStampImage);\n };\n AnnotationToolbar.prototype.checkStampAnnotations = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode && this.pdfViewer.selectedItems && this.pdfViewer.selectedItems.annotations) {\n for (var i = 0; i < this.pdfViewer.selectedItems.annotations.length; i++) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[i];\n // eslint-disable-next-line\n if (annotation && !annotation.annotName && !annotation.author && (annotation.shapeAnnotationType !== 'Shape' || annotation.shapeAnnotationType !== 'Image')) {\n this.pdfViewer.remove(annotation);\n this.pdfViewer.annotation.renderAnnotations(annotation.pageIndex, null, null, null);\n this.pdfViewer.clearSelection(annotation.pageIndex);\n }\n }\n }\n };\n AnnotationToolbar.prototype.createDropDowns = function (isPath) {\n var _this = this;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.shapeElement = this.pdfViewerBase.getElement('_annotation_shapes');\n var shapeToolbar = this.createShapeOptions(this.shapeElement.id, true);\n // eslint-disable-next-line max-len\n this.shapeDropDown = this.createDropDownButton(this.shapeElement, 'e-pv-annotation-shape-icon', shapeToolbar.element, this.pdfViewer.localeObj.getConstant('Add Shapes'));\n this.calibrateElement = this.pdfViewerBase.getElement('_annotation_calibrate');\n var calibrateToolbar = this.createShapeOptions(this.calibrateElement.id, false);\n // eslint-disable-next-line max-len\n this.calibrateDropDown = this.createDropDownButton(this.calibrateElement, 'e-pv-annotation-calibrate-icon', calibrateToolbar.element, this.pdfViewer.localeObj.getConstant('Calibrate'));\n }\n if (!isPath) {\n this.colorDropDownElement = this.pdfViewerBase.getElement('_annotation_color');\n this.colorPalette = this.createColorPicker(this.colorDropDownElement.id);\n this.colorPalette.change = this.onColorPickerChange.bind(this);\n // eslint-disable-next-line max-len\n this.colorDropDown = this.createDropDownButton(this.colorDropDownElement, 'e-pv-annotation-color-icon', this.colorPalette.element.parentElement, this.pdfViewer.localeObj.getConstant('Color edit'));\n this.colorDropDown.beforeOpen = this.colorDropDownBeforeOpen.bind(this);\n this.colorDropDown.open = this.colorDropDownOpen.bind(this);\n this.pdfViewerBase.getElement('_annotation_color-popup').addEventListener('click', this.onColorPickerCancelClick.bind(this));\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.strokeDropDownElement = this.pdfViewerBase.getElement('_annotation_stroke');\n this.strokeColorPicker = this.createColorPicker(this.strokeDropDownElement.id);\n this.strokeColorPicker.change = this.onStrokePickerChange.bind(this);\n // eslint-disable-next-line max-len\n this.strokeDropDown = this.createDropDownButton(this.strokeDropDownElement, 'e-pv-annotation-stroke-icon', this.strokeColorPicker.element.parentElement, this.pdfViewer.localeObj.getConstant('Stroke edit'));\n this.strokeDropDown.beforeOpen = this.strokeDropDownBeforeOpen.bind(this);\n this.strokeDropDown.open = this.strokeDropDownOpen.bind(this);\n this.pdfViewerBase.getElement('_annotation_stroke-popup').addEventListener('click', this.onStrokePickerCancelClick.bind(this));\n this.thicknessElement = this.pdfViewerBase.getElement('_annotation_thickness');\n var thicknessContainer = this.createThicknessSlider(this.thicknessElement.id);\n // eslint-disable-next-line max-len\n this.thicknessDropDown = this.createDropDownButton(this.thicknessElement, 'e-pv-annotation-thickness-icon', thicknessContainer, this.pdfViewer.localeObj.getConstant('Change thickness'));\n this.thicknessDropDown.beforeOpen = this.thicknessDropDownBeforeOpen.bind(this);\n this.thicknessSlider.change = this.thicknessChange.bind(this);\n this.thicknessSlider.changed = this.thicknessChange.bind(this);\n if (!this.pdfViewer.enableRtl) {\n this.thicknessDropDown.open = this.thicknessDropDownOpen.bind(this);\n }\n }\n if (!isPath) {\n this.opacityDropDownElement = this.pdfViewerBase.getElement('_annotation_opacity');\n var sliderContainer = this.createSlider(this.opacityDropDownElement.id);\n // eslint-disable-next-line max-len\n this.opacityDropDown = this.createDropDownButton(this.opacityDropDownElement, 'e-pv-annotation-opacity-icon', sliderContainer, this.pdfViewer.localeObj.getConstant('Opacity edit'));\n this.opacityDropDown.beforeOpen = this.opacityDropDownBeforeOpen.bind(this);\n this.opacitySlider.change = this.opacityChange.bind(this);\n this.opacitySlider.changed = this.opacityChange.bind(this);\n if (!this.pdfViewer.enableRtl) {\n this.opacityDropDown.open = this.opacityDropDownOpen.bind(this);\n }\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.fontFamilyElement = this.pdfViewerBase.getElement('_annotation_fontname');\n this.createDropDownListForFamily(this.fontFamilyElement);\n //this.fontFamilyElement.style.textAlign = 'left';\n this.fontFamilyElement.addEventListener('change', function () {\n _this.onFontFamilyChange.bind(_this);\n });\n this.fontSizeElement = this.pdfViewerBase.getElement('_annotation_fontsize');\n this.createDropDownListForSize(this.fontSizeElement);\n this.fontColorElement = this.pdfViewerBase.getElement('_annotation_textcolor');\n this.fontColorPalette = this.createColorPicker(this.fontColorElement.id);\n this.fontColorPalette.change = this.onFontColorChange.bind(this);\n // eslint-disable-next-line max-len\n this.fontColorDropDown = this.createDropDownButton(this.fontColorElement, 'e-pv-annotation-textcolor-icon', this.fontColorPalette.element.parentElement, this.pdfViewer.localeObj.getConstant('Font color'));\n this.textAlignElement = this.pdfViewerBase.getElement('_annotation_textalign');\n this.alignmentToolbar = this.createShapeOptions(this.textAlignElement.id, undefined, true);\n // eslint-disable-next-line max-len\n this.textAlignDropDown = this.createDropDownButton(this.textAlignElement, 'e-pv-annotation-textalign-icon', this.alignmentToolbar.element, this.pdfViewer.localeObj.getConstant('Text Align'));\n this.textAlignDropDown.beforeOpen = this.textAlignDropDownBeforeOpen.bind(this);\n this.textPropElement = this.pdfViewerBase.getElement('_annotation_textproperties');\n this.propertiesToolbar = this.createShapeOptions(this.textPropElement.id, undefined, false, true);\n // eslint-disable-next-line max-len\n this.textPropertiesDropDown = this.createPropDropDownButton(this.textPropElement, 'e-pv-annotation-textprop-icon', this.propertiesToolbar.element, this.pdfViewer.localeObj.getConstant('Text Properties'));\n this.textPropertiesDropDown.beforeOpen = this.textPropertiesDropDownBeforeOpen.bind(this);\n }\n };\n AnnotationToolbar.prototype.mobileColorpicker = function (id) {\n var _this = this;\n this.opacityDropDownElement = this.pdfViewerBase.getElement('_annotation_opacity');\n var sliderContainer = this.createSlider(this.opacityDropDownElement.id);\n // eslint-disable-next-line max-len\n this.opacityDropDown = this.createDropDownButton(this.opacityDropDownElement, 'e-pv-annotation-opacity-icon', sliderContainer, this.pdfViewer.localeObj.getConstant('Opacity edit'));\n this.opacityDropDown.beforeOpen = this.opacityDropDownBeforeOpen.bind(this);\n this.opacitySlider.change = this.opacityChange.bind(this);\n this.opacitySlider.changed = this.opacityChange.bind(this);\n if (!this.pdfViewer.enableRtl) {\n this.opacityDropDown.open = this.opacityDropDownOpen.bind(this);\n }\n if (id === this.pdfViewer.element.id + '_annotation_shapes') {\n id = this.pdfViewer.element.id + '_annotation_shapesIcon';\n }\n else if (id === this.pdfViewer.element.id + '_annotation_calibrate') {\n id = this.pdfViewer.element.id + '_annotation_calibrateIcon';\n }\n else if (id === this.pdfViewer.element.id + '_highlight') {\n id = this.pdfViewer.element.id + '_highlightIcon';\n }\n else if (id === this.pdfViewer.element.id + '_underline') {\n id = this.pdfViewer.element.id + '_underlineIcon';\n }\n else if (id === this.pdfViewer.element.id + '_strikethrough') {\n id = this.pdfViewer.element.id + '_strikethroughIcon';\n }\n // eslint-disable-next-line max-len\n if (id === this.pdfViewer.element.id + '_annotation_shapesIcon' || id === this.pdfViewer.element.id + '_annotation_calibrateIcon' || id === this.pdfViewer.element.id + '_annotation_freeTextEdit' ||\n // eslint-disable-next-line max-len\n id === this.pdfViewer.element.id + '_highlightIcon' || id === this.pdfViewer.element.id + '_underlineIcon' || id === this.pdfViewer.element.id + '_strikethroughIcon' || id === this.pdfViewer.element.id + '_annotation_inkIcon' || id === this.pdfViewer.element.id + '_annotation_handwrittenSign') {\n if (id !== this.pdfViewer.element.id + '_annotation_handwrittenSign' && id !== this.pdfViewer.element.id + '_annotation_inkIcon') {\n this.colorDropDownElement = this.pdfViewerBase.getElement('_annotation_color');\n this.colorPalette = this.createColorPicker(this.colorDropDownElement.id);\n this.colorPalette.change = this.onColorPickerChange.bind(this);\n // eslint-disable-next-line max-len\n this.colorDropDown = this.createDropDownButton(this.colorDropDownElement, 'e-pv-annotation-color-icon', this.colorPalette.element.parentElement, this.pdfViewer.localeObj.getConstant('Color edit'));\n this.colorDropDown.beforeOpen = this.colorDropDownBeforeOpen.bind(this);\n this.colorDropDown.open = this.colorDropDownOpen.bind(this);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.getElement('_annotation_color-popup').addEventListener('click', this.onColorPickerCancelClick.bind(this));\n }\n if (id === this.pdfViewer.element.id + '_annotation_freeTextEdit') {\n this.fontFamilyElement = this.pdfViewerBase.getElement('_annotation_fontname');\n this.createDropDownListForFamily(this.fontFamilyElement);\n this.fontFamilyElement.style.textAlign = 'left';\n this.fontFamilyElement.addEventListener('change', function () { _this.onFontFamilyChange.bind(_this); });\n this.fontSizeElement = this.pdfViewerBase.getElement('_annotation_fontsize');\n this.createDropDownListForSize(this.fontSizeElement);\n this.fontColorElement = this.pdfViewerBase.getElement('_annotation_textcolor');\n this.fontColorPalette = this.createColorPicker(this.fontColorElement.id);\n this.fontColorPalette.change = this.onFontColorChange.bind(this);\n // eslint-disable-next-line max-len\n this.fontColorDropDown = this.createDropDownButton(this.fontColorElement, 'e-pv-annotation-textcolor-icon', this.fontColorPalette.element.parentElement, this.pdfViewer.localeObj.getConstant('Font color'));\n this.textAlignElement = this.pdfViewerBase.getElement('_annotation_textalign');\n this.alignmentToolbar = this.createShapeOptions(this.textAlignElement.id, undefined, true);\n // eslint-disable-next-line max-len\n this.textAlignDropDown = this.createDropDownButton(this.textAlignElement, 'e-pv-annotation-textalign-icon', this.alignmentToolbar.element, this.pdfViewer.localeObj.getConstant('Text Align'));\n this.textAlignDropDown.beforeOpen = this.textAlignDropDownBeforeOpen.bind(this);\n this.textPropElement = this.pdfViewerBase.getElement('_annotation_textproperties');\n this.propertiesToolbar = this.createShapeOptions(this.textPropElement.id, undefined, false, true);\n // eslint-disable-next-line max-len\n this.textPropertiesDropDown = this.createPropDropDownButton(this.textPropElement, 'e-pv-annotation-textprop-icon', this.propertiesToolbar.element, this.pdfViewer.localeObj.getConstant('Text Properties'));\n this.textPropertiesDropDown.beforeOpen = this.textPropertiesDropDownBeforeOpen.bind(this);\n }\n // eslint-disable-next-line max-len\n if (id === this.pdfViewer.element.id + '_annotation_shapesIcon' || id === this.pdfViewer.element.id + '_annotation_calibrateIcon' || id === this.pdfViewer.element.id + '_annotation_freeTextEdit' ||\n id === this.pdfViewer.element.id + '_annotation_inkIcon' || id === this.pdfViewer.element.id + '_annotation_handwrittenSign') {\n this.thicknessElement = this.pdfViewerBase.getElement('_annotation_thickness');\n var thicknessContainer = this.createThicknessSlider(this.thicknessElement.id);\n // eslint-disable-next-line max-len\n this.thicknessDropDown = this.createDropDownButton(this.thicknessElement, 'e-pv-annotation-thickness-icon', thicknessContainer, this.pdfViewer.localeObj.getConstant('Change thickness'));\n this.thicknessDropDown.beforeOpen = this.thicknessDropDownBeforeOpen.bind(this);\n this.thicknessSlider.change = this.thicknessChange.bind(this);\n this.thicknessSlider.changed = this.thicknessChange.bind(this);\n if (!this.pdfViewer.enableRtl) {\n this.thicknessDropDown.open = this.thicknessDropDownOpen.bind(this);\n }\n this.strokeDropDownElement = this.pdfViewerBase.getElement('_annotation_stroke');\n this.strokeColorPicker = this.createColorPicker(this.strokeDropDownElement.id);\n this.strokeColorPicker.change = this.onStrokePickerChange.bind(this);\n // eslint-disable-next-line max-len\n this.strokeDropDown = this.createDropDownButton(this.strokeDropDownElement, 'e-pv-annotation-stroke-icon', this.strokeColorPicker.element.parentElement, this.pdfViewer.localeObj.getConstant('Stroke edit'));\n this.strokeDropDown.beforeOpen = this.strokeDropDownBeforeOpen.bind(this);\n this.strokeDropDown.open = this.strokeDropDownOpen.bind(this);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.getElement('_annotation_stroke-popup').addEventListener('click', this.onStrokePickerCancelClick.bind(this));\n }\n }\n };\n AnnotationToolbar.prototype.opacityDropDownOpen = function (args) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n args.element.parentElement.style.left = '0px';\n args.element.parentElement.style.top = (this.pdfViewerBase.viewerContainer.clientHeight) + 'px';\n }\n else {\n this.calculateToolbarPosition(args);\n }\n };\n AnnotationToolbar.prototype.onColorPickerCancelClick = function (event) {\n if (event.target.classList.contains('e-cancel')) {\n this.colorDropDown.toggle();\n }\n };\n AnnotationToolbar.prototype.onStrokePickerCancelClick = function (event) {\n if (event.target.classList.contains('e-cancel')) {\n this.strokeDropDown.toggle();\n }\n };\n AnnotationToolbar.prototype.colorDropDownBeforeOpen = function (args) {\n this.colorPalette.noColor = false;\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.colorPalette.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation.color;\n }\n else {\n this.setCurrentColorInPicker();\n }\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.colorPalette.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill;\n this.colorPalette.noColor = true;\n }\n else {\n this.setCurrentColorInPicker();\n }\n this.colorPalette.refresh();\n this.updateColorInIcon(this.colorDropDownElement, this.colorPalette.value);\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.setCurrentColorInPicker = function () {\n if (!isBlazor()) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n switch (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode) {\n case 'Highlight':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightColor);\n break;\n case 'Underline':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineColor);\n break;\n case 'Strikethrough':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughColor);\n break;\n }\n }\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotationModule.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.lineFillColor);\n break;\n case 'Arrow':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.arrowFillColor);\n break;\n case 'Rectangle':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.rectangleFillColor);\n break;\n case 'Circle':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.circleFillColor);\n break;\n case 'Polygon':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.polygonFillColor);\n break;\n }\n }\n if (this.colorDropDownElement) {\n this.updateColorInIcon(this.colorDropDownElement, this.colorPalette.value);\n }\n }\n };\n AnnotationToolbar.prototype.colorDropDownOpen = function (args) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n args.element.parentElement.style.top = (this.pdfViewerBase.viewerContainer.clientHeight / 2) + 'px';\n }\n this.popupPosition(args, this.colorDropDownElement);\n this.colorPalette.refresh();\n };\n AnnotationToolbar.prototype.strokeDropDownBeforeOpen = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.strokeColorPicker.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor;\n }\n else {\n this.setCurrentStrokeColorInPicker();\n }\n this.strokeColorPicker.refresh();\n this.updateColorInIcon(this.strokeDropDownElement, this.strokeColorPicker.value);\n this.updateInkannotationItems();\n };\n AnnotationToolbar.prototype.setCurrentStrokeColorInPicker = function () {\n if (!isBlazor()) {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotationModule.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.lineStrokeColor);\n break;\n case 'Arrow':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.arrowStrokeColor);\n break;\n case 'Rectangle':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.rectangleStrokeColor);\n break;\n case 'Circle':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.circleStrokeColor);\n break;\n case 'Polygon':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.polygonStrokeColor);\n break;\n }\n }\n }\n };\n AnnotationToolbar.prototype.strokeDropDownOpen = function (args) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n args.element.parentElement.style.top = (this.pdfViewerBase.viewerContainer.clientHeight / 2) + 'px';\n }\n this.popupPosition(args, this.strokeDropDownElement);\n this.strokeColorPicker.refresh();\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onFontColorChange = function (args) {\n // eslint-disable-next-line\n var currentColor;\n if (!isBlazor()) {\n currentColor = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n }\n else {\n currentColor = args[0];\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.pdfViewer.annotation.modifyFontColor(currentColor);\n }\n else {\n this.pdfViewer.freeTextSettings.fontColor = currentColor;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n if (isBlazor()) {\n this.fontColorElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-textcolor-container');\n this.updateColorInIcon(this.fontColorElementInBlazor, currentColor);\n }\n else {\n this.updateColorInIcon(this.fontColorElement, currentColor);\n this.fontColorDropDown.toggle();\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onFontFamilyChange = function (args) {\n var currentValue;\n if (!isBlazor()) {\n currentValue = (args && args.fontFamily && args.fontFamily.value) ? args.fontFamily.value : '';\n }\n else {\n currentValue = args;\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1 && currentValue) {\n this.pdfViewer.annotation.modifyFontFamily(currentValue);\n }\n else {\n this.pdfViewer.freeTextSettings.fontFamily = currentValue;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onFontSizeChange = function (args, isInteracted) {\n var currentValue;\n if (!isBlazor()) {\n currentValue = (args && args.fontSize && args.fontSize.value) ? args.fontSize.value : '';\n }\n else {\n currentValue = args;\n }\n var fontSize = parseFloat(currentValue);\n if (this.pdfViewer.selectedItems.annotations.length === 1 && currentValue) {\n this.pdfViewer.annotation.modifyFontSize(fontSize, isInteracted);\n }\n else {\n this.pdfViewer.freeTextSettings.fontSize = fontSize;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n };\n AnnotationToolbar.prototype.textAlignDropDownBeforeOpen = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (args.element.getElementsByTagName('button') && args.element.getElementsByTagName('button').length > 0) {\n // eslint-disable-next-line\n var dropDownOptions = args.element.getElementsByTagName('button');\n // eslint-disable-next-line\n var selectedAnnotation = this.pdfViewer.selectedItems.annotations[0];\n for (var n = 0; n < dropDownOptions.length; n++) {\n if (dropDownOptions[n]) {\n dropDownOptions[n].classList.remove('textprop-option-active');\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_left_align') && selectedAnnotation.textAlign === 'Left') {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_right_align') && selectedAnnotation.textAlign === 'Right') {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_center_align') && selectedAnnotation.textAlign === 'Center') {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_justify_align') && selectedAnnotation.textAlign === 'Justify') {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n }\n }\n }\n }\n };\n AnnotationToolbar.prototype.textPropertiesDropDownBeforeOpen = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (args.element.getElementsByTagName('button') && args.element.getElementsByTagName('button').length > 0) {\n // eslint-disable-next-line\n var dropDownOptions = args.element.getElementsByTagName('button');\n // eslint-disable-next-line\n var selectedAnnotation = this.pdfViewer.selectedItems.annotations[0];\n for (var n = 0; n < dropDownOptions.length; n++) {\n if (dropDownOptions[n]) {\n dropDownOptions[n].classList.remove('textprop-option-active');\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_bold') && selectedAnnotation.font.isBold) {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_italic') && selectedAnnotation.font.isItalic) {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_strikeout') && selectedAnnotation.font.isStrikeout) {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_underline_textinput') && selectedAnnotation.font.isUnderline) {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onClickTextAlignment = function (args) {\n var currentValue;\n if (isBlazor()) {\n currentValue = args[0];\n }\n else {\n currentValue = (args && args.item && args.item.value) ? args.item.value : '';\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1 && currentValue) {\n this.pdfViewer.annotation.modifyTextAlignment(currentValue);\n }\n else {\n this.pdfViewer.freeTextSettings.textAlignment = args.item.value;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n this.updateTextAlignInIcon(currentValue);\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onClickTextProperties = function (args) {\n var currentValue;\n if (isBlazor()) {\n currentValue = args[0];\n }\n else {\n currentValue = (args && args.item && args.item.value) ? args.item.value : '';\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1 && currentValue) {\n var fontInfo = { isBold: undefined, isItalic: undefined, isStrikeout: undefined, isUnderline: undefined };\n if (currentValue === 'bold') {\n fontInfo.isBold = !(this.pdfViewer.selectedItems.annotations[0].font.isBold);\n }\n else if (currentValue === 'italic') {\n fontInfo.isItalic = !(this.pdfViewer.selectedItems.annotations[0].font.isItalic);\n }\n else if (currentValue === 'underline') {\n fontInfo.isUnderline = !(this.pdfViewer.selectedItems.annotations[0].font.isUnderline);\n }\n else if (currentValue === 'strikeout') {\n fontInfo.isStrikeout = !(this.pdfViewer.selectedItems.annotations[0].font.isStrikeout);\n }\n this.pdfViewer.annotation.modifyTextProperties(fontInfo, currentValue);\n }\n else {\n if (currentValue === 'bold') {\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isBold) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isBold = false;\n }\n else {\n this.pdfViewer.freeTextSettings.fontStyle = 1;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n else if (currentValue === 'italic') {\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isItalic) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isItalic = false;\n }\n else {\n this.pdfViewer.freeTextSettings.fontStyle = 2;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n else if (currentValue === 'underline') {\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isUnderline) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isUnderline = false;\n }\n else {\n this.pdfViewer.freeTextSettings.fontStyle = 4;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isStrikethrough = false;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n else if (currentValue === 'strikeout') {\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isStrikethrough) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isStrikethrough = false;\n }\n else {\n this.pdfViewer.freeTextSettings.fontStyle = 8;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isUnderline = false;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n }\n this.updateTextPropertySelection(currentValue);\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.opacityChange = function (args) {\n var opacityValue = 1;\n if (args && args.length === 1) {\n opacityValue = args[0];\n }\n else {\n opacityValue = args.value;\n }\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n if (!isBlazor()) {\n if (this.isCurrentAnnotationOpacitySet && args.name === 'changed') {\n this.isCurrentAnnotationOpacitySet = false;\n }\n else {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.modifyOpacityProperty(args);\n }\n }\n else {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.modifyOpacityProperty(null, opacityValue);\n }\n }\n else {\n switch (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode) {\n case 'Highlight':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightOpacity = opacityValue / 100;\n break;\n case 'Underline':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineOpacity = opacityValue / 100;\n break;\n case 'Strikethrough':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughOpacity = opacityValue / 100;\n break;\n }\n }\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n // eslint-disable-next-line\n var currentAnnotations = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line max-len\n if (currentAnnotations != null && (currentAnnotations.shapeAnnotationType === 'Stamp' || currentAnnotations.shapeAnnotationType === 'Image')) {\n var clonedObject = cloneObject(currentAnnotations);\n var redoClonedObject = cloneObject(currentAnnotations);\n redoClonedObject.opacity = opacityValue / 100;\n this.pdfViewer.nodePropertyChange(currentAnnotations, { opacity: opacityValue / 100 });\n this.pdfViewer.annotation.triggerAnnotationPropChange(currentAnnotations, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(this.pdfViewer.selectedItems.annotations[0].pageIndex, null, this.pdfViewer.selectedItems.annotations[0], 'stampOpacity', '', clonedObject, redoClonedObject);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stampAnnotationModule.updateSessionStorage(this.pdfViewer.selectedItems.annotations[0], null, 'opacity');\n }\n else {\n if (isBlazor()) {\n this.pdfViewer.annotation.modifyOpacity(opacityValue, true);\n }\n else {\n if (args.name === 'changed') {\n if (args.value !== args.previousValue) {\n this.pdfViewer.annotation.modifyOpacity(args);\n }\n }\n }\n }\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.pdfViewer.annotation.shapeAnnotationModule.lineOpacity = opacityValue / 100;\n break;\n case 'Arrow':\n this.pdfViewer.annotation.shapeAnnotationModule.arrowOpacity = opacityValue / 100;\n break;\n case 'Rectangle':\n this.pdfViewer.annotation.shapeAnnotationModule.rectangleOpacity = opacityValue / 100;\n break;\n case 'Circle':\n this.pdfViewer.annotation.shapeAnnotationModule.circleOpacity = opacityValue / 100;\n break;\n case 'Polygon':\n this.pdfViewer.annotation.shapeAnnotationModule.polygonOpacity = opacityValue / 100;\n break;\n }\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotation;\n if (annotationModule && annotationModule.inkAnnotationModule) {\n this.pdfViewer.inkAnnotationSettings.opacity = opacityValue / 100;\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.opacity = opacityValue / 100;\n if (this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.annotation.freeTextAnnotationModule.opacity = opacityValue / 100;\n }\n }\n }\n if (!isBlazor()) {\n this.updateOpacityIndicator();\n }\n };\n AnnotationToolbar.prototype.opacityDropDownBeforeOpen = function (args) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.isCurrentAnnotationOpacitySet = true;\n // eslint-disable-next-line max-len\n this.opacitySlider.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation.opacity * 100;\n }\n else {\n switch (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode) {\n case 'Highlight':\n this.opacitySlider.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightOpacity * 100;\n break;\n case 'Underline':\n this.opacitySlider.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineOpacity * 100;\n break;\n case 'Strikethrough':\n this.opacitySlider.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughOpacity * 100;\n break;\n }\n }\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.opacitySlider.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.opacity * 100;\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.lineOpacity * 100;\n break;\n case 'Arrow':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.arrowOpacity * 100;\n break;\n case 'Rectangle':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.rectangleOpacity * 100;\n break;\n case 'Circle':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.circleOpacity * 100;\n break;\n case 'Polygon':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.polygonOpacity * 100;\n break;\n }\n }\n }\n this.updateOpacityIndicator();\n this.updateInkannotationItems();\n };\n AnnotationToolbar.prototype.thicknessDropDownBeforeOpen = function () {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.thicknessSlider.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeWidth;\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.lineThickness;\n break;\n case 'Arrow':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.arrowThickness;\n break;\n case 'Rectangle':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.rectangleThickness;\n break;\n case 'Circle':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.circleThickness;\n break;\n case 'Polygon':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.polygonThickness;\n break;\n }\n }\n }\n this.updateThicknessIndicator();\n this.updateInkannotationItems();\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.thicknessDropDownOpen = function (args) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n args.element.parentElement.style.left = '0px';\n args.element.parentElement.style.top = (this.pdfViewerBase.viewerContainer.clientHeight) + 'px';\n }\n else {\n this.calculateToolbarPosition(args);\n }\n };\n AnnotationToolbar.prototype.calculateToolbarPosition = function (args) {\n if (args.element && args.element.parentElement) {\n var leftValue = parseFloat(args.element.parentElement.style.left);\n var width = args.element.parentElement.offsetWidth;\n if ((leftValue + width) < (this.pdfViewer.element.offsetWidth + 10)) {\n args.element.parentElement.style.left = (leftValue - width) + 'px';\n }\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.thicknessChangeInBlazor = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.pdfViewer.annotation.modifyThickness(args[0]);\n }\n else {\n this.ShapeThickness(args[0]);\n }\n };\n AnnotationToolbar.prototype.thicknessChange = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (args.name === 'changed') {\n this.pdfViewer.annotation.modifyThickness(args.value);\n if (!isBlazor()) {\n this.updateThicknessIndicator();\n }\n var annotationModule = this.pdfViewer.annotation;\n var selectedItems = this.pdfViewer.selectedItems.annotations[0];\n if (annotationModule && annotationModule.inkAnnotationModule && selectedItems && selectedItems.shapeAnnotationType === \"Ink\") {\n this.pdfViewer.inkAnnotationSettings.thickness = args.value;\n }\n }\n }\n else {\n this.ShapeThickness(args.value);\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.ShapeThickness = function (args) {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.pdfViewer.annotation.shapeAnnotationModule.lineThickness = args;\n break;\n case 'Arrow':\n this.pdfViewer.annotation.shapeAnnotationModule.arrowThickness = args;\n break;\n case 'Rectangle':\n this.pdfViewer.annotation.shapeAnnotationModule.rectangleThickness = args;\n break;\n case 'Circle':\n this.pdfViewer.annotation.shapeAnnotationModule.circleThickness = args;\n break;\n case 'Polygon':\n this.pdfViewer.annotation.shapeAnnotationModule.polygonThickness = args;\n break;\n }\n // eslint-disable-next-line\n var annotationModule_1 = this.pdfViewer.annotation;\n if (annotationModule_1 && annotationModule_1.inkAnnotationModule) {\n this.pdfViewer.inkAnnotationSettings.thickness = args.value;\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.thickness = args.value;\n }\n if (this.pdfViewer.drawingObject && this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.annotation.freeTextAnnotationModule.borderWidth = args.value;\n }\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotation;\n if (annotationModule && annotationModule.inkAnnotationModule) {\n this.pdfViewer.inkAnnotationSettings.thickness = args;\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.thickness = args;\n }\n if (this.pdfViewer.drawingObject && this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.annotation.freeTextAnnotationModule.borderWidth = args;\n }\n if (!isBlazor()) {\n this.updateThicknessIndicator();\n }\n };\n AnnotationToolbar.prototype.createDropDownButton = function (element, iconClass, target, tooltipText) {\n // eslint-disable-next-line max-len\n var dropDownButton = new DropDownButton({ iconCss: iconClass + ' e-pv-icon', target: target });\n if (this.pdfViewer.enableRtl) {\n dropDownButton.enableRtl = true;\n }\n dropDownButton.appendTo(element);\n this.primaryToolbar.createTooltip(element, tooltipText);\n element.setAttribute('aria-label', tooltipText);\n return dropDownButton;\n };\n AnnotationToolbar.prototype.createShapeOptions = function (idString, isShape, isAlign, isTextProp) {\n var toolbarElement = createElement('div', { id: idString + '_target', className: 'e-pv-shapes-toolbar' });\n document.body.appendChild(toolbarElement);\n var toolbar;\n if (isAlign) {\n toolbar = new Tool({ items: this.textAlignmentToolbarItems(), overflowMode: 'MultiRow' }, toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterAlignmentToolbarCreation();\n }\n else if (isTextProp) {\n toolbar = new Tool({ items: this.textPropertiesToolbarItems(), overflowMode: 'MultiRow' }, toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterPropertiesToolbarCreation();\n }\n else {\n if (isShape) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n toolbar = new Tool({ items: this.createShapeToolbarItems(), overflowMode: 'MultiRow', clicked: this.onShapeToolbarClicked.bind(this) }, toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterShapeToolbarCreation();\n }\n else {\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: idString + '_target', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n // eslint-disable-next-line max-len\n toolbar = new Tool({ items: this.createShapeToolbarItemsForMobile(), overflowMode: 'Scrollable', clicked: this.onShapeToolbarClicked.bind(this) }, this.toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterShapeToolbarCreationForMobile();\n }\n }\n else {\n // eslint-disable-next-line max-len\n toolbar = new Tool({ items: this.createCalibrateToolbarItems(), overflowMode: 'MultiRow', clicked: this.onCalibrateToolbarClicked.bind(this) }, toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterCalibrateToolbarCreation();\n }\n }\n return toolbar;\n };\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createPropertyToolbarForMobile = function (shapeType) {\n var _this = this;\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n var fontFamilyTemplate = this.getTemplate('input', '_annotation_fontname', 'e-pv-annotation-fontname-container');\n var fontSizeTemplate = this.getTemplate('input', '_annotation_fontsize', 'e-pv-annotation-fontsize-container');\n var textColorTemplate = this.getTemplate('span', '_annotation_textcolor', 'e-pv-annotation-textcolor-container');\n var alignmentTemplate = this.getTemplate('span', '_annotation_textalign', 'e-pv-annotation-textalign-container');\n // eslint-disable-next-line max-len\n var textPropertiesTemplate = this.getTemplate('span', '_annotation_textproperties', 'e-pv-annotation-textprop-container');\n // eslint:disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n if (shapeType === 'Polygon' || shapeType === 'Rectangle' || shapeType === 'Ellipse' || shapeType === 'Line' || shapeType === 'LineWidthArrowHead' || shapeType === 'Distance' || shapeType === 'Perimeter' || shapeType === 'Radius' || shapeType === 'FreeText') {\n if (shapeType === 'FreeText') {\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-freetext-icon e-pv-icon', className: 'e-pv-annotation-freetextedit-container' });\n items.push({ type: 'Separator', align: 'Left' });\n items.push({ template: fontFamilyTemplate });\n items.push({ template: fontSizeTemplate });\n items.push({ template: textColorTemplate });\n items.push({ template: alignmentTemplate });\n items.push({ template: textPropertiesTemplate });\n }\n if (shapeType === 'Polygon') {\n if (this.pdfViewer.selectedItems.annotations[0].measureType === 'Area') {\n items.push({ prefixIcon: 'e-pv-calibrate-area-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (this.pdfViewer.selectedItems.annotations[0].measureType === 'Volume') {\n items.push({ prefixIcon: 'e-pv-calibrate-volume-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else {\n items.push({ prefixIcon: 'e-pv-shape-pentagon-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n }\n else if (shapeType === 'Rectangle') {\n items.push({ prefixIcon: 'e-pv-shape-rectangle-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Ellipse') {\n items.push({ prefixIcon: 'e-pv-shape-circle-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Line') {\n if (this.pdfViewer.selectedItems.annotations[0].measureType === 'Perimeter') {\n items.push({ prefixIcon: 'e-pv-calibrate-perimeter-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else {\n items.push({ prefixIcon: 'e-pv-shape-line-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n }\n else if (shapeType === 'LineWidthArrowHead') {\n items.push({ prefixIcon: 'e-pv-shape-arrow-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Distance') {\n items.push({ prefixIcon: 'e-pv-calibrate-distance-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Perimeter') {\n items.push({ prefixIcon: 'e-pv-calibrate-perimeter-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Radius') {\n items.push({ prefixIcon: 'e-pv-calibrate-radius-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n items.push({ template: colorTemplate });\n items.push({ template: strokeTemplate });\n items.push({ template: thicknessTemplate });\n }\n else if (shapeType === 'Path' || shapeType === 'Ink' || shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText') {\n if (shapeType === 'Path' || shapeType === 'Ink') {\n items.push({ prefixIcon: 'e-pv-inkannotation-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText') {\n items.push({ prefixIcon: 'e-pv-handwritten-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n items.push({ template: strokeTemplate });\n items.push({ template: thicknessTemplate });\n }\n else if (shapeType === 'Underline' || shapeType === 'Highlight' || shapeType === 'Strikethrough') {\n if (shapeType === 'Highlight') {\n items.push({ prefixIcon: 'e-pv-highlight-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Underline') {\n items.push({ prefixIcon: 'e-pv-underline-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Strikethrough') {\n items.push({ prefixIcon: 'e-pv-strikethrough-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n items.push({ template: colorTemplate });\n }\n else if (shapeType === 'Stamp' || shapeType === 'Image') {\n items.push({ prefixIcon: 'e-pv-stamp-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'StickyNotes') {\n items.push({ prefixIcon: 'e-pv-comment-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n items.push({ template: opacityTemplate });\n // eslint-disable-next-line max-len\n items.push({\n prefixIcon: 'e-pv-comment-panel-icon e-pv-icon', className: 'e-pv-comment-panel-icon-container', id: this.pdfViewer.element.id + '_annotation_commentPanel', align: 'Right', click: function (args) {\n _this.pdfViewer.annotationModule.showCommentsPanel();\n }\n });\n // eslint-disable-next-line max-len\n items.push({\n prefixIcon: 'e-pv-annotation-delete-icon e-pv-icon', className: 'e-pv-annotation-delete-container', id: this.pdfViewer.element.id + '_annotation_delete', align: 'Right', click: function (args) {\n _this.pdfViewer.annotationModule.deleteAnnotation();\n _this.propertyToolbar.destroy();\n _this.toolbarCreated = false;\n _this.createAnnotationToolbarForMobile();\n _this.adjustMobileViewer();\n }\n });\n return items;\n };\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createStampToolbarItemsForMobile = function () {\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint:disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) });\n items.push({ type: 'Separator', align: 'Left' });\n items.push({ template: opacityTemplate });\n return items;\n };\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createShapeToolbarItemsForMobile = function () {\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint:disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) });\n items.push({ prefixIcon: 'e-pv-shape-line-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_line', text: this.pdfViewer.localeObj.getConstant('Line Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-arrow-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_arrow', text: this.pdfViewer.localeObj.getConstant('Arrow Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-rectangle-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_rectangle', text: this.pdfViewer.localeObj.getConstant('Rectangle Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-circle-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_circle', text: this.pdfViewer.localeObj.getConstant('Circle Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-pentagon-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_pentagon', text: this.pdfViewer.localeObj.getConstant('Pentagon Shape'), align: 'Left' });\n items.push({ type: 'Separator', align: 'Left' });\n items.push({ template: colorTemplate });\n items.push({ template: strokeTemplate });\n items.push({ template: thicknessTemplate });\n items.push({ template: opacityTemplate });\n return items;\n };\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createCalibrateToolbarItemsForMobile = function () {\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint:disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) });\n items.push({ prefixIcon: 'e-pv-calibrate-distance-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_distance', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-perimeter-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_perimeter', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-area-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_area', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-radius-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_radius', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-volume-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_volume', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n items.push({ type: 'Separator', align: 'Left' });\n items.push({ template: colorTemplate });\n items.push({ template: strokeTemplate });\n items.push({ template: thicknessTemplate });\n items.push({ template: opacityTemplate });\n return items;\n };\n AnnotationToolbar.prototype.handleShapeTool = function (type) {\n if (!isBlazor() && Browser.isDevice) {\n // eslint:disable-next-line\n var selectedItems = document.querySelectorAll('.e-pv-select');\n for (var i = 0; i < selectedItems.length; i++) {\n if (selectedItems[i].id !== type && selectedItems[i].id !== this.pdfViewer.element.id + '_annotation') {\n selectedItems[i].classList.remove('e-pv-select');\n }\n }\n }\n };\n AnnotationToolbar.prototype.createPropDropDownButton = function (element, iconClass, target, tooltipText) {\n // eslint-disable-next-line max-len\n var dropDownButton = new DropDownButton({ iconCss: iconClass + ' e-pv-icon', target: target, cssClass: 'e-caret-hide' });\n if (this.pdfViewer.enableRtl) {\n dropDownButton.enableRtl = true;\n }\n dropDownButton.appendTo(element);\n this.primaryToolbar.createTooltip(element, tooltipText);\n element.setAttribute('aria-label', tooltipText);\n return dropDownButton;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.textAlignmentToolbarItems = function () {\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-left-align-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_left_align', align: 'Left', value: 'Left', click: this.onClickTextAlignment.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-center-align-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_center_align', align: 'Left', value: 'Center', click: this.onClickTextAlignment.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-right-align-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_right_align', align: 'Left', value: 'Right', click: this.onClickTextAlignment.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-justfiy-align-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_justify_align', align: 'Left', value: 'Justify', click: this.onClickTextAlignment.bind(this) });\n // eslint-disable-next-line max-len\n return items;\n };\n AnnotationToolbar.prototype.afterAlignmentToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.alignLeftElement = this.primaryToolbar.addClassToolbarItem('_left_align', 'e-pv-left-align', this.pdfViewer.localeObj.getConstant('Align left'));\n this.alignRightElement = this.primaryToolbar.addClassToolbarItem('_right_align', 'e-pv-right-align', this.pdfViewer.localeObj.getConstant('Align right'));\n // eslint-disable-next-line max-len\n this.alignCenterElement = this.primaryToolbar.addClassToolbarItem('_center_align', 'e-pv-center-align', this.pdfViewer.localeObj.getConstant('Center'));\n this.alignJustifyElement = this.primaryToolbar.addClassToolbarItem('_justify_align', 'e-pv-justfiy-align', this.pdfViewer.localeObj.getConstant('Justify'));\n };\n AnnotationToolbar.prototype.afterPropertiesToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.boldElement = this.primaryToolbar.addClassToolbarItem('_bold', 'e-pv-bold', this.pdfViewer.localeObj.getConstant('Bold'));\n this.italicElement = this.primaryToolbar.addClassToolbarItem('_italic', 'e-pv-italic', this.pdfViewer.localeObj.getConstant('Italic'));\n // eslint-disable-next-line max-len\n this.fontStyleStrikethroughItem = this.primaryToolbar.addClassToolbarItem('_strikeout', 'e-pv-strikeout', this.pdfViewer.localeObj.getConstant('Strikethroughs'));\n this.fontStyleUnderlineItem = this.primaryToolbar.addClassToolbarItem('_underline_textinput', 'e-pv-underlinetext', this.pdfViewer.localeObj.getConstant('Underlines'));\n };\n AnnotationToolbar.prototype.createDropDownListForSize = function (fontSelectElement) {\n // eslint-disable-next-line max-len\n var proxy = this;\n var fontSize = ['8px', '9px', '10px', '11px', '12px', '14px', '16px', '18px', '20px', '22px', '24px', '26px', '28px', '36px', '48px', '72px', '96px'];\n if (!this.pdfViewer.enableRtl) {\n this.fontSize = new ComboBox({\n dataSource: fontSize,\n cssClass: 'e-pv-prop-dropdown',\n allowCustom: true,\n showClearButton: false,\n width: '80px',\n popupWidth: '100px'\n });\n }\n else {\n this.fontSize = new ComboBox({\n dataSource: fontSize,\n cssClass: 'e-pv-prop-dropdown-rtl',\n allowCustom: true,\n showClearButton: false,\n width: '80px',\n popupWidth: '100px',\n enableRtl: true\n });\n }\n this.fontSize.value = '16px';\n this.fontSize.appendTo(fontSelectElement);\n this.primaryToolbar.createTooltip(fontSelectElement, this.pdfViewer.localeObj.getConstant('Font size'));\n fontSelectElement.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Font size'));\n this.fontSize.addEventListener('change', function (args) {\n var isUserInteracted = args.isInteracted;\n proxy.onFontSizeChange(proxy, isUserInteracted);\n });\n };\n AnnotationToolbar.prototype.createDropDownListForFamily = function (fontSelectElement) {\n var _this = this;\n var fontStyle = [{ FontName: 'Helvetica' },\n { FontName: 'Courier' }, { FontName: 'Symbol' }, { FontName: 'Times New Roman' }];\n if (!this.pdfViewer.enableRtl) {\n this.fontFamily = new ComboBox({\n dataSource: fontStyle,\n query: new Query().select(['FontName']),\n fields: { text: 'FontName', value: 'FontName' },\n cssClass: 'e-pv-prop-dropdown',\n itemTemplate: initializeCSPTemplate(function (data) { return \"\" + data.FontName + \"\"; }),\n allowCustom: true,\n showClearButton: false,\n width: '110px',\n popupWidth: '190px'\n });\n }\n else {\n this.fontFamily = new ComboBox({\n dataSource: fontStyle,\n query: new Query().select(['FontName']),\n fields: { text: 'FontName', value: 'FontName' },\n cssClass: 'e-pv-prop-dropdown-rtl',\n itemTemplate: initializeCSPTemplate(function (data) { return \"\" + data.FontName + \"\"; }),\n allowCustom: true,\n showClearButton: false,\n width: '110px',\n popupWidth: '190px',\n enableRtl: true\n });\n }\n this.fontFamily.isStringTemplate = true;\n this.fontFamily.value = 'Helvetica';\n this.fontFamily.appendTo(fontSelectElement);\n this.primaryToolbar.createTooltip(fontSelectElement, this.pdfViewer.localeObj.getConstant('Font family'));\n fontSelectElement.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Font family'));\n this.fontFamily.addEventListener('change', function () {\n _this.onFontFamilyChange(_this);\n });\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.textPropertiesToolbarItems = function () {\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-bold-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_bold', align: 'Left', value: 'bold', click: this.onClickTextProperties.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-italic-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_italic', align: 'Left', value: 'italic', click: this.onClickTextProperties.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-strikeout-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_strikeout', align: 'Left', value: 'strikeout', click: this.onClickTextProperties.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-underlinetext-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_underline_textinput', align: 'Left', value: 'underline', click: this.onClickTextProperties.bind(this) });\n return items;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createShapeToolbarItems = function () {\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-shape-line-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_line', text: this.pdfViewer.localeObj.getConstant('Line Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-arrow-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_arrow', text: this.pdfViewer.localeObj.getConstant('Arrow Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-rectangle-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_rectangle', text: this.pdfViewer.localeObj.getConstant('Rectangle Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-circle-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_circle', text: this.pdfViewer.localeObj.getConstant('Circle Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-pentagon-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_pentagon', text: this.pdfViewer.localeObj.getConstant('Pentagon Shape'), align: 'Left' });\n return items;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createCalibrateToolbarItems = function () {\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-calibrate-distance-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_distance', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-perimeter-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_perimeter', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-area-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_area', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-radius-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_radius', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-volume-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_volume', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n return items;\n };\n AnnotationToolbar.prototype.onCalibrateToolbarClicked = function (args) {\n var elementId = this.pdfViewer.element.id;\n var measureModule = this.pdfViewer.annotation.measureAnnotationModule;\n this.deselectAllItems();\n this.resetFreeTextAnnot();\n if (Browser.isDevice && !isBlazor()) {\n // tslint:disable-next-line\n var element = args.originalEvent.target;\n this.pdfViewer.toolbarModule.selectItem(element.parentElement);\n }\n switch (args.originalEvent.target.id) {\n case elementId + '_calibrate_distance':\n case elementId + '_calibrate_distanceIcon':\n measureModule.setAnnotationType('Distance');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.distanceFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.distanceStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_distance');\n break;\n case elementId + '_calibrate_perimeter':\n case elementId + '_calibrate_perimeterIcon':\n measureModule.setAnnotationType('Perimeter');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.perimeterFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.perimeterStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_perimeter');\n break;\n case elementId + '_calibrate_area':\n case elementId + '_calibrate_areaIcon':\n measureModule.setAnnotationType('Area');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.areaFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.areaStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_area');\n break;\n case elementId + '_calibrate_radius':\n case elementId + '_calibrate_radiusIcon':\n measureModule.setAnnotationType('Radius');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.radiusFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.radiusStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_radius');\n break;\n case elementId + '_calibrate_volume':\n case elementId + '_calibrate_volumeIcon':\n measureModule.setAnnotationType('Volume');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.volumeFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.volumeStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_volume');\n break;\n }\n };\n AnnotationToolbar.prototype.onShapeDrawSelection = function (isShape) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (!Browser.isDevice) {\n this.updateInteractionTools();\n this.enableAnnotationPropertiesTools(true);\n if (isShape) {\n this.shapeDropDown.toggle();\n }\n else {\n this.calibrateDropDown.toggle();\n }\n }\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n };\n AnnotationToolbar.prototype.afterCalibrateToolbarCreationForMobile = function () {\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_calibrate_distance', 'e-pv-calibrate-distance', this.pdfViewer.localeObj.getConstant('Calibrate Distance'));\n this.primaryToolbar.addClassToolbarItem('_calibrate_perimeter', 'e-pv-calibrate-perimeter', this.pdfViewer.localeObj.getConstant('Calibrate Perimeter'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_calibrate_area', 'e-pv-calibrate-area', this.pdfViewer.localeObj.getConstant('Calibrate Area'));\n this.primaryToolbar.addClassToolbarItem('_calibrate_radius', 'e-pv-calibrate-radius', this.pdfViewer.localeObj.getConstant('Calibrate Radius'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_calibrate_volume', 'e-pv-calibrate-volume', this.pdfViewer.localeObj.getConstant('Calibrate Volume'));\n };\n AnnotationToolbar.prototype.afterShapeToolbarCreationForMobile = function () {\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_annotation_color', 'e-pv-annotation-color-container', this.pdfViewer.localeObj.getConstant('Change Color'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_annotation_stroke', 'e-pv-annotation-stroke-container', this.pdfViewer.localeObj.getConstant('Change Stroke Color'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_annotation_thickness', 'e-pv-annotation-thickness-container', this.pdfViewer.localeObj.getConstant('Chnage Border Thickness'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_annotation_opacity', 'e-annotation-opacity-container', this.pdfViewer.localeObj.getConstant('Change Opacity'));\n this.primaryToolbar.addClassToolbarItem('_shape_line', 'e-pv-shape-line', this.pdfViewer.localeObj.getConstant('Add line'));\n this.primaryToolbar.addClassToolbarItem('_shape_arrow', 'e-pv-shape-arrow', this.pdfViewer.localeObj.getConstant('Add arrow'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_shape_rectangle', 'e-pv-shape-rectangle', this.pdfViewer.localeObj.getConstant('Add rectangle'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_shape_circle', 'e-pv-shape-circle', this.pdfViewer.localeObj.getConstant('Add circle'));\n this.primaryToolbar.addClassToolbarItem('_shape_pentagon', 'e-pv-shape-pentagon', this.pdfViewer.localeObj.getConstant('Add polygon'));\n };\n AnnotationToolbar.prototype.afterShapeToolbarCreation = function () {\n this.lineElement = this.primaryToolbar.addClassToolbarItem('_shape_line', 'e-pv-shape-line', this.pdfViewer.localeObj.getConstant('Add line'));\n this.arrowElement = this.primaryToolbar.addClassToolbarItem('_shape_arrow', 'e-pv-shape-arrow', this.pdfViewer.localeObj.getConstant('Add arrow'));\n // eslint-disable-next-line max-len\n this.rectangleElement = this.primaryToolbar.addClassToolbarItem('_shape_rectangle', 'e-pv-shape-rectangle', this.pdfViewer.localeObj.getConstant('Add rectangle'));\n // eslint-disable-next-line max-len\n this.circleElement = this.primaryToolbar.addClassToolbarItem('_shape_circle', 'e-pv-shape-circle', this.pdfViewer.localeObj.getConstant('Add circle'));\n this.polygonElement = this.primaryToolbar.addClassToolbarItem('_shape_pentagon', 'e-pv-shape-pentagon', this.pdfViewer.localeObj.getConstant('Add polygon'));\n };\n AnnotationToolbar.prototype.afterCalibrateToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.calibrateDistance = this.primaryToolbar.addClassToolbarItem('_calibrate_distance', 'e-pv-calibrate-distance', this.pdfViewer.localeObj.getConstant('Calibrate Distance'));\n this.calibratePerimeter = this.primaryToolbar.addClassToolbarItem('_calibrate_perimeter', 'e-pv-calibrate-perimeter', this.pdfViewer.localeObj.getConstant('Calibrate Perimeter'));\n // eslint-disable-next-line max-len\n this.calibrateArea = this.primaryToolbar.addClassToolbarItem('_calibrate_area', 'e-pv-calibrate-area', this.pdfViewer.localeObj.getConstant('Calibrate Area'));\n this.calibrateRadius = this.primaryToolbar.addClassToolbarItem('_calibrate_radius', 'e-pv-calibrate-radius', this.pdfViewer.localeObj.getConstant('Calibrate Radius'));\n // eslint-disable-next-line max-len\n this.calibrateVolume = this.primaryToolbar.addClassToolbarItem('_calibrate_volume', 'e-pv-calibrate-volume', this.pdfViewer.localeObj.getConstant('Calibrate Volume'));\n };\n AnnotationToolbar.prototype.afterMobileToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.highlightItem = this.primaryToolbar.addClassToolbarItem('_highlight', 'e-pv-highlight', this.pdfViewer.localeObj.getConstant('Highlight'));\n this.underlineItem = this.primaryToolbar.addClassToolbarItem('_underline', 'e-pv-underline', this.pdfViewer.localeObj.getConstant('Underline'));\n // eslint-disable-next-line max-len\n this.strikethroughItem = this.primaryToolbar.addClassToolbarItem('_strikethrough', 'e-pv-strikethrough', this.pdfViewer.localeObj.getConstant('Strikethrough'));\n // eslint-disable-next-line max-len\n this.shapesItem = this.primaryToolbar.addClassToolbarItem('_annotation_shapes', 'e-pv-annotation-shapes', this.pdfViewer.localeObj.getConstant('Add Shapes'));\n this.calibrateItem = this.primaryToolbar.addClassToolbarItem('_annotation_calibrate', 'e-pv-annotation-calibrate', this.pdfViewer.localeObj.getConstant('Calibrate'));\n // eslint-disable-next-line max-len\n this.freeTextEditItem = this.primaryToolbar.addClassToolbarItem('_annotation_freeTextEdit', 'e-pv-annotation-freeTextEdit', this.pdfViewer.localeObj.getConstant('Free Text'));\n // eslint-disable-next-line max-len\n this.commentItem = this.primaryToolbar.addClassToolbarItem('_comment', 'e-pv-comment', this.pdfViewer.localeObj.getConstant('Add Comments'));\n // eslint-disable-next-line max-len\n this.commentItem = this.primaryToolbar.addClassToolbarItem('_annotation_commentPanel', 'e-pv-annotation-comment-panel', this.pdfViewer.localeObj.getConstant('Comment Panel'));\n // eslint-disable-next-line max-len\n this.inkAnnotationItem = this.primaryToolbar.addClassToolbarItem('_annotation_ink', 'e-pv-annotation-ink', this.pdfViewer.localeObj.getConstant('Draw Ink'));\n this.selectAnnotationDeleteItem(false);\n this.enableCommentPanelTool(this.pdfViewer.enableCommentPanel);\n };\n AnnotationToolbar.prototype.createColorPicker = function (idString) {\n var inputElement;\n var existingInput = document.getElementById(idString + '_target');\n if (existingInput) {\n inputElement = existingInput;\n }\n else {\n inputElement = createElement('input', { id: idString + '_target' });\n }\n document.body.appendChild(inputElement);\n var colorPicker = new ColorPicker({\n inline: true, mode: 'Palette', cssClass: 'e-show-value', enableOpacity: false,\n value: '#000000', showButtons: false, modeSwitcher: false\n });\n if (this.pdfViewer.enableRtl) {\n colorPicker.enableRtl = true;\n }\n colorPicker.appendTo(inputElement);\n return colorPicker;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onColorPickerChange = function (args) {\n // eslint-disable-next-line\n var currentColor;\n if (!isBlazor()) {\n currentColor = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n }\n else {\n currentColor = args[0];\n }\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.modifyColorProperty(currentColor);\n }\n else {\n switch (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode) {\n case 'Highlight':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightColor = currentColor;\n break;\n case 'Underline':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineColor = currentColor;\n break;\n case 'Strikethrough':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughColor = currentColor;\n break;\n }\n }\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (isBlazor()) {\n if (args[0] !== args[1]) {\n this.pdfViewer.annotation.modifyFillColor(currentColor);\n }\n }\n else {\n if (args.currentValue.hex !== args.previousValue.hex) {\n this.pdfViewer.annotation.modifyFillColor(currentColor);\n }\n }\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.pdfViewer.annotation.shapeAnnotationModule.lineFillColor = currentColor;\n break;\n case 'Arrow':\n this.pdfViewer.annotation.shapeAnnotationModule.arrowFillColor = currentColor;\n break;\n case 'Rectangle':\n this.pdfViewer.annotation.shapeAnnotationModule.rectangleFillColor = currentColor;\n break;\n case 'Circle':\n this.pdfViewer.annotation.shapeAnnotationModule.circleFillColor = currentColor;\n break;\n case 'Polygon':\n this.pdfViewer.annotation.shapeAnnotationModule.polygonFillColor = currentColor;\n break;\n }\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.fillColor = currentColor;\n if (this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.annotation.freeTextAnnotationModule.fillColor = currentColor;\n }\n }\n }\n if (isBlazor()) {\n this.colorDropDownElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-color-container');\n this.updateColorInIcon(this.colorDropDownElementInBlazor, currentColor);\n }\n else {\n this.updateColorInIcon(this.colorDropDownElement, currentColor);\n this.colorDropDown.toggle();\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onStrokePickerChange = function (args) {\n // eslint-disable-next-line\n var currentColor;\n if (!isBlazor()) {\n currentColor = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n }\n else {\n currentColor = args[0];\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (isBlazor()) {\n if (args[0] !== args[1]) {\n this.pdfViewer.annotation.modifyStrokeColor(currentColor);\n }\n }\n else {\n if (args.currentValue.hex !== args.previousValue.hex) {\n this.pdfViewer.annotation.modifyStrokeColor(currentColor);\n }\n }\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.pdfViewer.annotation.shapeAnnotationModule.lineStrokeColor = currentColor;\n break;\n case 'Arrow':\n this.pdfViewer.annotation.shapeAnnotationModule.arrowStrokeColor = currentColor;\n break;\n case 'Rectangle':\n this.pdfViewer.annotation.shapeAnnotationModule.rectangleStrokeColor = currentColor;\n break;\n case 'Circle':\n this.pdfViewer.annotation.shapeAnnotationModule.circleStrokeColor = currentColor;\n break;\n case 'Polygon':\n this.pdfViewer.annotation.shapeAnnotationModule.polygonStrokeColor = currentColor;\n break;\n }\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotation;\n if (annotationModule && annotationModule.inkAnnotationModule) {\n this.pdfViewer.inkAnnotationSettings.strokeColor = currentColor;\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.strokeColor = currentColor;\n }\n if (this.pdfViewer.drawingObject && this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.annotation.freeTextAnnotationModule.borderColor = currentColor;\n }\n }\n if (isBlazor()) {\n this.strokeDropDownElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-stroke-container');\n this.updateColorInIcon(this.strokeDropDownElementInBlazor, currentColor);\n }\n else {\n this.updateColorInIcon(this.strokeDropDownElement, currentColor);\n this.strokeDropDown.toggle();\n }\n };\n /**\n * @param element\n * @param color\n * @param element\n * @param color\n * @private\n */\n AnnotationToolbar.prototype.updateColorInIcon = function (element, color) {\n if (isBlazor()) {\n if (element) {\n element.children[0].style.borderBottomColor = color;\n }\n }\n else {\n if (element) {\n element.childNodes[0] ? element.childNodes[0].style.borderBottomColor = color : element.childNodes[0];\n }\n }\n };\n /**\n * @param currentOption\n * @private\n */\n AnnotationToolbar.prototype.updateTextPropertySelection = function (currentOption) {\n if (currentOption === 'bold') {\n document.getElementById(this.pdfViewer.element.id + '_bold').classList.toggle('textprop-option-active');\n }\n else if (currentOption === 'italic') {\n document.getElementById(this.pdfViewer.element.id + '_italic').classList.toggle('textprop-option-active');\n }\n else if (currentOption === 'underline') {\n document.getElementById(this.pdfViewer.element.id + '_underline_textinput').classList.toggle('textprop-option-active');\n document.getElementById(this.pdfViewer.element.id + '_strikeout').classList.remove('textprop-option-active');\n }\n else if (currentOption === 'strikeout') {\n document.getElementById(this.pdfViewer.element.id + '_strikeout').classList.toggle('textprop-option-active');\n document.getElementById(this.pdfViewer.element.id + '_underline_textinput').classList.remove('textprop-option-active');\n }\n };\n /**\n * @param family\n * @private\n */\n AnnotationToolbar.prototype.updateFontFamilyInIcon = function (family) {\n this.fontFamily.value = family;\n };\n /**\n * @param align\n * @private\n */\n AnnotationToolbar.prototype.updateTextAlignInIcon = function (align) {\n var className = 'e-btn-icon e-pv-left-align-icon e-pv-icon';\n var leftAlign = document.getElementById(this.pdfViewer.element.id + '_left_align');\n var rightAlign = document.getElementById(this.pdfViewer.element.id + '_right_align');\n var centerAlign = document.getElementById(this.pdfViewer.element.id + '_center_align');\n var justifyAlign = document.getElementById(this.pdfViewer.element.id + '_justify_align');\n if (!isBlazor()) {\n leftAlign.classList.remove('textprop-option-active');\n rightAlign.classList.remove('textprop-option-active');\n centerAlign.classList.remove('textprop-option-active');\n justifyAlign.classList.remove('textprop-option-active');\n }\n if (align === 'Left') {\n leftAlign.classList.add('textprop-option-active');\n }\n else if (align === 'Right') {\n className = 'e-btn-icon e-pv-right-align-icon e-pv-icon';\n rightAlign.classList.add('textprop-option-active');\n }\n else if (align === 'Center') {\n className = 'e-btn-icon e-pv-center-align-icon e-pv-icon';\n centerAlign.classList.add('textprop-option-active');\n }\n else if (align === 'Justify') {\n className = 'e-btn-icon e-pv-justfiy-align-icon e-pv-icon';\n justifyAlign.classList.add('textprop-option-active');\n }\n document.getElementById(this.pdfViewer.element.id + '_annotation_textalign').children[0].className = className;\n };\n /**\n * @param size\n * @private\n */\n AnnotationToolbar.prototype.updateFontSizeInIcon = function (size) {\n this.fontSize.value = size + 'px';\n };\n AnnotationToolbar.prototype.updateOpacityIndicator = function () {\n // eslint-disable-next-line\n this.opacityIndicator.textContent = parseInt(Math.round(this.opacitySlider.value).toString()) + '%';\n };\n AnnotationToolbar.prototype.updateThicknessIndicator = function () {\n this.thicknessIndicator.textContent = this.thicknessSlider.value + ' pt';\n };\n AnnotationToolbar.prototype.createSlider = function (idString) {\n var outerContainer = createElement('div', { className: 'e-pv-annotation-opacity-popup-container' });\n document.body.appendChild(outerContainer);\n var label = createElement('span', { id: idString + '_label', className: 'e-pv-annotation-opacity-label' });\n label.textContent = this.pdfViewer.localeObj.getConstant('Opacity');\n var sliderElement = createElement('div', { id: idString + '_slider' });\n this.opacitySlider = new Slider({ type: 'MinRange', cssClass: 'e-pv-annotation-opacity-slider', max: 100, min: 0 });\n // eslint-disable-next-line max-len\n this.opacityIndicator = createElement('div', { id: idString + '_opacity_indicator', className: 'e-pv-annotation-opacity-indicator' });\n this.opacityIndicator.textContent = '100%';\n if (!this.pdfViewer.enableRtl) {\n outerContainer.appendChild(label);\n outerContainer.appendChild(sliderElement);\n this.opacitySlider.appendTo(sliderElement);\n this.opacitySlider.element.parentElement.classList.add('e-pv-annotation-opacity-slider-container');\n outerContainer.appendChild(this.opacityIndicator);\n }\n else {\n outerContainer.appendChild(this.opacityIndicator);\n outerContainer.appendChild(sliderElement);\n this.opacitySlider.enableRtl = true;\n this.opacitySlider.appendTo(sliderElement);\n this.opacitySlider.element.parentElement.classList.add('e-pv-annotation-opacity-slider-container');\n outerContainer.appendChild(label);\n }\n return outerContainer;\n };\n AnnotationToolbar.prototype.createThicknessSlider = function (idString) {\n var outerContainer = createElement('div', { className: 'e-pv-annotation-thickness-popup-container' });\n document.body.appendChild(outerContainer);\n var label = createElement('span', { id: idString + '_label', className: 'e-pv-annotation-thickness-label' });\n label.textContent = this.pdfViewer.localeObj.getConstant('Line Thickness');\n var sliderElement = createElement('div', { id: idString + '_slider' });\n this.thicknessSlider = new Slider({ type: 'MinRange', cssClass: 'e-pv-annotation-thickness-slider', max: 12, min: 0 });\n // eslint-disable-next-line max-len\n this.thicknessIndicator = createElement('div', { id: idString + '_thickness_indicator', className: 'e-pv-annotation-thickness-indicator' });\n this.thicknessIndicator.textContent = '0 pt';\n if (!this.pdfViewer.enableRtl) {\n outerContainer.appendChild(label);\n outerContainer.appendChild(sliderElement);\n this.thicknessSlider.appendTo(sliderElement);\n outerContainer.appendChild(this.thicknessIndicator);\n }\n else {\n outerContainer.appendChild(this.thicknessIndicator);\n outerContainer.appendChild(sliderElement);\n this.thicknessSlider.enableRtl = true;\n this.thicknessSlider.appendTo(sliderElement);\n outerContainer.appendChild(label);\n }\n this.thicknessSlider.element.parentElement.classList.add('e-pv-annotation-thickness-slider-container');\n return outerContainer;\n };\n AnnotationToolbar.prototype.afterToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.highlightItem = this.primaryToolbar.addClassToolbarItem('_highlight', 'e-pv-highlight', this.pdfViewer.localeObj.getConstant('Highlight'));\n this.underlineItem = this.primaryToolbar.addClassToolbarItem('_underline', 'e-pv-underline', this.pdfViewer.localeObj.getConstant('Underline'));\n // eslint-disable-next-line max-len\n this.strikethroughItem = this.primaryToolbar.addClassToolbarItem('_strikethrough', 'e-pv-strikethrough', this.pdfViewer.localeObj.getConstant('Strikethrough'));\n this.deleteItem = this.primaryToolbar.addClassToolbarItem('_annotation_delete', 'e-pv-annotation-delete', this.pdfViewer.localeObj.getConstant('Delete'));\n // eslint-disable-next-line max-len\n this.freeTextEditItem = this.primaryToolbar.addClassToolbarItem('_annotation_freeTextEdit', 'e-pv-annotation-freeTextEdit', this.pdfViewer.localeObj.getConstant('Free Text'));\n // eslint-disable-next-line max-len\n this.inkAnnotationItem = this.primaryToolbar.addClassToolbarItem('_annotation_ink', 'e-pv-annotation-ink', this.pdfViewer.localeObj.getConstant('Draw Ink'));\n // eslint-disable-next-line max-len\n this.pdfViewerBase.getElement('_annotation_shapes').setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Add Shapes'));\n // eslint-disable-next-line max-len\n this.pdfViewerBase.getElement('_annotation_calibrate').setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Calibrate'));\n // eslint-disable-next-line max-len\n this.pdfViewerBase.getElement('_comment').setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Add Comments'));\n // eslint-disable-next-line max-len\n this.commentItem = this.primaryToolbar.addClassToolbarItem('_annotation_commentPanel', 'e-pv-annotation-comment-panel', this.pdfViewer.localeObj.getConstant('Comment Panel'));\n this.closeItem = this.primaryToolbar.addClassToolbarItem('_annotation_close', 'e-pv-annotation-tools-close', null);\n this.pdfViewerBase.getElement('_annotation_close').setAttribute('aria-label', \"Close Annotation Toolbar\");\n this.selectAnnotationDeleteItem(false);\n this.enableTextMarkupAnnotationPropertiesTools(false);\n this.enableCommentPanelTool(this.pdfViewer.enableCommentPanel);\n };\n AnnotationToolbar.prototype.onToolbarClicked = function (args) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (args.originalEvent.target.id) {\n this.pdfViewer.toolbarModule.updateStampItems();\n }\n // eslint-disable-next-line max-len\n var isKeyBoardEvent = args.originalEvent && args.originalEvent.pointerType !== 'mouse' && args.originalEvent.pointerType !== 'touch';\n this.pdfViewer.toolbarModule.deSelectCommentAnnotation();\n switch (args.originalEvent.target.id) {\n case this.pdfViewer.element.id + '_highlight':\n case this.pdfViewer.element.id + '_highlightIcon':\n this.pdfViewer.tool = '';\n if (!Browser.isDevice) {\n this.pdfViewer.tool = '';\n this.resetFreeTextAnnot();\n this.handleHighlight();\n }\n else {\n this.pdfViewer.annotationModule.setAnnotationMode('Highlight');\n this.textMarkupForMobile(args);\n }\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n break;\n case this.pdfViewer.element.id + '_underline':\n case this.pdfViewer.element.id + '_underlineIcon':\n this.pdfViewer.tool = '';\n if (!Browser.isDevice) {\n this.pdfViewer.tool = '';\n this.resetFreeTextAnnot();\n this.handleUnderline();\n }\n else {\n this.pdfViewer.annotationModule.setAnnotationMode('Underline');\n this.textMarkupForMobile(args);\n }\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n break;\n case this.pdfViewer.element.id + '_strikethrough':\n case this.pdfViewer.element.id + '_strikethroughIcon':\n this.pdfViewer.tool = '';\n if (!Browser.isDevice) {\n this.pdfViewer.tool = '';\n this.resetFreeTextAnnot();\n this.handleStrikethrough();\n }\n else {\n this.pdfViewer.annotationModule.setAnnotationMode('Strikethrough');\n this.textMarkupForMobile(args);\n }\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n break;\n case this.pdfViewer.element.id + '_annotation_delete':\n case this.pdfViewer.element.id + '_annotation_deleteIcon':\n this.pdfViewer.annotationModule.deleteAnnotation();\n this.resetFreeTextAnnot();\n break;\n case this.pdfViewer.element.id + '_annotation_commentPanel':\n case this.pdfViewer.element.id + '_annotation_commentPanelIcon':\n this.inkAnnotationSelected = false;\n var commentPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.textMarkupAnnotationModule) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n if (commentPanel.style.display === 'block') {\n this.pdfViewerBase.navigationPane.closeCommentPanelContainer();\n }\n else {\n this.pdfViewer.annotationModule.showCommentsPanel();\n // eslint-disable-next-line max-len\n if (isKeyBoardEvent && !isNullOrUndefined(commentPanel.firstElementChild) && !isNullOrUndefined(commentPanel.firstElementChild.lastElementChild) && commentPanel.firstElementChild.lastElementChild instanceof HTMLButtonElement) {\n commentPanel.firstElementChild.lastElementChild.focus();\n }\n }\n break;\n case this.pdfViewer.element.id + '_annotation_close':\n case this.pdfViewer.element.id + '_annotation_closeIcon':\n this.inkAnnotationSelected = false;\n var commentsPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentsPanel.style.display === 'block') {\n this.pdfViewerBase.navigationPane.closeCommentPanelContainer();\n }\n this.showAnnotationToolbar(this.primaryToolbar.annotationItem);\n break;\n case this.pdfViewer.element.id + '_annotation_freeTextEdit':\n case this.pdfViewer.element.id + '_annotation_freeTextEditIcon':\n if (!Browser.isDevice) {\n this.resetFreeTextAnnot();\n this.handleFreeTextEditor();\n }\n else {\n this.pdfViewer.annotationModule.setAnnotationMode('FreeText');\n this.FreeTextForMobile();\n }\n break;\n case this.pdfViewer.element.id + '_annotation_signature':\n case this.pdfViewer.element.id + '_annotation_signatureIcon':\n this.inkAnnotationSelected = false;\n this.updateSignatureCount();\n break;\n case this.pdfViewer.element.id + '_annotation_ink':\n case this.pdfViewer.element.id + '_annotation_inkIcon':\n if (annotation) {\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n }\n this.pdfViewer.clearSelection(this.pdfViewer.currentPageNumber - 1);\n if (this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber;\n if (currentPageNumber && currentPageNumber !== '') {\n // eslint-disable-next-line\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(parseInt(currentPageNumber));\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n }\n if (!this.inkAnnotationSelected) {\n this.deselectAllItems();\n this.drawInkAnnotation();\n }\n else {\n this.inkAnnotationSelected = false;\n }\n break;\n case this.pdfViewer.element.id + '_annotation_shapesIcon':\n case this.pdfViewer.element.id + '_annotation_shapes':\n if (Browser.isDevice) {\n this.shapeToolMobile(args);\n }\n break;\n case this.pdfViewer.element.id + '_annotation_calibrateIcon':\n case this.pdfViewer.element.id + '_annotation_calibrate':\n if (Browser.isDevice) {\n this.calibrateToolMobile(args);\n }\n break;\n case this.pdfViewer.element.id + '_commentIcon':\n case this.pdfViewer.element.id + '_comment':\n this.pdfViewerBase.isAddComment = true;\n this.pdfViewerBase.isCommentIconAdded = true;\n var commentsButton = document.getElementById(this.pdfViewer.element.id + '_comment');\n commentsButton.classList.add('e-pv-select');\n this.pdfViewer.toolbarModule.addComments(args);\n break;\n }\n };\n AnnotationToolbar.prototype.addInkAnnotation = function () {\n this.pdfViewer.clearSelection(this.pdfViewer.currentPageNumber - 1);\n if (this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber;\n if (currentPageNumber && currentPageNumber !== '') {\n // eslint-disable-next-line\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(parseInt(currentPageNumber));\n if (!isBlazor()) {\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n else {\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n this.pdfViewerBase.focusViewerContainer();\n }\n }\n }\n if (!this.inkAnnotationSelected) {\n this.deselectAllItemsInBlazor();\n this.drawInkAnnotation();\n }\n else {\n this.inkAnnotationSelected = false;\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.deselectInkAnnotation = function () {\n if (!isBlazor()) {\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n else {\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n AnnotationToolbar.prototype.drawInkAnnotation = function () {\n this.inkAnnotationSelected = true;\n if (!isBlazor()) {\n this.primaryToolbar.selectItem(this.inkAnnotationItem);\n }\n else {\n this.primaryToolbar.selectItem(this.InkAnnotationElement);\n }\n this.enableSignaturePropertiesTools(true);\n this.pdfViewerBase.isToolbarInkClicked = true;\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInk();\n };\n AnnotationToolbar.prototype.resetFreeTextAnnot = function () {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule) {\n this.pdfViewer.annotation.freeTextAnnotationModule.isNewFreeTextAnnot = false;\n this.pdfViewer.annotation.freeTextAnnotationModule.isNewAddedAnnot = false;\n if (!Browser.isDevice) {\n if (this.freeTextEditItem && !isBlazor()) {\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n }\n else if (isBlazor()) {\n this.primaryToolbar.deSelectItem(this.FreeTextElement);\n }\n this.enableFreeTextAnnotationPropertiesTools(false);\n }\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule) { // eslint-disable-next-line\n var currentPageNumber = this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber;\n if (currentPageNumber && currentPageNumber !== '') {\n // eslint-disable-next-line\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(parseInt(currentPageNumber));\n if (!isBlazor()) {\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n else {\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n }\n }\n }\n this.inkAnnotationSelected = false;\n };\n AnnotationToolbar.prototype.updateInkannotationItems = function () {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule && this.inkAnnotationSelected) {\n // eslint-disable-next-line\n var currentPageNumber = this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber;\n if (currentPageNumber && currentPageNumber !== '') {\n // eslint-disable-next-line\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(parseInt(currentPageNumber));\n this.pdfViewerBase.isToolbarInkClicked = true;\n this.pdfViewer.tool = 'Ink';\n this.pdfViewer.clearSelection(currentPageNumber);\n }\n }\n };\n AnnotationToolbar.prototype.showSignaturepanel = function () {\n this.pdfViewerBase.isToolbarSignClicked = true;\n this.pdfViewerBase.signatureModule.showSignatureDialog(true);\n };\n AnnotationToolbar.prototype.handleFreeTextEditor = function () {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n this.enableFreeTextAnnotationPropertiesTools(true);\n if (annotation) {\n this.pdfViewer.fireAnnotationUnSelect(annotation.annotName, annotation.pageIndex, annotation);\n }\n this.pdfViewer.clearSelection(this.pdfViewer.currentPageNumber - 1);\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n }\n this.isStrikethroughEnabled = false;\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n var freeTextAnnotationModule = this.pdfViewer.annotation.freeTextAnnotationModule;\n freeTextAnnotationModule.setAnnotationType('FreeText');\n freeTextAnnotationModule.isNewFreeTextAnnot = true;\n freeTextAnnotationModule.isNewAddedAnnot = true;\n this.updateInteractionTools();\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.primaryToolbar.selectItem(this.freeTextEditItem);\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.annotationModule.freeTextAnnotationModule.fillColor);\n this.updateColorInIcon(this.strokeDropDownElement, this.pdfViewer.annotationModule.freeTextAnnotationModule.borderColor);\n this.updateColorInIcon(this.fontColorElement, this.pdfViewer.annotationModule.freeTextAnnotationModule.fontColor);\n this.updateFontFamilyInIcon(this.pdfViewer.annotationModule.freeTextAnnotationModule.fontFamily);\n this.updateFontSizeInIcon(this.pdfViewer.annotationModule.freeTextAnnotationModule.fontSize);\n this.updateTextAlignInIcon(this.pdfViewer.annotationModule.freeTextAnnotationModule.textAlign);\n this.updateFontFamily();\n };\n AnnotationToolbar.prototype.updateFontFamily = function () {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isBold ? this.updateFontFamilyIcon('_bold', true) : this.updateFontFamilyIcon('_bold', false);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isItalic ? this.updateFontFamilyIcon('_italic', true) : this.updateFontFamilyIcon('_italic', false);\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isUnderline) {\n this.updateFontFamilyIcon('_underline_textinput', true);\n this.updateFontFamilyIcon('_strikeout', false);\n }\n else {\n this.updateFontFamilyIcon('_underline_textinput', false);\n }\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isStrikethrough) {\n this.updateFontFamilyIcon('_strikeout', true);\n this.updateFontFamilyIcon('_underline_textinput', false);\n }\n else {\n this.updateFontFamilyIcon('_strikeout', false);\n }\n };\n AnnotationToolbar.prototype.updateFontFamilyIcon = function (fontFamily, isActive) {\n var fontFamilyElement = document.getElementById(this.pdfViewer.element.id + fontFamily);\n isActive ? fontFamilyElement.classList.add('textprop-option-active') : fontFamilyElement.classList.remove('textprop-option-active');\n };\n /**\n * @param element\n * @param isInitialLoading\n * @param element\n * @param isInitialLoading\n * @private\n */\n AnnotationToolbar.prototype.showAnnotationToolbar = function (element, isInitialLoading) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (!this.isToolbarHidden) {\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotationModule;\n if (element) {\n this.primaryToolbar.deSelectItem(element);\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n this.primaryToolbar.deSelectItem(this.primaryToolbar.annotationItem);\n }\n }\n this.adjustViewer(false);\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.enablePropertiesTool(annotationModule);\n }\n else {\n this.deselectAllItems();\n }\n this.toolbarElement.style.display = 'none';\n if (!isInitialLoading) {\n this.pdfViewer.isAnnotationToolbarVisible = false;\n }\n if (this.pdfViewerBase.isPanMode) {\n this.primaryToolbar.updateInteractionTools(false);\n }\n else {\n this.primaryToolbar.updateInteractionTools(true);\n }\n }\n else {\n var toolBarInitialStatus = void 0;\n if (this.toolbarElement) {\n toolBarInitialStatus = this.toolbarElement.style.display;\n this.toolbarElement.style.display = 'block';\n }\n if (!isInitialLoading) {\n this.pdfViewer.isAnnotationToolbarVisible = true;\n }\n if (element) {\n this.primaryToolbar.selectItem(element);\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n this.primaryToolbar.selectItem(this.primaryToolbar.annotationItem);\n }\n }\n if (toolBarInitialStatus === 'none') {\n this.adjustViewer(true);\n }\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.magnification && this.pdfViewer.magnification.fitType === 'fitToPage') {\n this.pdfViewer.magnification.fitToPage();\n }\n this.enableAnnotationAddTools(true);\n this.isToolbarHidden = !this.isToolbarHidden;\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.enablePropertiesTool = function (annotationModule) {\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n this.isStrikethroughEnabled = false;\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n }\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.enableTextMarkupAnnotationPropertiesTools(true);\n // eslint-disable-next-line max-len\n this.updateColorInIcon(this.colorDropDownElement, annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation.color);\n this.selectAnnotationDeleteItem(true);\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.applyAnnotationToolbarSettings = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('HighlightTool') !== -1) {\n this.showHighlightTool(true, 0, 0);\n }\n else {\n this.showHighlightTool(false, 0, 0);\n }\n if (annotationToolbarItems.indexOf('UnderlineTool') !== -1) {\n this.showUnderlineTool(true, 1, 1);\n }\n else {\n this.showUnderlineTool(false, 1, 1);\n }\n if (annotationToolbarItems.indexOf('StrikethroughTool') !== -1) {\n this.showStrikethroughTool(true, 2, 2);\n }\n else {\n this.showStrikethroughTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('ShapeTool') !== -1) {\n this.showShapeAnnotationTool(true, 4, 4);\n }\n else {\n this.showShapeAnnotationTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('CalibrateTool') !== -1) {\n this.showCalibrateAnnotationTool(true, 6, 6);\n }\n else {\n this.showCalibrateAnnotationTool(false, 6, 6);\n }\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 22, 22);\n }\n else {\n this.showColorEditTool(false, 22, 22);\n }\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 23, 23);\n }\n else {\n this.showStrokeColorEditTool(false, 23, 23);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 24, 24);\n }\n else {\n this.showThicknessEditTool(false, 24, 24);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 25, 25);\n }\n else {\n this.showOpacityEditTool(false, 25, 25);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 27, 27);\n }\n else {\n this.showAnnotationDeleteTool(false, 27, 27);\n }\n if (annotationToolbarItems.indexOf('StampAnnotationTool') !== -1) {\n this.showStampAnnotationTool(true, 10, 10);\n }\n else {\n this.showStampAnnotationTool(false, 10, 10);\n }\n if (annotationToolbarItems.indexOf('HandWrittenSignatureTool') !== -1) {\n this.showSignatureTool(true, 12, 12);\n }\n else {\n this.showSignatureTool(false, 12, 12);\n }\n if (annotationToolbarItems.indexOf('FreeTextAnnotationTool') !== -1) {\n this.showFreeTextAnnotationTool(true, 8, 8);\n }\n else {\n this.showFreeTextAnnotationTool(false, 8, 8);\n }\n if (annotationToolbarItems.indexOf('FontFamilyAnnotationTool') !== -1) {\n this.showFontFamilyAnnotationTool(true, 16, 16);\n }\n else {\n this.showFontFamilyAnnotationTool(false, 16, 16);\n }\n if (annotationToolbarItems.indexOf('FontSizeAnnotationTool') !== -1) {\n this.showFontSizeAnnotationTool(true, 17, 17);\n }\n else {\n this.showFontSizeAnnotationTool(false, 17, 17);\n }\n if (annotationToolbarItems.indexOf('FontStylesAnnotationTool') !== -1) {\n this.showFontStylesAnnotationTool(true, 20, 20);\n }\n else {\n this.showFontStylesAnnotationTool(false, 20, 20);\n }\n if (annotationToolbarItems.indexOf('FontAlignAnnotationTool') !== -1) {\n this.showFontAlignAnnotationTool(true, 18, 18);\n }\n else {\n this.showFontAlignAnnotationTool(false, 18, 18);\n }\n if (annotationToolbarItems.indexOf('FontColorAnnotationTool') !== -1) {\n this.showFontColorAnnotationTool(true, 19, 19);\n }\n else {\n this.showFontColorAnnotationTool(false, 19, 19);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 28, 28);\n }\n else {\n this.showCommentPanelTool(false, 28, 28);\n }\n this.showInkAnnotationTool();\n this.showSeparator();\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.applyMobileAnnotationToolbarSettings = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('HighlightTool') !== -1) {\n this.showHighlightTool(true, 2, 2);\n }\n else {\n this.showHighlightTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('UnderlineTool') !== -1) {\n this.showUnderlineTool(true, 3, 3);\n }\n else {\n this.showUnderlineTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('StrikethroughTool') !== -1) {\n this.showStrikethroughTool(true, 4, 4);\n }\n else {\n this.showStrikethroughTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('ShapeTool') !== -1) {\n this.showShapeAnnotationTool(true, 6, 6);\n }\n else {\n this.showShapeAnnotationTool(false, 6, 6);\n }\n if (annotationToolbarItems.indexOf('CalibrateTool') !== -1) {\n this.showCalibrateAnnotationTool(true, 8, 8);\n }\n else {\n this.showCalibrateAnnotationTool(false, 8, 8);\n }\n var toolbarItems = this.pdfViewer.toolbarSettings.toolbarItems;\n if (toolbarItems && toolbarItems.indexOf('CommentTool') !== -1) {\n this.showStickyNoteToolInMobile(true);\n }\n else {\n this.showStickyNoteToolInMobile(false);\n }\n if (annotationToolbarItems.indexOf('StampAnnotationTool') !== -1) {\n this.showStampAnnotationTool(true, 12, 12);\n }\n else {\n this.showStampAnnotationTool(false, 12, 12);\n }\n if (annotationToolbarItems.indexOf('HandWrittenSignatureTool') !== -1) {\n this.showSignatureTool(true, 14, 14);\n }\n else {\n this.showSignatureTool(false, 14, 14);\n }\n if (annotationToolbarItems.indexOf('FreeTextAnnotationTool') !== -1) {\n this.showFreeTextAnnotationTool(true, 10, 10);\n }\n else {\n this.showFreeTextAnnotationTool(false, 10, 10);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 18, 18);\n }\n else {\n this.showCommentPanelTool(false, 18, 18);\n }\n if (annotationToolbarItems.indexOf('InkAnnotationTool') !== -1) {\n this.showInkTool(true, 16, 16);\n }\n else {\n this.showInkTool(false, 16, 16);\n }\n this.showSeparatorInMobile();\n }\n };\n AnnotationToolbar.prototype.showStickyNoteToolInMobile = function (isShow) {\n this.isCommentBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 0, 0);\n };\n AnnotationToolbar.prototype.showSeparatorInMobile = function () {\n if (!this.isCommentBtnVisible) {\n this.applyHideToToolbar(false, 1, 1);\n }\n if ((!this.isHighlightBtnVisible && !this.isUnderlineBtnVisible && !this.isStrikethroughBtnVisible)) {\n this.applyHideToToolbar(false, 5, 5);\n }\n if (!this.isShapeBtnVisible) {\n this.applyHideToToolbar(false, 7, 7);\n }\n if (!this.isCalibrateBtnVisible) {\n this.applyHideToToolbar(false, 9, 9);\n }\n if (!this.isFreeTextBtnVisible) {\n this.applyHideToToolbar(false, 11, 11);\n }\n if (!this.isStampBtnVisible) {\n this.applyHideToToolbar(false, 13, 13);\n }\n if (!this.isSignatureBtnVisible) {\n this.applyHideToToolbar(false, 15, 15);\n }\n if (!this.isInkBtnVisible) {\n this.applyHideToToolbar(false, 17, 17);\n }\n };\n AnnotationToolbar.prototype.showInkAnnotationTool = function () {\n if (this.pdfViewer.toolbarSettings.annotationToolbarItems.indexOf('InkAnnotationTool') !== -1) {\n this.showInkTool(true, 14, 14);\n }\n else {\n this.showInkTool(false, 14, 14);\n }\n };\n AnnotationToolbar.prototype.showSeparator = function () {\n if ((!this.isHighlightBtnVisible && !this.isUnderlineBtnVisible && !this.isStrikethroughBtnVisible)) {\n this.applyHideToToolbar(false, 3, 3);\n }\n if (!this.isShapeBtnVisible) {\n this.applyHideToToolbar(false, 5, 5);\n }\n if (!this.isCalibrateBtnVisible) {\n this.applyHideToToolbar(false, 7, 7);\n }\n if (!this.isFreeTextBtnVisible) {\n this.applyHideToToolbar(false, 9, 9);\n }\n if (!this.isStampBtnVisible) {\n this.applyHideToToolbar(false, 11, 11);\n }\n if (!this.isSignatureBtnVisible) {\n this.applyHideToToolbar(false, 13, 13);\n }\n if (!this.isInkBtnVisible) {\n this.applyHideToToolbar(false, 15, 15);\n }\n // eslint-disable-next-line max-len\n if (!this.isFontFamilyToolVisible && !this.isFontSizeToolVisible && !this.isFontColorToolVisible && !this.isFontAlignToolVisible && !this.isFontStylesToolVisible) {\n this.applyHideToToolbar(false, 21, 21);\n }\n // eslint-disable-next-line max-len\n if ((!this.isColorToolVisible && !this.isStrokeColorToolVisible && !this.isThicknessToolVisible && !this.isOpacityToolVisible) || !this.isDeleteAnnotationToolVisible) {\n this.applyHideToToolbar(false, 26, 26);\n }\n };\n AnnotationToolbar.prototype.showHighlightTool = function (isShow, startIndex, endIndex) {\n this.isHighlightBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showUnderlineTool = function (isShow, startIndex, endIndex) {\n this.isUnderlineBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showStrikethroughTool = function (isShow, startIndex, endIndex) {\n this.isStrikethroughBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showShapeAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isShapeBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showCalibrateAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isCalibrateBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFreeTextAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFreeTextBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showStampAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isStampBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showSignatureTool = function (isShow, startIndex, endIndex) {\n this.isSignatureBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showInkTool = function (isShow, startIndex, endIndex) {\n this.isInkBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontFamilyAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontFamilyToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontSizeAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontSizeToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontAlignAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontAlignToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontColorAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontColorToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontStylesAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontStylesToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showColorEditTool = function (isShow, startIndex, endIndex) {\n this.isColorToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showStrokeColorEditTool = function (isShow, startIndex, endIndex) {\n this.isStrokeColorToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showThicknessEditTool = function (isShow, startIndex, endIndex) {\n this.isThicknessToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showOpacityEditTool = function (isShow, startIndex, endIndex) {\n this.isOpacityToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showAnnotationDeleteTool = function (isShow, startIndex, endIndex) {\n this.isDeleteAnnotationToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showCommentPanelTool = function (isShow, startIndex, endIndex) {\n this.isCommentPanelBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.applyHideToToolbar = function (show, startIndex, endIndex) {\n var isHide = !show;\n for (var index = startIndex; index <= endIndex; index++) {\n var toolbar_1 = void 0;\n var propertyToolbarElement = (this.propertyToolbar && this.propertyToolbar.element) ? this.propertyToolbar.element : null;\n var toolbarElement = (this.toolbar && this.toolbar.element) ? this.toolbar.element : null;\n if (toolbarElement && toolbarElement.children && toolbarElement.children.length > 0) {\n toolbar_1 = this.toolbar;\n }\n else if (Browser.isDevice && propertyToolbarElement && propertyToolbarElement.children && propertyToolbarElement.children.length > 0) {\n toolbar_1 = this.propertyToolbar;\n }\n if (toolbar_1 && toolbar_1.items[index]) {\n var className = toolbar_1.items[index].cssClass;\n if (className && className !== '') {\n // Querying the toolbar item\n var element = toolbar_1.element.querySelector('.' + className);\n if (element) {\n this.toolbar.hideItem(element, isHide);\n }\n }\n else {\n toolbar_1.hideItem(index, isHide);\n }\n }\n }\n };\n /**\n * @param isAdjust\n * @private\n */\n AnnotationToolbar.prototype.adjustViewer = function (isAdjust) {\n var splitterElement;\n var toolbarContainer;\n var annotationToolbarHeight;\n if (isBlazor()) {\n splitterElement = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar-splitter');\n toolbarContainer = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n var annotationToolbarContainer = this.pdfViewer.element.querySelector('.e-pv-annotation-toolbar');\n annotationToolbarHeight = this.getToolbarHeight(annotationToolbarContainer);\n }\n else {\n splitterElement = this.pdfViewerBase.getElement('_sideBarToolbarSplitter');\n toolbarContainer = this.pdfViewerBase.getElement('_toolbarContainer');\n annotationToolbarHeight = this.getToolbarHeight(this.toolbarElement);\n }\n var toolbarHeight = this.getToolbarHeight(toolbarContainer);\n var sideBarToolbar = this.pdfViewerBase.navigationPane.sideBarToolbar;\n var sideBarContentContainer = this.pdfViewerBase.navigationPane.sideBarContentContainer;\n var commentsContainer = this.pdfViewerBase.navigationPane.commentPanelContainer;\n var commentPanelResizer = this.pdfViewerBase.navigationPane.commentPanelResizer;\n var newToolbarHeight = '';\n if (isAdjust) {\n if (this.pdfViewer.enableToolbar) {\n sideBarToolbar.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n sideBarContentContainer.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n splitterElement.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n commentsContainer.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n commentPanelResizer.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n }\n else {\n sideBarToolbar.style.top = (annotationToolbarHeight) + 'px';\n sideBarContentContainer.style.top = (annotationToolbarHeight) + 'px';\n splitterElement.style.top = (annotationToolbarHeight) + 'px';\n commentsContainer.style.top = (annotationToolbarHeight) + 'px';\n commentPanelResizer.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.updateViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (annotationToolbarHeight + toolbarHeight)) + 'px';\n newToolbarHeight = this.getNavigationToolbarHeight(annotationToolbarHeight + toolbarHeight);\n sideBarToolbar.style.height = newToolbarHeight;\n splitterElement.style.height = newToolbarHeight;\n commentPanelResizer.style.height = newToolbarHeight;\n sideBarContentContainer.style.height = newToolbarHeight;\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n // eslint-disable-next-line max-len\n sideBarToolbar.style.top = toolbarHeight + 'px';\n sideBarContentContainer.style.top = toolbarHeight + 'px';\n splitterElement.style.top = toolbarHeight + 'px';\n commentsContainer.style.top = toolbarHeight + 'px';\n commentPanelResizer.style.top = toolbarHeight + 'px';\n }\n else {\n sideBarToolbar.style.top = 1 + 'px';\n sideBarToolbar.style.height = '100%';\n sideBarContentContainer.style.top = 1 + 'px';\n sideBarContentContainer.style.height = '100%';\n splitterElement.style.top = 1 + 'px';\n splitterElement.style.height = '100%';\n commentsContainer.style.top = 1 + 'px';\n commentsContainer.style.height = '100%';\n commentPanelResizer.style.top = 1 + 'px';\n commentPanelResizer.style.height = '100%';\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.updateViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), annotationToolbarHeight) + 'px';\n newToolbarHeight = this.getNavigationToolbarHeight(toolbarHeight);\n sideBarToolbar.style.height = newToolbarHeight;\n splitterElement.style.height = newToolbarHeight;\n commentPanelResizer.style.height = newToolbarHeight;\n sideBarContentContainer.style.height = newToolbarHeight;\n if (this.pdfViewerBase.viewerContainer.style.height === '0px') {\n // eslint-disable-next-line\n this.pdfViewerBase.viewerContainer.style.height = (parseInt(this.pdfViewer.element.style.height) - parseInt(sideBarToolbar.style.top)) + 'px';\n }\n }\n };\n AnnotationToolbar.prototype.updateContentContainerHeight = function (isAdjust, isBlazor) {\n var annotationToolbarHeight;\n if (isBlazor) {\n var annotationToolbarContainer = this.pdfViewer.element.querySelector('.e-pv-annotation-toolbar');\n annotationToolbarHeight = this.getToolbarHeight(annotationToolbarContainer);\n }\n else {\n annotationToolbarHeight = this.getToolbarHeight(this.toolbarElement);\n }\n var sideBarClientRect = this.pdfViewerBase.navigationPane.sideBarContentContainer.getBoundingClientRect();\n if (sideBarClientRect.height !== 0) {\n if (isAdjust) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.height = sideBarClientRect.height - annotationToolbarHeight + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.height = sideBarClientRect.height + annotationToolbarHeight + 'px';\n }\n }\n };\n AnnotationToolbar.prototype.getToolbarHeight = function (element) {\n var toolbarHeight = element.getBoundingClientRect().height;\n if (toolbarHeight === 0 && element === this.pdfViewerBase.getElement('_toolbarContainer')) {\n // getComputedStyle gets the value from style and toolbar border height is added to it.\n // eslint-disable-next-line\n toolbarHeight = parseFloat(window.getComputedStyle(element)['height']) + this.toolbarBorderHeight;\n }\n return toolbarHeight;\n };\n AnnotationToolbar.prototype.getNavigationToolbarHeight = function (toolbarHeight) {\n var height = this.pdfViewer.element.getBoundingClientRect().height;\n return (height !== 0) ? height - toolbarHeight + 'px' : '';\n };\n AnnotationToolbar.prototype.handleHighlight = function () {\n if (!this.isHighlightEnabled) {\n this.updateInteractionTools();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations('Highlight');\n this.primaryToolbar.selectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n this.enableTextMarkupAnnotationPropertiesTools(true);\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightColor = null;\n this.setCurrentColorInPicker();\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightColor);\n this.isHighlightEnabled = true;\n this.isUnderlineEnabled = false;\n this.isStrikethroughEnabled = false;\n }\n else {\n this.deselectAllItems();\n }\n };\n AnnotationToolbar.prototype.handleUnderline = function () {\n if (!this.isUnderlineEnabled) {\n this.updateInteractionTools();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations('Underline');\n this.primaryToolbar.selectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n this.enableTextMarkupAnnotationPropertiesTools(true);\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineColor = null;\n this.setCurrentColorInPicker();\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineColor);\n this.isUnderlineEnabled = true;\n this.isHighlightEnabled = false;\n this.isStrikethroughEnabled = false;\n }\n else {\n this.deselectAllItems();\n }\n };\n AnnotationToolbar.prototype.handleStrikethrough = function () {\n if (!this.isStrikethroughEnabled) {\n this.updateInteractionTools();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations('Strikethrough');\n this.primaryToolbar.selectItem(this.strikethroughItem);\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n this.enableTextMarkupAnnotationPropertiesTools(true);\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughColor = null;\n this.setCurrentColorInPicker();\n // eslint-disable-next-line max-len\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughColor);\n this.isStrikethroughEnabled = true;\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n }\n else {\n this.deselectAllItems();\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.deselectAllItemsInBlazor = function () {\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n this.primaryToolbar.deSelectItem(this.FreeTextElement);\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateTextMarkupButtons', false, false, false);\n }\n this.resetFreeTextAnnot();\n this.clearTextMarkupMode();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.tool = '';\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.enableTextMarkupAnnotationPropertiesTools(false);\n this.enableFreeTextAnnotationPropertiesTools(false);\n this.updateColorInIcon(this.colorDropDownElement, '#000000');\n this.updateColorInIcon(this.strokeDropDownElement, '#000000');\n this.updateColorInIcon(this.fontColorElement, '#000000');\n this.selectAnnotationDeleteItem(false);\n }\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isNewFreeTextAnnot = false;\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.deselectAllItems = function () {\n var isBlazorPlatform = isBlazor();\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n this.isStrikethroughEnabled = false;\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (isBlazorPlatform) {\n this.primaryToolbar.deSelectItem(this.pdfViewer.toolbar.SelectToolElement);\n this.primaryToolbar.selectItem(this.pdfViewer.toolbar.PanElement);\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n this.primaryToolbar.deSelectItem(this.FreeTextElement);\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n }\n else {\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n }\n this.resetFreeTextAnnot();\n this.clearTextMarkupMode();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.tool = '';\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.enableTextMarkupAnnotationPropertiesTools(false);\n this.enableFreeTextAnnotationPropertiesTools(false);\n this.updateColorInIcon(this.colorDropDownElement, '#000000');\n this.updateColorInIcon(this.strokeDropDownElement, '#000000');\n this.updateColorInIcon(this.fontColorElement, '#000000');\n this.selectAnnotationDeleteItem(false);\n }\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isNewFreeTextAnnot = false;\n }\n };\n AnnotationToolbar.prototype.updateInteractionTools = function () {\n if (this.pdfViewer.enableTextSelection) {\n this.pdfViewerBase.initiateTextSelectMode();\n if (!Browser.isDevice) {\n this.pdfViewer.toolbar.updateInteractionTools(true);\n }\n }\n else if (!Browser.isDevice) {\n this.pdfViewer.toolbar.updateInteractionTools(false);\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.selectAnnotationDeleteItem = function (isEnable, deleteIconCicked) {\n if (!isBlazor() && !Browser.isDevice) {\n if (this.toolbar) {\n if (isEnable) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.annotationModule.findCurrentAnnotation();\n if (annotation) {\n // eslint-disable-next-line\n if (annotation.annotationSettings && annotation.annotationSettings.isLock) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Delete', annotation)) {\n this.enableItems(this.deleteItem.parentElement, isEnable);\n }\n else {\n this.enableItems(this.deleteItem.parentElement, false);\n }\n }\n else {\n this.enableItems(this.deleteItem.parentElement, isEnable);\n }\n }\n }\n else {\n this.enableItems(this.deleteItem.parentElement, isEnable);\n }\n }\n }\n else {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (isEnable) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.annotationModule.findCurrentAnnotation();\n if (annotation) {\n // eslint-disable-next-line\n if (annotation.annotationSettings && annotation.annotationSettings.isLock) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Delete', annotation)) {\n this.pdfViewerBase.blazorUIAdaptor.EnableDeleteOption(isEnable);\n }\n else {\n this.pdfViewerBase.blazorUIAdaptor.EnableDeleteOption(false);\n }\n }\n else if (this.pdfViewerBase.blazorUIAdaptor) {\n this.pdfViewerBase.blazorUIAdaptor.EnableDeleteOption(isEnable);\n }\n }\n }\n else if (this.pdfViewerBase.blazorUIAdaptor) {\n this.pdfViewerBase.blazorUIAdaptor.EnableDeleteOption(isEnable);\n }\n if (deleteIconCicked) {\n this.pdfViewerBase.focusViewerContainer();\n }\n }\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableTextMarkupAnnotationPropertiesTools = function (isEnable) {\n if (!Browser.isDevice) {\n if (!isBlazor()) {\n this.enableItems(this.colorDropDownElement.parentElement, isEnable);\n this.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.enableItems(this.strokeDropDownElement.parentElement, false);\n this.enableItems(this.thicknessElement.parentElement, false);\n this.enableItems(this.fontFamilyElement.parentElement, false);\n this.enableItems(this.fontSizeElement.parentElement, false);\n this.enableItems(this.fontColorElement.parentElement, false);\n this.enableItems(this.textAlignElement.parentElement, false);\n this.enableItems(this.textPropElement.parentElement, false);\n }\n }\n else {\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('AnnotationSelect', 'TextMarkup');\n this.pdfViewerBase.blazorUIAdaptor.enableTextMarkupAnnotationPropertiesTools(isEnable);\n }\n }\n };\n AnnotationToolbar.prototype.checkAnnotationPropertiesChange = function () {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (annotation && annotation.annotationSettings) {\n // eslint-disable-next-line\n var isLock = annotation.annotationSettings.isLock;\n if (isLock) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('PropertyChange', annotation)) {\n return true;\n }\n else {\n return false;\n }\n }\n }\n return true;\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableAnnotationPropertiesTools = function (isEnable) {\n if (!Browser.isDevice) {\n var isPropertiesChanges = this.checkAnnotationPropertiesChange();\n if (!isEnable) {\n isPropertiesChanges = true;\n }\n if (!isBlazor()) {\n if (isPropertiesChanges) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line')) {\n this.enableItems(this.colorDropDownElement.parentElement, false);\n }\n else {\n this.enableItems(this.colorDropDownElement.parentElement, isEnable);\n }\n this.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n this.enableItems(this.strokeDropDownElement.parentElement, isEnable);\n this.enableItems(this.thicknessElement.parentElement, isEnable);\n if (this.pdfViewer.enableShapeLabel) {\n this.enableItems(this.fontFamilyElement.parentElement, isEnable);\n this.enableItems(this.fontSizeElement.parentElement, isEnable);\n this.enableItems(this.fontColorElement.parentElement, isEnable);\n }\n this.enableItems(this.textAlignElement.parentElement, false);\n this.enableItems(this.textPropElement.parentElement, false);\n }\n }\n else {\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableAnnotationPropertiesTools', isEnable, isPropertiesChanges);\n this.pdfViewerBase.blazorUIAdaptor.enableAnnotationPropertiesTool(isEnable, isPropertiesChanges);\n }\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableSignaturePropertiesTools = function (isEnable) {\n if (!Browser.isDevice) {\n var isPropertiesChanges = this.checkAnnotationPropertiesChange();\n if (!isEnable) {\n isPropertiesChanges = true;\n }\n if (!isBlazor()) {\n if (isPropertiesChanges) {\n this.enableItems(this.colorDropDownElement.parentElement, false);\n this.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n this.enableItems(this.strokeDropDownElement.parentElement, isEnable);\n this.enableItems(this.thicknessElement.parentElement, isEnable);\n this.enableItems(this.textAlignElement.parentElement, false);\n this.enableItems(this.textPropElement.parentElement, false);\n this.enableItems(this.fontFamilyElement.parentElement, false);\n this.enableItems(this.fontSizeElement.parentElement, false);\n this.enableItems(this.fontColorElement.parentElement, false);\n this.enableItems(this.textAlignElement.parentElement, false);\n }\n }\n else {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableSignaturePropertiesTools', isEnable, isPropertiesChanges);\n this.pdfViewerBase.blazorUIAdaptor.enableSignaturePropertiesTools(isEnable, isPropertiesChanges);\n }\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableStampAnnotationPropertiesTools = function (isEnable) {\n var isPropertiesChanges = this.checkAnnotationPropertiesChange();\n if (!isEnable) {\n isPropertiesChanges = true;\n }\n if (!isBlazor()) {\n if (isPropertiesChanges) {\n this.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n this.enableItems(this.colorDropDownElement.parentElement, false);\n this.enableItems(this.strokeDropDownElement.parentElement, false);\n this.enableItems(this.thicknessElement.parentElement, false);\n this.enableItems(this.fontFamilyElement.parentElement, false);\n this.enableItems(this.fontSizeElement.parentElement, false);\n this.enableItems(this.fontColorElement.parentElement, false);\n this.enableItems(this.textAlignElement.parentElement, false);\n this.enableItems(this.textPropElement.parentElement, false);\n }\n }\n else {\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableStampAnnotationPropertiesTools', isEnable, isPropertiesChanges);\n this.pdfViewerBase.blazorUIAdaptor.enableStampAnnotationPropertiesTools(isEnable, isPropertiesChanges);\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableFreeTextAnnotationPropertiesTools = function (isEnable) {\n var isPropertiesChanges = this.checkAnnotationPropertiesChange();\n if (!isEnable) {\n isPropertiesChanges = true;\n }\n if (!isBlazor()) {\n if (isPropertiesChanges) {\n this.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n this.enableItems(this.colorDropDownElement.parentElement, isEnable);\n this.enableItems(this.strokeDropDownElement.parentElement, isEnable);\n this.enableItems(this.thicknessElement.parentElement, isEnable);\n this.enableItems(this.fontFamilyElement.parentElement, isEnable);\n this.enableItems(this.fontSizeElement.parentElement, isEnable);\n this.enableItems(this.fontColorElement.parentElement, isEnable);\n this.enableItems(this.textAlignElement.parentElement, isEnable);\n this.enableItems(this.textPropElement.parentElement, isEnable);\n }\n }\n else {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableFreeTextAnnotationPropertiesTools', isEnable, isPropertiesChanges);\n this.pdfViewerBase.blazorUIAdaptor.enableFreeTextAnnotationPropertiesTools(isEnable, isPropertiesChanges);\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableAnnotationAddTools = function (isEnable) {\n if (this.toolbar && !Browser.isDevice) {\n if (this.pdfViewer.enableTextMarkupAnnotation) {\n this.enableItems(this.highlightItem.parentElement, isEnable);\n this.enableItems(this.underlineItem.parentElement, isEnable);\n this.enableItems(this.strikethroughItem.parentElement, isEnable);\n }\n if (this.pdfViewer.enableShapeAnnotation) {\n this.enableItems(this.shapeElement.parentElement, isEnable);\n }\n if (this.pdfViewer.enableStampAnnotations) {\n this.toolbar.enableItems(this.stampElement.parentElement, isEnable);\n }\n if (this.pdfViewer.enableMeasureAnnotation && this.pdfViewerBase.isCalibrateAnnotationModule()) {\n this.enableItems(this.calibrateElement.parentElement, isEnable);\n }\n if (this.pdfViewer.enableFreeText) {\n this.enableItems(this.freeTextEditItem.parentElement, isEnable);\n }\n if (this.pdfViewer.enableHandwrittenSignature) {\n this.enableItems(this.handWrittenSignatureItem.parentElement, isEnable);\n }\n if (this.pdfViewer.enableInkAnnotation) {\n this.enableItems(this.inkAnnotationItem.parentElement, isEnable);\n }\n if (this.pdfViewer.enableCommentPanel) {\n this.enableCommentPanelTool(isEnable);\n }\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.isAnnotationButtonsEnabled = function () {\n var isButtonsEnabled = false;\n if (this.isHighlightEnabled || this.isUnderlineEnabled || this.isStrikethroughEnabled) {\n isButtonsEnabled = true;\n }\n return isButtonsEnabled;\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableCommentPanelTool = function (isEnable) {\n if (this.toolbar) {\n this.enableItems(this.commentItem.parentElement, isEnable);\n }\n };\n AnnotationToolbar.prototype.updateToolbarItems = function () {\n if (this.pdfViewer.enableTextMarkupAnnotation) {\n this.enableTextMarkupAddTools(true);\n }\n else {\n this.enableTextMarkupAddTools(false);\n }\n this.enableItems(this.shapeElement.parentElement, this.pdfViewer.enableShapeAnnotation);\n this.toolbar.enableItems(this.stampElement.parentElement, this.pdfViewer.enableStampAnnotations);\n this.enableItems(this.calibrateElement.parentElement, this.pdfViewer.enableMeasureAnnotation);\n this.enableItems(this.freeTextEditItem.parentElement, this.pdfViewer.enableFreeText);\n this.enableItems(this.handWrittenSignatureItem.parentElement, this.pdfViewer.enableHandwrittenSignature);\n this.enableItems(this.inkAnnotationItem.parentElement, this.pdfViewer.enableInkAnnotation);\n this.closeItem.setAttribute('tabindex', '0');\n };\n AnnotationToolbar.prototype.enableTextMarkupAddTools = function (isEnable) {\n this.enableItems(this.highlightItem.parentElement, isEnable);\n this.enableItems(this.underlineItem.parentElement, isEnable);\n this.enableItems(this.strikethroughItem.parentElement, isEnable);\n };\n /**\n * @private\n */\n // for shapes added by drawing package\n AnnotationToolbar.prototype.updateAnnnotationPropertyItems = function () {\n if (!isBlazor()) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.colorDropDownElement, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill, 'fillColor'));\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.strokeDropDownElement, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor, 'strokeColor'));\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText' && !this.pdfViewer.selectedItems.annotations[0].isLock) {\n // eslint-disable-next-line\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.fontColorElement, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].fontColor, 'fontColor'));\n this.pdfViewer.toolbar.annotationToolbarModule.updateFontFamilyInIcon(this.pdfViewer.selectedItems.annotations[0].fontFamily);\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbar.annotationToolbarModule.updateFontSizeInIcon(this.pdfViewer.selectedItems.annotations[0].fontSize);\n this.pdfViewer.toolbar.annotationToolbarModule.updateTextAlignInIcon(this.pdfViewer.selectedItems.annotations[0].textAlign);\n }\n }\n else {\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.colorDropDownElement, '#000000');\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.strokeDropDownElement, '#000000');\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.fontColorElement, '#000000');\n }\n }\n else {\n this.colorDropDownElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-color-container');\n this.strokeDropDownElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-stroke-container');\n this.fontColorElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-textcolor-container');\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.colorDropDownElementInBlazor, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill, 'fillColor'));\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.strokeDropDownElementInBlazor, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor, 'strokeColor'));\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n // eslint-disable-next-line\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.fontColorElementInBlazor, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].fontColor, 'fontColor'));\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateFontFamilyInIcon', this.pdfViewer.selectedItems.annotations[0].fontFamily);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.blazorUIAdaptor.updateFontFamilyInIcon(this.pdfViewer.selectedItems.annotations[0].fontFamily);\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateFontSizeInIcon', this.pdfViewer.selectedItems.annotations[0].fontSize);\n this.pdfViewerBase.blazorUIAdaptor.updateFontSizeInIcon(this.pdfViewer.selectedItems.annotations[0].fontSize);\n //this.pdfViewer.toolbar.annotationtoolbar.updateTextAlignInIcon(this.pdfViewer.selectedItems.annotations[0].textAlign);\n }\n }\n else {\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.colorDropDownElementInBlazor, '#000000');\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.strokeDropDownElementInBlazor, '#000000');\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.fontColorElementInBlazor, '#000000');\n }\n }\n };\n AnnotationToolbar.prototype.getColorHexValue = function (colorString, type) {\n if (colorString === '#ffffff00') {\n colorString = '#ffffff';\n }\n if (colorString.toLowerCase() === 'red') {\n colorString = '#FF0000';\n }\n if (colorString !== 'transparent') {\n if (!isBlazor()) {\n return this.colorPalette.getValue(colorString, 'hex');\n }\n else {\n return colorString;\n }\n }\n else {\n if (type === 'fontColor' || type === 'strokeColor') {\n return '#000000';\n }\n else {\n return '#ffffff';\n }\n }\n };\n AnnotationToolbar.prototype.setColorInPicker = function (colorpick, colorString) {\n if (colorpick) {\n colorpick.setProperties({ 'value': colorString }, true);\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.resetToolbar = function () {\n this.updateToolbarItems();\n // eslint-disable-next-line max-len\n if ((this.pdfViewer.isAnnotationToolbarOpen || this.pdfViewer.isAnnotationToolbarVisible) && this.pdfViewer.enableAnnotationToolbar) {\n this.adjustViewer(false);\n this.toolbarElement.style.display = '';\n this.isToolbarHidden = false;\n this.adjustViewer(true);\n this.primaryToolbar.selectItem(this.primaryToolbar.annotationItem);\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.refreshOverflow();\n }\n this.pdfViewer.isAnnotationToolbarVisible = true;\n }\n else {\n this.toolbarElement.style.display = 'none';\n this.isToolbarHidden = true;\n this.pdfViewer.isAnnotationToolbarVisible = false;\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.clearTextMarkupMode = function () {\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n if (isBlazor()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n }\n this.pdfViewer.annotation.textMarkupAnnotationModule.currentTextMarkupAddMode = '';\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.clearShapeMode = function () {\n if (this.pdfViewerBase.isShapeAnnotationModule()) {\n this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode = '';\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.clearMeasureMode = function () {\n if (this.pdfViewerBase.isCalibrateAnnotationModule()) {\n this.pdfViewer.annotation.measureAnnotationModule.currentAnnotationMode = '';\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.clear = function () {\n this.deselectAllItems();\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.destroy = function () {\n this.destroyComponent();\n this.shapeDropDown ? this.shapeDropDown.destroy() : null;\n this.calibrateDropDown ? this.calibrateDropDown.destroy() : null;\n this.fontColorDropDown ? this.fontColorDropDown.destroy() : null;\n this.textAlignDropDown ? this.textAlignDropDown.destroy() : null;\n this.colorDropDown ? this.colorDropDown.destroy() : null;\n this.strokeDropDown ? this.strokeDropDown.destroy() : null;\n this.thicknessDropDown ? this.thicknessDropDown.destroy() : null;\n this.opacityDropDown ? this.opacityDropDown.destroy() : null;\n this.textPropertiesDropDown ? this.textPropertiesDropDown.destroy() : null;\n this.toolbar ? this.toolbar.destroy() : null;\n // eslint-disable-next-line\n var stampImage = document.getElementById(this.pdfViewer.element.id + '_stampElement');\n if (stampImage) {\n stampImage.parentElement.removeChild(stampImage);\n }\n };\n AnnotationToolbar.prototype.destroyComponent = function () {\n // eslint-disable-next-line\n var componentElement = [this.highlightItem, this.underlineItem, this.strikethroughItem, this.lineElement, this.arrowElement,\n this.rectangleElement, this.circleElement, this.polygonElement, this.calibrateDistance, this.calibrateArea, this.calibrateRadius,\n this.calibrateVolume, this.calibratePerimeter, this.freeTextEditItem, this.stampElement, this.handWrittenSignatureItem, this.inkAnnotationItem,\n this.fontFamilyElement, this.fontSizeElement, this.alignLeftElement, this.alignRightElement, this.alignCenterElement, this.alignJustifyElement,\n this.boldElement, this.italicElement, this.fontStyleStrikethroughItem, this.fontStyleUnderlineItem, this.deleteItem, this.commentItem,\n this.shapeDropDown ? this.shapeDropDown.activeElem[0] : null, this.calibrateDropDown ? this.calibrateDropDown.activeElem[0] : null, this.fontColorDropDown ? this.fontColorDropDown.activeElem[0] : null, this.textAlignDropDown ? this.textAlignDropDown.activeElem[0] : null,\n this.colorDropDown ? this.colorDropDown.activeElem[0] : null, this.strokeDropDown ? this.strokeDropDown.activeElem[0] : null, this.thicknessDropDown ? this.thicknessDropDown.activeElem[0] : null, this.opacityDropDown ? this.opacityDropDown.activeElem[0] : null, this.textPropertiesDropDown ? this.textPropertiesDropDown.activeElem[0] : null\n ];\n for (var i = 0; i < componentElement.length; i++) {\n if (componentElement[i]) {\n this.destroyDependentComponent(componentElement[i]);\n }\n }\n };\n AnnotationToolbar.prototype.destroyDependentComponent = function (component) {\n if (component.ej2_instances) {\n for (var i = component.ej2_instances.length - 1; i >= 0; i--) {\n component.ej2_instances[i].destroy();\n }\n }\n };\n AnnotationToolbar.prototype.getElementHeight = function (element) {\n try {\n return element.getBoundingClientRect().height;\n }\n catch (error) {\n return 0;\n }\n };\n AnnotationToolbar.prototype.updateViewerHeight = function (viewerHeight, toolbarHeight) {\n return this.getElementHeight(this.pdfViewer.element) - toolbarHeight;\n };\n AnnotationToolbar.prototype.resetViewerHeight = function (viewerHeight, toolbarHeight) {\n return viewerHeight + toolbarHeight;\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.afterAnnotationToolbarCreationInBlazor = function () {\n this.HighlightElement = document.getElementById(this.pdfViewer.element.id + '_highLight').children[0];\n this.UnderlineElement = document.getElementById(this.pdfViewer.element.id + '_underline').children[0];\n this.StrikethroughElement = document.getElementById(this.pdfViewer.element.id + '_strikethrough').children[0];\n this.InkAnnotationElement = document.getElementById(this.pdfViewer.element.id + '_annotation_ink').children[0];\n this.InkAnnotationElement.classList.add('e-pv-tbar-btn');\n this.FreeTextElement = document.getElementById(this.pdfViewer.element.id + '_annotation_freeTextEdit').children[0];\n this.HighlightElement = this.addClassToToolbarInBlazor(this.HighlightElement, 'e-pv-highlight', '_highLight');\n this.UnderlineElement = this.addClassToToolbarInBlazor(this.UnderlineElement, 'e-pv-underline', '_underline');\n this.StrikethroughElement = this.addClassToToolbarInBlazor(this.StrikethroughElement, 'e-pv-strikethrough', '_strikethrough');\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.addClassToToolbarInBlazor = function (element, className, idString) {\n element.classList.add(className);\n element.classList.add('e-pv-tbar-btn');\n if (element.childNodes.length > 0) {\n var spanElement = element.childNodes[0];\n if (spanElement && spanElement.classList) {\n spanElement.id = this.pdfViewer.element.id + idString + 'Icon';\n spanElement.classList.remove('e-icons');\n spanElement.classList.remove('e-btn-icon');\n if (this.pdfViewer.enableRtl) {\n spanElement.classList.add('e-right');\n }\n }\n }\n return element;\n };\n AnnotationToolbar.prototype.handleHighlightInBlazor = function () {\n if (this.HighlightElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n }\n else if (!this.HighlightElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.selectItem(this.HighlightElement);\n }\n if (this.StrikethroughElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n }\n if (this.UnderlineElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n }\n };\n AnnotationToolbar.prototype.handleUnderlineInBlazor = function () {\n if (this.UnderlineElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n }\n else if (!this.UnderlineElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.selectItem(this.UnderlineElement);\n }\n if (this.StrikethroughElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n }\n if (this.HighlightElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n }\n };\n AnnotationToolbar.prototype.handleStrikethroughInBlazor = function () {\n if (this.StrikethroughElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n }\n else if (!this.StrikethroughElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.selectItem(this.StrikethroughElement);\n }\n if (this.HighlightElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n }\n if (this.UnderlineElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n }\n };\n AnnotationToolbar.prototype.AnnotationSliderOpened = function () {\n if (this.pdfViewer.selectedItems.annotations && this.pdfViewer.selectedItems.annotations.length > 0 && this.pdfViewer.selectedItems.annotations[0]) {\n if (this.pdfViewer.selectedItems.annotations[0].wrapper && this.pdfViewer.selectedItems.annotations[0].wrapper.children[0]) {\n var opacity = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.opacity * 100;\n var thickness = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeWidth;\n this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateAnnotationSlider', opacity, thickness);\n }\n }\n };\n AnnotationToolbar.prototype.DropDownOpened = function (colorElement) {\n if (colorElement && colorElement[0].element) {\n var colorElementBounds = colorElement[0].element.getBoundingClientRect();\n var sidebarElement = this.pdfViewerBase.navigationPane.sideBarToolbar;\n var sideBarElementWidth = (sidebarElement) ? sidebarElement.getBoundingClientRect().width : 0;\n if (colorElementBounds.left > this.pdfViewerBase.viewerContainer.clientWidth + colorElementBounds.width + sideBarElementWidth) {\n colorElement[0].element.style.left = (colorElementBounds.left - (this.pdfViewerBase.viewerContainer.clientHeight / 2)) + 'px';\n }\n }\n };\n AnnotationToolbar.prototype.enableItems = function (element, isEnable) {\n this.toolbar.enableItems(element, isEnable);\n if (element.firstElementChild) {\n element.firstElementChild.setAttribute('tabindex', isEnable ? '0' : '-1');\n element.firstElementChild.setAttribute('data-tabindex', isEnable ? '0' : '-1');\n }\n };\n return AnnotationToolbar;\n}());\nexport { AnnotationToolbar };\n","/* eslint-disable */\nimport { createElement, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Toolbar as Tool } from '@syncfusion/ej2-navigations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\n/* eslint-disable */\n/**\n * @hidden\n */\nvar FormDesignerToolbar = /** @class */ (function () {\n function FormDesignerToolbar(viewer, viewerBase, toolbar) {\n /**\n * @private\n */\n this.isToolbarHidden = false;\n this.isTextboxBtnVisible = true;\n this.isPasswordBtnVisible = true;\n this.isCheckboxBtnVisible = true;\n this.isRadiobuttonBtnVisible = true;\n this.isDropdownBtnVisible = true;\n this.isListboxBtnVisible = true;\n this.isSignatureBtnVisible = true;\n this.isDeleteBtnVisible = true;\n this.toolbarBorderHeight = 1;\n this.pdfViewer = viewer;\n this.pdfViewerBase = viewerBase;\n this.primaryToolbar = toolbar;\n }\n FormDesignerToolbar.prototype.initializeFormDesignerToolbar = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_formdesigner_toolbar', className: 'e-pv-formdesigner-toolbar' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n this.toolbar = new Tool({\n width: '', height: '', overflowMode: 'Popup',\n items: this.createToolbarItems(), clicked: this.onToolbarClicked.bind(this),\n created: function () {\n _this.createDropDowns();\n }\n });\n //this.toolbar.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.appendTo(this.toolbarElement);\n this.afterToolbarCreation();\n this.createSignContainer();\n this.applyFormDesignerToolbarSettings();\n //this.updateToolbarItems();\n this.showFormDesignerToolbar(null, true);\n };\n /**\n * @private\n */\n FormDesignerToolbar.prototype.resetFormDesignerToolbar = function () {\n if (this.pdfViewer.isFormDesignerToolbarVisible) {\n this.pdfViewer.designerMode = true;\n this.pdfViewer.formDesignerModule.setMode(\"designer\");\n this.adjustViewer(false);\n this.toolbarElement.style.display = '';\n this.isToolbarHidden = false;\n this.adjustViewer(true);\n this.primaryToolbar.selectItem(this.primaryToolbar.formDesignerItem);\n this.pdfViewer.isFormDesignerToolbarVisible = true;\n }\n else {\n this.toolbarElement.style.display = 'none';\n this.isToolbarHidden = true;\n if (!this.pdfViewer.isAnnotationToolbarVisible) {\n this.adjustViewer(true);\n }\n this.primaryToolbar.deSelectItem(this.primaryToolbar.formDesignerItem);\n this.pdfViewer.isFormDesignerToolbarVisible = false;\n }\n };\n /**\n * @param element\n * @param isInitialLoading\n * @param element\n * @param isInitialLoading\n * @private\n */\n FormDesignerToolbar.prototype.showFormDesignerToolbar = function (element, isInitialLoading) {\n if (!this.isToolbarHidden) {\n // eslint-disable-next-line\n var formDesignerModule = this.pdfViewer.formDesignerModule;\n if (element) {\n this.primaryToolbar.deSelectItem(element);\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n this.primaryToolbar.deSelectItem(this.primaryToolbar.formDesignerItem);\n }\n }\n this.adjustViewer(false);\n // eslint-disable-next-line max-len\n //this.deselectAllItems();\n if (this.pdfViewer.formFieldCollection) {\n var filteredFields = this.pdfViewer.formFieldCollection.filter(function (field) {\n return field.formFieldAnnotationType === 'Textbox' && field.isMultiline;\n });\n filteredFields.forEach(function (field) {\n var resize = document.getElementById(field.id);\n if (resize) {\n resize.style.pointerEvents = 'none';\n resize.style.resize = 'none';\n }\n });\n }\n this.toolbarElement.style.display = 'none';\n this.pdfViewer.formDesignerModule.setMode(\"edit\");\n this.pdfViewer.designerMode = false;\n if (!isInitialLoading) {\n this.pdfViewer.isFormDesignerToolbarVisible = false;\n }\n }\n else {\n var toolBarInitialStatus = this.toolbarElement.style.display;\n this.toolbarElement.style.display = 'block';\n this.pdfViewer.designerMode = true;\n this.pdfViewer.formDesignerModule.setMode(\"designer\");\n if (!isInitialLoading) {\n this.pdfViewer.isFormDesignerToolbarVisible = true;\n }\n if (element) {\n this.primaryToolbar.selectItem(element);\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n this.primaryToolbar.selectItem(this.primaryToolbar.formDesignerItem);\n }\n }\n if (toolBarInitialStatus === 'none') {\n this.adjustViewer(true);\n }\n if (this.pdfViewer.formFieldCollection) {\n var filteredFields = this.pdfViewer.formFieldCollection.filter(function (field) {\n return field.formFieldAnnotationType === 'Textbox' && field.isMultiline;\n });\n filteredFields.forEach(function (field) {\n var resize = document.getElementById(field.id);\n if (resize) {\n resize.style.pointerEvents = 'auto';\n resize.style.resize = 'auto';\n }\n });\n }\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.magnification && this.pdfViewer.magnification.fitType === 'fitToPage') {\n this.pdfViewer.magnification.fitToPage();\n }\n //this.enableAnnotationAddTools(true);\n this.isToolbarHidden = !this.isToolbarHidden;\n };\n /**\n * @param isAdjust\n * @private\n */\n FormDesignerToolbar.prototype.adjustViewer = function (isAdjust) {\n var splitterElement;\n var toolbarContainer;\n var formDesignerToolbarHeight;\n if (isBlazor()) {\n splitterElement = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar-splitter');\n toolbarContainer = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n var formDesignerToolbarContainer = this.pdfViewer.element.querySelector('.e-pv-formDesigner-toolbar');\n formDesignerToolbarHeight = this.getToolbarHeight(formDesignerToolbarContainer);\n }\n else {\n splitterElement = this.pdfViewerBase.getElement('_sideBarToolbarSplitter');\n toolbarContainer = this.pdfViewerBase.getElement('_toolbarContainer');\n formDesignerToolbarHeight = this.getToolbarHeight(this.toolbarElement);\n }\n var toolbarHeight = this.getToolbarHeight(toolbarContainer);\n var sideBarToolbar = this.pdfViewerBase.navigationPane.sideBarToolbar;\n var sideBarContentContainer = this.pdfViewerBase.navigationPane.sideBarContentContainer;\n var commentsContainer = this.pdfViewerBase.navigationPane.commentPanelContainer;\n var commentPanelResizer = this.pdfViewerBase.navigationPane.commentPanelResizer;\n var newToolbarHeight = '';\n if (isAdjust) {\n if (this.pdfViewer.enableToolbar) {\n sideBarToolbar.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n sideBarContentContainer.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n splitterElement.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n commentsContainer.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n commentPanelResizer.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n }\n else {\n sideBarToolbar.style.top = (formDesignerToolbarHeight) + 'px';\n sideBarContentContainer.style.top = (formDesignerToolbarHeight) + 'px';\n splitterElement.style.top = (formDesignerToolbarHeight) + 'px';\n commentsContainer.style.top = (formDesignerToolbarHeight) + 'px';\n commentPanelResizer.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.updateViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (formDesignerToolbarHeight + toolbarHeight)) + 'px';\n newToolbarHeight = this.getNavigationToolbarHeight(formDesignerToolbarHeight + toolbarHeight);\n sideBarToolbar.style.height = newToolbarHeight;\n splitterElement.style.height = newToolbarHeight;\n commentPanelResizer.style.height = newToolbarHeight;\n sideBarContentContainer.style.height = newToolbarHeight;\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n // eslint-disable-next-line max-len\n sideBarToolbar.style.top = toolbarHeight + 'px';\n sideBarContentContainer.style.top = toolbarHeight + 'px';\n splitterElement.style.top = toolbarHeight + 'px';\n commentsContainer.style.top = toolbarHeight + 'px';\n commentPanelResizer.style.top = toolbarHeight + 'px';\n }\n else {\n sideBarToolbar.style.top = 1 + 'px';\n sideBarToolbar.style.height = '100%';\n sideBarContentContainer.style.top = 1 + 'px';\n sideBarContentContainer.style.height = '100%';\n splitterElement.style.top = 1 + 'px';\n splitterElement.style.height = '100%';\n commentsContainer.style.top = 1 + 'px';\n commentsContainer.style.height = '100%';\n commentPanelResizer.style.top = 1 + 'px';\n commentPanelResizer.style.height = '100%';\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.updateViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), formDesignerToolbarHeight) + 'px';\n newToolbarHeight = this.getNavigationToolbarHeight(toolbarHeight);\n sideBarToolbar.style.height = newToolbarHeight;\n splitterElement.style.height = newToolbarHeight;\n commentPanelResizer.style.height = newToolbarHeight;\n sideBarContentContainer.style.height = newToolbarHeight;\n if (this.pdfViewerBase.viewerContainer.style.height === '0px') {\n // eslint-disable-next-line\n this.pdfViewerBase.viewerContainer.style.height = (parseInt(this.pdfViewer.element.style.height) - parseInt(sideBarToolbar.style.top)) + 'px';\n }\n }\n };\n FormDesignerToolbar.prototype.getElementHeight = function (element) {\n try {\n return element.getBoundingClientRect().height;\n }\n catch (error) {\n return 0;\n }\n };\n FormDesignerToolbar.prototype.updateViewerHeight = function (viewerHeight, toolbarHeight) {\n return this.getElementHeight(this.pdfViewer.element) - toolbarHeight;\n };\n FormDesignerToolbar.prototype.resetViewerHeight = function (viewerHeight, toolbarHeight) {\n return viewerHeight + toolbarHeight;\n };\n FormDesignerToolbar.prototype.getNavigationToolbarHeight = function (toolbarHeight) {\n var height = this.pdfViewer.element.getBoundingClientRect().height;\n return (height !== 0) ? height - toolbarHeight + 'px' : '';\n };\n FormDesignerToolbar.prototype.updateContentContainerHeight = function (isAdjust, isBlazor) {\n var formDesignerToolbarHeight;\n if (isBlazor) {\n var formDesignerToolbarContainer = this.pdfViewer.element.querySelector('.e-pv-formDesigner-toolbar');\n formDesignerToolbarHeight = this.getToolbarHeight(formDesignerToolbarContainer);\n }\n else {\n formDesignerToolbarHeight = this.getToolbarHeight(this.toolbarElement);\n }\n var sideBarClientRect = this.pdfViewerBase.navigationPane.sideBarContentContainer.getBoundingClientRect();\n if (sideBarClientRect.height !== 0) {\n if (isAdjust) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.height = sideBarClientRect.height - formDesignerToolbarHeight + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.height = sideBarClientRect.height + formDesignerToolbarHeight + 'px';\n }\n }\n };\n FormDesignerToolbar.prototype.getToolbarHeight = function (element) {\n var toolbarHeight = element.getBoundingClientRect().height;\n if (toolbarHeight === 0 && element === this.pdfViewerBase.getElement('_toolbarContainer')) {\n // getComputedStyle gets the value from style and toolbar border height is added to it.\n // eslint-disable-next-line\n toolbarHeight = parseFloat(window.getComputedStyle(element)['height']) + this.toolbarBorderHeight;\n }\n return toolbarHeight;\n };\n // eslint-disable-next-line\n FormDesignerToolbar.prototype.createToolbarItems = function () {\n var signTemplate = this.getTemplate('button', '_formfield_signature', 'e-pv-annotation-handwritten-container');\n // eslint-disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-textbox-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_textbox', align: 'Left', attr: { 'tabindex': 0, 'data-tabindex': 0 } });\n items.push({ prefixIcon: 'e-pv-password-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_passwordfield', align: 'Left', attr: { 'tabindex': 0, 'data-tabindex': 0 } });\n items.push({ prefixIcon: 'e-pv-checkbox-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_checkbox', align: 'Left', attr: { 'tabindex': 0, 'data-tabindex': 0 } });\n items.push({ prefixIcon: 'e-pv-radiobutton-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_radiobutton', align: 'Left', attr: { 'tabindex': 0, 'data-tabindex': 0 } });\n items.push({ prefixIcon: 'e-pv-dropdown-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_dropdown', align: 'Left', attr: { 'tabindex': 0, 'data-tabindex': 0 } });\n items.push({ prefixIcon: 'e-pv-listbox-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_listbox', align: 'Left', attr: { 'tabindex': 0, 'data-tabindex': 0 } });\n items.push({ template: signTemplate, align: 'Left', attr: { 'tabindex': 0, 'data-tabindex': 0 } });\n items.push({ type: 'Separator', align: 'Left', attr: { 'tabindex': 0, 'data-tabindex': 0 } });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-annotation-delete-icon e-pv-icon', className: 'e-pv-annotation-delete-container', id: this.pdfViewer.element.id + '_formdesigner_delete', align: 'Left', attr: { 'tabindex': 0, 'data-tabindex': 0 } });\n items.push({ prefixIcon: 'e-pv-annotation-tools-close-icon e-pv-icon', className: 'e-pv-annotation-tools-close-container', id: this.pdfViewer.element.id + '_formdesigner_close', align: 'Right', attr: { 'tabindex': 0, 'data-tabindex': 0 } });\n return items;\n };\n FormDesignerToolbar.prototype.createSignContainer = function () {\n var _this = this;\n this.handWrittenSignatureItem = this.pdfViewerBase.getElement('_formfield_signature');\n this.handWrittenSignatureItem.setAttribute('tabindex', '0');\n this.handWrittenSignatureItem.setAttribute('data-tabindex', '0');\n // eslint-disable-next-line max-len\n this.primaryToolbar.createTooltip(this.pdfViewerBase.getElement('_formfield_signature'), this.pdfViewer.localeObj.getConstant('HandwrittenSignatureDialogHeaderText'));\n // eslint-disable-next-line\n var proxy = this;\n var items = [];\n items = [\n {\n text: 'ADD SIGNATURE'\n },\n {\n separator: true\n },\n {\n text: 'ADD INITIAL'\n }\n ];\n var saveOptions = {\n items: items,\n iconCss: 'e-pv-handwritten-icon e-pv-icon',\n cssClass: 'e-pv-handwritten-popup',\n beforeItemRender: function (args) {\n _this.pdfViewer.clearSelection(_this.pdfViewerBase.currentPageNumber - 1);\n if (args.element && args.element.className.indexOf(\"e-separator\") !== -1) {\n args.element.style.margin = \"8px 0\";\n args.element.setAttribute('role', 'menuitem');\n args.element.setAttribute('aria-label', 'separator');\n }\n if (args.item.text === 'ADD SIGNATURE') {\n args.element.innerHTML = '';\n var addInitialSpan = createElement('button');\n addInitialSpan.classList.add(\"e-control\", \"e-btn\", \"e-lib\", \"e-outline\", \"e-primary\");\n addInitialSpan.textContent = _this.pdfViewer.localeObj.getConstant('SignatureFieldDialogHeaderText');\n _this.pdfViewer.locale === 'en-US' ? addInitialSpan.style.width = \"130px\" : addInitialSpan.style.width = \"auto\";\n addInitialSpan.style.height = \"36px\";\n addInitialSpan.addEventListener('click', _this.clickSignature.bind(_this));\n args.element.appendChild(addInitialSpan);\n args.element.addEventListener('mouseover', _this.hoverInitialBtn.bind(_this));\n args.element.style.width = '206px';\n args.element.style.display = 'flex';\n args.element.style.flexDirection = 'column';\n args.element.style.height = 'auto';\n args.element.style.alignItems = 'center';\n args.element.setAttribute('role', 'menuitem');\n }\n if (args.item.text === 'ADD INITIAL') {\n args.element.innerHTML = '';\n var addInitialSpan = createElement('button');\n addInitialSpan.classList.add(\"e-control\", \"e-btn\", \"e-lib\", \"e-outline\", \"e-primary\");\n addInitialSpan.textContent = _this.pdfViewer.localeObj.getConstant('InitialFieldDialogHeaderText');\n _this.pdfViewer.locale === 'en-US' ? addInitialSpan.style.width = \"130px\" : addInitialSpan.style.width = \"auto\";\n addInitialSpan.style.height = \"36px\";\n addInitialSpan.addEventListener('click', _this.clickInitial.bind(_this));\n args.element.appendChild(addInitialSpan);\n args.element.addEventListener('mouseover', _this.hoverInitialBtn.bind(_this));\n args.element.style.width = '206px';\n args.element.style.display = 'flex';\n args.element.style.flexDirection = 'column';\n args.element.style.height = 'auto';\n args.element.style.alignItems = 'center';\n args.element.setAttribute('role', 'menuitem');\n }\n },\n };\n var drpDownBtn = new DropDownButton(saveOptions);\n if (this.pdfViewer.enableRtl) {\n drpDownBtn.enableRtl = this.pdfViewer.enableRtl;\n }\n drpDownBtn.appendTo(this.handWrittenSignatureItem);\n };\n FormDesignerToolbar.prototype.hoverInitialBtn = function (event) {\n var eventTarget = event.target;\n var currentFieldID = isNullOrUndefined(event.path) ? event.composedPath()[0].id : event.path[0].id;\n if (currentFieldID !== 'sign_' + currentFieldID.split(\"_\")[1] && currentFieldID !== 'delete_' + currentFieldID.split(\"_\")[1]) {\n var liElement = document.getElementById(eventTarget.id);\n if (isNullOrUndefined(liElement)) {\n liElement = document.getElementById(eventTarget.parentElement.id);\n }\n if (liElement != null && (eventTarget.id !== 'sign_' + eventTarget.id.split('_')[1] || eventTarget.id !== 'sign_border_' + eventTarget.id.split('_')[2])) {\n liElement.style.background = 'transparent';\n liElement.style.cursor = 'default';\n }\n else if (liElement.parentElement != null && (eventTarget.id !== 'sign_' + eventTarget.id.split('_')[1] || eventTarget.id !== 'sign_border_' + eventTarget.id.split('_')[2])) {\n liElement.parentElement.style.background = 'transparent';\n liElement.parentElement.style.cursor = 'default';\n }\n }\n };\n FormDesignerToolbar.prototype.getTemplate = function (elementName, id, className) {\n var element = createElement(elementName, { id: this.pdfViewer.element.id + id });\n if (className) {\n element.className = className;\n }\n return element.outerHTML;\n };\n FormDesignerToolbar.prototype.onToolbarClicked = function (args) {\n // eslint-disable-next-line\n if (args && args.item) {\n if (args.item.id.indexOf(\"textbox\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('Textbox');\n }\n else if (args.item.id.indexOf(\"passwordfield\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('Password');\n }\n else if (args.item.id.indexOf(\"checkbox\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('CheckBox');\n }\n else if (args.item.id.indexOf(\"radiobutton\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('RadioButton');\n }\n else if (args.item.id.indexOf(\"dropdown\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('DropDown');\n }\n else if (args.item.id.indexOf(\"listbox\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('ListBox');\n }\n else if (args.item.id.indexOf(\"signature\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('SignatureField');\n }\n else if (args.item.id.indexOf(\"close\") !== -1) {\n this.pdfViewer.toolbarModule.formDesignerToolbarModule.showFormDesignerToolbar(this.pdfViewer.toolbarModule.formDesignerItem);\n }\n else if (args.item.id.indexOf(\"delete\") !== -1) {\n this.pdfViewer.formDesignerModule.deleteFormField(this.pdfViewer.selectedItems.formFields[0]);\n this.showHideDeleteIcon(false);\n }\n if (this.pdfViewer.selectedItems.formFields.length > 0) {\n this.pdfViewer.clearSelection(this.pdfViewer.selectedItems.formFields[0].pageIndex);\n }\n }\n };\n FormDesignerToolbar.prototype.clickSignature = function (args) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('SignatureField');\n };\n FormDesignerToolbar.prototype.clickInitial = function (args) {\n this.pdfViewer.isInitialFieldToolbarSelection = true;\n this.pdfViewer.formDesignerModule.setFormFieldMode('InitialField');\n this.pdfViewer.isInitialFieldToolbarSelection = false;\n };\n FormDesignerToolbar.prototype.afterToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.textboxItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_textbox', 'e-pv-formdesigner-textbox', this.pdfViewer.localeObj.getConstant('Textbox'));\n this.textboxItem.setAttribute('tabindex', '0');\n this.textboxItem.setAttribute('data-tabindex', '0');\n this.passwordItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_passwordfield', 'e-pv-formdesigner-passwordfield', this.pdfViewer.localeObj.getConstant('Password'));\n this.passwordItem.setAttribute('tabindex', '0');\n this.passwordItem.setAttribute('data-tabindex', '0');\n this.checkboxItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_checkbox', 'e-pv-formdesigner-checkbox', this.pdfViewer.localeObj.getConstant('Check Box'));\n this.checkboxItem.setAttribute('tabindex', '0');\n this.checkboxItem.setAttribute('data-tabindex', '0');\n this.radioButtonItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_radiobutton', 'e-pv-formdesigner-radiobutton', this.pdfViewer.localeObj.getConstant('Radio Button'));\n this.radioButtonItem.setAttribute('tabindex', '0');\n this.radioButtonItem.setAttribute('data-tabindex', '0');\n this.dropdownItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_dropdown', 'e-pv-formdesigner-dropdown', this.pdfViewer.localeObj.getConstant('Dropdown'));\n this.dropdownItem.setAttribute('tabindex', '0');\n this.dropdownItem.setAttribute('data-tabindex', '0');\n this.listboxItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_listbox', 'e-pv-formdesigner-listbox', this.pdfViewer.localeObj.getConstant('List Box'));\n this.listboxItem.setAttribute('tabindex', '0');\n this.listboxItem.setAttribute('data-tabindex', '0');\n //this.signatureItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_signature', 'e-pv-formdesigner-signature', this.pdfViewer.localeObj.getConstant('Signature'));\n this.deleteItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_delete', 'e-pv-formdesigner-delete', this.pdfViewer.localeObj.getConstant('Delete FormField'));\n this.closeItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_close', 'e-pv-annotation-tools-close', null);\n this.closeItem.setAttribute('tabindex', '0');\n this.closeItem.setAttribute('data-tabindex', '0');\n this.showHideDeleteIcon(false);\n //this.enableTextMarkupAnnotationPropertiesTools(false); \n };\n FormDesignerToolbar.prototype.showHideDeleteIcon = function (isEnable) {\n if (this.toolbar) {\n this.toolbar.enableItems(this.deleteItem.parentElement, isEnable);\n this.deleteItem.setAttribute('tabindex', isEnable ? '0' : '-1');\n this.deleteItem.setAttribute('data-tabindex', isEnable ? '0' : '-1');\n }\n };\n /**\n * @private\n */\n FormDesignerToolbar.prototype.applyFormDesignerToolbarSettings = function () {\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems) {\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('TextboxTool') !== -1) {\n this.showTextboxTool(true);\n }\n else {\n this.showTextboxTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('PasswordTool') !== -1) {\n this.showPasswordTool(true);\n }\n else {\n this.showPasswordTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('CheckBoxTool') !== -1) {\n this.showCheckboxTool(true);\n }\n else {\n this.showCheckboxTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('RadioButtonTool') !== -1) {\n this.showRadioButtonTool(true);\n }\n else {\n this.showRadioButtonTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('DropdownTool') !== -1) {\n this.showDropdownTool(true);\n }\n else {\n this.showDropdownTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('ListboxTool') !== -1) {\n this.showListboxTool(true);\n }\n else {\n this.showListboxTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('DrawSignatureTool') !== -1) {\n this.showDrawSignatureTool(true);\n }\n else {\n this.showDrawSignatureTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('DeleteTool') !== -1) {\n this.showDeleteTool(true);\n }\n else {\n this.showDeleteTool(false);\n }\n this.showSeparator();\n }\n };\n FormDesignerToolbar.prototype.showTextboxTool = function (isShow) {\n this.isTextboxBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 0, 0);\n };\n FormDesignerToolbar.prototype.showPasswordTool = function (isShow) {\n this.isPasswordBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 1, 1);\n };\n FormDesignerToolbar.prototype.showCheckboxTool = function (isShow) {\n this.isCheckboxBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 2, 2);\n };\n FormDesignerToolbar.prototype.showRadioButtonTool = function (isShow) {\n this.isRadiobuttonBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 3, 3);\n };\n FormDesignerToolbar.prototype.showDropdownTool = function (isShow) {\n this.isDropdownBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 4, 4);\n };\n FormDesignerToolbar.prototype.showListboxTool = function (isShow) {\n this.isListboxBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 5, 5);\n };\n FormDesignerToolbar.prototype.showDrawSignatureTool = function (isShow) {\n this.isSignatureBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 6, 6);\n };\n FormDesignerToolbar.prototype.showDeleteTool = function (isShow) {\n this.isDeleteBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 8, 8);\n };\n FormDesignerToolbar.prototype.showSeparator = function () {\n if (!this.isSignatureBtnVisible && !this.isDeleteBtnVisible)\n this.applyHideToToolbar(false, 7, 7);\n };\n FormDesignerToolbar.prototype.applyHideToToolbar = function (show, startIndex, endIndex) {\n var isHide = !show;\n for (var index = startIndex; index <= endIndex; index++) {\n this.toolbar.hideItem(index, isHide);\n }\n };\n FormDesignerToolbar.prototype.createDropDowns = function () {\n };\n /**\n * @private\n */\n FormDesignerToolbar.prototype.destroy = function () {\n var componentElement = [this.textboxItem, this.passwordItem, this.checkboxItem, this.radioButtonItem,\n this.listboxItem, this.dropdownItem, this.handWrittenSignatureItem, this.deleteItem];\n for (var i = 0; i < componentElement.length; i++) {\n if (componentElement[i]) {\n this.destroyDependentComponent(componentElement[i]);\n }\n }\n };\n FormDesignerToolbar.prototype.destroyDependentComponent = function (component) {\n if (component.ej2_instances) {\n for (var i = component.ej2_instances.length - 1; i >= 0; i--) {\n component.ej2_instances[i].destroy();\n }\n }\n };\n return FormDesignerToolbar;\n}());\nexport { FormDesignerToolbar };\n","/* eslint-disable */\nimport { createElement, Browser, isBlazor, isNullOrUndefined, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { AnnotationToolbar } from '../index';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { FormFieldDataFormat } from '../base/types';\nimport { FormDesignerToolbar } from './formdesigner-toolbar';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * @param viewer\n * @param viewerBase\n * @param viewer\n * @param viewerBase\n * @private\n */\n function Toolbar(viewer, viewerBase) {\n var _this = this;\n this.isPageNavigationToolDisabled = false;\n this.isMagnificationToolDisabled = false;\n /**\n * @private\n */\n this.isSelectionToolDisabled = false;\n this.isScrollingToolDisabled = false;\n this.isOpenBtnVisible = true;\n this.isNavigationToolVisible = true;\n this.isMagnificationToolVisible = true;\n this.isSelectionBtnVisible = true;\n this.isScrollingBtnVisible = true;\n this.isDownloadBtnVisible = true;\n this.isPrintBtnVisible = true;\n this.isSearchBtnVisible = true;\n this.isTextSearchBoxDisplayed = false;\n this.isUndoRedoBtnsVisible = true;\n this.isAnnotationEditBtnVisible = true;\n this.isFormDesignerEditBtnVisible = true;\n this.isCommentBtnVisible = true;\n this.isSubmitbtnvisible = true;\n this.toolItems = [];\n this.itemsIndexArray = [];\n this.onToolbarKeydown = function (event) {\n // eslint-disable-next-line max-len\n var isSkip = event.key === 'Tab' || event.shiftKey === true || event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowUp' || event.key === 'ArrowDown' || event.key === 'ArrowLeft' || event.key === 'ArrowRight';\n var targetId = event.target.id;\n var customItem = _this.toolItems.filter(function (toolItem) { return toolItem.id === targetId; });\n if (!(targetId === _this.pdfViewer.element.id + '_currentPageInput' || targetId === _this.pdfViewer.element.id + '_zoomDropDown' || customItem.length > 0) && !isSkip) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n this.toolbarClickHandler = function (args) {\n // eslint-disable-next-line max-len\n var isKeyBoardEvent = args.originalEvent && args.originalEvent.pointerType !== 'mouse' && args.originalEvent.pointerType !== 'touch';\n if (!Browser.isDevice || _this.pdfViewer.enableDesktopMode) {\n if (args.originalEvent.target === _this.zoomDropdownItem.parentElement.childNodes[1] || args.originalEvent.target === _this.zoomDropdownItem.parentElement.childNodes[2]) {\n args.cancel = true;\n }\n else if (args.originalEvent.target.id === _this.pdfViewer.element.id + '_openIcon') {\n var tooltipData = args.originalEvent.target.parentElement.dataset;\n if (tooltipData && tooltipData.tooltipId) {\n var tooltipElement = document.getElementById(tooltipData.tooltipId);\n if (tooltipElement) {\n tooltipElement.style.display = 'none';\n }\n }\n }\n }\n _this.handleToolbarBtnClick(args, isKeyBoardEvent);\n // eslint-disable-next-line\n var targetElement = args.originalEvent.target;\n var customItem = [];\n if (!isNullOrUndefined(args.item)) {\n customItem = _this.toolItems.filter(function (toolItem) { return toolItem.id === args.item.id; });\n }\n if (!Browser.isDevice || _this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n if (!(args.originalEvent.target === _this.zoomDropdownItem.parentElement.childNodes[1] || args.originalEvent.target === _this.zoomDropdownItem.parentElement.childNodes[2] || args.originalEvent.target === _this.currentPageBoxElement || args.originalEvent.target === _this.textSearchItem.childNodes[0] || customItem.length > 0)) {\n if (!isKeyBoardEvent && targetElement.parentElement.id !== _this.pdfViewer.element.id + '_toolbarContainer_nav' && targetElement.id !== _this.pdfViewer.element.id + '_toolbarContainer_nav') {\n args.originalEvent.target.blur();\n _this.pdfViewerBase.focusViewerContainer();\n }\n }\n }\n else {\n args.originalEvent.target.blur();\n _this.pdfViewerBase.focusViewerContainer();\n }\n };\n // eslint-disable-next-line\n this.loadDocument = function (args) {\n // eslint-disable-next-line\n var upoadedFiles = args.target.files;\n if (args.target.files[0] !== null) {\n var uploadedFile = upoadedFiles[0];\n if (uploadedFile) {\n _this.uploadedDocumentName = uploadedFile.name;\n var reader = new FileReader();\n reader.readAsDataURL(uploadedFile);\n // eslint-disable-next-line\n reader.onload = function (e) {\n var uploadedFileUrl = e.currentTarget.result;\n if (isBlazor()) {\n _this.pdfViewer._dotnetInstance.invokeMethodAsync(\"LoadDocumentFromClient\", uploadedFileUrl);\n }\n else {\n _this.uploadedFile = uploadedFileUrl;\n _this.pdfViewer.load(uploadedFileUrl, null);\n _this.pdfViewerBase.isSkipDocumentPath = true;\n _this.pdfViewer.documentPath = uploadedFileUrl;\n }\n if (!isNullOrUndefined(_this.fileInputElement)) {\n _this.fileInputElement.value = '';\n }\n };\n }\n }\n };\n this.navigateToPage = function (args) {\n if (args.which === 13) {\n // eslint-disable-next-line\n var enteredValue = parseInt(_this.currentPageBoxElement.value);\n if (enteredValue !== null) {\n if (enteredValue > 0 && enteredValue <= _this.pdfViewerBase.pageCount) {\n if (_this.pdfViewer.navigationModule) {\n _this.pdfViewer.navigationModule.goToPage(enteredValue);\n }\n }\n else {\n _this.updateCurrentPage(_this.pdfViewerBase.currentPageNumber);\n }\n }\n else {\n _this.updateCurrentPage(_this.pdfViewerBase.currentPageNumber);\n }\n _this.currentPageBoxElement.blur();\n _this.pdfViewerBase.focusViewerContainer();\n }\n };\n this.textBoxFocusOut = function () {\n // eslint-disable-next-line\n if (_this.currentPageBox.value === null || _this.currentPageBox.value >= _this.pdfViewerBase.pageCount || _this.currentPageBox.value !== _this.pdfViewerBase.currentPageNumber) {\n _this.updateCurrentPage(_this.pdfViewerBase.currentPageNumber);\n }\n };\n this.pdfViewer = viewer;\n this.pdfViewerBase = viewerBase;\n }\n /**\n * @param width\n * @private\n */\n Toolbar.prototype.intializeToolbar = function (width) {\n var toolbarDiv;\n if (!isBlazor()) {\n toolbarDiv = this.createToolbar(width);\n }\n else {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n toolbarDiv = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n this.toolbarElement = toolbarDiv;\n }\n }\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (isIE) {\n if (isBlazor()) {\n this.pdfViewerBase.blazorUIAdaptor.totalPageElement.classList.add('e-pv-total-page-ms');\n }\n else {\n if (!Browser.isDevice) {\n this.totalPageItem.classList.add('e-pv-total-page-ms');\n }\n }\n }\n this.createFileElement(toolbarDiv);\n this.wireEvent();\n if (!isBlazor()) {\n this.updateToolbarItems();\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.applyToolbarSettings();\n this.initialEnableItems();\n this.pdfViewerBase.navigationPane.adjustPane();\n }\n else {\n this.initialEnableItems();\n }\n if (this.pdfViewer.annotationModule) {\n this.annotationToolbarModule = new AnnotationToolbar(this.pdfViewer, this.pdfViewerBase, this);\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.annotationToolbarModule.initializeAnnotationToolbar();\n }\n }\n if (this.pdfViewer.formDesignerModule) {\n this.formDesignerToolbarModule = new FormDesignerToolbar(this.pdfViewer, this.pdfViewerBase, this);\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.formDesignerToolbarModule.initializeFormDesignerToolbar();\n }\n }\n }\n else {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.initialEnableItems();\n this.pdfViewerBase.navigationPane.adjustPane();\n if (this.pdfViewer.enableToolbar) {\n this.bindOpenIconEvent();\n }\n }\n this.PanElement = document.getElementById(this.pdfViewer.element.id + '_handTool').children[0];\n this.PanElement.classList.add('e-pv-tbar-btn');\n this.SelectToolElement = document.getElementById(this.pdfViewer.element.id + '_selectTool').children[0];\n this.SelectToolElement.classList.add('e-pv-tbar-btn');\n this.CommentElement = document.getElementById(this.pdfViewer.element.id + '_comment').children[0];\n this.CommentElement.classList.add('e-pv-tbar-btn');\n this.annotationToolbarModule = new AnnotationToolbar(this.pdfViewer, this.pdfViewerBase, this);\n if (this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar || (this.pdfViewer.enableDesktopMode && Browser.isDevice)) {\n this.annotationToolbarModule.afterAnnotationToolbarCreationInBlazor();\n }\n }\n return toolbarDiv;\n };\n Toolbar.prototype.bindOpenIconEvent = function () {\n var openElement = document.getElementById(this.pdfViewer.element.id + '_open');\n if (openElement) {\n openElement.addEventListener('click', this.openFileDialogBox.bind(this));\n }\n };\n Toolbar.prototype.InitializeMobileToolbarInBlazor = function () {\n var toolbarDiv;\n toolbarDiv = this.pdfViewer.element.querySelector('.e-pv-mobile-toolbar');\n this.createFileElement(toolbarDiv);\n this.wireEvent();\n };\n /**\n * Shows /hides the toolbar in the PdfViewer\n *\n * @param {boolean} enableToolbar - If set true , its show the Toolbar\n * @returns void\n */\n Toolbar.prototype.showToolbar = function (enableToolbar) {\n var toolbar = this.toolbarElement;\n if (enableToolbar) {\n toolbar.style.display = 'block';\n // eslint-disable-next-line max-len\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.hideMobileAnnotationToolbar();\n }\n }\n else {\n this.pdfViewerBase.toolbarHeight = 0;\n if (enableToolbar) {\n if (Browser.isDevice && this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar) {\n this.annotationToolbarModule.toolbarCreated = false;\n this.annotationToolbarModule.adjustMobileViewer();\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.element.style.display = 'none';\n }\n if (Browser.isDevice && this.annotationToolbarModule.propertyToolbar) {\n this.annotationToolbarModule.propertyToolbar.element.style.display = 'none';\n }\n }\n toolbar.style.display = 'none';\n }\n };\n /**\n * Shows/hides the Navigation toolbar in the PdfViewer\n *\n * @param {boolean} enableNavigationToolbar - If set true , its show the Navigation Toolbar\n * @returns void\n */\n Toolbar.prototype.showNavigationToolbar = function (enableNavigationToolbar) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n var navigationToolbar = this.pdfViewerBase.navigationPane.sideBarToolbar;\n var navigationToolbarSplitter = this.pdfViewerBase.navigationPane.sideBarToolbarSplitter;\n if (enableNavigationToolbar) {\n navigationToolbar.style.display = 'block';\n navigationToolbarSplitter.style.display = 'block';\n if (this.pdfViewerBase.navigationPane.isBookmarkOpen || this.pdfViewerBase.navigationPane.isThumbnailOpen) {\n this.pdfViewerBase.navigationPane.clear();\n }\n }\n else {\n navigationToolbar.style.display = 'none';\n navigationToolbarSplitter.style.display = 'none';\n if (this.pdfViewerBase.navigationPane.isBookmarkOpen || this.pdfViewerBase.navigationPane.isThumbnailOpen) {\n this.pdfViewerBase.navigationPane.updateViewerContainerOnClose();\n }\n }\n }\n };\n /**\n * Shows /hides the annotation toolbar in the PdfViewer\n *\n * @param {boolean} enableAnnotationToolbar - If set true , its show the annotation Toolbar\n * @returns void\n */\n Toolbar.prototype.showAnnotationToolbar = function (enableAnnotationToolbar) {\n if (enableAnnotationToolbar) {\n this.annotationToolbarModule.isToolbarHidden = true;\n this.annotationToolbarModule.showAnnotationToolbar();\n }\n else {\n this.annotationToolbarModule.isToolbarHidden = false;\n this.annotationToolbarModule.showAnnotationToolbar();\n }\n };\n /**\n * Shows /hides the the toolbar items in the PdfViewer\n *\n * @param {string[]} items - Defines the toolbar items in the toolbar\n * @param {boolean} isVisible - If set true, then its show the toolbar Items\n * @returns void\n */\n Toolbar.prototype.showToolbarItem = function (items, isVisible) {\n for (var i = 0; i < items.length; i++) {\n switch (items[i]) {\n case 'OpenOption':\n this.showOpenOption(isVisible);\n break;\n case 'PageNavigationTool':\n this.showPageNavigationTool(isVisible);\n break;\n case 'MagnificationTool':\n this.showMagnificationTool(isVisible);\n break;\n case 'SelectionTool':\n this.showSelectionTool(isVisible);\n break;\n case 'PanTool':\n this.showScrollingTool(isVisible);\n break;\n case 'DownloadOption':\n this.showDownloadOption(isVisible);\n break;\n case 'PrintOption':\n this.showPrintOption(isVisible);\n break;\n case 'SearchOption':\n this.showSearchOption(isVisible);\n break;\n case 'UndoRedoTool':\n this.showUndoRedoTool(isVisible);\n break;\n case 'AnnotationEditTool':\n this.showAnnotationEditTool(isVisible);\n break;\n case 'FormDesignerEditTool':\n this.showFormDesignerEditTool(isVisible);\n break;\n case 'CommentTool':\n this.showCommentOption(isVisible);\n break;\n case 'SubmitForm':\n this.showSubmitForm(isVisible);\n break;\n }\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.applyHideToToolbar(true, this.itemsIndexArray[0].endIndex + 1, this.itemsIndexArray[0].endIndex + 1);\n this.applyHideToToolbar(true, this.itemsIndexArray[1].endIndex + 1, this.itemsIndexArray[1].endIndex + 1);\n this.applyHideToToolbar(true, this.itemsIndexArray[2].endIndex + 1, this.itemsIndexArray[2].endIndex + 1);\n this.applyHideToToolbar(true, this.itemsIndexArray[4].endIndex + 1, this.itemsIndexArray[4].endIndex + 1);\n this.applyHideToToolbar(true, this.itemsIndexArray[5].endIndex + 1, this.itemsIndexArray[5].endIndex + 1);\n }\n else {\n this.applyHideToToolbar(true, 1, 1);\n this.applyHideToToolbar(true, 8, 8);\n this.applyHideToToolbar(true, 12, 12);\n this.applyHideToToolbar(true, 15, 15);\n }\n this.showSeparator(items);\n };\n /**\n * Enables /disables the the toolbar items in the PdfViewer\n *\n * @param {string[]} items - Defines the toolbar items in the toolbar\n * @param {boolean} isEnable - If set true, then its Enable the toolbar Items\n * @returns void\n */\n Toolbar.prototype.enableToolbarItem = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n switch (items[i]) {\n case 'OpenOption':\n this.enableOpenOption(isEnable);\n break;\n case 'PageNavigationTool':\n this.isPageNavigationToolDisabled = isEnable;\n this.enablePageNavigationTool(isEnable);\n break;\n case 'MagnificationTool':\n this.isMagnificationToolDisabled = isEnable;\n this.enableMagnificationTool(isEnable);\n break;\n case 'SelectionTool':\n this.isSelectionToolDisabled = isEnable;\n this.enableSelectionTool(isEnable);\n break;\n case 'PanTool':\n this.isScrollingToolDisabled = isEnable;\n this.enableScrollingTool(isEnable);\n break;\n case 'DownloadOption':\n this.enableDownloadOption(isEnable);\n break;\n case 'PrintOption':\n this.enablePrintOption(isEnable);\n break;\n case 'SearchOption':\n this.enableSearchOption(isEnable);\n break;\n case 'UndoRedoTool':\n this.enableUndoRedoTool(isEnable);\n break;\n case 'AnnotationEditTool':\n this.enableAnnotationEditTool(isEnable);\n break;\n case 'FormDesignerEditTool':\n this.enableFormDesignerEditTool(isEnable);\n break;\n case 'CommentTool':\n this.enableCommentsTool(isEnable);\n break;\n }\n }\n };\n /**\n * @param restrictionSummary\n * @param isEnable\n * @param restrictionSummary\n * @param isEnable\n * @private\n */\n // eslint-disable-next-line\n Toolbar.prototype.DisableToolbarItems = function (restrictionSummary, isEnable) {\n switch (restrictionSummary) {\n case 'Print':\n this.enablePrintOption(isEnable);\n break;\n case 'CopyContent':\n this.isSelectionToolDisabled = isEnable;\n this.enableSelectionTool(isEnable);\n if (isEnable) {\n this.pdfViewerBase.initiateTextSelectMode();\n this.updateInteractionTools(isEnable);\n }\n else {\n this.pdfViewerBase.initiatePanning();\n this.updateInteractionTools(isEnable);\n }\n break;\n case 'EditAnnotations':\n this.enableAnnotationEditTool(isEnable);\n if (this.annotationToolbarModule && !this.annotationToolbarModule.isToolbarHidden) {\n this.annotationToolbarModule.showAnnotationToolbar();\n }\n break;\n }\n };\n Toolbar.prototype.showOpenOption = function (enableOpenOption) {\n this.isOpenBtnVisible = enableOpenOption;\n //For mobile devices, the default previous value for OpenOption has been passed as (0,0).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(enableOpenOption, !isNullOrUndefined(this.itemsIndexArray[0]) ? this.itemsIndexArray[0].startIndex : 0, !isNullOrUndefined(this.itemsIndexArray[0]) ? this.itemsIndexArray[0].endIndex : 0);\n };\n Toolbar.prototype.showPageNavigationTool = function (enablePageNavigationTool) {\n this.isNavigationToolVisible = enablePageNavigationTool;\n //For mobile devices, the default previous value for PageNavigationTool has been passed as (2,7).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(enablePageNavigationTool, !isNullOrUndefined(this.itemsIndexArray[1]) ? this.itemsIndexArray[1].startIndex : 2, !isNullOrUndefined(this.itemsIndexArray[1]) ? this.itemsIndexArray[1].endIndex : 7);\n };\n Toolbar.prototype.showMagnificationTool = function (enableMagnificationTool) {\n this.isMagnificationToolVisible = enableMagnificationTool;\n //For mobile devices, the default previous value for MagnificationTool has been passed as (9,11).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(enableMagnificationTool, !isNullOrUndefined(this.itemsIndexArray[2]) ? this.itemsIndexArray[2].startIndex : 9, !isNullOrUndefined(this.itemsIndexArray[2]) ? this.itemsIndexArray[2].endIndex : 11);\n };\n Toolbar.prototype.showSelectionTool = function (enableSelectionTool) {\n this.isSelectionBtnVisible = enableSelectionTool;\n //For mobile devices, the default previous value for SelectionTool has been passed as (13,13).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(enableSelectionTool, !isNullOrUndefined(this.itemsIndexArray[3]) ? this.itemsIndexArray[3].startIndex : 13, !isNullOrUndefined(this.itemsIndexArray[3]) ? this.itemsIndexArray[3].endIndex : 13);\n };\n Toolbar.prototype.showScrollingTool = function (enableScrollingTool) {\n this.isScrollingBtnVisible = enableScrollingTool;\n //For mobile devices, the default previous value for ScrollingTool has been passed as (14,14).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(enableScrollingTool, !isNullOrUndefined(this.itemsIndexArray[4]) ? this.itemsIndexArray[4].startIndex : 14, !isNullOrUndefined(this.itemsIndexArray[4]) ? this.itemsIndexArray[4].endIndex : 14);\n };\n Toolbar.prototype.showDownloadOption = function (enableDownloadOption) {\n this.isDownloadBtnVisible = enableDownloadOption;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n //The itemsIndexArray is null, the default previous value for DownloadOption has been passed as (26,26).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(enableDownloadOption, !isNullOrUndefined(this.itemsIndexArray[12]) ? this.itemsIndexArray[12].startIndex : 26, !isNullOrUndefined(this.itemsIndexArray[12]) ? this.itemsIndexArray[12].endIndex : 26);\n }\n else {\n this.applyHideToToolbar(enableDownloadOption, 5, 5);\n }\n };\n Toolbar.prototype.showPrintOption = function (enablePrintOption) {\n this.isPrintBtnVisible = enablePrintOption;\n //For mobile devices, the default previous value for PrintOption has been passed as (25,25).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(enablePrintOption, !isNullOrUndefined(this.itemsIndexArray[11]) ? this.itemsIndexArray[11].startIndex : 25, !isNullOrUndefined(this.itemsIndexArray[11]) ? this.itemsIndexArray[11].endIndex : 25);\n };\n Toolbar.prototype.showSearchOption = function (enableSearchOption) {\n this.isSearchBtnVisible = enableSearchOption;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n //The itemsIndexArray is null, the default previous value for SearchOption has been passed as (22,22).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(enableSearchOption, !isNullOrUndefined(this.itemsIndexArray[8]) ? this.itemsIndexArray[8].startIndex : 22, !isNullOrUndefined(this.itemsIndexArray[8]) ? this.itemsIndexArray[8].endIndex : 22);\n }\n else {\n this.applyHideToToolbar(enableSearchOption, 5, 5);\n }\n };\n Toolbar.prototype.showUndoRedoTool = function (isEnable) {\n this.isUndoRedoBtnsVisible = isEnable;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n //The itemsIndexArray is null, the default previous value for PageNavigationTool has been passed as (16,17).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(isEnable, !isNullOrUndefined(this.itemsIndexArray[5]) ? this.itemsIndexArray[5].startIndex : 16, !isNullOrUndefined(this.itemsIndexArray[5]) ? this.itemsIndexArray[5].endIndex : 17);\n }\n else {\n this.applyHideToToolbar(isEnable, 2, 3);\n }\n };\n Toolbar.prototype.showCommentOption = function (isEnable) {\n if (!this.pdfViewer.enableStickyNotesAnnotation) {\n this.isCommentBtnVisible = isEnable;\n //For mobile devices, the default previous value for CommentOption has been passed as (18,19).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(this.pdfViewer.enableStickyNotesAnnotation, !isNullOrUndefined(this.itemsIndexArray[6]) ? this.itemsIndexArray[6].startIndex : 18, !isNullOrUndefined(this.itemsIndexArray[6]) ? this.itemsIndexArray[6].endIndex : 19);\n }\n else {\n this.isCommentBtnVisible = isEnable;\n //For mobile devices, the default previous value for CommentOption has been passed as (18,19).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(isEnable, !isNullOrUndefined(this.itemsIndexArray[6]) ? this.itemsIndexArray[6].startIndex : 18, !isNullOrUndefined(this.itemsIndexArray[6]) ? this.itemsIndexArray[6].endIndex : 19);\n }\n };\n Toolbar.prototype.showAnnotationEditTool = function (isEnable) {\n this.isAnnotationEditBtnVisible = isEnable;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n //The itemsIndexArray is null, the default previous value for AnnotationEditTool has been passed as (23,23).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(isEnable, !isNullOrUndefined(this.itemsIndexArray[9]) ? this.itemsIndexArray[9].startIndex : 23, !isNullOrUndefined(this.itemsIndexArray[9]) ? this.itemsIndexArray[9].endIndex : 23);\n }\n else {\n this.applyHideToToolbar(isEnable, 4, 4);\n }\n };\n Toolbar.prototype.showFormDesignerEditTool = function (isEnable) {\n this.isFormDesignerEditBtnVisible = isEnable;\n //For mobile devices, the default previous value for FormDesignerEditTool has been passed as (24,24).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(isEnable, !isNullOrUndefined(this.itemsIndexArray[10]) ? this.itemsIndexArray[10].startIndex : 24, !isNullOrUndefined(this.itemsIndexArray[10]) ? this.itemsIndexArray[10].endIndex : 24);\n };\n Toolbar.prototype.showSubmitForm = function (isEnable) {\n this.isSubmitbtnvisible = isEnable;\n //For mobile devices, the default previous value for SubmitForm has been passed as (20,21).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(isEnable, !isNullOrUndefined(this.itemsIndexArray[7]) ? this.itemsIndexArray[7].startIndex : 20, !isNullOrUndefined(this.itemsIndexArray[7]) ? this.itemsIndexArray[7].endIndex : 21);\n };\n Toolbar.prototype.enableOpenOption = function (enableOpenOption) {\n this.enableItems(this.openDocumentItem.parentElement, enableOpenOption);\n };\n Toolbar.prototype.enablePageNavigationTool = function (enablePageNavigationTool) {\n this.enableItems(this.firstPageItem.parentElement, enablePageNavigationTool);\n this.enableItems(this.previousPageItem.parentElement, enablePageNavigationTool);\n this.enableItems(this.nextPageItem.parentElement, enablePageNavigationTool);\n this.enableItems(this.lastPageItem.parentElement, enablePageNavigationTool);\n this.currentPageBox.readonly = !enablePageNavigationTool;\n };\n Toolbar.prototype.enableMagnificationTool = function (enableMagnificationTool) {\n this.enableItems(this.zoomInItem.parentElement, enableMagnificationTool);\n this.enableItems(this.zoomOutItem.parentElement, enableMagnificationTool);\n this.zoomDropDown.readonly = !enableMagnificationTool;\n };\n Toolbar.prototype.enableSelectionTool = function (enableSelectionTool) {\n if (this.textSelectItem && this.textSelectItem.parentElement) {\n this.enableItems(this.textSelectItem.parentElement, enableSelectionTool);\n }\n };\n Toolbar.prototype.enableScrollingTool = function (enableScrollingTool) {\n this.enableItems(this.panItem.parentElement, enableScrollingTool);\n };\n Toolbar.prototype.enableDownloadOption = function (enableDownloadOption) {\n this.enableItems(this.downloadItem.parentElement, enableDownloadOption);\n };\n Toolbar.prototype.enablePrintOption = function (enablePrintOption) {\n this.enableItems(this.printItem.parentElement, enablePrintOption);\n };\n Toolbar.prototype.enableSearchOption = function (enableSearchOption) {\n this.enableItems(this.textSearchItem.parentElement, enableSearchOption);\n };\n Toolbar.prototype.enableUndoRedoTool = function (isEnable) {\n this.enableItems(this.undoItem.parentElement, isEnable);\n this.enableItems(this.redoItem.parentElement, isEnable);\n };\n Toolbar.prototype.enableAnnotationEditTool = function (isEnable) {\n this.enableItems(this.annotationItem.parentElement, isEnable);\n };\n Toolbar.prototype.enableFormDesignerEditTool = function (isEnable) {\n this.enableItems(this.formDesignerItem.parentElement, isEnable);\n };\n Toolbar.prototype.enableCommentsTool = function (isEnable) {\n if (this.pdfViewer.enableStickyNotesAnnotation) {\n this.enableItems(this.annotationItem.parentElement, isEnable);\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.resetToolbar = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (!isNullOrUndefined(this.currentPageBox)) {\n this.currentPageBox.min = 0;\n this.currentPageBox.value = 0;\n }\n this.updateTotalPage();\n this.updateToolbarItems();\n if (this.annotationToolbarModule) {\n this.annotationToolbarModule.clear();\n }\n else {\n if (this.annotationToolbarModule) {\n if (this.annotationToolbarModule.propertyToolbar) {\n this.annotationToolbarModule.propertyToolbar.destroy();\n }\n // eslint:disable-next-line\n var commentsContainer = document.getElementById(this.pdfViewer.element.id + '_commentscontentcontainer');\n if (commentsContainer) {\n commentsContainer.innerHTML = '';\n }\n }\n }\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.updateToolbarItems = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (this.toolbar) {\n if (this.pdfViewerBase.pageCount === 0) {\n this.enableItems(this.downloadItem.parentElement, false);\n this.enableItems(this.printItem.parentElement, false);\n this.enableItems(this.commentItem.parentElement, false);\n this.updateUndoRedoButtons();\n this.updateNavigationButtons();\n this.enableItems(this.zoomInItem.parentElement, false);\n this.enableItems(this.zoomOutItem.parentElement, false);\n if (this.pdfViewer.magnificationModule) {\n this.zoomDropDown.readonly = true;\n }\n this.enableItems(this.submitItem.parentElement, false);\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_currentPageInputContainer'), false);\n this.enableItems(this.pdfViewerBase.getElement('_zoomDropDownContainer'), false);\n this.enableItems(this.textSelectItem.parentElement, false);\n this.enableItems(this.annotationItem.parentElement, false);\n this.enableItems(this.formDesignerItem.parentElement, false);\n this.enableItems(this.panItem.parentElement, false);\n this.enableItems(this.textSearchItem.parentElement, false);\n this.deSelectItem(this.annotationItem);\n if (this.annotationToolbarModule) {\n this.annotationToolbarModule.resetToolbar();\n }\n this.deSelectItem(this.formDesignerItem);\n if (this.formDesignerToolbarModule) {\n this.formDesignerToolbarModule.resetFormDesignerToolbar();\n }\n }\n else if (this.pdfViewerBase.pageCount > 0) {\n var obj = this.pdfViewerBase.getElement('_currentPageInputContainer');\n if (obj) {\n this.enableItems(this.downloadItem.parentElement, true);\n this.enableItems(this.printItem.parentElement, true);\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_currentPageInputContainer'), true);\n this.enableItems(this.pdfViewerBase.getElement('_zoomDropDownContainer'), true);\n this.updateUndoRedoButtons();\n this.updateNavigationButtons();\n this.updateZoomButtons();\n if (this.pdfViewer.magnificationModule) {\n this.zoomDropDown.readonly = false;\n }\n this.updateInteractionItems();\n // modify this condition if new annotation types are added.\n if (this.pdfViewer.annotationModule && this.pdfViewer.enableAnnotation) {\n this.enableItems(this.annotationItem.parentElement, true);\n }\n if (this.pdfViewer.formDesignerModule && this.pdfViewer.enableFormDesigner) {\n this.enableItems(this.formDesignerItem.parentElement, true);\n }\n if (this.pdfViewer.textSearchModule && this.pdfViewer.enableTextSearch) {\n this.enableItems(this.textSearchItem.parentElement, true);\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.enableStickyNotesAnnotation) {\n this.enableItems(this.commentItem.parentElement, true);\n }\n }\n }\n if (this.pdfViewer.toolbarSettings.annotationToolbarItems) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.toolbarSettings.annotationToolbarItems.length === 0 || !this.pdfViewer.annotationModule || !this.pdfViewer.enableAnnotationToolbar) {\n this.enableToolbarItem(['AnnotationEditTool'], false);\n }\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.length === 0 || !this.pdfViewer.formDesignerModule || !this.pdfViewer.enableFormDesignerToolbar) {\n this.enableToolbarItem(['FormDesignerEditTool'], false);\n }\n }\n if (!this.pdfViewer.enableDownload) {\n this.enableDownloadOption(false);\n }\n if (!this.pdfViewer.enablePrint) {\n this.enablePrintOption(false);\n }\n }\n }\n else {\n if (this.pdfViewerBase.pageCount === 0) {\n this.enableItems(this.textSearchItem.parentElement, false);\n this.enableItems(this.moreOptionItem.parentElement, false);\n this.enableItems(this.annotationItem.parentElement, false);\n }\n else if (this.pdfViewerBase.pageCount > 0) {\n this.enableItems(this.textSearchItem.parentElement, true);\n this.enableItems(this.moreOptionItem.parentElement, true);\n if (this.pdfViewer.annotationModule && this.pdfViewer.enableAnnotation) {\n this.enableItems(this.annotationItem.parentElement, true);\n }\n if (!this.pdfViewer.annotationModule || !this.pdfViewer.enableAnnotationToolbar) {\n this.enableToolbarItem(['AnnotationEditTool'], false);\n }\n this.updateUndoRedoButtons();\n if (this.pdfViewer && this.pdfViewer.element && this.pdfViewer.element.id && this.pdfViewer.isAnnotationToolbarOpen) {\n var annotationId = this.pdfViewer.element.id + '_annotationIcon';\n this.annotationToolbarModule.createAnnotationToolbarForMobile(annotationId);\n }\n }\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.updateNavigationButtons = function () {\n if (this.pdfViewer.navigationModule && !this.isPageNavigationToolDisabled) {\n if (this.pdfViewerBase.pageCount === 0 || (this.pdfViewerBase.currentPageNumber === 1 && this.pdfViewerBase.pageCount === 1)) {\n this.enableItems(this.firstPageItem.parentElement, false);\n this.enableItems(this.previousPageItem.parentElement, false);\n this.enableItems(this.nextPageItem.parentElement, false);\n this.enableItems(this.lastPageItem.parentElement, false);\n }\n else if (this.pdfViewerBase.currentPageNumber === 1 && this.pdfViewerBase.pageCount > 0) {\n this.enableItems(this.firstPageItem.parentElement, false);\n this.enableItems(this.previousPageItem.parentElement, false);\n this.enableItems(this.nextPageItem.parentElement, true);\n this.enableItems(this.lastPageItem.parentElement, true);\n }\n else if (this.pdfViewerBase.currentPageNumber === this.pdfViewerBase.pageCount && this.pdfViewerBase.pageCount > 0) {\n this.enableItems(this.firstPageItem.parentElement, true);\n this.enableItems(this.previousPageItem.parentElement, true);\n this.enableItems(this.nextPageItem.parentElement, false);\n this.enableItems(this.lastPageItem.parentElement, false);\n }\n else if (this.pdfViewerBase.currentPageNumber > 1 && this.pdfViewerBase.currentPageNumber < this.pdfViewerBase.pageCount) {\n this.enableItems(this.firstPageItem.parentElement, true);\n this.enableItems(this.previousPageItem.parentElement, true);\n this.enableItems(this.nextPageItem.parentElement, true);\n this.enableItems(this.lastPageItem.parentElement, true);\n }\n }\n else {\n this.enableItems(this.firstPageItem.parentElement, false);\n this.enableItems(this.previousPageItem.parentElement, false);\n this.enableItems(this.nextPageItem.parentElement, false);\n this.enableItems(this.lastPageItem.parentElement, false);\n this.currentPageBox.readonly = true;\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.updateZoomButtons = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.magnificationModule && !this.isMagnificationToolDisabled && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n if (this.pdfViewer.magnificationModule.zoomFactor <= 0.1) {\n this.enableItems(this.zoomInItem.parentElement, true);\n this.enableItems(this.zoomOutItem.parentElement, false);\n }\n else if (this.pdfViewer.magnificationModule.zoomFactor >= 4) {\n this.enableItems(this.zoomInItem.parentElement, false);\n this.enableItems(this.zoomOutItem.parentElement, true);\n }\n else {\n this.enableItems(this.zoomInItem.parentElement, true);\n this.enableItems(this.zoomOutItem.parentElement, true);\n }\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.updateUndoRedoButtons = function () {\n if (this.pdfViewer.annotationModule) {\n if (this.pdfViewerBase.pageCount > 0) {\n if (isBlazor()) {\n this.enableCollectionAvailableInBlazor(this.pdfViewer.annotationModule.actionCollection, 'undo');\n this.enableCollectionAvailableInBlazor(this.pdfViewer.annotationModule.redoCollection, 'redo');\n }\n else {\n if (!isNullOrUndefined(this.undoItem) && !isNullOrUndefined(this.undoItem.parentElement)) {\n this.enableCollectionAvailable(this.pdfViewer.annotationModule.actionCollection, this.undoItem.parentElement);\n }\n if (!isNullOrUndefined(this.redoItem) && !isNullOrUndefined(this.redoItem.parentElement)) {\n this.enableCollectionAvailable(this.pdfViewer.annotationModule.redoCollection, this.redoItem.parentElement);\n }\n }\n }\n else {\n if (isBlazor()) {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('DisableUndoRedoButton', null);\n this.pdfViewerBase.blazorUIAdaptor.disableUndoRedoButton();\n }\n else {\n this.disableUndoRedoButtons();\n }\n }\n }\n else {\n if (isBlazor()) {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('DisableUndoRedoButton', null);\n this.pdfViewerBase.blazorUIAdaptor.disableUndoRedoButton();\n }\n else {\n this.disableUndoRedoButtons();\n }\n }\n };\n // eslint-disable-next-line\n Toolbar.prototype.enableCollectionAvailable = function (collection, item) {\n if (collection.length > 0) {\n this.toolbar.enableItems(item, true);\n }\n else {\n this.toolbar.enableItems(item, false);\n }\n };\n // eslint-disable-next-line\n Toolbar.prototype.enableCollectionAvailableInBlazor = function (collection, item) {\n if (collection.length > 0) {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateUndoRedoButton', item, true);\n this.pdfViewerBase.blazorUIAdaptor.updateUndoRedoButton(item, true);\n }\n else {\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateUndoRedoButton', item, false);\n this.pdfViewerBase.blazorUIAdaptor.updateUndoRedoButton(item, false);\n }\n };\n Toolbar.prototype.disableUndoRedoButtons = function () {\n this.enableItems(this.undoItem.parentElement, false);\n this.enableItems(this.redoItem.parentElement, false);\n };\n /**\n * @private\n */\n Toolbar.prototype.destroy = function () {\n if (!isBlazor()) {\n this.unWireEvent();\n this.destroyComponent();\n if (this.moreDropDown) {\n this.moreDropDown.destroy();\n }\n if (this.annotationToolbarModule) {\n this.annotationToolbarModule.destroy();\n }\n if (this.formDesignerToolbarModule) {\n this.formDesignerToolbarModule.destroy();\n }\n if (this.toolbar) {\n this.toolbar.destroy();\n }\n if (this.toolbarElement) {\n this.toolbarElement.parentElement.removeChild(this.toolbarElement);\n }\n }\n };\n Toolbar.prototype.destroyComponent = function () {\n // eslint-disable-next-line\n var componentElement = [this.openDocumentItem, this.firstPageItem, this.previousPageItem, this.nextPageItem,\n this.lastPageItem, this.currentPageBoxElement, this.zoomOutItem, this.zoomInItem, this.zoomDropdownItem, this.textSelectItem,\n this.panItem, this.submitItem, this.undoItem, this.redoItem, this.commentItem, this.textSearchItem, this.annotationItem,\n this.formDesignerItem, this.printItem, this.downloadItem];\n for (var i = 0; i < componentElement.length; i++) {\n if (componentElement[i]) {\n this.destroyDependentComponent(componentElement[i]);\n }\n }\n };\n Toolbar.prototype.destroyDependentComponent = function (component) {\n if (component.ej2_instances) {\n for (var i = component.ej2_instances.length - 1; i >= 0; i--) {\n component.ej2_instances[i].destroy();\n }\n }\n };\n /**\n * @param pageIndex\n * @private\n */\n Toolbar.prototype.updateCurrentPage = function (pageIndex) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (!isBlazor()) {\n if (!isNullOrUndefined(this.currentPageBox)) {\n if (this.currentPageBox.value === pageIndex) {\n this.currentPageBoxElement.value = pageIndex.toString();\n }\n this.currentPageBox.value = pageIndex;\n }\n }\n else {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('OnPageChanged', pageIndex);\n this.pdfViewerBase.blazorUIAdaptor.pageChanged(pageIndex);\n }\n this.pdfViewerBase.currentPageNumber = pageIndex;\n this.pdfViewer.currentPageNumber = pageIndex;\n }\n else {\n this.pdfViewerBase.mobileSpanContainer.innerHTML = pageIndex.toString();\n this.pdfViewerBase.mobilecurrentPageContainer.innerHTML = pageIndex.toString();\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.updateTotalPage = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (this.pdfViewerBase.pageCount > 0) {\n if (!isNullOrUndefined(this.currentPageBox))\n this.currentPageBox.min = 1;\n }\n if (!isNullOrUndefined(this.totalPageItem))\n this.totalPageItem.textContent = this.pdfViewer.localeObj.getConstant('of') + this.pdfViewerBase.pageCount.toString();\n }\n };\n /**\n * @param event\n * @private\n */\n Toolbar.prototype.openFileDialogBox = function (event) {\n event.preventDefault();\n this.fileInputElement.click();\n };\n Toolbar.prototype.createToolbar = function (controlWidth) {\n var _this = this;\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_toolbarContainer', className: 'e-pv-toolbar' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.toolbar = new tool({\n clicked: this.toolbarClickHandler, width: '', height: '', overflowMode: 'Popup', cssClass: 'e-pv-toolbar-scroll',\n items: this.createToolbarItems(), created: function () {\n _this.createZoomDropdown();\n _this.createNumericTextBox();\n _this.toolbar.refreshOverflow();\n }\n });\n this.toolbar.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.appendTo(this.toolbarElement);\n this.applyToolbarSettings();\n this.afterToolbarCreation();\n this.updateTotalPage();\n this.toolbarElement.addEventListener('keydown', this.onToolbarKeydown);\n this.toolbarElement.setAttribute('aria-label', 'Toolbar');\n }\n else {\n this.createToolbarItemsForMobile();\n this.afterToolbarCreationInMobile();\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.applyToolbarSettingsForMobile();\n this.disableUndoRedoButtons();\n }\n return this.toolbarElement;\n };\n /**\n * Create a custom toolbar item in the PdfViewer\n *\n * @param {number} startIndex\n * @returns void\n */\n Toolbar.prototype.createCustomItem = function (startIndex) {\n for (var j = startIndex; j < this.pdfViewer.toolbarSettings.toolbarItems.length; j++) {\n if (typeof (this.pdfViewer.toolbarSettings.toolbarItems[j]) === 'object') {\n var customToolbarItem = this.pdfViewer.toolbarSettings.toolbarItems[j];\n if (!isNullOrUndefined(customToolbarItem.prefixIcon) && customToolbarItem.prefixIcon != '') {\n customToolbarItem.prefixIcon += ' e-pv-icon';\n }\n //Generate a text button template\n if ((isNullOrUndefined(customToolbarItem.prefixIcon) || customToolbarItem.prefixIcon == '') && isNullOrUndefined(customToolbarItem.template)) {\n var text = !isNullOrUndefined(customToolbarItem.text) ? customToolbarItem.text : \"Custom Toolbar Item\";\n customToolbarItem.template = '';\n }\n this.toolItems.push(customToolbarItem);\n if (isNullOrUndefined(customToolbarItem.align) || customToolbarItem.align === 'left' || customToolbarItem.align === 'Left') {\n this.toolItems.push({ type: 'Separator', align: 'Left' });\n }\n }\n else {\n break;\n }\n }\n };\n // eslint-disable-next-line\n Toolbar.prototype.createToolbarItems = function () {\n var currentPageInputTemplate = this.createCurrentPageInputTemplate();\n var totalPageTemplate = this.createTotalPageTemplate();\n var zoomDropDownTemplateString = this.createZoomDropdownElement();\n // eslint-disable-next-line\n var submitButton = '';\n var defaultToolbarOrder = ['OpenOption', 'PageNavigationTool', 'MagnificationTool', 'SelectionTool', 'PanTool', 'UndoRedoTool', 'CommentTool', 'SubmitForm', 'SearchOption', 'AnnotationEditTool', 'FormDesignerEditTool', 'PrintOption', 'DownloadOption',];\n for (var i = 0; i < defaultToolbarOrder.length; i++) {\n if (i === 0) {\n this.createCustomItem(i);\n }\n var toolbarItemOrder = i;\n switch (toolbarItemOrder) {\n case 0:\n this.itemsIndexArray.push({ item: 'OpenOption', startIndex: this.toolItems.length, endIndex: this.toolItems.length });\n this.toolItems.push({ prefixIcon: 'e-pv-open-document-icon e-pv-icon', cssClass: 'e-pv-open-document-container', id: this.pdfViewer.element.id + '_open', text: this.pdfViewer.localeObj.getConstant('Open text'), align: 'Left' });\n this.toolItems.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-open-separator-container' });\n break;\n case 1:\n if (!this.pdfViewer.enableRtl) {\n this.itemsIndexArray.push({ item: 'PageNavigationTool', startIndex: this.toolItems.length, endIndex: this.toolItems.length + 5 });\n // eslint-disable-next-line max-len\n this.toolItems.push({ prefixIcon: 'e-pv-first-page-navigation-icon e-pv-icon', cssClass: 'e-pv-first-page-navigation-container', id: this.pdfViewer.element.id + '_firstPage', text: this.pdfViewer.localeObj.getConstant('First text'), align: 'Left' });\n this.toolItems.push({ prefixIcon: 'e-pv-previous-page-navigation-icon e-pv-icon', cssClass: 'e-pv-previous-page-navigation-container', id: this.pdfViewer.element.id + '_previousPage', text: this.pdfViewer.localeObj.getConstant('Previous text'), align: 'Left' });\n // eslint-disable-next-line max-len\n this.toolItems.push({ prefixIcon: 'e-pv-next-page-navigation-icon e-pv-icon', cssClass: 'e-pv-next-page-navigation-container', id: this.pdfViewer.element.id + '_nextPage', text: this.pdfViewer.localeObj.getConstant('Next text'), align: 'Left' });\n this.toolItems.push({ prefixIcon: 'e-pv-last-page-navigation-icon e-pv-icon', cssClass: 'e-pv-last-page-navigation-container', id: this.pdfViewer.element.id + '_lastPage', text: this.pdfViewer.localeObj.getConstant('Last text'), align: 'Left' });\n this.toolItems.push({ template: currentPageInputTemplate, align: 'Left', cssClass: 'e-pv-current-page-container' });\n this.toolItems.push({ template: totalPageTemplate, align: 'Left', cssClass: 'e-pv-total-page-container' });\n }\n else {\n // eslint-disable-next-line max-len\n this.toolItems.push({ prefixIcon: 'e-pv-last-page-navigation-icon e-pv-icon', cssClass: 'e-pv-last-page-navigation-container', id: this.pdfViewer.element.id + '_firstPage', text: this.pdfViewer.localeObj.getConstant('First text'), align: 'Left' });\n this.toolItems.push({ prefixIcon: 'e-pv-next-page-navigation-icon e-pv-icon', cssClass: 'e-pv-next-page-navigation-container', id: this.pdfViewer.element.id + '_previousPage', text: this.pdfViewer.localeObj.getConstant('Previous text'), align: 'Left' });\n // eslint-disable-next-line max-len\n this.toolItems.push({ prefixIcon: 'e-pv-previous-page-navigation-icon e-pv-icon', cssClass: 'e-pv-previous-page-navigation-container', id: this.pdfViewer.element.id + '_nextPage', text: this.pdfViewer.localeObj.getConstant('Next text'), align: 'Left' });\n this.toolItems.push({ prefixIcon: 'e-pv-first-page-navigation-icon e-pv-icon', cssClass: 'e-pv-first-page-navigation-container', id: this.pdfViewer.element.id + '_lastPage', text: this.pdfViewer.localeObj.getConstant('Last text'), align: 'Left' });\n this.toolItems.push({ template: totalPageTemplate, align: 'Left', cssClass: 'e-pv-total-page-container' });\n this.toolItems.push({ template: currentPageInputTemplate, align: 'Left', cssClass: 'e-pv-current-page-container' });\n }\n this.toolItems.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-navigation-separator-container' });\n break;\n case 2:\n this.itemsIndexArray.push({ item: 'MagnificationTool', startIndex: this.toolItems.length, endIndex: this.toolItems.length + 2 });\n this.toolItems.push({ prefixIcon: 'e-pv-zoom-out-icon e-pv-icon', cssClass: 'e-pv-zoom-out-container', id: this.pdfViewer.element.id + '_zoomOut', text: this.pdfViewer.localeObj.getConstant('Zoom out text'), align: 'Left' });\n this.toolItems.push({ prefixIcon: 'e-pv-zoom-in-icon e-pv-icon', cssClass: 'e-pv-zoom-in-container', id: this.pdfViewer.element.id + '_zoomIn', text: this.pdfViewer.localeObj.getConstant('Zoom in text'), align: 'Left' });\n this.toolItems.push({ template: zoomDropDownTemplateString, cssClass: 'e-pv-zoom-drop-down-container', align: 'Left' });\n this.toolItems.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-magnification-separator-container' });\n break;\n case 3:\n this.itemsIndexArray.push({ item: 'SelectionTool', startIndex: this.toolItems.length, endIndex: this.toolItems.length });\n this.toolItems.push({ prefixIcon: 'e-pv-text-select-tool-icon e-pv-icon', cssClass: 'e-pv-text-select-tool-container', id: this.pdfViewer.element.id + '_selectTool', text: this.pdfViewer.localeObj.getConstant('Selection text') });\n break;\n case 4:\n this.itemsIndexArray.push({ item: 'PanTool', startIndex: this.toolItems.length, endIndex: this.toolItems.length });\n this.toolItems.push({ prefixIcon: 'e-pv-pan-tool-icon e-pv-icon', cssClass: 'e-pv-pan-tool-container', id: this.pdfViewer.element.id + '_handTool', text: this.pdfViewer.localeObj.getConstant('Pan text') });\n this.toolItems.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-pan-separator-container' });\n break;\n case 5:\n this.itemsIndexArray.push({ item: 'UndoRedoTool', startIndex: this.toolItems.length, endIndex: this.toolItems.length + 1 });\n this.toolItems.push({ prefixIcon: 'e-pv-undo-icon e-pv-icon', cssClass: 'e-pv-undo-container', id: this.pdfViewer.element.id + '_undo', text: this.pdfViewer.localeObj.getConstant('Undo'), align: 'Left' });\n this.toolItems.push({ prefixIcon: 'e-pv-redo-icon e-pv-icon', cssClass: 'e-pv-redo-container', id: this.pdfViewer.element.id + '_redo', text: this.pdfViewer.localeObj.getConstant('Redo'), align: 'Left' });\n this.toolItems.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-undo-separator-container' });\n break;\n case 6:\n this.itemsIndexArray.push({ item: 'CommentTool', startIndex: this.toolItems.length, endIndex: this.toolItems.length + 1 });\n this.toolItems.push({ prefixIcon: 'e-pv-comment-icon e-pv-icon', cssClass: 'e-pv-comment-container', id: this.pdfViewer.element.id + '_comment', text: this.pdfViewer.localeObj.getConstant('Add Comments'), align: 'Left' });\n this.toolItems.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-comment-separator-container' });\n break;\n case 7:\n this.itemsIndexArray.push({ item: 'SubmitForm', startIndex: this.toolItems.length, endIndex: this.toolItems.length });\n this.toolItems.push({ template: submitButton, cssClass: 'e-pv-submit', align: 'Left' });\n break;\n case 8:\n this.itemsIndexArray.push({ item: 'SearchOption', startIndex: this.toolItems.length, endIndex: this.toolItems.length });\n this.toolItems.push({ prefixIcon: 'e-pv-text-search-icon e-pv-icon', cssClass: 'e-pv-text-search-container', id: this.pdfViewer.element.id + '_search', text: this.pdfViewer.localeObj.getConstant('Search text'), align: 'Right' });\n break;\n case 9:\n this.itemsIndexArray.push({ item: 'AnnotationEditTool', startIndex: this.toolItems.length, endIndex: this.toolItems.length });\n this.toolItems.push({ prefixIcon: 'e-pv-annotation-icon e-pv-icon', cssClass: 'e-pv-annotation-container', id: this.pdfViewer.element.id + '_annotation', text: this.pdfViewer.localeObj.getConstant('Annotation Edit text'), align: 'Right' });\n break;\n case 10:\n this.itemsIndexArray.push({ item: 'FormDesignerEditTool', startIndex: this.toolItems.length, endIndex: this.toolItems.length });\n this.toolItems.push({ prefixIcon: 'e-pv-formdesigner-icon e-pv-icon', cssClass: 'e-pv-formdesigner-container', id: this.pdfViewer.element.id + '_formdesigner', text: this.pdfViewer.localeObj.getConstant('FormDesigner Edit text'), align: 'Right' });\n break;\n case 11:\n this.itemsIndexArray.push({ item: 'PrintOption', startIndex: this.toolItems.length, endIndex: this.toolItems.length });\n this.toolItems.push({ prefixIcon: 'e-pv-print-document-icon e-pv-icon', cssClass: 'e-pv-print-document-container', id: this.pdfViewer.element.id + '_print', text: this.pdfViewer.localeObj.getConstant('Print text'), align: 'Right' });\n break;\n case 12:\n this.itemsIndexArray.push({ item: 'DownloadOption', startIndex: this.toolItems.length, endIndex: this.toolItems.length });\n this.toolItems.push({ prefixIcon: 'e-pv-download-document-icon e-pv-icon', cssClass: 'e-pv-download-document-container', id: this.pdfViewer.element.id + '_download', text: this.pdfViewer.localeObj.getConstant('Download'), align: 'Right' });\n break;\n }\n for (var k = 0; k < this.pdfViewer.toolbarSettings.toolbarItems.length; k++) {\n if (defaultToolbarOrder[i] === this.pdfViewer.toolbarSettings.toolbarItems[k]) {\n if (typeof (this.pdfViewer.toolbarSettings.toolbarItems[k + 1]) === 'object') {\n this.createCustomItem(k + 1);\n }\n else {\n break;\n }\n }\n }\n }\n return this.toolItems;\n };\n Toolbar.prototype.afterToolbarCreationInMobile = function () {\n this.itemsContainer = this.toolbar.element.childNodes[0];\n this.itemsContainer.id = this.pdfViewer.element.id + '_toolbarItemsContainer';\n this.openDocumentItem = this.addClassToolbarItem('_open', 'e-pv-open-document', this.pdfViewer.localeObj.getConstant('Open'));\n this.undoItem = this.addClassToolbarItem('_undo', 'e-pv-undo', this.pdfViewer.localeObj.getConstant('Undo'));\n this.redoItem = this.addClassToolbarItem('_redo', 'e-pv-redo', this.pdfViewer.localeObj.getConstant('Redo'));\n this.annotationItem = this.addClassToolbarItem('_annotation', 'e-pv-annotation', this.pdfViewer.localeObj.getConstant('Annotation'));\n this.textSearchItem = this.addClassToolbarItem('_search', 'e-pv-text-search', this.pdfViewer.localeObj.getConstant('Text Search'));\n };\n Toolbar.prototype.afterToolbarCreation = function () {\n this.itemsContainer = this.toolbar.element.childNodes[0];\n this.itemsContainer.id = this.pdfViewer.element.id + '_toolbarItemsContainer';\n this.openDocumentItem = this.addClassToolbarItem('_open', 'e-pv-open-document', this.pdfViewer.localeObj.getConstant('Open'));\n this.undoItem = this.addClassToolbarItem('_undo', 'e-pv-undo', this.pdfViewer.localeObj.getConstant('Undo'));\n this.redoItem = this.addClassToolbarItem('_redo', 'e-pv-redo', this.pdfViewer.localeObj.getConstant('Redo'));\n if (!this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n this.firstPageItem = this.addClassToolbarItem('_firstPage', 'e-pv-first-page-navigation', this.pdfViewer.localeObj.getConstant('Go To First Page'));\n this.previousPageItem = this.addClassToolbarItem('_previousPage', 'e-pv-previous-page-navigation', this.pdfViewer.localeObj.getConstant('Previous Page'));\n // eslint-disable-next-line max-len\n this.nextPageItem = this.addClassToolbarItem('_nextPage', 'e-pv-next-page-navigation', this.pdfViewer.localeObj.getConstant('Next Page'));\n this.lastPageItem = this.addClassToolbarItem('_lastPage', 'e-pv-last-page-navigation', this.pdfViewer.localeObj.getConstant('Go To Last Page'));\n }\n else {\n // eslint-disable-next-line max-len\n this.firstPageItem = this.addClassToolbarItem('_firstPage', 'e-pv-last-page-navigation', this.pdfViewer.localeObj.getConstant('Go To First Page'));\n this.previousPageItem = this.addClassToolbarItem('_previousPage', 'e-pv-next-page-navigation', this.pdfViewer.localeObj.getConstant('Previous Page'));\n // eslint-disable-next-line max-len\n this.nextPageItem = this.addClassToolbarItem('_nextPage', 'e-pv-previous-page-navigation', this.pdfViewer.localeObj.getConstant('Next Page'));\n this.lastPageItem = this.addClassToolbarItem('_lastPage', 'e-pv-first-page-navigation', this.pdfViewer.localeObj.getConstant('Go To Last Page'));\n }\n this.zoomOutItem = this.addClassToolbarItem('_zoomOut', 'e-pv-zoom-out', this.pdfViewer.localeObj.getConstant('Zoom Out'));\n this.zoomInItem = this.addClassToolbarItem('_zoomIn', 'e-pv-zoom-in', this.pdfViewer.localeObj.getConstant('Zoom In'));\n // eslint-disable-next-line max-len\n this.textSelectItem = this.addClassToolbarItem('_selectTool', 'e-pv-text-select-tool', this.pdfViewer.localeObj.getConstant('Text Selection'));\n this.panItem = this.addClassToolbarItem('_handTool', 'e-pv-pan-tool', this.pdfViewer.localeObj.getConstant('Panning'));\n this.commentItem = this.addClassToolbarItem('_comment', 'e-pv-comment', this.pdfViewer.localeObj.getConstant('Add Comments'));\n // eslint-disable-next-line max-len\n this.textSearchItem = this.addClassToolbarItem('_search', 'e-pv-text-search', this.pdfViewer.localeObj.getConstant('Text Search'));\n this.textSearchItem.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Search text'));\n this.annotationItem = this.addClassToolbarItem('_annotation', 'e-pv-annotation', this.pdfViewer.localeObj.getConstant('Annotation'));\n this.annotationItem.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Annotation Edit text'));\n this.formDesignerItem = this.addClassToolbarItem('_formdesigner', 'e-pv-formdesigner', this.pdfViewer.localeObj.getConstant('FormDesigner'));\n // eslint-disable-next-line max-len\n this.printItem = this.addClassToolbarItem('_print', 'e-pv-print-document', this.pdfViewer.localeObj.getConstant('Print'));\n this.downloadItem = this.addClassToolbarItem('_download', 'e-pv-download-document', this.pdfViewer.localeObj.getConstant('Download file'));\n this.zoomDropdownItem = this.pdfViewerBase.getElement('_zoomDropDown');\n this.createTooltip(this.zoomDropdownItem, this.pdfViewer.localeObj.getConstant('Zoom'));\n this.zoomDropdownItem.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Zoom'));\n // eslint-disable-next-line max-len\n this.addPropertiesToolItemContainer(this.zoomDropdownItem.parentElement.parentElement, null, '_zoomDropDownContainer');\n this.pdfViewerBase.getElement('_zoomDropDownContainer').style.minWidth = '';\n this.createTooltip(this.currentPageBoxElement, this.pdfViewer.localeObj.getConstant('Page Number'));\n this.currentPageBoxElement.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Page Number'));\n this.submitItem = this.pdfViewerBase.getElement('_submitForm');\n this.addPropertiesToolItemContainer(this.submitItem.parentElement, 'e-pv-submit', '_submitFormContainer');\n this.createTooltip(this.submitItem, this.pdfViewer.localeObj.getConstant('SubmitForm'));\n this.submitItem.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('SubmitForm'));\n // eslint-disable-next-line max-len\n this.addPropertiesToolItemContainer(this.currentPageBoxElement.parentElement.parentElement, 'e-pv-current-page-container', '_currentPageInputContainer');\n this.pdfViewerBase.getElement('_currentPageInputContainer').style.minWidth = '20px';\n this.totalPageItem = this.pdfViewerBase.getElement('_totalPage');\n this.addPropertiesToolItemContainer(this.totalPageItem.parentElement, 'e-pv-total-page-container', '_totalPageContainer');\n };\n /**\n * @param idString\n * @param className\n * @param tooltipText\n * @param idString\n * @param className\n * @param tooltipText\n * @private\n */\n Toolbar.prototype.addClassToolbarItem = function (idString, className, tooltipText) {\n var element = this.pdfViewerBase.getElement(idString);\n element.classList.add(className);\n element.classList.add('e-pv-tbar-btn');\n element.setAttribute('aria-label', tooltipText);\n element.parentElement.classList.add(className + '-container');\n element.parentElement.classList.add('e-popup-text');\n element.parentElement.id = this.pdfViewer.element.id + idString + 'Container';\n if (element.childNodes.length > 0) {\n var spanElement = element.childNodes[0];\n spanElement.id = this.pdfViewer.element.id + idString + 'Icon';\n spanElement.classList.remove('e-icons');\n spanElement.classList.remove('e-btn-icon');\n if (this.pdfViewer.enableRtl) {\n spanElement.classList.add('e-right');\n }\n var textElement = element.childNodes[1];\n if (textElement) {\n if (textElement.classList.contains('e-tbar-btn-text')) {\n textElement.id = this.pdfViewer.element.id + idString + 'Text';\n }\n }\n }\n element.style.width = '';\n this.createTooltip(element, tooltipText);\n return element;\n };\n Toolbar.prototype.addPropertiesToolItemContainer = function (element, className, idString) {\n if (className !== null) {\n element.classList.add(className);\n }\n element.classList.add('e-popup-text');\n element.id = this.pdfViewer.element.id + idString;\n };\n Toolbar.prototype.createZoomDropdownElement = function () {\n // eslint-disable-next-line max-len\n var zoomDropdownElement = this.createToolbarItem('input', this.pdfViewer.element.id + '_zoomDropDown', null);\n return zoomDropdownElement.outerHTML;\n };\n Toolbar.prototype.createZoomDropdown = function () {\n var proxy = this;\n // eslint-disable-next-line max-len\n var items = [{ percent: '10%', id: '0' }, { percent: '25%', id: '1' }, { percent: '50%', id: '2' }, { percent: '75%', id: '3' }, { percent: '100%', id: '4' }, { percent: '125%', id: '5' },\n // eslint-disable-next-line max-len\n { percent: '150%', id: '6' }, { percent: '200%', id: '7' }, { percent: '400%', id: '8' }, { percent: proxy.pdfViewer.localeObj.getConstant('Fit Page'), id: '9' }, { percent: proxy.pdfViewer.localeObj.getConstant('Fit Width'), id: '10' }, { percent: proxy.pdfViewer.localeObj.getConstant('Automatic'), id: '11' }\n ];\n // eslint-disable-next-line max-len\n if (!proxy.pdfViewer.enableRtl) {\n proxy.zoomDropDown = new ComboBox({ dataSource: items, text: '100%', fields: { text: 'percent', value: 'id' }, readonly: true, cssClass: 'e-pv-zoom-drop-down', popupHeight: '450px', showClearButton: false, open: proxy.openZoomDropdown.bind(proxy), select: function (args) {\n if (args.e.type == 'keydown' && args.itemData.percent !== proxy.zoomDropDown.element.value) {\n proxy.zoomDropDownChange(proxy.zoomDropDown.element.value);\n args.cancel = true;\n }\n }\n });\n }\n else {\n proxy.zoomDropDown = new ComboBox({ dataSource: items, text: '100%', enableRtl: true, fields: { text: 'percent', value: 'id' }, readonly: true, cssClass: 'e-pv-zoom-drop-down-rtl', popupHeight: '450px', showClearButton: false, open: proxy.openZoomDropdown.bind(proxy), select: function (args) {\n if (args.e.type == 'keydown' && args.itemData.percent !== proxy.zoomDropDown.element.value) {\n proxy.zoomDropDownChange(proxy.zoomDropDown.element.value);\n args.cancel = true;\n }\n }\n });\n }\n proxy.zoomDropDown.appendTo(proxy.pdfViewerBase.getElement('_zoomDropDown'));\n };\n Toolbar.prototype.createCurrentPageInputTemplate = function () {\n // eslint-disable-next-line max-len\n var goToPageElement = this.createToolbarItem('input', this.pdfViewer.element.id + '_currentPageInput', null);\n return goToPageElement.outerHTML;\n };\n Toolbar.prototype.createTotalPageTemplate = function () {\n // eslint-disable-next-line max-len\n var totalPageElement = this.createToolbarItem('span', this.pdfViewer.element.id + '_totalPage', 'e-pv-total-page');\n return totalPageElement.outerHTML;\n };\n Toolbar.prototype.createNumericTextBox = function () {\n this.currentPageBox = new NumericTextBox({ value: 0, format: '##', cssClass: 'e-pv-current-page-box', showSpinButton: false });\n this.currentPageBoxElement = this.pdfViewerBase.getElement('_currentPageInput');\n this.currentPageBox.appendTo(this.currentPageBoxElement);\n };\n Toolbar.prototype.createToolbarItemsForMobile = function () {\n this.toolbarElement.classList.add('e-pv-mobile-toolbar');\n var template = '';\n this.toolbar = new tool({\n // eslint-disable-next-line max-len\n items: [{ prefixIcon: 'e-pv-open-document-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Open'), id: this.pdfViewer.element.id + '_open' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-undo-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Undo'), id: this.pdfViewer.element.id + '_undo' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-redo-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Redo'), id: this.pdfViewer.element.id + '_redo' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-annotation-icon e-pv-icon', cssClass: 'e-pv-annotation-container', tooltipText: this.pdfViewer.localeObj.getConstant('Annotation'), id: this.pdfViewer.element.id + '_annotation', align: 'Right' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-text-search-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Text Search'), id: this.pdfViewer.element.id + '_search', align: 'Right' },\n { template: template, align: 'Right' }\n ], clicked: this.toolbarClickHandler, width: '', height: '', overflowMode: 'Popup'\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.toolbarElement);\n this.openDocumentItem = this.pdfViewerBase.getElement('_open');\n this.openDocumentItem.classList.add('e-pv-open-document');\n this.openDocumentItem.firstElementChild.id = this.pdfViewer.element.id + '_openIcon';\n this.annotationItem = this.pdfViewerBase.getElement('_annotation');\n this.annotationItem.classList.add('e-pv-annotation');\n this.annotationItem.firstElementChild.id = this.pdfViewer.element.id + '_annotationIcon';\n this.textSearchItem = this.pdfViewerBase.getElement('_search');\n this.textSearchItem.classList.add('e-pv-text-search');\n this.textSearchItem.firstElementChild.id = this.pdfViewer.element.id + '_searchIcon';\n this.undoItem = this.pdfViewerBase.getElement('_undo');\n this.undoItem.classList.add('e-pv-undo');\n this.redoItem = this.pdfViewerBase.getElement('_redo');\n this.redoItem.classList.add('e-pv-redo');\n this.redoItem.firstElementChild.id = this.pdfViewer.element.id + '_redoIcon';\n this.undoItem.firstElementChild.id = this.pdfViewer.element.id + '_undoIcon';\n this.createMoreOption(this.pdfViewer.element.id + '_more_option');\n };\n Toolbar.prototype.createMoreOption = function (idString) {\n var _this = this;\n this.moreOptionItem = document.getElementById(idString);\n var items = [\n {\n text: this.pdfViewer.localeObj.getConstant('Download'), id: this.pdfViewer.element.id + '_menu_download',\n iconCss: 'e-icons e-pv-download-document-icon e-pv-icon'\n },\n {\n text: this.pdfViewer.localeObj.getConstant('Bookmarks'), id: this.pdfViewer.element.id + '_menu_bookmarks',\n iconCss: 'e-icons e-pv-bookmark-icon e-pv-icon'\n }\n ];\n this.moreDropDown = new DropDownButton({\n items: items, iconCss: 'e-pv-more-icon e-pv-icon', cssClass: 'e-caret-hide',\n open: function (args) {\n var dropdownButtonPosition = _this.moreDropDown.element.getBoundingClientRect();\n // eslint-disable-next-line max-len\n if (!_this.pdfViewer.enableRtl) {\n args.element.parentElement.style.left = dropdownButtonPosition.left + dropdownButtonPosition.width - args.element.parentElement.offsetWidth + 'px';\n }\n }, select: function (args) {\n switch (args.item.id) {\n case _this.pdfViewer.element.id + '_menu_download':\n _this.pdfViewerBase.download();\n break;\n case _this.pdfViewer.element.id + '_menu_bookmarks':\n _this.showToolbar(false);\n _this.pdfViewerBase.navigationPane.createNavigationPaneMobile('bookmarks');\n break;\n default:\n break;\n }\n }, beforeItemRender: function (args) {\n if (args.item.id === _this.pdfViewer.element.id + '_menu_bookmarks') {\n if (!_this.pdfViewer.bookmarkViewModule || !_this.pdfViewer.bookmarkViewModule.bookmarks) {\n args.element.classList.add('e-disabled');\n }\n else {\n args.element.classList.remove('e-disabled');\n }\n }\n }, close: function (args) {\n _this.moreOptionItem.blur();\n _this.pdfViewerBase.focusViewerContainer();\n }\n });\n this.moreDropDown.appendTo('#' + idString);\n };\n Toolbar.prototype.createToolbarItem = function (elementName, id, className) {\n var toolbarItem = createElement(elementName, { id: id });\n if (className !== null) {\n toolbarItem.className = className;\n }\n if (elementName === 'input' && id !== this.pdfViewer.element.id + '_zoomDropDown') {\n toolbarItem.type = 'text';\n }\n return toolbarItem;\n };\n /**\n * @param toolbarItem\n * @param tooltipText\n * @param toolbarItem\n * @param tooltipText\n * @private\n */\n Toolbar.prototype.createTooltip = function (toolbarItem, tooltipText) {\n if (tooltipText !== null) {\n // eslint-disable-next-line\n var tooltip = new Tooltip({ content: initializeCSPTemplate(function () { return tooltipText; }), opensOn: 'Hover', beforeOpen: this.onTooltipBeforeOpen.bind(this) });\n tooltip.appendTo(toolbarItem);\n }\n };\n Toolbar.prototype.onTooltipBeforeOpen = function (args) {\n if (!this.pdfViewer.toolbarSettings.showTooltip && this.toolbarElement.contains(args.target)) {\n args.cancel = true;\n }\n if (this.annotationToolbarModule) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.toolbarSettings.showTooltip && ((this.annotationToolbarModule.toolbarElement && this.annotationToolbarModule.toolbarElement.contains(args.target)) || (this.annotationToolbarModule.shapeToolbarElement && this.annotationToolbarModule.shapeToolbarElement.contains(args.target)))) {\n args.cancel = true;\n }\n }\n if (this.formDesignerToolbarModule) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.toolbarSettings.showTooltip && (this.formDesignerToolbarModule.toolbarElement && this.formDesignerToolbarModule.toolbarElement.contains(args.target))) {\n args.cancel = true;\n }\n }\n };\n Toolbar.prototype.createFileElement = function (toolbarElement) {\n if (toolbarElement) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n this.fileInputElement = createElement('input', { id: this.pdfViewer.element.id + '_fileUploadElement', styles: 'position:fixed; left:-100em', attrs: { 'type': 'file' } });\n this.fileInputElement.setAttribute('accept', '.pdf');\n this.fileInputElement.setAttribute('aria-label', 'file upload element');\n this.fileInputElement.setAttribute('tabindex', '-1');\n }\n else {\n this.fileInputElement = this.pdfViewer.element.querySelector('.e-pv-fileupload-element');\n }\n if (toolbarElement) {\n toolbarElement.appendChild(this.fileInputElement);\n }\n }\n };\n Toolbar.prototype.wireEvent = function () {\n if (this.fileInputElement) {\n this.fileInputElement.addEventListener('change', this.loadDocument);\n }\n if (!isBlazor()) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.toolbarElement.addEventListener('mouseup', this.toolbarOnMouseup.bind(this));\n this.currentPageBoxElement.addEventListener('focusout', this.textBoxFocusOut);\n this.currentPageBoxElement.addEventListener('keypress', this.navigateToPage);\n this.zoomDropDown.change = this.zoomPercentSelect.bind(this);\n this.zoomDropDown.element.addEventListener('keypress', this.onZoomDropDownInput.bind(this));\n this.zoomDropDown.element.addEventListener('click', this.onZoomDropDownInputClick.bind(this));\n }\n }\n };\n Toolbar.prototype.unWireEvent = function () {\n if (this.fileInputElement) {\n this.fileInputElement.removeEventListener('change', this.loadDocument);\n }\n if ((!Browser.isDevice || this.pdfViewer.enableDesktopMode) && !isBlazor()) {\n if (!isNullOrUndefined(this.toolbarElement)) {\n this.toolbarElement.removeEventListener('mouseup', this.toolbarOnMouseup.bind(this));\n }\n if (!isNullOrUndefined(this.currentPageBoxElement)) {\n this.currentPageBoxElement.removeEventListener('focusout', this.textBoxFocusOut);\n this.currentPageBoxElement.removeEventListener('keypress', this.navigateToPage);\n }\n if (!isNullOrUndefined(this.zoomDropDown)) {\n this.zoomDropDown.removeEventListener('change', this.zoomPercentSelect);\n this.zoomDropDown.element.removeEventListener('keypress', this.onZoomDropDownInput);\n this.zoomDropDown.element.removeEventListener('click', this.onZoomDropDownInputClick);\n }\n }\n };\n /**\n * @param viewerWidth\n * @private\n */\n Toolbar.prototype.onToolbarResize = function (viewerWidth) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewerBase.navigationPane.toolbarResize();\n }\n else {\n if (!isNullOrUndefined(this.toolbar)) {\n this.toolbar.refreshOverflow();\n }\n }\n };\n Toolbar.prototype.toolbarOnMouseup = function (event) {\n if (event.target === this.itemsContainer || event.target === this.toolbarElement) {\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n Toolbar.prototype.applyHideToToolbar = function (show, startIndex, endIndex) {\n var isHide = !show;\n for (var index = startIndex; index <= endIndex; index++) {\n if (this.toolbar.items[index]) {\n var className = this.toolbar.items[index].cssClass;\n if (className && className !== '') {\n // Querying the toolbar item\n var element = this.toolbar.element.querySelector('.' + className);\n if (element) {\n this.toolbar.hideItem(element, isHide);\n }\n }\n else {\n this.toolbar.hideItem(index, isHide);\n }\n }\n }\n };\n Toolbar.prototype.handleOpenIconClick = function (args, isKeyBoardEvent) {\n this.fileInputElement.click();\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode && !isKeyBoardEvent) {\n if (!isBlazor()) {\n args.originalEvent.target.blur();\n }\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n // eslint-disable-next-line\n Toolbar.prototype.handleToolbarBtnClick = function (args, isKeyBoardEvent) {\n this.addInkAnnotation();\n this.deSelectCommentAnnotation();\n switch (args.originalEvent.target.id || (!isNullOrUndefined(args.item) && args.item.id)) {\n case this.pdfViewer.element.id + '_open':\n case this.pdfViewer.element.id + '_openIcon':\n case this.pdfViewer.element.id + '_openText':\n this.handleOpenIconClick(args, isKeyBoardEvent);\n break;\n case this.pdfViewer.element.id + '_download':\n case this.pdfViewer.element.id + '_downloadIcon':\n case this.pdfViewer.element.id + '_downloadText':\n this.pdfViewerBase.download();\n break;\n case this.pdfViewer.element.id + '_print':\n case this.pdfViewer.element.id + '_printIcon':\n case this.pdfViewer.element.id + '_printText':\n if (this.pdfViewer.printModule) {\n this.pdfViewer.firePrintStart();\n }\n break;\n case this.pdfViewer.element.id + '_undo':\n case this.pdfViewer.element.id + '_undoIcon':\n case this.pdfViewer.element.id + '_undoText':\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.undo();\n }\n break;\n case this.pdfViewer.element.id + '_redo':\n case this.pdfViewer.element.id + '_redoIcon':\n case this.pdfViewer.element.id + '_redoText':\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.redo();\n }\n break;\n case this.pdfViewer.element.id + '_firstPage':\n case this.pdfViewer.element.id + '_firstPageIcon':\n case this.pdfViewer.element.id + '_firstPageText':\n if (this.pdfViewer.navigationModule) {\n this.pdfViewer.navigationModule.goToFirstPage();\n }\n break;\n case this.pdfViewer.element.id + '_previousPage':\n case this.pdfViewer.element.id + '_previousPageIcon':\n case this.pdfViewer.element.id + '_previousPageText':\n if (this.pdfViewer.navigationModule) {\n this.pdfViewer.navigationModule.goToPreviousPage();\n }\n break;\n case this.pdfViewer.element.id + '_nextPage':\n case this.pdfViewer.element.id + '_nextPageIcon':\n case this.pdfViewer.element.id + '_nextPageText':\n if (this.pdfViewer.navigationModule) {\n this.pdfViewer.navigationModule.goToNextPage();\n }\n break;\n case this.pdfViewer.element.id + '_lastPage':\n case this.pdfViewer.element.id + '_lastPageIcon':\n case this.pdfViewer.element.id + '_lastPageText':\n if (this.pdfViewer.navigationModule) {\n this.pdfViewer.navigationModule.goToLastPage();\n }\n break;\n case this.pdfViewer.element.id + '_zoomIn':\n case this.pdfViewer.element.id + '_zoomInIcon':\n case this.pdfViewer.element.id + '_zoomInText':\n this.pdfViewer.magnificationModule.zoomIn();\n break;\n case this.pdfViewer.element.id + '_zoomOut':\n case this.pdfViewer.element.id + '_zoomOutIcon':\n case this.pdfViewer.element.id + '_zoomOutText':\n this.pdfViewer.magnificationModule.zoomOut();\n break;\n case this.pdfViewer.element.id + '_selectTool':\n case this.pdfViewer.element.id + '_selectToolIcon':\n case this.pdfViewer.element.id + '_selectToolText':\n if (!this.isSelectionToolDisabled) {\n this.pdfViewerBase.initiateTextSelectMode();\n this.updateInteractionTools(true);\n }\n break;\n case this.pdfViewer.element.id + '_handTool':\n case this.pdfViewer.element.id + '_handToolIcon':\n case this.pdfViewer.element.id + '_handToolText':\n if (!(this.isScrollingToolDisabled || this.getStampMode())) {\n this.pdfViewerBase.initiatePanning();\n this.updateInteractionTools(false);\n }\n break;\n case this.pdfViewer.element.id + '_search':\n case this.pdfViewer.element.id + '_searchIcon':\n case this.pdfViewer.element.id + '_searchText':\n this.textSearchButtonHandler();\n break;\n case this.pdfViewer.element.id + '_annotation':\n case this.pdfViewer.element.id + '_annotationIcon':\n case this.pdfViewer.element.id + '_annotationText':\n this.initiateAnnotationMode(args.originalEvent.target.id, isKeyBoardEvent);\n break;\n case this.pdfViewer.element.id + '_formdesigner':\n case this.pdfViewer.element.id + '_formdesignerIcon':\n case this.pdfViewer.element.id + '_formdesignerText':\n this.initiateFormDesignerMode(isKeyBoardEvent);\n this.formDesignerToolbarModule.showHideDeleteIcon(false);\n break;\n case this.pdfViewer.element.id + '_comment':\n case this.pdfViewer.element.id + '_commentIcon':\n this.pdfViewerBase.isAddComment = true;\n this.pdfViewerBase.isCommentIconAdded = true;\n this.annotationToolbarModule.deselectAllItems();\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n this.addComments(args.originalEvent.target);\n break;\n case this.pdfViewer.element.id + '_submitForm':\n case this.pdfViewer.element.id + '_submitFormSpan':\n var data = void 0;\n this.pdfViewerBase.exportFormFields(data, FormFieldDataFormat.Json);\n break;\n default:\n this.pdfViewer.fireCustomToolbarClickEvent(args);\n break;\n }\n };\n Toolbar.prototype.addInkAnnotation = function () {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n if (this.annotationToolbarModule) {\n this.pdfViewer.toolbar.annotationToolbarModule.deselectInkAnnotation();\n this.annotationToolbarModule.inkAnnotationSelected = false;\n }\n };\n Toolbar.prototype.deSelectCommentAnnotation = function () {\n if (!isBlazor()) {\n this.pdfViewer.toolbar.deSelectItem(this.commentItem);\n }\n else {\n this.pdfViewer.toolbar.deSelectItem(this.CommentElement);\n }\n this.pdfViewerBase.isCommentIconAdded = false;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n Toolbar.prototype.addComments = function (targetElement) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n if (targetElement.id === this.pdfViewer.element.id + '_comment' || targetElement.id === this.pdfViewer.element.id + '_commentIcon') {\n if (targetElement.id === this.pdfViewer.element.id + '_commentIcon' && targetElement.parentElement) {\n targetElement.parentElement.classList.add('e-pv-select');\n }\n else {\n targetElement.classList.add('e-pv-select');\n }\n }\n else {\n if (this.pdfViewer.enableRtl) {\n targetElement.className = 'e-pv-comment-selection-icon e-pv-icon e-icon-left e-right';\n }\n else {\n targetElement.className = 'e-pv-comment-selection-icon e-pv-icon e-icon-left';\n }\n }\n }\n else {\n this.pdfViewerBase.isCommentIconAdded = true;\n this.pdfViewerBase.isAddComment = true;\n this.annotationToolbarModule.deselectAllItemsInBlazor();\n var commentsButton = this.CommentElement;\n commentsButton.classList.add('e-pv-select');\n }\n this.updateStampItems();\n document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + (this.pdfViewerBase.currentPageNumber - 1)).addEventListener('mousedown', this.pdfViewer.annotationModule.stickyNotesAnnotationModule.drawIcons.bind(this));\n };\n Toolbar.prototype.openZoomDropdown = function () {\n var toolbarData = this;\n if (document.fullscreen) {\n if (isBlazor()) {\n // eslint-disable-next-line\n var fullscreenElement = document.fullscreenElement;\n if (fullscreenElement && fullscreenElement.tagName !== 'BODY' && fullscreenElement.tagName !== 'HTML') {\n setTimeout(function () {\n // eslint-disable-next-line\n var popupElement = document.getElementById(toolbarData.pdfViewer.element.id + \"_zoomCombo_popup\");\n var targetElement = document.getElementById(toolbarData.toolbarElement.id);\n // eslint-disable-next-line\n if (popupElement && targetElement && popupElement.ej2_instances) {\n targetElement.appendChild(popupElement);\n popupElement.ej2_instances[0].refreshPosition();\n }\n }, 100);\n }\n }\n else {\n var popupElement = document.getElementById(this.pdfViewer.element.id + \"_zoomDropDown_popup\");\n var targetElement = document.getElementById(this.toolbarElement.id);\n if (popupElement) {\n targetElement.appendChild(popupElement);\n }\n }\n }\n };\n Toolbar.prototype.onZoomDropDownInput = function (event) {\n if ((event.which < 48 || event.which > 57) && event.which !== 8 && event.which !== 13 && event.which !== 32) {\n event.preventDefault();\n return false;\n }\n else {\n if (event.which === 13) {\n event.preventDefault();\n var value = this.zoomDropDown.element.value.trim();\n this.zoomDropDownChange(value);\n }\n return true;\n }\n };\n Toolbar.prototype.onZoomDropDownInputClick = function () {\n this.zoomDropDown.element.select();\n };\n Toolbar.prototype.zoomPercentSelect = function (args) {\n if (this.pdfViewerBase.pageCount > 0) {\n if (args.isInteracted) {\n if (args.itemData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var zoomText = args.itemData.percent;\n this.zoomDropDownChange(zoomText);\n }\n }\n else {\n this.updateZoomPercentage(this.pdfViewer.magnificationModule.zoomFactor);\n }\n }\n };\n Toolbar.prototype.zoomDropDownChange = function (zoomText) {\n // eslint-disable-next-line max-len\n if (zoomText !== this.pdfViewer.localeObj.getConstant('Fit Width') && zoomText !== this.pdfViewer.localeObj.getConstant('Fit Page') && zoomText !== this.pdfViewer.localeObj.getConstant('Automatic')) {\n this.pdfViewer.magnificationModule.isAutoZoom = false;\n this.pdfViewer.magnificationModule.zoomTo(parseFloat(zoomText));\n this.updateZoomPercentage(this.pdfViewer.magnificationModule.zoomFactor);\n this.zoomDropDown.focusOut();\n }\n else if (zoomText === this.pdfViewer.localeObj.getConstant('Fit Width')) {\n this.pdfViewer.magnificationModule.isAutoZoom = false;\n this.pdfViewer.magnificationModule.fitToWidth();\n this.zoomDropDown.focusOut();\n }\n else if (zoomText === this.pdfViewer.localeObj.getConstant('Fit Page')) {\n this.pdfViewer.magnificationModule.fitToPage();\n this.zoomDropDown.focusOut();\n }\n else if (zoomText === this.pdfViewer.localeObj.getConstant('Automatic')) {\n this.pdfViewer.magnificationModule.isAutoZoom = true;\n this.pdfViewer.magnificationModule.fitToAuto();\n this.zoomDropDown.focusOut();\n }\n };\n /**\n * @param zoomFactor\n * @private\n */\n Toolbar.prototype.updateZoomPercentage = function (zoomFactor) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line radix\n var currentPercent = parseInt((zoomFactor * 100).toString()) + '%';\n if (isBlazor()) {\n // eslint-disable-next-line\n var blazorZoomDropDown = this.pdfViewerBase.getElement('_zoomDropDown');\n if (blazorZoomDropDown && blazorZoomDropDown.children.length > 0) {\n blazorZoomDropDown.children[0].children[0].value = currentPercent;\n }\n }\n else {\n if (this.zoomDropDown.text === currentPercent) {\n this.zoomDropDown.element.value = currentPercent;\n }\n if (this.zoomDropDown.index === 11) {\n this.zoomDropDown.value = 4;\n }\n if (zoomFactor <= 0.25) {\n this.pdfViewerBase.isMinimumZoom = true;\n }\n else {\n this.pdfViewerBase.isMinimumZoom = false;\n }\n // eslint-disable-next-line\n this.zoomDropDown.text = currentPercent;\n }\n }\n };\n Toolbar.prototype.updateInteractionItems = function () {\n if (this.pdfViewer.textSelectionModule) {\n if (this.pdfViewer.enableTextSelection) {\n this.enableItems(this.textSelectItem.parentElement, true);\n }\n else {\n this.enableItems(this.textSelectItem.parentElement, false);\n }\n }\n else {\n this.enableItems(this.textSelectItem.parentElement, false);\n }\n this.enableItems(this.panItem.parentElement, true);\n if (this.pdfViewer.interactionMode === 'TextSelection' && this.pdfViewer.enableTextSelection) {\n this.selectItem(this.textSelectItem);\n this.textSelectItem.setAttribute('tabindex', '-1');\n this.deSelectItem(this.panItem);\n this.panItem.setAttribute('tabindex', '0');\n }\n else {\n this.selectItem(this.panItem);\n this.panItem.setAttribute('tabindex', '-1');\n this.deSelectItem(this.textSelectItem);\n this.textSelectItem.setAttribute('tabindex', '0');\n this.pdfViewerBase.initiatePanning();\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.textSearchButtonHandler = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (this.pdfViewer.textSearchModule && this.pdfViewerBase.pageCount > 0) {\n this.isTextSearchBoxDisplayed = !this.isTextSearchBoxDisplayed;\n this.pdfViewer.textSearchModule.showSearchBox(this.isTextSearchBoxDisplayed);\n if (this.isTextSearchBoxDisplayed) {\n if (!isBlazor()) {\n this.selectItem(this.textSearchItem);\n this.textSearchItem.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line max-len\n var searchInputElement = document.getElementById(this.pdfViewer.element.id + '_search_input');\n searchInputElement.select();\n searchInputElement.focus();\n }\n else {\n if (!isBlazor()) {\n this.deSelectItem(this.textSearchItem);\n this.textSearchItem.blur();\n }\n else {\n var searchItem = this.pdfViewerBase.getElement('_search');\n searchItem.firstElementChild.blur();\n }\n }\n }\n }\n else {\n this.showToolbar(false);\n this.pdfViewerBase.navigationPane.createNavigationPaneMobile('search');\n }\n };\n Toolbar.prototype.initiateAnnotationMode = function (id, isKeyBoardEvent) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (this.annotationToolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.annotationToolbarModule.showAnnotationToolbar(this.annotationItem);\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.refreshOverflow();\n if (isKeyBoardEvent && this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.items.length > 0) {\n document.getElementById(this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.items[0].id).focus();\n }\n if (this.pdfViewer.isAnnotationToolbarVisible && this.pdfViewer.isFormDesignerToolbarVisible) {\n var formDesignerMainDiv = document.getElementById(this.pdfViewer.element.id + \"_formdesigner_toolbar\");\n formDesignerMainDiv.style.display = \"none\";\n this.formDesignerToolbarModule.isToolbarHidden = false;\n this.formDesignerToolbarModule.showFormDesignerToolbar(this.formDesignerItem);\n this.annotationToolbarModule.adjustViewer(true);\n }\n }\n }\n else {\n if (!isBlazor()) {\n if (id === this.pdfViewer.element.id + '_annotation') {\n id = this.pdfViewer.element.id + '_annotationIcon';\n }\n this.annotationToolbarModule.createAnnotationToolbarForMobile(id);\n }\n }\n };\n Toolbar.prototype.initiateFormDesignerMode = function (isKeyBoardEvent) {\n if (this.formDesignerToolbarModule && this.pdfViewer.enableFormDesignerToolbar) {\n this.formDesignerToolbarModule.showFormDesignerToolbar(this.formDesignerItem);\n if (this.pdfViewer.isAnnotationToolbarVisible && this.pdfViewer.isFormDesignerToolbarVisible) {\n var annotationMainDiv = document.getElementById(this.pdfViewer.element.id + \"_annotation_toolbar\");\n annotationMainDiv.style.display = \"none\";\n var commentPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (!isNullOrUndefined(commentPanel) && !isNullOrUndefined(this.pdfViewerBase.navigationPane)) {\n if (commentPanel.style.display === 'block') {\n this.pdfViewerBase.navigationPane.closeCommentPanelContainer();\n }\n }\n this.annotationToolbarModule.isToolbarHidden = false;\n this.annotationToolbarModule.showAnnotationToolbar(this.annotationItem);\n this.formDesignerToolbarModule.adjustViewer(true);\n }\n if (isKeyBoardEvent && this.pdfViewer.toolbarModule.formDesignerToolbarModule.toolbar.items.length > 0) {\n document.getElementById(this.pdfViewer.toolbarModule.formDesignerToolbarModule.toolbar.items[0].id).focus();\n }\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.DisableInteractionTools = function () {\n this.deSelectItem(this.textSelectItem);\n this.deSelectItem(this.panItem);\n };\n /**\n * @param element\n * @private\n */\n Toolbar.prototype.selectItem = function (element) {\n if (element) {\n element.classList.add('e-pv-select');\n }\n };\n /**\n * @param element\n * @private\n */\n Toolbar.prototype.deSelectItem = function (element) {\n if (element) {\n element.classList.remove('e-pv-select');\n }\n };\n /**\n * @param isTextSelect\n * @private\n */\n Toolbar.prototype.updateInteractionTools = function (isTextSelect) {\n var isBlazorPlatform = isBlazor();\n if (isTextSelect) {\n if (isBlazorPlatform) {\n this.selectItem(this.SelectToolElement);\n this.deSelectItem(this.PanElement);\n }\n else {\n this.selectItem(this.textSelectItem);\n if (!isNullOrUndefined(this.textSelectItem)) {\n this.textSelectItem.setAttribute('tabindex', '-1');\n }\n this.deSelectItem(this.panItem);\n if (!isNullOrUndefined(this.panItem)) {\n this.panItem.setAttribute('tabindex', '0');\n }\n }\n }\n else {\n if (isBlazorPlatform) {\n this.selectItem(this.PanElement);\n this.deSelectItem(this.SelectToolElement);\n }\n else {\n this.selectItem(this.panItem);\n if (!isNullOrUndefined(this.panItem)) {\n this.panItem.setAttribute('tabindex', '-1');\n }\n this.deSelectItem(this.textSelectItem);\n if (!isNullOrUndefined(this.textSelectItem)) {\n this.textSelectItem.setAttribute('tabindex', '0');\n }\n }\n }\n };\n Toolbar.prototype.initialEnableItems = function () {\n if (this.pdfViewer.enableToolbar) {\n this.showToolbar(true);\n }\n else {\n this.showToolbar(false);\n }\n if (this.pdfViewer.enableNavigationToolbar) {\n this.showNavigationToolbar(true);\n }\n else {\n this.showNavigationToolbar(false);\n }\n if (!isBlazor()) {\n if (this.isPrintBtnVisible) {\n this.showPrintOption(true);\n }\n else {\n this.showPrintOption(false);\n }\n if (this.isDownloadBtnVisible) {\n this.showDownloadOption(true);\n }\n else {\n this.showDownloadOption(false);\n }\n if (this.isSearchBtnVisible) {\n this.showSearchOption(true);\n }\n else {\n this.showSearchOption(false);\n }\n if (this.isCommentBtnVisible) {\n this.showCommentOption(true);\n }\n else {\n this.showCommentOption(false);\n }\n }\n };\n Toolbar.prototype.showSeparator = function (toolbarItems) {\n // eslint-disable-next-line max-len\n if (!this.isOpenBtnVisible || (!this.isNavigationToolVisible && !this.isMagnificationToolVisible && !this.isSelectionBtnVisible && !this.isScrollingBtnVisible && !this.isUndoRedoBtnsVisible)) {\n //For mobile devices, the default previous value has been passed as (1,1).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(false, !isNullOrUndefined(this.itemsIndexArray[0]) ? this.itemsIndexArray[0].endIndex + 1 : 1, !isNullOrUndefined(this.itemsIndexArray[0]) ? this.itemsIndexArray[0].endIndex + 1 : 1);\n }\n if (((!this.isNavigationToolVisible && !this.isMagnificationToolVisible) && !this.isOpenBtnVisible) ||\n (this.isOpenBtnVisible && !this.isNavigationToolVisible) ||\n // eslint-disable-next-line max-len\n ((!this.isOpenBtnVisible && !this.isNavigationToolVisible) || (!this.isMagnificationToolVisible && !this.isScrollingBtnVisible && !this.isSelectionBtnVisible))) {\n //For mobile devices, the default previous value has been passed as (8,8).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(false, !isNullOrUndefined(this.itemsIndexArray[1]) ? this.itemsIndexArray[1].endIndex + 1 : 8, !isNullOrUndefined(this.itemsIndexArray[1]) ? this.itemsIndexArray[1].endIndex + 1 : 8);\n }\n if ((!this.isMagnificationToolVisible && !this.isSelectionBtnVisible && !this.isScrollingBtnVisible) ||\n (this.isMagnificationToolVisible && (!this.isSelectionBtnVisible && !this.isScrollingBtnVisible)) ||\n (!this.isMagnificationToolVisible && (this.isSelectionBtnVisible || this.isScrollingBtnVisible))) {\n //For mobile devices, the default previous value has been passed as (12,12).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(false, !isNullOrUndefined(this.itemsIndexArray[2]) ? this.itemsIndexArray[2].endIndex + 1 : 12, !isNullOrUndefined(this.itemsIndexArray[2]) ? this.itemsIndexArray[2].endIndex + 1 : 12);\n }\n if (((!this.isMagnificationToolVisible && !this.isNavigationToolVisible && !this.isScrollingBtnVisible\n && !this.isSelectionBtnVisible) && this.isUndoRedoBtnsVisible || !this.isUndoRedoBtnsVisible)) {\n //For mobile devices, the default previous value has been passed as (15,15).\n // eslint-disable-next-line max-len\n this.applyHideToToolbar(false, !isNullOrUndefined(this.itemsIndexArray[4]) ? this.itemsIndexArray[4].endIndex + 1 : 15, !isNullOrUndefined(this.itemsIndexArray[4]) ? this.itemsIndexArray[4].endIndex + 1 : 15);\n }\n if (!this.isUndoRedoBtnsVisible || (this.isUndoRedoBtnsVisible && !this.isCommentBtnVisible && !this.isSubmitbtnvisible)) {\n this.applyHideToToolbar(false, this.itemsIndexArray[5].endIndex + 1, this.itemsIndexArray[5].endIndex + 1);\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.applyToolbarSettings = function () {\n var toolbarSettingsItems = this.pdfViewer.toolbarSettings.toolbarItems;\n if (toolbarSettingsItems) {\n if (toolbarSettingsItems.indexOf('OpenOption') !== -1) {\n this.showOpenOption(true);\n }\n else {\n this.showOpenOption(false);\n }\n if (toolbarSettingsItems.indexOf('PageNavigationTool') !== -1) {\n this.showPageNavigationTool(true);\n }\n else {\n this.showPageNavigationTool(false);\n }\n if (toolbarSettingsItems.indexOf('MagnificationTool') !== -1) {\n this.showMagnificationTool(true);\n }\n else {\n this.showMagnificationTool(false);\n }\n if (toolbarSettingsItems.indexOf('SelectionTool') !== -1) {\n this.showSelectionTool(true);\n }\n else {\n this.showSelectionTool(false);\n }\n if (toolbarSettingsItems.indexOf('PanTool') !== -1) {\n this.showScrollingTool(true);\n }\n else {\n this.showScrollingTool(false);\n }\n if (toolbarSettingsItems.indexOf('PrintOption') !== -1) {\n this.showPrintOption(true);\n }\n else {\n this.showPrintOption(false);\n }\n if (toolbarSettingsItems.indexOf('DownloadOption') !== -1) {\n this.showDownloadOption(true);\n }\n else {\n this.showDownloadOption(false);\n }\n if (toolbarSettingsItems.indexOf('SearchOption') !== -1) {\n this.showSearchOption(true);\n }\n else {\n this.showSearchOption(false);\n }\n if (toolbarSettingsItems.indexOf('UndoRedoTool') !== -1) {\n this.showUndoRedoTool(true);\n }\n else {\n this.showUndoRedoTool(false);\n }\n if (toolbarSettingsItems.indexOf('AnnotationEditTool') !== -1) {\n this.showAnnotationEditTool(true);\n }\n else {\n this.showAnnotationEditTool(false);\n }\n if (toolbarSettingsItems.indexOf('FormDesignerEditTool') !== -1) {\n this.showFormDesignerEditTool(true);\n }\n else {\n this.showFormDesignerEditTool(false);\n }\n if (toolbarSettingsItems.indexOf('CommentTool') !== -1) {\n this.showCommentOption(true);\n }\n else {\n this.showCommentOption(false);\n }\n if (toolbarSettingsItems.indexOf('SubmitForm') !== -1) {\n this.showSubmitForm(true);\n }\n else {\n this.showSubmitForm(false);\n }\n this.showSeparator(toolbarSettingsItems);\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.applyToolbarSettingsForMobile = function () {\n var toolbarSettingsItems = this.pdfViewer.toolbarSettings.toolbarItems;\n if (toolbarSettingsItems) {\n if (toolbarSettingsItems.indexOf('OpenOption') !== -1) {\n this.showOpenOption(true);\n }\n else {\n this.showOpenOption(false);\n }\n if (toolbarSettingsItems.indexOf('UndoRedoTool') !== -1) {\n this.showUndoRedoTool(true);\n }\n else {\n this.showUndoRedoTool(false);\n }\n if (toolbarSettingsItems.indexOf('AnnotationEditTool') !== -1) {\n this.showAnnotationEditTool(true);\n }\n else {\n this.showAnnotationEditTool(false);\n }\n if (toolbarSettingsItems.indexOf('SearchOption') !== -1) {\n this.showSearchOption(true);\n }\n else {\n this.showSearchOption(false);\n }\n }\n };\n Toolbar.prototype.getStampMode = function () {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.stampAnnotationModule) {\n return this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode;\n }\n else {\n return false;\n }\n };\n // eslint-disable-next-line\n Toolbar.prototype.stampBeforeOpen = function (args) {\n this.annotationToolbarModule.resetFreeTextAnnot();\n if (args.ParentItem.Text === '' && this.pdfViewer.customStampSettings.isAddToMenu && args.Items.length > 0) {\n // eslint-disable-next-line\n var currentElements = null;\n for (var i = 0; i < args.Items.length; i++) {\n if (args.Items[i].Text === 'Custom Stamp') {\n args.Items[i].Items = [];\n currentElements = args.Items[i];\n break;\n }\n }\n // eslint-disable-next-line\n var elements = this.pdfViewerBase.customStampCollection;\n // eslint-disable-next-line\n var stampElements = this.pdfViewer.customStampSettings.customStamps;\n if (elements.length === 0 && stampElements && stampElements.length > 0) {\n for (var n = 0; n < stampElements.length; n++) {\n // eslint-disable-next-line max-len\n elements.push({ customStampName: stampElements[n].customStampName, customStampImageSource: stampElements[n].customStampImageSource });\n }\n }\n for (var m = 0; m < elements.length; m++) {\n if (currentElements != null) {\n currentElements.Items.push({ text: elements[m].customStampName });\n }\n }\n }\n };\n // eslint-disable-next-line\n Toolbar.prototype.stampBeforeClose = function (args, showItemOnClick) {\n // eslint-disable-next-line max-len\n if ((args.ParentItem && args.ParentItem.Text !== 'Custom Stamp' && args.ParentItem.Text !== 'Standard Business' && args.ParentItem.Text !== 'Dynamic' && args.ParentItem.Text !== 'Sign Here') || !args.ParentItem) {\n showItemOnClick = true;\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n Toolbar.prototype.updateStampItems = function () {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.stampAnnotationModule && this.pdfViewer.annotationModule.stampAnnotationModule.isNewStampAnnot) {\n if (this.pdfViewer.selectedItems.annotations[0]) {\n this.pdfViewer.remove(this.pdfViewer.selectedItems.annotations[0]);\n this.pdfViewer.clearSelection(this.pdfViewer.currentPageNumber - 1);\n this.pdfViewer.renderDrawing();\n this.pdfViewerBase.tool = null;\n }\n this.pdfViewerBase.isAlreadyAdded = false;\n this.pdfViewer.annotationModule.stampAnnotationModule.isNewStampAnnot = false;\n }\n };\n // eslint-disable-next-line\n Toolbar.prototype.stampSelect = function (args, stampParentID) {\n this.pdfViewerBase.isAlreadyAdded = false;\n this.updateStampItems();\n if (args.Item.Text === 'Custom Stamp') {\n this.annotationToolbarModule.checkStampAnnotations();\n this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n // eslint-disable-next-line\n var stampImage = createElement('input', { id: this.pdfViewer.element.id + '_stampElement', attrs: { 'type': 'file' } });\n stampImage.setAttribute('accept', '.jpg,.jpeg,.png');\n stampImage.style.position = 'absolute';\n stampImage.style.left = '0px';\n stampImage.style.top = '0px';\n stampImage.style.visibility = 'hidden';\n document.body.appendChild(stampImage);\n stampImage.click();\n stampImage.addEventListener('change', this.annotationToolbarModule.addStampImage);\n document.body.removeChild(stampImage);\n // eslint-disable-next-line max-len\n }\n else if (stampParentID === 'Custom Stamp' && args.Item.Text !== '') {\n // eslint-disable-next-line\n var elements = this.pdfViewerBase.customStampCollection;\n for (var n = 0; n < elements.length; n++) {\n if (elements[n].customStampName === args.Item.Text) {\n this.pdfViewer.annotationModule.stampAnnotationModule.customStampName = args.Item.Text;\n this.annotationToolbarModule.checkStampAnnotations();\n this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n this.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n this.pdfViewerBase.stampAdded = true;\n this.pdfViewerBase.isAlreadyAdded = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.createCustomStampAnnotation(elements[n].customStampImageSource);\n this.pdfViewerBase.stampAdded = false;\n }\n }\n // eslint-disable-next-line max-len\n }\n else if (args.Item.Text !== 'Dynamic' && args.Item.Text !== '' && args.Item.Text !== 'Standard Business' && (stampParentID === 'Sign Here' || args.Item.Text !== 'Sign Here')) {\n this.annotationToolbarModule.checkStampAnnotations();\n this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n this.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n this.pdfViewerBase.stampAdded = true;\n if (stampParentID === 'Dynamic') {\n this.pdfViewerBase.isDynamicStamp = true;\n this.pdfViewer.annotationModule.stampAnnotationModule.retrieveDynamicStampAnnotation(args.Item.Text);\n }\n else {\n this.pdfViewerBase.isDynamicStamp = false;\n this.pdfViewer.annotationModule.stampAnnotationModule.retrievestampAnnotation(args.Item.Text);\n }\n }\n };\n Toolbar.prototype.enableItems = function (element, isEnable) {\n this.toolbar.enableItems(element, isEnable);\n if (element && element.id === this.pdfViewer.element.id + '_zoomDropDownContainer') {\n this.pdfViewerBase.getElement('_zoomDropDown').setAttribute('tabindex', isEnable ? '0' : '-1');\n this.pdfViewerBase.getElement('_zoomDropDown').setAttribute('data-tabindex', isEnable ? '0' : '-1');\n }\n else if (element.firstElementChild && element.id !== this.pdfViewer.element.id + '_zoomDropDownContainer') {\n element.firstElementChild.setAttribute('tabindex', isEnable ? '0' : '-1');\n element.firstElementChild.setAttribute('data-tabindex', isEnable ? '0' : '-1');\n }\n };\n /**\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'Toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","/* eslint-disable */\nimport { Browser, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getDiagramElement } from '@syncfusion/ej2-drawings';\n/**\n * Magnification module\n */\nvar Magnification = /** @class */ (function () {\n /**\n * @param pdfViewer\n * @param viewerBase\n * @private\n */\n function Magnification(pdfViewer, viewerBase) {\n /**\n * @private\n */\n this.zoomFactor = 1;\n /**\n * @private\n */\n this.previousZoomFactor = 1;\n this.scrollWidth = 25;\n this.zoomPercentages = [10, 25, 50, 75, 100, 125, 150, 200, 400];\n this.isNotPredefinedZoom = false;\n this.pinchStep = 0;\n this.reRenderPageNumber = 0;\n // eslint-disable-next-line\n this.magnifyPageRerenderTimer = null;\n // eslint-disable-next-line\n this.rerenderOnScrollTimer = null;\n // eslint-disable-next-line\n this.rerenderInterval = null;\n this.touchCenterX = 0;\n this.touchCenterY = 0;\n this.mouseCenterX = 0;\n this.mouseCenterY = 0;\n this.pageRerenderCount = 0;\n this.imageObjects = [];\n this.topValue = 0;\n this.isTapToFitZoom = false;\n /**\n * @private\n */\n this.fitType = null;\n /**\n * @private\n */\n this.isPinchZoomed = false;\n /**\n * @private\n */\n this.isPagePinchZoomed = false;\n /**\n * @private\n */\n this.isRerenderCanvasCreated = false;\n /**\n * @private\n */\n this.isMagnified = false;\n /**\n * @private\n */\n this.isPagesZoomed = false;\n /**\n * @private\n */\n this.isPinchScrolled = false;\n /**\n * @private\n */\n this.isAutoZoom = false;\n /**\n * @private\n */\n this.isDoubleTapZoom = false;\n /**\n * @private\n */\n this.isFormFieldPageZoomed = false;\n this.isWebkitMobile = false;\n this.isFitToPageMode = true;\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = viewerBase;\n this.zoomLevel = 2;\n // eslint-disable-next-line max-len\n }\n /**\n * Zoom the PDF document to the given zoom value\n *\n * @param {number} zoomValue - Specifies the Zoom Value for magnify the PDF document\n * @returns void\n */\n Magnification.prototype.zoomTo = function (zoomValue) {\n var MaximumZoomPercentage = 400;\n var MinmumZoomPercentage = 10;\n if (zoomValue < MinmumZoomPercentage) {\n zoomValue = MinmumZoomPercentage;\n }\n else if (zoomValue > MaximumZoomPercentage) {\n zoomValue = MaximumZoomPercentage;\n }\n this.fitType = null;\n this.isNotPredefinedZoom = false;\n if (this.isAutoZoom && this.isInitialLoading) {\n this.pdfViewerBase.onWindowResize();\n }\n else {\n this.isAutoZoom = false;\n this.onZoomChanged(zoomValue);\n }\n this.isInitialLoading = false;\n };\n /**\n * Magnifies the page to the next value in the zoom drop down list.\n *\n * @returns void\n */\n Magnification.prototype.zoomIn = function () {\n if (this.fitType || this.isNotPredefinedZoom) {\n this.zoomLevel = this.lowerZoomLevel;\n this.fitType = null;\n }\n this.isNotPredefinedZoom = false;\n if (this.zoomLevel >= 8) {\n this.zoomLevel = 8;\n }\n else {\n this.zoomLevel++;\n }\n this.isAutoZoom = false;\n this.onZoomChanged(this.zoomPercentages[this.zoomLevel]);\n };\n /**\n * Magnifies the page to the previous value in the zoom drop down list.\n *\n * @returns void\n */\n Magnification.prototype.zoomOut = function () {\n if (this.fitType || this.isNotPredefinedZoom) {\n this.zoomLevel = this.higherZoomLevel;\n this.fitType = null;\n }\n this.isNotPredefinedZoom = false;\n if (this.zoomLevel <= 0) {\n this.zoomLevel = 0;\n }\n else {\n this.zoomLevel--;\n }\n this.isAutoZoom = false;\n this.onZoomChanged(this.zoomPercentages[this.zoomLevel]);\n };\n /**\n * Scales the page to fit the page width to the width of the container in the control.\n *\n * @returns void\n */\n Magnification.prototype.fitToWidth = function () {\n this.isAutoZoom = false;\n var zoomValue = this.calculateFitZoomFactor('fitToWidth');\n this.onZoomChanged(zoomValue);\n };\n /**\n * @private\n */\n Magnification.prototype.fitToAuto = function () {\n this.isAutoZoom = true;\n var zoomValue = this.calculateFitZoomFactor('fitToWidth');\n this.onZoomChanged(zoomValue);\n };\n /**\n * Scales the page to fit the page in the container in the control.\n *\n * @param {number} zoomValue - Defines the Zoom Value for fit the page in the Container\n * @returns void\n */\n Magnification.prototype.fitToPage = function () {\n var zoomValue = this.calculateFitZoomFactor('fitToPage');\n if (zoomValue !== null) {\n this.isAutoZoom = false;\n this.onZoomChanged(zoomValue);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n if (this.pdfViewerBase.isWebkitMobile) {\n this.pdfViewerBase.viewerContainer.style.overflowY = 'auto';\n }\n else {\n this.pdfViewerBase.viewerContainer.style.overflowY = 'hidden';\n }\n }\n else {\n this.pdfViewerBase.viewerContainer.style.overflowY = 'auto';\n }\n if (this.pdfViewerBase.pageSize[this.pdfViewerBase.currentPageNumber - 1]) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.scrollTop = this.pdfViewerBase.pageSize[this.pdfViewerBase.currentPageNumber - 1].top * this.zoomFactor;\n }\n }\n };\n /**\n * Returns zoom factor for the fit zooms.\n *\n * @param type\n */\n Magnification.prototype.calculateFitZoomFactor = function (type) {\n var viewerWidth = this.pdfViewerBase.viewerContainer.getBoundingClientRect().width;\n var viewerHeight = this.pdfViewerBase.viewerContainer.getBoundingClientRect().height;\n if (viewerWidth === 0 && viewerHeight === 0) {\n viewerWidth = parseFloat(this.pdfViewer.width.toString());\n viewerHeight = parseFloat(this.pdfViewer.height.toString());\n }\n if (isNaN(viewerHeight) || isNaN(viewerWidth)) {\n return null;\n }\n this.fitType = type;\n if (this.fitType === 'fitToWidth') {\n var scaleX = ((viewerWidth - this.scrollWidth) / this.pdfViewerBase.highestWidth);\n if (this.isAutoZoom) {\n this.fitType = null;\n scaleX = Math.min(1, scaleX);\n if (scaleX === 1) {\n this.zoomLevel = 2;\n }\n }\n // eslint-disable-next-line radix\n return parseInt((scaleX * 100).toString());\n }\n else {\n this.isFitToPageMode = true;\n var pageLeft = 10;\n var scaleX = ((viewerWidth - this.scrollWidth - pageLeft) / this.pdfViewerBase.highestWidth);\n var scaleY = (viewerHeight / this.pdfViewerBase.highestHeight);\n if (scaleY > scaleX) {\n scaleY = scaleX;\n this.isFitToPageMode = false;\n }\n // eslint-disable-next-line radix\n return parseInt((scaleY * 100).toString());\n }\n };\n /**\n * Initiating cursor based zoom.\n * @private\n */\n Magnification.prototype.initiateMouseZoom = function (pointX, pointY, zoomValue) {\n var pointInViewer = this.positionInViewer(pointX, pointY);\n this.mouseCenterX = pointInViewer.x;\n this.mouseCenterY = pointInViewer.y;\n this.zoomTo(zoomValue);\n };\n /**\n * Performs pinch in operation\n */\n Magnification.prototype.pinchIn = function () {\n this.fitType = null;\n var temporaryZoomFactor = this.zoomFactor - this.pinchStep;\n if (temporaryZoomFactor < 4 && temporaryZoomFactor > 2) {\n temporaryZoomFactor = this.zoomFactor - this.pinchStep;\n }\n if (temporaryZoomFactor <= 1.5) {\n temporaryZoomFactor = this.zoomFactor - (this.pinchStep / 1.5);\n }\n if (temporaryZoomFactor < 0.25) {\n temporaryZoomFactor = 0.25;\n }\n this.isPinchZoomed = true;\n this.onZoomChanged(temporaryZoomFactor * 100);\n this.isTapToFitZoom = true;\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && (this.zoomFactor * 100) === 50) {\n var zoomValue = this.calculateFitZoomFactor('fitToWidth');\n this.fitType = null;\n if (zoomValue <= 50) {\n this.fitToWidth();\n }\n }\n };\n /**\n * Performs pinch out operation\n */\n Magnification.prototype.pinchOut = function () {\n this.fitType = null;\n var temporaryZoomFactor = this.zoomFactor + this.pinchStep;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n if (temporaryZoomFactor > 4) {\n temporaryZoomFactor = 4;\n }\n }\n else {\n if (temporaryZoomFactor > 2) {\n temporaryZoomFactor = temporaryZoomFactor + this.pinchStep;\n }\n if (temporaryZoomFactor > 4) {\n temporaryZoomFactor = 4;\n }\n }\n this.isTapToFitZoom = true;\n this.isPinchZoomed = true;\n this.onZoomChanged(temporaryZoomFactor * 100);\n };\n /**\n * returns zoom level for the zoom factor.\n *\n * @param zoomFactor\n */\n Magnification.prototype.getZoomLevel = function (zoomFactor) {\n var min = 0;\n var max = this.zoomPercentages.length - 1;\n while ((min <= max) && !(min === 0 && max === 0)) {\n var mid = Math.round((min + max) / 2);\n if (this.zoomPercentages[mid] <= zoomFactor) {\n min = mid + 1;\n }\n else if (this.zoomPercentages[mid] >= zoomFactor) {\n max = mid - 1;\n }\n }\n this.higherZoomLevel = min;\n this.lowerZoomLevel = max;\n return max;\n };\n /**\n * @private\n */\n Magnification.prototype.checkZoomFactor = function () {\n return this.zoomPercentages.indexOf(this.zoomFactor * 100) > -1;\n };\n /**\n * Executes when the zoom or pinch operation is performed\n *\n * @param zoomValue\n */\n Magnification.prototype.onZoomChanged = function (zoomValue) {\n if (zoomValue) {\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.closePopupMenu();\n }\n this.previousZoomFactor = this.zoomFactor;\n this.zoomLevel = this.getZoomLevel(zoomValue);\n this.zoomFactor = this.getZoomFactor(zoomValue);\n if (this.zoomFactor <= 0.25) {\n this.pdfViewerBase.isMinimumZoom = true;\n }\n else {\n this.pdfViewerBase.isMinimumZoom = false;\n }\n if (!isNullOrUndefined(this.pdfViewerBase.viewerContainer)) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n if (this.pdfViewerBase.isWebkitMobile) {\n this.pdfViewerBase.viewerContainer.style.overflowY = 'auto';\n }\n else {\n this.pdfViewerBase.viewerContainer.style.overflowY = 'hidden';\n }\n }\n else {\n this.pdfViewerBase.viewerContainer.style.overflowY = 'auto';\n }\n }\n if (this.pdfViewerBase.pageCount > 0) {\n if ((this.previousZoomFactor !== this.zoomFactor)) {\n if (!this.isPinchZoomed) {\n this.magnifyPages();\n }\n else {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.mobilePageNoContainer.style.left = (this.pdfViewer.element.clientWidth / 2) - (parseFloat(this.pdfViewerBase.mobilePageNoContainer.style.width) / 2) + 'px';\n }\n this.responsivePages();\n }\n }\n if (!isBlazor()) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.updateZoomButtons();\n }\n }\n if (!this.isInitialLoading) {\n if (this.previousZoomFactor !== this.zoomFactor) {\n // eslint-disable-next-line\n this.pdfViewer.zoomValue = parseInt((this.zoomFactor * 100).toString());\n this.pdfViewer.fireZoomChange();\n }\n }\n }\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.updateZoomPercentage(this.zoomFactor);\n }\n if (!this.isInitialLoading) {\n if (this.previousZoomFactor !== this.zoomFactor) {\n this.pdfViewer.zoomValue = parseInt((this.zoomFactor * 100).toString());\n this.pdfViewer.fireZoomChange();\n }\n }\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && this.isPinchZoomed) {\n // eslint-disable-next-line radix\n var zoomPercentage = parseInt((this.zoomFactor * 100).toString()) + '%';\n this.pdfViewerBase.navigationPane.createTooltipMobile(zoomPercentage);\n }\n }\n };\n /**\n * @param clientX\n * @param clientY\n * @private\n */\n Magnification.prototype.setTouchPoints = function (clientX, clientY) {\n var pointInViewer = this.positionInViewer(clientX, clientY);\n this.touchCenterX = pointInViewer.x;\n this.touchCenterY = pointInViewer.y;\n };\n /**\n * @param pointX1\n * @param pointY1\n * @param pointX2\n * @param pointY2\n * @param pointX1\n * @param pointY1\n * @param pointX2\n * @param pointY2\n * @param pointX1\n * @param pointY1\n * @param pointX2\n * @param pointY2\n * @param pointX1\n * @param pointY1\n * @param pointX2\n * @param pointY2\n * @private\n */\n Magnification.prototype.initiatePinchMove = function (pointX1, pointY1, pointX2, pointY2) {\n this.isPinchScrolled = false;\n this.isMagnified = false;\n this.reRenderPageNumber = this.pdfViewerBase.currentPageNumber;\n var pointInViewer = this.positionInViewer((pointX1 + pointX2) / 2, (pointY1 + pointY2) / 2);\n this.touchCenterX = pointInViewer.x;\n this.touchCenterY = pointInViewer.y;\n this.zoomOverPages(pointX1, pointY1, pointX2, pointY2);\n };\n Magnification.prototype.magnifyPages = function () {\n var _this = this;\n this.clearRerenderTimer();\n this.pdfViewerBase.showPageLoadingIndicator(this.pdfViewerBase.currentPageNumber - 1, true);\n if (!this.isPagesZoomed) {\n this.reRenderPageNumber = this.pdfViewerBase.currentPageNumber;\n }\n if (!this.pdfViewerBase.documentLoaded && !this.pdfViewerBase.isInitialPageMode) {\n this.isPagesZoomed = true;\n }\n var scrollValue = this.pdfViewerBase.viewerContainer.scrollTop;\n if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.maintainSelectionOnZoom(false, true);\n }\n if (this.pdfViewer.formDesignerModule && !this.pdfViewerBase.documentLoaded && !this.pdfViewerBase.isDocumentLoaded) {\n this.isFormFieldPageZoomed = true;\n }\n if (!this.isInitialLoading) {\n this.isMagnified = true;\n }\n this.updatePageLocation();\n this.resizeCanvas(this.reRenderPageNumber);\n this.calculateScrollValuesOnMouse(scrollValue);\n if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.resizeTouchElements();\n }\n // eslint-disable-next-line\n var annotModule = this.pdfViewer.annotationModule;\n if (annotModule && annotModule.textMarkupAnnotationModule) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.updateCurrentResizerPosition();\n }\n if (this.pdfViewerBase.pageSize.length > 0) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.pageContainer.style.height = this.topValue + this.pdfViewerBase.getPageHeight(this.pdfViewerBase.pageSize.length - 1) + 'px';\n // eslint-disable-next-line\n var proxy_1 = this;\n this.pdfViewerBase.renderedPagesList = [];\n this.pdfViewerBase.pinchZoomStorage = [];\n if (!this.pdfViewerBase.documentLoaded) {\n this.magnifyPageRerenderTimer = setTimeout(function () {\n proxy_1.rerenderMagnifiedPages();\n _this.pdfViewerBase.showPageLoadingIndicator(_this.pdfViewerBase.currentPageNumber - 1, false);\n }, 800);\n }\n }\n };\n Magnification.prototype.updatePageLocation = function () {\n this.topValue = 0;\n for (var i = 1; i < this.pdfViewerBase.pageSize.length; i++) {\n this.topValue += (this.pdfViewerBase.pageSize[i].height + this.pdfViewerBase.pageGap) * this.zoomFactor;\n }\n var limit;\n if (this.pdfViewer.initialRenderPages > 10) {\n limit = this.pdfViewer.initialRenderPages <= this.pdfViewerBase.pageCount ? this.pdfViewer.initialRenderPages : this.pdfViewerBase.pageCount;\n }\n else {\n limit = this.pdfViewerBase.pageCount < 10 ? this.pdfViewerBase.pageCount : 10;\n }\n for (var i = 0; i < limit; i++) {\n this.updatePageContainer(i, this.pdfViewerBase.getPageWidth(i), this.pdfViewerBase.getPageHeight(i), this.pdfViewerBase.getPageTop(i), true);\n }\n };\n Magnification.prototype.updatePageContainer = function (pageNumber, pageWidth, pageHeight, topValue, isReRender) {\n // eslint-disable-next-line\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + pageNumber);\n if (pageDiv) {\n pageDiv.style.width = pageWidth + 'px';\n pageDiv.style.height = pageHeight + 'px';\n // eslint-disable-next-line\n var textLayerDiv = this.pdfViewerBase.getElement('_textLayer_' + pageNumber);\n if (textLayerDiv) {\n textLayerDiv.style.width = pageWidth + 'px';\n textLayerDiv.style.height = pageHeight + 'px';\n }\n pageDiv.style.width = pageWidth + 'px';\n pageDiv.style.height = pageHeight + 'px';\n if (this.pdfViewer.enableRtl) {\n pageDiv.style.right = this.pdfViewerBase.updateLeftPosition(pageNumber) + 'px';\n }\n else {\n pageDiv.style.left = this.pdfViewerBase.updateLeftPosition(pageNumber) + 'px';\n }\n pageDiv.style.top = topValue + 'px';\n this.pdfViewerBase.pageContainer.style.width = this.pdfViewerBase.viewerContainer.clientWidth + 'px';\n this.pdfViewerBase.renderPageCanvas(pageDiv, pageWidth, pageHeight, pageNumber, 'block');\n }\n };\n Magnification.prototype.clearRerenderTimer = function () {\n clearTimeout(this.rerenderOnScrollTimer);\n clearTimeout(this.magnifyPageRerenderTimer);\n this.clearIntervalTimer();\n this.isPinchScrolled = false;\n };\n /**\n * @private\n */\n Magnification.prototype.clearIntervalTimer = function () {\n clearInterval(this.rerenderInterval);\n this.rerenderInterval = null;\n this.clearRendering();\n var oldCanvases = document.querySelectorAll('canvas[id*=\"' + this.pdfViewer.element.id + '_oldCanvas_\"]');\n for (var i = 0; i < oldCanvases.length; i++) {\n // eslint-disable-next-line\n var pageNumber = parseInt(oldCanvases[i].id.split('_oldCanvas_')[1]);\n var pageCanvas = this.pdfViewerBase.getElement('_pageCanvas_' + pageNumber);\n if (pageCanvas) {\n oldCanvases[i].id = pageCanvas.id;\n pageCanvas.parentElement.removeChild(pageCanvas);\n }\n else {\n oldCanvases[i].id = this.pdfViewer.element.id + '_pageCanvas_' + pageNumber;\n }\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.rerenderAnnotationsPinch(i);\n }\n }\n this.isRerenderCanvasCreated = false;\n };\n /**\n * @param image\n * @private\n */\n Magnification.prototype.pushImageObjects = function (image) {\n if (!isNullOrUndefined(this.imageObjects)) {\n this.imageObjects && this.imageObjects.push(image);\n }\n };\n Magnification.prototype.clearRendering = function () {\n if (this.imageObjects) {\n for (var j = 0; j < this.imageObjects.length; j++) {\n if (this.imageObjects[j]) {\n this.imageObjects[j].onload = null;\n }\n }\n this.imageObjects = [];\n }\n };\n Magnification.prototype.rerenderMagnifiedPages = function () {\n if ((this.pdfViewerBase.isInitialLoaded || this.pdfViewerBase.isDocumentLoaded) && !this.pdfViewerBase.isInitialPageMode) {\n this.renderInSeparateThread(this.reRenderPageNumber);\n this.isPagesZoomed = false;\n }\n else if (this.pdfViewerBase.isInitialPageMode) {\n this.pageRerenderCount = 0;\n this.pdfViewerBase.renderedPagesList = [];\n this.pdfViewerBase.pinchZoomStorage = [];\n this.isMagnified = false;\n this.pdfViewerBase.pageViewScrollChanged(this.reRenderPageNumber);\n this.pdfViewerBase.isInitialPageMode = false;\n }\n };\n Magnification.prototype.renderInSeparateThread = function (pageNumber) {\n var _this = this;\n this.designNewCanvas(pageNumber);\n this.pageRerenderCount = 0;\n this.pdfViewerBase.renderedPagesList = [];\n this.pdfViewerBase.pinchZoomStorage = [];\n this.isMagnified = false;\n this.pdfViewerBase.pageViewScrollChanged(this.pdfViewer.currentPageNumber);\n // eslint-disable-next-line\n var proxy = this;\n this.rerenderInterval = setInterval(function () {\n _this.initiateRerender(proxy);\n }, 1);\n };\n Magnification.prototype.responsivePages = function () {\n this.isPagesZoomed = true;\n this.clearRerenderTimer();\n if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.clearTextSelection();\n }\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearchModule.clearAllOccurrences();\n }\n var scrollValue = this.pdfViewerBase.viewerContainer.scrollTop;\n this.isAutoZoom = false;\n this.updatePageLocation();\n // eslint-disable-next-line max-len\n this.pdfViewerBase.pageContainer.style.height = this.topValue + this.pdfViewerBase.pageSize[this.pdfViewerBase.pageSize.length - 1].height * this.zoomFactor + 'px';\n this.resizeCanvas(this.pdfViewerBase.currentPageNumber);\n if (this.pdfViewerBase.textLayer && this.pdfViewer.formDesignerModule) {\n this.pdfViewerBase.textLayer.clearTextLayers(true);\n }\n if (this.isPinchZoomed) {\n this.calculateScrollValues(scrollValue);\n }\n this.pdfViewerBase.renderedPagesList = [];\n this.pdfViewerBase.pinchZoomStorage = [];\n if (this.pdfViewer.formFieldsModule && !this.pdfViewer.formDesignerModule) {\n var proxy_2 = this;\n if (!this.pdfViewerBase.documentLoaded) {\n this.magnifyPageRerenderTimer = setTimeout(function () {\n proxy_2.rerenderMagnifiedPages();\n }, 800);\n }\n }\n };\n Magnification.prototype.calculateScrollValues = function (scrollValue) {\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var currentPageCanvas = this.pdfViewerBase.getElement('_pageDiv_' + pageIndex);\n if (currentPageCanvas) {\n var pointInViewer = void 0;\n var currentPageBounds = currentPageCanvas.getBoundingClientRect();\n if (this.pdfViewer.enableRtl && !this.isDoubleTapZoom) {\n pointInViewer = this.positionInViewer(currentPageBounds.right, currentPageBounds.top);\n }\n else {\n pointInViewer = this.positionInViewer(currentPageBounds.left, currentPageBounds.top);\n }\n var currentPageBoundsLeft = pointInViewer.x;\n var currentPageBoundsTop = pointInViewer.y;\n // update scroll top for the viewer container based on pinch zoom factor\n var previousPageTop = (currentPageBoundsTop) * this.previousZoomFactor;\n var canvasPreviousY = scrollValue + this.touchCenterY;\n // eslint-disable-next-line max-len\n var canvasCurrentY = (currentPageBoundsTop) * this.zoomFactor + ((canvasPreviousY - previousPageTop) < 0 ? canvasPreviousY - previousPageTop : (canvasPreviousY -\n // eslint-disable-next-line max-len\n previousPageTop) * (this.zoomFactor / this.previousZoomFactor));\n var pageGapValue = this.zoomFactor - this.previousZoomFactor > 0 ? -this.pdfViewerBase.pageGap * (this.zoomFactor / this.previousZoomFactor) : this.pdfViewerBase.pageGap * (this.previousZoomFactor / this.zoomFactor);\n this.pdfViewerBase.viewerContainer.scrollTop = canvasCurrentY - this.touchCenterY + pageGapValue / this.pdfViewerBase.zoomInterval;\n // update scroll left for the viewer container based on pinch zoom factor\n var previousWidthFactor = (currentPageBounds.width * this.previousZoomFactor) / currentPageBounds.width;\n var scaleCorrectionFactor = this.zoomFactor / previousWidthFactor - 1;\n var scrollX_1 = this.touchCenterX - currentPageBoundsLeft;\n if (this.pdfViewerBase.isMixedSizeDocument && (this.pdfViewerBase.highestWidth * this.pdfViewerBase.getZoomFactor()) > this.pdfViewerBase.viewerContainer.clientWidth) {\n this.pdfViewerBase.viewerContainer.scrollLeft = (this.pdfViewerBase.pageContainer.offsetWidth - this.pdfViewerBase.viewerContainer.clientWidth) / 2;\n }\n else {\n this.pdfViewerBase.viewerContainer.scrollLeft += scrollX_1 * scaleCorrectionFactor;\n }\n }\n };\n Magnification.prototype.calculateScrollValuesOnMouse = function (scrollValue) {\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var currentPageCanvas = this.pdfViewerBase.getElement('_pageDiv_' + pageIndex);\n if (currentPageCanvas) {\n var pointInViewer = void 0;\n var currentPageBounds = currentPageCanvas.getBoundingClientRect();\n if (this.pdfViewer.enableRtl) {\n pointInViewer = this.positionInViewer(currentPageBounds.right, currentPageBounds.top);\n }\n else {\n pointInViewer = this.positionInViewer(currentPageBounds.left, currentPageBounds.top);\n }\n var currentPageBoundsLeft = pointInViewer.x;\n var currentPageBoundsTop = pointInViewer.y;\n // update scroll top for the viewer container based on mouse zoom factor\n var previousPageTop = (currentPageBoundsTop) * this.previousZoomFactor;\n var canvasPreviousY = scrollValue + this.mouseCenterY;\n // eslint-disable-next-line max-len\n var canvasCurrentY = (currentPageBoundsTop) * this.zoomFactor + ((canvasPreviousY - previousPageTop) * (this.zoomFactor / this.previousZoomFactor));\n // eslint-disable-next-line max-len\n var pageGapValue = this.pdfViewerBase.pageGap * (this.zoomFactor / this.previousZoomFactor);\n if (this.pdfViewerBase.isTouchPad && !this.pdfViewerBase.isMacSafari) {\n pageGapValue = pageGapValue / this.pdfViewerBase.zoomInterval;\n }\n if (canvasCurrentY === 0) {\n pageGapValue = 0;\n }\n this.pdfViewerBase.viewerContainer.scrollTop = canvasCurrentY - this.mouseCenterY + pageGapValue;\n // update scroll left for the viewer container based on mouse zoom factor\n var previousWidthFactor = (currentPageBounds.width * this.previousZoomFactor) / currentPageBounds.width;\n var scaleCorrectionFactor = this.zoomFactor / previousWidthFactor - 1;\n var scrollX_2 = this.mouseCenterX - currentPageBoundsLeft;\n if (this.pdfViewerBase.isMixedSizeDocument && (this.pdfViewerBase.highestWidth * this.pdfViewerBase.getZoomFactor()) > this.pdfViewerBase.viewerContainer.clientWidth) {\n this.pdfViewerBase.viewerContainer.scrollLeft = (this.pdfViewerBase.pageContainer.offsetWidth - this.pdfViewerBase.viewerContainer.clientWidth) / 2;\n }\n else {\n this.pdfViewerBase.viewerContainer.scrollLeft += scrollX_2 * scaleCorrectionFactor;\n }\n }\n };\n Magnification.prototype.rerenderOnScroll = function () {\n var _this = this;\n this.isPinchZoomed = false;\n if (this.isPinchScrolled) {\n this.rerenderOnScrollTimer = null;\n this.isPinchScrolled = false;\n this.reRenderPageNumber = this.pdfViewerBase.currentPageNumber;\n this.pdfViewerBase.renderedPagesList = [];\n this.pdfViewerBase.pinchZoomStorage = [];\n var pageDivs = document.querySelectorAll('img[id*=\"' + this.pdfViewer.element.id + '_pageCanvas_\"]');\n var viewPortWidth = 816;\n for (var i = 0; i < pageDivs.length; i++) {\n // eslint-disable-next-line radix\n var pageNumber = parseInt(pageDivs[i].id.split('_pageCanvas_')[1]);\n var pageWidth = this.pdfViewerBase.pageSize[pageNumber].width;\n if ((viewPortWidth < pageWidth) && this.pdfViewer.tileRenderingSettings.enableTileRendering) {\n if (this.pdfViewer.restrictZoomRequest) {\n pageDivs[i].style.width = pageWidth * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line max-len\n pageDivs[i].style.height = this.pdfViewerBase.pageSize[pageNumber].height * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n else {\n pageDivs[i].style.width = pageWidth * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line max-len\n pageDivs[i].style.height = this.pdfViewerBase.pageSize[pageNumber].height * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n }\n }\n if (this.pdfViewerBase.textLayer) {\n var textLayers = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_textLayer_\"]');\n for (var i = 0; i < textLayers.length; i++) {\n textLayers[i].style.display = 'none';\n }\n }\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n // eslint-disable-next-line max-len\n var annotationLayers = document.querySelectorAll('canvas[id*=\"' + this.pdfViewer.element.id + '_annotationCanvas_\"]');\n for (var j = 0; j < annotationLayers.length; j++) {\n var pageNumber = annotationLayers[j].id.split('_annotationCanvas_')[1];\n // eslint-disable-next-line radix\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.rerenderAnnotationsPinch(parseInt(pageNumber));\n }\n }\n if (Browser.isDevice) {\n if (this.pdfViewer.formDesignerModule) {\n var fomrFieldCollection = void 0;\n var pageNumber_1 = this.pdfViewer.currentPageNumber;\n fomrFieldCollection = this.pdfViewer.formFieldCollection.filter(function (data) { return data.pageNumber === pageNumber_1; });\n for (var i = 0; i < fomrFieldCollection.length; i++) {\n document.querySelectorAll(\"[id^=\" + fomrFieldCollection[parseInt(i.toString(), 10)].id + \"]\").forEach(function (formField) { return formField.style.display = 'none'; });\n }\n }\n else {\n document.querySelectorAll(\"[id^=\\\"pdfViewerinput_\\\"]\").forEach(function (formField) { return formField.parentElement.style.display = 'none'; });\n }\n }\n this.pdfViewerBase.pageViewScrollChanged(this.reRenderPageNumber);\n this.isPagePinchZoomed = false;\n this.rerenderOnScrollTimer = setTimeout(function () {\n _this.pdfViewerBase.pageViewScrollChanged(_this.reRenderPageNumber);\n }, 300);\n if (this.pdfViewerBase.textLayer) {\n var textLayers = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_textLayer_\"]');\n for (var i = 0; i < textLayers.length; i++) {\n textLayers[i].style.display = 'block';\n }\n }\n }\n };\n /**\n * @private\n */\n Magnification.prototype.pinchMoveScroll = function () {\n var _this = this;\n if (this.isRerenderCanvasCreated) {\n this.clearIntervalTimer();\n }\n if (this.isPagesZoomed || (!this.isRerenderCanvasCreated && this.isPagePinchZoomed)) {\n this.clearRendering();\n this.isPagesZoomed = false;\n clearTimeout(this.magnifyPageRerenderTimer);\n this.isPinchScrolled = true;\n this.isFormFieldPageZoomed = true;\n this.rerenderOnScrollTimer = setTimeout(function () {\n _this.rerenderOnScroll();\n }, 100);\n }\n };\n // eslint-disable-next-line\n Magnification.prototype.initiateRerender = function (proxy) {\n var isReRender = false;\n if (this.previousZoomFactor < 0.4 || this.pdfViewerBase.isMinimumZoom) {\n isReRender = true;\n }\n // eslint-disable-next-line max-len\n if (((proxy.pageRerenderCount === proxy.pdfViewerBase.reRenderedCount) || isReRender) && proxy.pageRerenderCount !== 0 && proxy.pdfViewerBase.reRenderedCount !== 0) {\n proxy.reRenderAfterPinch(this.reRenderPageNumber);\n proxy.isFormFieldPageZoomed = false;\n }\n };\n Magnification.prototype.reRenderAfterPinch = function (currentPageIndex) {\n this.pageRerenderCount = 0;\n var lowerPageValue = currentPageIndex - 3;\n var higherPageValue = currentPageIndex + 1;\n if (this.pdfViewerBase.isMinimumZoom) {\n lowerPageValue = currentPageIndex - 4;\n higherPageValue = currentPageIndex + 4;\n }\n lowerPageValue = (lowerPageValue > 0) ? lowerPageValue : 0;\n higherPageValue = (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n for (var i = lowerPageValue; i <= higherPageValue; i++) {\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + i);\n var pageCanvas = this.pdfViewerBase.getElement('_pageCanvas_' + i);\n var oldCanvas = this.pdfViewerBase.getElement('_oldCanvas_' + i);\n if (oldCanvas) {\n oldCanvas.parentNode.removeChild(oldCanvas);\n }\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.rerenderAnnotations(i);\n }\n else if (this.pdfViewer.formDesignerModule) {\n this.rerenderAnnotations(i);\n this.pdfViewer.renderDrawing(undefined, currentPageIndex);\n }\n if (pageDiv) {\n pageDiv.style.visibility = 'visible';\n }\n }\n this.isRerenderCanvasCreated = false;\n this.isPagePinchZoomed = false;\n if (this.pdfViewerBase.reRenderedCount !== 0) {\n this.pdfViewerBase.reRenderedCount = 0;\n this.pageRerenderCount = 0;\n clearInterval(this.rerenderInterval);\n this.rerenderInterval = null;\n }\n this.imageObjects = [];\n };\n /**\n * @param pageNumber\n * @private\n */\n Magnification.prototype.rerenderAnnotations = function (pageNumber) {\n // eslint-disable-next-line\n var oldCanvasCollection = document.querySelectorAll('#' + this.pdfViewer.element.id + '_old_annotationCanvas_' + pageNumber);\n for (var i = 0; i < oldCanvasCollection.length; i++) {\n if (oldCanvasCollection[i]) {\n oldCanvasCollection[i].parentElement.removeChild(oldCanvasCollection[i]);\n }\n }\n var newCanvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (newCanvas) {\n newCanvas.style.display = 'block';\n }\n };\n Magnification.prototype.designNewCanvas = function (currentPageIndex) {\n if (this.pdfViewerBase.textLayer) {\n this.pdfViewerBase.textLayer.clearTextLayers();\n }\n var lowerPageValue = currentPageIndex - 3;\n var higherPageValue = currentPageIndex + 1; // jshint ignore:line\n if (this.pdfViewerBase.isMinimumZoom) {\n lowerPageValue = currentPageIndex - 4;\n higherPageValue = currentPageIndex + 4;\n }\n lowerPageValue = (lowerPageValue > 0) ? lowerPageValue : 0;\n higherPageValue = (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n for (var i = lowerPageValue; i <= higherPageValue; i++) {\n if (this.pdfViewerBase.pageSize[i]) {\n var canvas = this.pdfViewerBase.getElement('_pageCanvas_' + i);\n var width = this.pdfViewerBase.pageSize[i].width * this.zoomFactor;\n var height = this.pdfViewerBase.pageSize[i].height * this.zoomFactor;\n if (canvas && !this.pdfViewer.restrictZoomRequest) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.renderPageCanvas(this.pdfViewerBase.getElement('_pageDiv_' + i), width, height, i, 'none');\n }\n else if (!this.pdfViewer.restrictZoomRequest) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.renderPageCanvas(this.pdfViewerBase.getElement('_pageDiv_' + i), width, height, i, 'none');\n }\n }\n }\n this.isRerenderCanvasCreated = true;\n };\n /**\n * @private\n */\n Magnification.prototype.pageRerenderOnMouseWheel = function () {\n var _this = this;\n if (this.isRerenderCanvasCreated) {\n this.clearIntervalTimer();\n clearTimeout(this.magnifyPageRerenderTimer);\n if (!this.isPinchScrolled) {\n this.isPinchScrolled = true;\n this.rerenderOnScrollTimer = setTimeout(function () {\n _this.rerenderOnScroll();\n }, 100);\n }\n }\n };\n /**\n * @private\n */\n Magnification.prototype.renderCountIncrement = function () {\n if (this.isRerenderCanvasCreated) {\n this.pageRerenderCount++;\n }\n };\n /**\n * @private\n */\n Magnification.prototype.rerenderCountIncrement = function () {\n if (this.pageRerenderCount > 0) {\n this.pdfViewerBase.reRenderedCount++;\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n Magnification.prototype.resizeCanvas = function (pageNumber) {\n var annotationModule = this.pdfViewer.annotationModule;\n if (annotationModule && annotationModule.inkAnnotationModule && annotationModule.inkAnnotationModule.outputString !== '') {\n // eslint-disable-next-line\n annotationModule.inkAnnotationModule.inkPathDataCollection.push({ pathData: annotationModule.inkAnnotationModule.outputString, zoomFactor: annotationModule.inkAnnotationModule.inkAnnotationInitialZoom });\n annotationModule.inkAnnotationModule.outputString = '';\n }\n if (annotationModule && annotationModule.freeTextAnnotationModule) {\n // eslint-disable-next-line\n var currentPosition = { x: annotationModule.freeTextAnnotationModule.currentPosition[0], y: annotationModule.freeTextAnnotationModule.currentPosition[1], width: annotationModule.freeTextAnnotationModule.currentPosition[2], height: annotationModule.freeTextAnnotationModule.currentPosition[3] };\n annotationModule.freeTextAnnotationModule.addInputInZoom(currentPosition);\n }\n var lowerPageValue = pageNumber - 3;\n var higherPageValue = pageNumber + 3;\n if (this.pdfViewerBase.isMinimumZoom) {\n lowerPageValue = pageNumber - 4;\n higherPageValue = pageNumber + 4;\n }\n if (this.pdfViewer.initialRenderPages > this.pdfViewerBase.pageRenderCount) {\n lowerPageValue = 0;\n higherPageValue = (higherPageValue < this.pdfViewer.initialRenderPages) ? (this.pdfViewer.initialRenderPages <= this.pdfViewerBase.pageCount) ? this.pdfViewer.initialRenderPages : this.pdfViewerBase.pageCount : (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n }\n else {\n lowerPageValue = (lowerPageValue > 0) ? lowerPageValue : 0;\n higherPageValue = (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n }\n for (var i = lowerPageValue; i <= higherPageValue; i++) {\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + i);\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + i);\n if (pageDiv) {\n if ((lowerPageValue <= i) && (i <= higherPageValue)) {\n var isSelectionAvailable = false;\n if (this.pdfViewer.textSelectionModule) {\n isSelectionAvailable = this.pdfViewer.textSelectionModule.isSelectionAvailableOnScroll(i);\n }\n if (this.pdfViewerBase.pageSize[i] != null) {\n var width = this.pdfViewerBase.pageSize[i].width * this.zoomFactor;\n var height = this.pdfViewerBase.pageSize[i].height * this.zoomFactor;\n pageDiv.style.width = width + 'px';\n pageDiv.style.height = height + 'px';\n // eslint-disable-next-line max-len\n pageDiv.style.top = ((this.pdfViewerBase.pageSize[i].top) * this.zoomFactor) + 'px';\n if (this.pdfViewer.enableRtl) {\n pageDiv.style.right = this.pdfViewerBase.updateLeftPosition(i) + 'px';\n }\n else {\n pageDiv.style.left = this.pdfViewerBase.updateLeftPosition(i) + 'px';\n }\n var canvas = this.pdfViewerBase.getElement('_pageCanvas_' + i);\n if (canvas) {\n canvas.style.width = (width) + 'px';\n canvas.style.height = height + 'px';\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotationModule.resizeAnnotations(width, height, i);\n }\n else if (this.pdfViewer.formDesignerModule) {\n this.pdfViewer.formDesignerModule.resizeAnnotations(width, height, i);\n }\n }\n var zoomFactor = this.pdfViewerBase.retrieveCurrentZoomFactor();\n var tileCount = this.pdfViewerBase.getTileCount(this.pdfViewerBase.pageSize[i].width);\n var noTileX = void 0;\n var noTileY = void 0;\n noTileX = noTileY = tileCount;\n var tileSettings = this.pdfViewer.tileRenderingSettings;\n if (tileSettings.enableTileRendering && tileSettings.x > 0 && tileSettings.y > 0) {\n if ((1200 < this.pdfViewerBase.pageSize[i].width || this.pdfViewerBase.getZoomFactor() > 2)) {\n noTileX = tileSettings.x;\n noTileY = tileSettings.y;\n }\n }\n var tileRequestCount = noTileX * noTileY;\n if (tileRequestCount === 1) {\n var storedData = void 0;\n if (this.pdfViewerBase.clientSideRendering) {\n storedData = this.pdfViewerBase.getWindowSessionStorage(i, zoomFactor) ? this.pdfViewerBase.getWindowSessionStorage(i, zoomFactor) : this.pdfViewerBase.getPinchZoomPage(i);\n }\n else {\n storedData = this.pdfViewerBase.getLinkInformation(i) ? this.pdfViewerBase.getLinkInformation(i) : this.pdfViewerBase.getWindowSessionStorage(i, zoomFactor);\n }\n if (storedData) {\n storedData = this.pdfViewerBase.clientSideRendering && typeof storedData === 'object' ? storedData : JSON.parse(storedData);\n var imageData = storedData['image'];\n if (imageData) {\n canvas.src = imageData;\n canvas.style.display = 'block';\n var oldCanvases = document.querySelectorAll('img[id*=\"' + this.pdfViewer.element.id + '_tileimg_' + i + '_\"]');\n var pageCanvas = this.pdfViewerBase.getElement('_pageDiv_' + i);\n for (var k = 0; k < oldCanvases.length; k++) {\n var tileImgId = oldCanvases[k].id.split('_');\n if (parseFloat(tileImgId[tileImgId.length - 3]) != this.pdfViewerBase.getZoomFactor())\n pageCanvas.removeChild(oldCanvases[k]);\n }\n var oldPageDiv = document.querySelectorAll('img[id*=\"' + this.pdfViewer.element.id + '_oldCanvas\"]');\n for (var j = 0; j < oldPageDiv.length; j++) {\n pageDiv.removeChild(oldPageDiv[j]);\n }\n }\n this.pdfViewerBase.isReRenderRequired = false;\n }\n else {\n this.pdfViewerBase.isReRenderRequired = true;\n }\n }\n else {\n var oldCanvases = document.querySelectorAll('img[id*=\"' + this.pdfViewer.element.id + '_tileimg_' + i + '_\"]');\n for (var l = 0; l < oldCanvases.length; l++) {\n var tileImgId = oldCanvases[l].id.split('_');\n var tileX = parseFloat(tileImgId[tileImgId.length - 2]);\n var tileY = parseFloat(tileImgId[tileImgId.length - 1]);\n // eslint-disable-next-line\n var tileData = this.pdfViewerBase.clientSideRendering ? JSON.parse(this.pdfViewerBase.getStoredTileImageDetails(i, tileX, tileY, zoomFactor)) : JSON.parse(this.pdfViewerBase.getWindowSessionStorageTile(i, tileX, tileY, zoomFactor));\n if (tileData && tileData.zoomFactor) {\n zoomFactor = tileData.zoomFactor;\n }\n if (parseFloat(tileImgId[tileImgId.length - 4]) === i) {\n canvas.style.display = 'none';\n var node = oldCanvases[l];\n // Make sure it's really an Element\n if (node.nodeType == Node.ELEMENT_NODE) {\n var dataScaleFactor = 1.5;\n if (!isNullOrUndefined(tileData)) {\n dataScaleFactor = (!isNullOrUndefined(tileData.scaleFactor)) ? tileData.scaleFactor : 1.5;\n }\n var pageWidth = this.pdfViewerBase.pageSize[i].width;\n var serverImageWidth = pageWidth * zoomFactor * dataScaleFactor;\n var serverImageHeight = this.pdfViewerBase.pageSize[i].height * zoomFactor * dataScaleFactor;\n var tilewidth = serverImageWidth / noTileX;\n var tileHeight = serverImageHeight / noTileY;\n var originalWidth = tilewidth;\n var originalLeft = parseFloat(tileImgId[tileImgId.length - 2]) * tilewidth;\n var originalTop = parseFloat(tileImgId[tileImgId.length - 1]) * tileHeight;\n node.width = (((originalWidth * this.pdfViewerBase.getZoomFactor()) / zoomFactor) / dataScaleFactor);\n node.style.width = (((originalWidth * this.pdfViewerBase.getZoomFactor()) / zoomFactor) / dataScaleFactor) + 'px';\n node.style.left = (((originalLeft * this.pdfViewerBase.getZoomFactor()) / zoomFactor) / dataScaleFactor) + 'px';\n node.style.top = (((originalTop * this.pdfViewerBase.getZoomFactor()) / zoomFactor) / dataScaleFactor) + 'px';\n node.id = this.pdfViewer.element.id + '_tileimg_' + i + '_' + this.pdfViewerBase.getZoomFactor() + '_' + tileX + '_' + tileY;\n if (tileData) {\n var imageData = tileData['image'];\n if (imageData) {\n node.src = imageData;\n }\n this.pdfViewerBase.isReRenderRequired = false;\n }\n else {\n this.pdfViewerBase.isReRenderRequired = true;\n }\n }\n }\n }\n if (oldCanvases.length === 0) {\n this.pdfViewerBase.isReRenderRequired = true;\n }\n }\n var aElement = pageDiv.getElementsByTagName('a');\n if (aElement.length !== 0) {\n for (var index = aElement.length - 1; index >= 0; index--) {\n aElement[index].parentNode.removeChild(aElement[index]);\n }\n }\n if (textLayer) {\n textLayer.style.width = width + 'px';\n textLayer.style.height = height + 'px';\n if (this.pdfViewer.textSelectionModule) {\n if (this.isPinchZoomed) {\n textLayer.style.display = 'none';\n }\n else if (this.isMagnified) {\n var lowerValue = ((pageNumber - 2) === 0) ? 0 : (pageNumber - 2);\n // eslint-disable-next-line max-len\n var higherValue = ((pageNumber) === (this.pdfViewerBase.pageCount)) ? (this.pdfViewerBase.pageCount - 1) : (pageNumber + 1);\n if ((lowerValue <= i) && (i <= higherValue) && ((this.pdfViewer.textSelectionModule.isTextSelection && isSelectionAvailable) || this.pdfViewerBase.textLayer.getTextSearchStatus() || this.pdfViewerBase.isInitialPageMode)) {\n this.pdfViewerBase.textLayer.resizeTextContentsOnZoom(i);\n if (this.pdfViewer.textSelectionModule.isTextSelection && isSelectionAvailable) {\n this.pdfViewer.textSelectionModule.applySelectionRangeOnScroll(i);\n }\n }\n else {\n textLayer.style.display = 'none';\n }\n }\n else {\n textLayer.style.display = 'block';\n }\n }\n this.pdfViewerBase.applyElementStyles(textLayer, i);\n }\n var adornerSvg = getDiagramElement(this.pdfViewer.element.id + '_textLayer_' + i);\n if (adornerSvg) {\n var adonerLayer = getDiagramElement(this.pdfViewer.element.id + i + '_diagramAdorner_svg');\n if (adonerLayer) {\n adonerLayer.style.width = width + 'px';\n adonerLayer.style.height = height + 'px';\n }\n var diagramAdornerLayer = getDiagramElement(this.pdfViewer.element.id + i + '_diagramAdornerLayer');\n if (diagramAdornerLayer) {\n diagramAdornerLayer.style.width = width + 'px';\n diagramAdornerLayer.style.height = height + 'px';\n }\n adornerSvg.style.width = width + 'px';\n adornerSvg.style.height = height + 'px';\n this.pdfViewer.renderSelector(i, this.pdfViewer.annotationSelectorSettings);\n this.pdfViewerBase.applyElementStyles(diagramAdornerLayer, i);\n }\n }\n }\n }\n }\n };\n Magnification.prototype.zoomOverPages = function (pointX1, pointY1, pointX2, pointY2) {\n // eslint-disable-next-line\n var currentDifference = Math.sqrt(Math.pow((pointX1 - pointX2), 2) + Math.pow((pointY1 - pointY2), 2));\n if (this.previousTouchDifference > -1) {\n if (currentDifference > this.previousTouchDifference) {\n this.pinchStep = this.getPinchStep(currentDifference, this.previousTouchDifference);\n this.pinchOut();\n }\n else if (currentDifference < this.previousTouchDifference) {\n this.pinchStep = this.getPinchStep(this.previousTouchDifference, currentDifference);\n this.pinchIn();\n }\n }\n this.previousTouchDifference = currentDifference;\n };\n /**\n * @private\n */\n Magnification.prototype.pinchMoveEnd = function () {\n this.touchCenterX = 0;\n this.touchCenterY = 0;\n this.previousTouchDifference = -1;\n if (this.isPinchZoomed) {\n this.isPinchScrolled = false;\n this.isPagePinchZoomed = true;\n this.pinchMoveScroll();\n }\n };\n /**\n * @param event\n * @private\n */\n // eslint-disable-next-line\n Magnification.prototype.fitPageScrollMouseWheel = function (event) {\n if (this.fitType === 'fitToPage') {\n this.isMagnified = false;\n event.preventDefault();\n if (event.deltaY > 0) {\n this.downwardScrollFitPage(this.pdfViewerBase.currentPageNumber - 1);\n }\n else {\n this.upwardScrollFitPage(this.pdfViewerBase.currentPageNumber - 1);\n }\n }\n };\n /**\n * @param event\n * @private\n */\n Magnification.prototype.magnifyBehaviorKeyDown = function (event) {\n var isMac = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true : false;\n var isCommandKey = isMac ? event.metaKey : false;\n switch (event.keyCode) {\n case 38: // up arrow\n case 37: // left arrow\n case 33: // page up\n if (this.fitType === 'fitToPage' && !((event.ctrlKey || isCommandKey) && event.shiftKey)) {\n event.preventDefault();\n this.upwardScrollFitPage(this.pdfViewerBase.currentPageNumber - 1);\n }\n break;\n case 40: // down arrow\n case 39: // right arrow\n case 34: // page down\n if (this.fitType === 'fitToPage' && !((event.ctrlKey || isCommandKey) && event.shiftKey)) {\n event.preventDefault();\n this.downwardScrollFitPage(this.pdfViewerBase.currentPageNumber - 1);\n }\n break;\n case 187: // equal key\n if (event.ctrlKey || isCommandKey) {\n event.preventDefault();\n this.zoomIn();\n }\n break;\n case 189: // minus key\n if (event.ctrlKey || isCommandKey) {\n event.preventDefault();\n this.zoomOut();\n }\n break;\n case 48: // zero key\n if ((event.ctrlKey || isCommandKey) && !event.shiftKey) {\n event.preventDefault();\n this.fitToPage();\n }\n break;\n case 49: // one key\n if ((event.ctrlKey || isCommandKey) && !event.shiftKey) {\n event.preventDefault();\n this.zoomTo(100);\n }\n break;\n default:\n break;\n }\n };\n Magnification.prototype.upwardScrollFitPage = function (currentPageIndex) {\n if (currentPageIndex > 0) {\n this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex - 1)).style.visibility = 'visible';\n this.pdfViewerBase.viewerContainer.scrollTop = this.pdfViewerBase.pageSize[currentPageIndex - 1].top * this.zoomFactor;\n if (this.isFitToPageMode) {\n this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex)).style.visibility = 'hidden';\n }\n }\n };\n /**\n * @param currentPageIndex\n * @private\n */\n Magnification.prototype.updatePagesForFitPage = function (currentPageIndex) {\n if (this.fitType === 'fitToPage') {\n if (this.isFitToPageMode) {\n if (currentPageIndex > 0 && this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex - 1))) {\n this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex - 1)).style.visibility = 'hidden';\n }\n // eslint-disable-next-line max-len\n if ((currentPageIndex < (this.pdfViewerBase.pageCount - 1)) && this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex + 1))) {\n this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex + 1)).style.visibility = 'hidden';\n }\n }\n }\n };\n /**\n * @private\n */\n Magnification.prototype.onDoubleTapMagnification = function () {\n var _this = this;\n if (this.pdfViewer.toolbarModule && isBlazor()) {\n this.pdfViewer.toolbarModule.showToolbar(true);\n }\n var scrollValue = this.pdfViewerBase.viewerContainer.scrollTop;\n if (!this.pdfViewer.selectedItems.annotations[0]) {\n this.isDoubleTapZoom = true;\n if (!this.isTapToFitZoom) {\n if (this.zoomFactor < 2) {\n this.zoomTo(200);\n }\n else {\n this.fitToWidth();\n }\n }\n else {\n this.fitToWidth();\n }\n this.calculateScrollValues(scrollValue);\n this.isTapToFitZoom = !this.isTapToFitZoom;\n setTimeout(function () { _this.isMagnified = false; }, 500);\n this.isDoubleTapZoom = false;\n }\n else {\n if (isBlazor()) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n var elmtPosition = {};\n elmtPosition.x = this.pdfViewer.selectedItems.annotations[0].bounds.x;\n elmtPosition.y = this.pdfViewer.selectedItems.annotations[0].bounds.y;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.freeTextAnnotationModule.addInuptElemet(elmtPosition, this.pdfViewer.selectedItems.annotations[0]);\n }\n }\n }\n };\n Magnification.prototype.downwardScrollFitPage = function (currentPageIndex) {\n if (currentPageIndex !== (this.pdfViewerBase.pageCount - 1)) {\n this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex + 1)).style.visibility = 'visible';\n this.pdfViewerBase.viewerContainer.scrollTop = this.pdfViewerBase.pageSize[currentPageIndex + 1].top * this.zoomFactor;\n if (this.isFitToPageMode) {\n if (currentPageIndex + 1 === (this.pdfViewerBase.pageCount - 1)) {\n this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex)).style.visibility = 'hidden';\n }\n else {\n this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex + 2)).style.visibility = 'hidden';\n }\n }\n }\n };\n Magnification.prototype.getMagnifiedValue = function (value) {\n return (value / this.previousZoomFactor) * this.zoomFactor;\n };\n /**\n * @private\n */\n Magnification.prototype.destroy = function () {\n this.imageObjects = undefined;\n };\n /**\n * returns zoom factor when the zoom percent is passed.\n *\n * @param zoomValue\n */\n Magnification.prototype.getZoomFactor = function (zoomValue) {\n return zoomValue / 100;\n };\n /**\n * @private\n */\n Magnification.prototype.getModuleName = function () {\n return 'Magnification';\n };\n /**\n * Returns the pinch step value.\n * @param higherValue\n * @param lowerValue\n */\n Magnification.prototype.getPinchStep = function (higherValue, lowerValue) {\n var defaultPinchStep = 0.02; // Default pinch step value.\n var higherPinchStep = 1; // higher pinch step value.\n var pinchstep = (higherValue - lowerValue) / 100;\n if (pinchstep < defaultPinchStep) {\n pinchstep = defaultPinchStep;\n }\n else if (pinchstep > higherPinchStep) {\n pinchstep = 0.1; // set the pinch step as 0.1 if the pinch reaches the higher pinch step value.\n }\n return pinchstep;\n };\n /**\n * @private\n * Brings the given rectangular region to view and zooms in the document to fit the region in client area (view port).\n *\n * @param {Rect} zoomRect - Specifies the region in client coordinates that is to be brought to view.\n */\n Magnification.prototype.zoomToRect = function (zoomRect) {\n var desiredScaleFactor;\n var pdfViewerBase = this.pdfViewerBase;\n var viewerContainer = pdfViewerBase.viewerContainer;\n var pdfViewer = this.pdfViewer;\n if (zoomRect.width > 0 && zoomRect.height > 0) {\n var location_1 = { x: zoomRect.x, y: zoomRect.y };\n var pageNumber = pdfViewer.getPageNumberFromClientPoint(location_1);\n if (pageNumber > 0) {\n var desiredHorizontalScale = viewerContainer.getBoundingClientRect().width / zoomRect.width;\n var desiredVerticalScale = viewerContainer.getBoundingClientRect().height / zoomRect.height;\n if (desiredHorizontalScale < desiredVerticalScale) {\n desiredScaleFactor = desiredHorizontalScale;\n }\n else {\n desiredScaleFactor = desiredVerticalScale;\n }\n var zoomValue = 100; // default zoom value\n var zoomPercentage = pdfViewerBase.getZoomFactor() * 100;\n zoomValue = zoomPercentage * desiredScaleFactor;\n var prevScrollTop = viewerContainer.scrollTop;\n var prevScrollLeft = viewerContainer.scrollLeft;\n // Zoom to desired zoom value.\n this.zoomTo(zoomValue);\n viewerContainer.scrollTop = prevScrollTop;\n viewerContainer.scrollLeft = prevScrollLeft;\n var zoomFactor = pdfViewerBase.getZoomFactor();\n var pagepoint = { x: zoomRect.x, y: zoomRect.y };\n // Convert the client point to page point.\n pagepoint = pdfViewer.convertClientPointToPagePoint(pagepoint, pageNumber);\n pdfViewerBase.updateScrollTop(pageNumber - 1);\n // To adjust the container to the left position.\n viewerContainer.scrollLeft = (pagepoint.x - prevScrollLeft) * zoomFactor;\n // To adjust the container to the top position.\n viewerContainer.scrollTop = ((pagepoint.y + pdfViewerBase.pageSize[pageNumber - 1].top) - prevScrollTop) * zoomFactor;\n }\n }\n };\n /**\n * Returns Point value respect to Main container.\n * @param PointX\n * @param PointY\n */\n Magnification.prototype.positionInViewer = function (pointX, pointY) {\n var mainRect = this.pdfViewerBase.mainContainer.getBoundingClientRect();\n return { x: pointX - mainRect.left, y: pointY - mainRect.top };\n };\n return Magnification;\n}());\nexport { Magnification };\n","/**\n * Navigation module\n */\nvar Navigation = /** @class */ (function () {\n /**\n * @param viewer\n * @param viewerBase\n * @param viewer\n * @param viewerBase\n * @private\n */\n function Navigation(viewer, viewerBase) {\n this.pdfViewer = viewer;\n this.pdfViewerBase = viewerBase;\n }\n /**\n * Navigate to Next page of the PDF document\n *\n * @returns void\n */\n Navigation.prototype.goToNextPage = function () {\n this.pageNumber = this.pdfViewerBase.currentPageNumber;\n this.pageNumber++;\n if (this.pageNumber <= this.pdfViewerBase.pageCount) {\n this.pdfViewerBase.updateScrollTop(this.pageNumber - 1);\n }\n };\n /**\n * Navigate to Previous page of the PDF document\n *\n * @returns void\n */\n Navigation.prototype.goToPreviousPage = function () {\n this.pageNumber = this.pdfViewerBase.currentPageNumber;\n this.pageNumber--;\n if (this.pageNumber > 0) {\n this.pdfViewerBase.updateScrollTop(this.pageNumber - 1);\n }\n };\n /**\n * Navigate to given Page number\n * Note : In case if we have provided incorrect page number as argument it will retain the existing page\n *\n * @param {number} pageNumber - Defines the page number to navigate\n * @returns void\n */\n Navigation.prototype.goToPage = function (pageNumber) {\n if (pageNumber > 0 && pageNumber <= this.pdfViewerBase.pageCount && this.pdfViewerBase.currentPageNumber !== pageNumber) {\n this.pdfViewerBase.updateScrollTop(pageNumber - 1);\n if (this.pdfViewer.enableThumbnail) {\n this.pdfViewer.thumbnailViewModule.updateScrollTopForThumbnail(pageNumber - 1);\n }\n }\n if (this.pdfViewer.magnificationModule) {\n this.pdfViewer.magnificationModule.resizeCanvas(pageNumber);\n }\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber - 1));\n if (textLayer) {\n textLayer.style.display = 'block';\n }\n };\n /**\n * Navigate to First page of the PDF document\n *\n * @returns void\n */\n Navigation.prototype.goToFirstPage = function () {\n this.pageNumber = 0;\n this.pdfViewerBase.updateScrollTop(this.pageNumber);\n };\n /**\n * Navigate to Last page of the PDF document\n *\n * @returns void\n */\n Navigation.prototype.goToLastPage = function () {\n this.pageNumber = this.pdfViewerBase.pageCount - 1;\n this.pdfViewerBase.updateScrollTop(this.pageNumber);\n };\n /**\n * @private\n */\n Navigation.prototype.destroy = function () {\n this.pageNumber = 0;\n };\n /**\n * @private\n */\n Navigation.prototype.getModuleName = function () {\n return 'Navigation';\n };\n return Navigation;\n}());\nexport { Navigation };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { LineTool, PolygonDrawingTool } from '../drawing/tools';\nimport { findObjectsUnderMouse } from '../drawing/action';\n/**\n * The `LinkAnnotation` module is used to handle link annotation actions of PDF viewer.\n *\n * @hidden\n */\nvar LinkAnnotation = /** @class */ (function () {\n /**\n * @param pdfViewer\n * @param viewerBase\n * @param pdfViewer\n * @param viewerBase\n * @private\n */\n function LinkAnnotation(pdfViewer, viewerBase) {\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = viewerBase;\n }\n /**\n * @param data\n * @param pageIndex\n * @param data\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n LinkAnnotation.prototype.renderHyperlinkContent = function (data, pageIndex) {\n if (this.pdfViewer.enableHyperlink) {\n var hyperlinks = data.hyperlinks;\n var hyperlinksBounds = data.hyperlinkBounds;\n this.linkAnnotation = data.linkAnnotation;\n this.linkPage = data.linkPage;\n this.annotationY = data.annotationLocation;\n if (hyperlinks && hyperlinks.length > 0 && hyperlinksBounds.length > 0) {\n this.renderWebLink(hyperlinks, hyperlinksBounds, pageIndex);\n }\n if (this.linkAnnotation && this.linkAnnotation.length > 0 && this.linkPage.length > 0) {\n this.renderDocumentLink(this.linkAnnotation, this.linkPage, this.annotationY, pageIndex);\n }\n }\n };\n /**\n * @private\n */\n LinkAnnotation.prototype.disableHyperlinkNavigationUnderObjects = function (eventTarget, evt, element) {\n var objects = findObjectsUnderMouse(element, element.pdfViewer, evt);\n if (objects.length > 0) {\n if (evt.target.classList.contains('e-pv-hyperlink')) {\n eventTarget.style.cursor = 'move';\n eventTarget.style.pointerEvents = 'none';\n eventTarget.title = '';\n }\n }\n else {\n var hyperlinkObjects = document.getElementsByClassName('e-pv-hyperlink');\n if (hyperlinkObjects && hyperlinkObjects.length > 0) {\n for (var i = 0; i < hyperlinkObjects.length; i++) {\n if (hyperlinkObjects[i].style.pointerEvents === 'none')\n hyperlinkObjects[i].style.pointerEvents = 'all';\n if (!hyperlinkObjects[i].title)\n hyperlinkObjects[i].title = hyperlinkObjects[i].href;\n }\n }\n }\n };\n LinkAnnotation.prototype.renderWebLink = function (hyperlinks, hyperlinksBounds, pageIndex) {\n var _this = this;\n var proxy = this;\n var isHyperlinkClicked = false;\n var _loop_1 = function (i) {\n var aTag = createElement('a', { id: 'weblinkdiv_' + i + '_' + pageIndex });\n // eslint-disable-next-line\n var rect = hyperlinksBounds[i];\n aTag = this_1.setHyperlinkProperties(aTag, rect, pageIndex);\n aTag.title = hyperlinks[i];\n if (hyperlinks[i] && hyperlinks[i].split('http').length === 1) {\n var hyperlinkText = \"http://\" + hyperlinks[i];\n aTag.setAttribute('href', hyperlinkText);\n }\n else {\n aTag.setAttribute('href', hyperlinks[i]);\n }\n if (this_1.pdfViewer.hyperlinkOpenState === 'CurrentTab') {\n aTag.target = '_self';\n aTag.onclick = function (e) { return __awaiter(_this, void 0, void 0, function () {\n var isCancel;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!isHyperlinkClicked) return [3 /*break*/, 4];\n e.preventDefault();\n if (!(proxy.pdfViewerBase.tool instanceof LineTool || proxy.pdfViewerBase.tool instanceof PolygonDrawingTool)) return [3 /*break*/, 1];\n return [2 /*return*/, false];\n case 1: return [4 /*yield*/, proxy.pdfViewer.fireHyperlinkClick(hyperlinks[i], aTag)];\n case 2:\n isCancel = _a.sent();\n if (isCancel && this.pdfViewer.selectedItems.annotations.length === 0 && this.pdfViewer.selectedItems.formFields.length === 0) {\n isHyperlinkClicked = true;\n aTag.click();\n }\n return [2 /*return*/, isCancel];\n case 3: return [3 /*break*/, 5];\n case 4:\n isHyperlinkClicked = false;\n return [2 /*return*/, true];\n case 5: return [2 /*return*/];\n }\n });\n }); };\n aTag.onmouseover = function () {\n proxy.triggerHyperlinkEvent(aTag);\n };\n }\n else if (this_1.pdfViewer.hyperlinkOpenState === 'NewTab') {\n aTag.target = '_blank';\n aTag.onclick = function (e) { return __awaiter(_this, void 0, void 0, function () {\n var isCancel;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!isHyperlinkClicked) return [3 /*break*/, 4];\n e.preventDefault();\n if (!(proxy.pdfViewerBase.tool instanceof LineTool || proxy.pdfViewerBase.tool instanceof PolygonDrawingTool)) return [3 /*break*/, 1];\n return [2 /*return*/, false];\n case 1: return [4 /*yield*/, proxy.pdfViewer.fireHyperlinkClick(hyperlinks[i], aTag)];\n case 2:\n isCancel = _a.sent();\n if (isCancel && this.pdfViewer.selectedItems.annotations.length === 0 && this.pdfViewer.selectedItems.formFields.length === 0) {\n isHyperlinkClicked = true;\n aTag.click();\n }\n return [2 /*return*/, isCancel];\n case 3: return [3 /*break*/, 5];\n case 4:\n isHyperlinkClicked = false;\n return [2 /*return*/, true];\n case 5: return [2 /*return*/];\n }\n });\n }); };\n aTag.onmouseover = function () {\n proxy.triggerHyperlinkEvent(aTag);\n };\n }\n else if (this_1.pdfViewer.hyperlinkOpenState === 'NewWindow') {\n aTag.onclick = function (e) { return __awaiter(_this, void 0, void 0, function () {\n var isCancel;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n e.preventDefault();\n if (!(proxy.pdfViewerBase.tool instanceof LineTool || proxy.pdfViewerBase.tool instanceof PolygonDrawingTool)) return [3 /*break*/, 1];\n return [2 /*return*/, false];\n case 1: return [4 /*yield*/, proxy.pdfViewer.fireHyperlinkClick(hyperlinks[i], aTag)];\n case 2:\n isCancel = _a.sent();\n if (isCancel && this.pdfViewer.selectedItems.annotations.length === 0 && this.pdfViewer.selectedItems.formFields.length === 0) {\n window.open(aTag.href, '_blank', 'scrollbars=yes,resizable=yes');\n }\n return [2 /*return*/, false];\n }\n });\n }); };\n aTag.onmouseover = function () {\n proxy.triggerHyperlinkEvent(aTag);\n };\n }\n var pageDiv = document.getElementById(this_1.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n pageDiv.appendChild(aTag);\n };\n var this_1 = this;\n for (var i = 0; i < hyperlinks.length; i++) {\n _loop_1(i);\n }\n };\n LinkAnnotation.prototype.triggerHyperlinkEvent = function (aTag) {\n if (this.pdfViewerBase.tool instanceof LineTool || this.pdfViewerBase.tool instanceof PolygonDrawingTool) {\n return false;\n }\n else {\n this.pdfViewer.fireHyperlinkHover(aTag);\n return true;\n }\n };\n LinkAnnotation.prototype.renderDocumentLink = function (linkAnnotation, linkPage, annotationY, pageIndex) {\n var proxy = this;\n var _loop_2 = function (i) {\n var aTag = createElement('a', { id: 'linkdiv_' + i + '_' + pageIndex });\n // eslint-disable-next-line\n var rect = linkAnnotation[i];\n aTag = this_2.setHyperlinkProperties(aTag, rect, pageIndex);\n aTag.setAttribute('href', 'javascript:void(0)');\n if (linkPage[i] !== undefined && linkPage[i] >= 0) {\n var destPageHeight = (this_2.pdfViewerBase.pageSize[pageIndex].height);\n var destLocation = void 0;\n var scrollValue = void 0;\n var pageSize = this_2.pdfViewerBase.pageSize[linkPage[i]];\n if (pageSize) {\n if (annotationY.length !== 0) {\n destLocation = (annotationY[i]);\n // eslint-disable-next-line max-len\n scrollValue = pageSize.top * this_2.pdfViewerBase.getZoomFactor() + ((destPageHeight - destLocation) * this_2.pdfViewerBase.getZoomFactor());\n }\n else {\n // eslint-disable-next-line max-len\n scrollValue = pageSize.top * this_2.pdfViewerBase.getZoomFactor();\n }\n }\n if (scrollValue !== undefined) {\n aTag.name = scrollValue.toString();\n aTag.setAttribute('aria-label', scrollValue.toString());\n aTag.onclick = function () {\n if (proxy.pdfViewerBase.tool instanceof LineTool || proxy.pdfViewerBase.tool instanceof PolygonDrawingTool) {\n return false;\n }\n else {\n // eslint-disable-next-line radix\n proxy.pdfViewerBase.viewerContainer.scrollTop = parseInt(aTag.name);\n return false;\n }\n };\n }\n var pageDiv = document.getElementById(this_2.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n if (!isNullOrUndefined(pageDiv)) {\n pageDiv.appendChild(aTag);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < linkAnnotation.length; i++) {\n _loop_2(i);\n }\n };\n // eslint-disable-next-line\n LinkAnnotation.prototype.setHyperlinkProperties = function (aTag, rect, pageIndex) {\n aTag.className = 'e-pv-hyperlink';\n aTag.style.background = 'transparent';\n aTag.style.position = 'absolute';\n aTag.style.left = (rect.Left * this.pdfViewerBase.getZoomFactor()) + 'px';\n aTag.style.top = (rect.Top * this.pdfViewerBase.getZoomFactor()) + 'px';\n aTag.style.width = (rect.Width * this.pdfViewerBase.getZoomFactor()) + 'px';\n if (rect.Height < 0) {\n aTag.style.height = (-rect.Height * this.pdfViewerBase.getZoomFactor()) + 'px';\n aTag.style.top = ((rect.Top + rect.Height) * this.pdfViewerBase.getZoomFactor()) + 'px';\n }\n else {\n aTag.style.height = ((rect.Height < 0 ? -rect.Height : rect.Height) * this.pdfViewerBase.getZoomFactor()) + 'px';\n }\n aTag.style.color = 'transparent';\n this.pdfViewerBase.applyElementStyles(aTag, pageIndex);\n return aTag;\n };\n /**\n * @param pageNumber\n * @param isAdd\n * @param pageNumber\n * @param isAdd\n * @private\n */\n LinkAnnotation.prototype.modifyZindexForTextSelection = function (pageNumber, isAdd) {\n if (this.pdfViewerBase.pageCount > 0) {\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + pageNumber);\n if (pageDiv) {\n var pageChildNodes = pageDiv.childNodes;\n for (var i = 0; i < pageChildNodes.length; i++) {\n var childElement = pageChildNodes[i];\n if (childElement.tagName === 'A') {\n if (isAdd) {\n childElement.classList.add('e-pv-onselection');\n }\n else {\n childElement.classList.remove('e-pv-onselection');\n }\n }\n }\n }\n }\n };\n /**\n * @param element\n * @param isAdd\n * @param element\n * @param isAdd\n * @private\n */\n LinkAnnotation.prototype.modifyZindexForHyperlink = function (element, isAdd) {\n if (isAdd) {\n element.classList.add('e-pv-onselection');\n }\n else {\n element.classList.remove('e-pv-onselection');\n }\n };\n /**\n * @private\n */\n LinkAnnotation.prototype.destroy = function () {\n for (var i = 0; i < this.pdfViewerBase.pageCount - 1; i++) {\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + i);\n if (pageDiv) {\n // eslint-disable-next-line max-len\n var aElement = pageDiv.getElementsByTagName('a');\n if (aElement.length !== 0) {\n for (var index = aElement.length - 1; index >= 0; index--) {\n aElement[index].parentNode.removeChild(aElement[index]);\n }\n }\n }\n }\n };\n /**\n * @private\n */\n LinkAnnotation.prototype.getModuleName = function () {\n return 'LinkAnnotation';\n };\n return LinkAnnotation;\n}());\nexport { LinkAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isUndefined, Browser, compile, isNullOrUndefined, SanitizeHtmlHelper, animationMode } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { rippleEffect, Animation, remove } from '@syncfusion/ej2-base';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { getElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, matches, detach, select, selectAll, isVisible, append } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined as isNOU, Touch, getValue, setValue, extend, merge, attributes } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar LISTWRAP = 'e-text-wrap';\nvar IELISTWRAP = 'e-ie-wrap';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL = 'e-rtl';\nvar INTERACTION = 'e-interaction';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar RIPPLE = 'e-ripple';\nvar RIPPLEELMENT = 'e-ripple-element';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar DISABLED = 'e-disabled';\nvar PREVENTSELECT = 'e-prevent';\nvar treeAriaAttr = {\n treeRole: 'group',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: ''\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @class */ (function (_super) {\n __extends(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], FieldsSettings.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('id')\n ], FieldsSettings.prototype, \"id\", void 0);\n __decorate([\n Property('imageUrl')\n ], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('parentID')\n ], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], FieldsSettings.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], FieldsSettings.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], FieldsSettings.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('navigateUrl')\n ], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty));\nexport { FieldsSettings };\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @class */ (function (_super) {\n __extends(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], ActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], ActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty));\nexport { ActionSettings };\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @class */ (function (_super) {\n __extends(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty));\nexport { NodeAnimationSettings };\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n *
\n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @class */ (function (_super) {\n __extends(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isRefreshed = false;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n // eslint-disable-next-line\n _this.validArr = [];\n _this.validNodes = [];\n _this.expandChildren = [];\n _this.isFieldChange = false;\n _this.changeDataSource = false;\n _this.hasTemplate = false;\n _this.isFirstRender = false;\n // Specifies whether the node is dropped or not\n _this.isNodeDropped = false;\n _this.isInteracted = false;\n _this.isRightClick = false;\n _this.mouseDownStatus = false;\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.checkActionNodes = [];\n this.parentNodeCheck = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n shiftSpace: 'shift+space',\n ctrlSpace: 'ctrl+space'\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n itemNavigable: this.fullRowNavigable\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n if (isNOU(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNOU(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNOU(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the persisted data\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.initialize();\n this.setDataBinding(false);\n this.setDisabledMode();\n this.setExpandOnType();\n if (!this.disabled) {\n this.setRipple();\n }\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n if (!this.disabled) {\n this.wireEvents();\n }\n this.initialRender = false;\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n this.setTextWrap();\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setDisabledMode = function () {\n if (this.disabled) {\n this.element.classList.add(DISABLED);\n this.element.setAttribute('aria-disabled', 'true');\n }\n else {\n this.element.classList.remove(DISABLED);\n this.element.setAttribute('aria-disabled', 'false');\n }\n };\n TreeView.prototype.setEnableRtl = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n (isEnabled ? addClass : removeClass)([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n if (isEnabled) {\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n };\n // eslint-disable-next-line\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n this.hasTemplate = true;\n // eslint-disable-next-line\n var e = void 0;\n this.element.classList.add(INTERACTION);\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n this.element.classList.remove(INTERACTION);\n return undefined;\n };\n TreeView.prototype.setDataBinding = function (changeDataSource) {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n /* eslint-disable */\n this.isOffline = this.fields.dataSource.dataSource.offline;\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n /* eslint-disable */\n _this.isOffline = _this.fields.dataSource.dataSource.offline;\n if (_this.fields.dataSource instanceof DataManager && _this.isOffline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n if (changeDataSource) {\n _this.changeDataSource = true;\n }\n _this.renderItems(true);\n _this.changeDataSource = false;\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNOU(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\n else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) { value = null; }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[col]\n && col !== 'url' && columns.indexOf(mapper[col]) === -1) {\n columns.push(mapper[col]);\n }\n }\n query.select(columns);\n if (prop.hasOwnProperty('tableName')) {\n query.from(mapper.tableName);\n }\n }\n else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNOU(value) && !isNOU(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', (this.isNumberTypeId ? parseFloat(value) : value));\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? ((typeof getValue(this.fields.id, this.treeData[0]) === 'number') ? true : false) : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNOU(rootItems)) {\n this.rootData = [];\n }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.isChildObject = function () {\n if (typeof this.fields.child === 'object') {\n return true;\n }\n else {\n return false;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n /* eslint-disable */\n this.listBaseOption.ariaAttributes.level = 1;\n var sortedData = this.getSortedData(this.rootData);\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);\n this.element.appendChild(this.ulElement);\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n if (this.loadOnDemand === false) {\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[i], true, null, true);\n i++;\n }\n }\n var parentEle = selectAll('.' + PARENTITEM, this.element);\n if ((parentEle.length === 1 && (rootNodes && rootNodes.length !== 0)) || this.loadOnDemand) {\n this.finalizeNode(this.element);\n }\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n */\n TreeView.prototype.updateCheckedStateFromDS = function (id) {\n this.validNodes = [];\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var resultPId = resultData[i][this.fields.parentID] ? resultData[i][this.fields.parentID].toString() : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkedNodes.push(resultId);\n }\n if (resultData[i][this.fields.hasChildren]) {\n var id_1 = resultData[i][this.fields.id];\n var childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id_1, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[child][this.fields.id] ? childData[child][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkedNodes.push(childId);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[i], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n if (checkState.length > 0) {\n var checkedId = checkState[0][this.fields.id] ? checkState[0][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n var checkedData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[i], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[index][this.fields.id] ? checkedData[index][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedId);\n }\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[index][this.fields.id] ? this.treeData[index][this.fields.id].toString() : '';\n if (this.treeData[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkedNodes.push(fieldId);\n }\n if (this.checkedNodes.indexOf(fieldId) > -1 && this.validNodes.indexOf(fieldId) === -1) {\n this.validNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[index]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[index]);\n }\n }\n this.validNodes = (this.enablePersistence) ? this.checkedNodes : this.validNodes;\n }\n this.setProperties({ checkedNodes: this.validNodes }, true);\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n }\n var preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\n else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[i], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(this.treeData).\n executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n }\n else {\n childCheckedElement = this.getChildNodes(this.treeData, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n for (var j = 0; j < childCheckedElement.length; j++) {\n var childId = childCheckedElement[j][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkedNodes.push(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\n else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (childItems[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (this.checkedNodes.indexOf(checkedChild) > -1 && this.validNodes.indexOf(checkedChild) === -1) {\n this.validNodes.push(checkedChild);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems && subChildItems.length) {\n if (this.parentCheckData.indexOf(treeData) === -1)\n this.parentCheckData.push(treeData);\n this.updateChildCheckState(subChildItems, childItems[index]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkedNodes.push(checkedParent);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if ((treeData !== this.parentCheckData[len]) && (this.parentCheckData[len])) {\n this.checkIndeterminateState(this.parentCheckData[len]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n var icon = select('div.' + ICON, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNOU(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else if (!isNOU(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else {\n e.item.setAttribute('aria-checked', 'false');\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED);\n this.addActionClass(e, fields.expanded, EXPANDED);\n e.item.setAttribute(\"tabindex\", \"-1\");\n EventHandler.add(e.item, 'focus', this.focusIn, this);\n if (!isNOU(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n var dataId = e.item.getAttribute('data-uid');\n textEle.innerHTML = '';\n this.renderNodeTemplate(e.curData, textEle, dataId);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text,\n };\n if (!this.isRefreshed) {\n this.trigger('drawNode', eventArgs);\n if (e.curData[this.fields.selectable] === false && !this.showCheckBox) {\n e.item.classList.add(PREVENTSELECT);\n e.item.firstElementChild.setAttribute('style', 'cursor: not-allowed');\n }\n }\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNOU(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if (this.isOffline) {\n if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i])) && !isNOU(getValue(mapper.parentID, ds[i]))) {\n return 1;\n }\n }\n else if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if ((typeof mapper.child === 'string') && !isNOU(getValue(mapper.child, ds[i]))) {\n return 2;\n }\n if (this.isChildObject()) {\n return 2;\n }\n if (!isNOU(getValue(mapper.parentID, ds[i])) || !isNOU(getValue(mapper.hasChildren, ds[i]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element) {\n var _this = this;\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[k].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[i], null);\n break;\n }\n removeClass(sNodes, SELECTED);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[j]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[j]);\n }\n }\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) { return e[_this.fields.expanded] == true; }).length > 0 ? true : this.isInitalExpand;\n }\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[i]);\n }\n }\n removeClass(eNodes, EXPANDED);\n this.updateList();\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[i].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[i]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[i]);\n }\n else {\n this.ensureChildCheckState(liElement[i]);\n }\n }\n }\n }\n else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[i].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNOU(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll('.' + LISTITEM, ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n if (nodes.length === checkedNodes.length) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if (checkedNodes.length > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedNodes.length === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNOU(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.ensureChildCheckState = function (element, e) {\n if (!isNOU(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNOU(childElement)) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var childCheck = childElement.querySelectorAll('li');\n var expandState = childElement.parentElement.getAttribute('aria-expanded');\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n var childId = childCheck[index].getAttribute('data-uid');\n if (!isNOU(this.currentLoadData) && !isNOU(getValue(this.fields.isChecked, this.currentLoadData[index]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[index]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if ((checkedState === 'uncheck') && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && this.parentNodeCheck.indexOf(childId) !== -1)) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n }\n else {\n var isNodeChecked = checkBoxes[index].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[index].classList.contains(CHILD) && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[index], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n var li = selectAll('.' + LISTITEM, this.element);\n if (!isNOU(nodes)) {\n for (var len = nodes.length - 1; len >= 0; len--) {\n var liEle = this.getElement(nodes[len]);\n if (isNOU(liEle)) {\n var node = void 0;\n node = nodes[len - (nodes.length - 1)] ? nodes[len - (nodes.length - 1)].toString() : nodes[len] ? nodes[len].toString() : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node);\n this.dynamicCheckState(node, doCheck);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n var ele = this.element.querySelector('[data-uid=\"' + id + '\"]');\n if (ele) {\n this.changeState(ele, 'uncheck', null);\n }\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n }\n else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length - 1; j++) {\n var node = nodes[j] ? nodes[j].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[i]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[j][this.fields.id] ? subChild[j][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\n else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkedNodes.push(parent);\n }\n else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[j]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (wrapper === currLi) {\n wrapper = select('.' + CHECKBOXWRAP, currLi);\n }\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n }\n else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n }\n else if (state === 'indeterminate' && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, data: nodeData };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (!isNullOrUndefined(firstUl)) {\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n firstNode.setAttribute('tabindex', '0');\n this.updateIdAttr(null, firstNode);\n }\n if (this.allowTextWrap) {\n this.updateWrap();\n }\n this.renderReactTemplates();\n this.hasPid = this.rootData[0] ? this.rootData[0].hasOwnProperty(this.fields.parentID) : false;\n this.doExpandAction();\n }\n };\n TreeView.prototype.setTextWrap = function () {\n (this.allowTextWrap ? addClass : removeClass)([this.element], LISTWRAP);\n if (Browser.isIE) {\n (this.allowTextWrap ? addClass : removeClass)([this.element], IELISTWRAP);\n }\n };\n TreeView.prototype.updateWrap = function (ulEle) {\n if (!this.fullRowSelect) {\n return;\n }\n var liEle = ulEle ? selectAll('.' + LISTITEM, ulEle) : this.liList;\n var length = liEle.length;\n for (var i = 0; i < length; i++) {\n this.calculateWrap(liEle[i]);\n }\n };\n TreeView.prototype.calculateWrap = function (liEle) {\n var element = select('.' + FULLROW, liEle);\n if (element && element.nextElementSibling) {\n element.style.height = this.allowTextWrap ? element.nextElementSibling.offsetHeight + 'px' : '';\n }\n };\n TreeView.prototype.doExpandAction = function () {\n var _this = this;\n var eUids = this.expandedNodes;\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) { return e[_this.fields.expanded] == true; }).length > 0 ? true : this.isInitalExpand;\n }\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[i] + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null);\n }\n }\n else {\n if (eUids[i] && this.expandChildren.indexOf(eUids[i]) === -1) {\n this.expandChildren.push(eUids[i].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var proxy = this;\n this.expandCallback(arr[this.index], function () {\n proxy.index++;\n if (proxy.index < arr.length) {\n proxy.expandGivenNodes(arr);\n }\n else {\n proxy.afterFinalized();\n }\n });\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n else {\n callback();\n }\n }\n else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n this.doSelectionAction();\n this.updateCheckedProp();\n this.isAnimate = true;\n this.isInitalExpand = false;\n if ((!this.isLoaded || this.isFieldChange) && !this.isNodeDropped) {\n var eventArgs = { data: this.treeData };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n this.isNodeDropped = false;\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({ selectedNodes: [] }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[i] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[i]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[i].classList.contains('e-disable')) {\n this.selectNode(sNodes[i], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = Browser.isDevice && !Browser.isIos ? document.elementFromPoint(event.originalEvent.changedTouches[0].clientX, event.originalEvent.changedTouches[0].clientY) : event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n }\n else {\n var classList = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li || (li.classList.contains(PREVENTSELECT) && !(classList.contains(EXPANDABLE) || classList.contains(COLLAPSIBLE)))) {\n return;\n }\n else if (event.originalEvent.which !== 3) {\n var rippleElement = select('.' + RIPPLEELMENT, li);\n var rippleIcons = select('.' + ICON, li);\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n }\n else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n }\n else if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n else {\n if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n }\n if (event.originalEvent.which === 3) {\n this.isRightClick = true;\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var currLi = closest(wrapper, '.' + LISTITEM);\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li,\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n this.renderReactTemplates();\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || (loaded === true && currLi.classList.contains('e-expanded'))) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var proxy_1 = this;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate && !this.isRefreshed) {\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: (this.animation.expand.duration === 0 && animationMode === 'Enable') ? 400 : this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function (args) {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n proxy_1.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n }\n else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n }\n else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n if (this.allowTextWrap && this.isLoaded && this.isFirstRender) {\n this.updateWrap(currLi);\n this.isFirstRender = false;\n }\n if (this.isLoaded && this.expandArgs && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.expandArgs.isInteracted = this.isInteracted;\n this.trigger('nodeExpanded', this.expandArgs);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = colArgs.isInteracted;\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n }\n else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var proxy = this;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: (this.animation.collapse.duration === 0 && animationMode === 'Enable') ? 400 : this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function (args) {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n proxy.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n }\n else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.removeExpand(liEle);\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(liEle, null);\n colArgs.isInteracted = this.isInteracted;\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n }\n else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNOU(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNOU(mapper_2) || isNOU(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }\n else {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n if (_this.dataType === 1) {\n _this.dataType = 2;\n }\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'), false, parseFloat(parentLi.getAttribute('aria-level')) + 1);\n this.currentLoadData = this.getSortedData(childItems);\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n else {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.currentLoadData, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n }\n else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (expandChild) {\n this.expandedNodes.push(parentLi.getAttribute('data-uid'));\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[i][this.fields.id] ? nodes[i][this.fields.id].toString() : null;\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element) {\n if (this.showCheckBox) {\n this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element);\n this.ensureParentCheckState(element);\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n var childData;\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\n else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot, level) {\n var _this = this;\n if (isRoot === void 0) { isRoot = false; }\n var childNodes;\n if (isNOU(obj)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n else {\n if (typeof this.fields.child === 'string') {\n var index = obj.findIndex(function (data) { return getValue(_this.fields.id, data) && getValue(_this.fields.id, data).toString() === parentId; });\n if (index !== -1) {\n return getValue(this.fields.child, obj[index]);\n }\n if (index === -1) {\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var tempArray = getValue(this.fields.child, obj[i]);\n var childIndex = !isNOU(tempArray) ? tempArray.findIndex(function (data) { return getValue(_this.fields.id, data) && getValue(_this.fields.id, data).toString() === parentId; }) : -1;\n if (childIndex !== -1) {\n return getValue(this.fields.child, tempArray[childIndex]);\n }\n else if (!isNOU(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n else if (this.isChildObject()) {\n var tempField = !isNOU(level) ? this.fields : this.fields.child;\n var i = 1;\n while (i < level) {\n if (!isNOU(tempField.child)) {\n tempField = tempField.child;\n }\n else {\n break;\n }\n i++;\n }\n this.updateListProp(tempField);\n var index = obj.findIndex(function (data) { return getValue(_this.fields.id, data) && getValue(_this.fields.id, data).toString() === parentId; });\n if (index !== -1) {\n return getValue('child', obj[index]);\n }\n if (index === -1) {\n for (var i_1 = 0, objlen = obj.length; i_1 < objlen; i_1++) {\n var tempArray = getValue('child', obj[i_1]);\n var childIndex = !isNOU(tempArray) ? tempArray.findIndex(function (data) { return getValue(_this.fields.child.id, data) && getValue(_this.fields.child.id, data).toString() === parentId; }) : -1;\n if (childIndex !== -1) {\n return getValue('child', tempArray[childIndex]);\n }\n else if (!isNOU(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId, false, level);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNOU(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNOU(data[i][0]) && !isNOU(getValue(this.fields.parentID, data[i][0]))) {\n if (getValue(this.fields.parentID, data[i][0]).toString() === parentId) {\n return data[i];\n }\n }\n else if (isRoot) {\n return data[i];\n }\n else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n if (element.querySelector('.e-icons') !== cIcons[i]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && ((e && e.ctrlKey) || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n }\n else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNOU(li) || (!this.allowMultiSelection && this.isActive(li) && !isNOU(e))) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if ((!observedArgs.cancel) && !observedArgs.node.classList.contains(PREVENTSELECT)) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n }\n else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !(e.ctrlKey || e.metaKey))))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[i];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n }\n else {\n this.startNode = li;\n this.addSelect(li);\n }\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n this.isRightClick = false;\n }\n this.isRightClick = false;\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n }\n else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNOU(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n focusedNode.setAttribute(\"tabindex\", \"-1\");\n }\n addClass([li], FOCUS);\n li.setAttribute('tabindex', '0');\n EventHandler.add(li, 'blur', this.focusOut, this);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n }\n else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\n else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = this.expandArgs.isInteracted;\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.isFirstRender = true;\n this.renderChildNodes(currLi, expandChild, callback);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[i]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[i]));\n if (!isNOU(icon_1)) {\n this.expandAction(liEles[i], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n }\n else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode,\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n }\n else {\n _this.toggleSelect(focusedNode, e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n case 'shiftSpace':\n case 'ctrlSpace':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode, e);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNOU(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n }\n else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible = this.isVisibleInViewport(focusNode);\n if (!isVisible) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return (pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n pos.right <= (window.innerWidth || document.documentElement.clientWidth));\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNOU(node)) {\n return null;\n }\n return (node.scrollHeight > node.clientHeight) ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n }\n else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName(\"e-checkbox-disabled\").length == 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n if (this.autoCheck) {\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n (child !== null) ? this.allCheckNode(child, this.checkedElement, null, null, false) : child = null;\n }\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\n else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var isCheck = resultData[i][this.fields.isChecked] ? resultData[i][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkedNodes.push(resultId);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||\n this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n }\n else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[i][this.fields.id] ? checkedData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n }\n else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n var childIsCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() :\n null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkedNodes.push(childId);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : '';\n var isCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n }\n else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n }\n var subChild = this.getChildNodes([childItems[i]], checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[length_1]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (((check === null && !isNOU(child[length_1][this.fields.isChecked]) && newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n (child[length_1][this.fields.isChecked] !== false || checked === 2) ? newCheck.push(childId.toString())\n : childCheck = null;\n childCheck = (child[length_1][this.fields.isChecked] !== false || checked === 2) ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNOU(checked)) {\n newCheck.push(childId.toString());\n }\n var hierChildId = getValue(this.fields.child.toString(), child[length_1]);\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[length_1]) === true || hierChildId) {\n var id = getValue(this.fields.id, child[length_1]);\n var childId_1 = void 0;\n if (this.dataType === 1) {\n childId_1 = this.getChildNodes(this.treeData, id.toString());\n }\n else {\n childId_1 = hierChildId;\n }\n if (childId_1) {\n (isNOU(validateCheck)) ? this.allCheckNode(childId_1, newCheck, checked, childCheck) :\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\n else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '[tabindex=\"0\"]', this.element);\n if (isNOU(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNOU(fNode) ? (isNOU(selectedItem) ? this.element.firstElementChild : selectedItem) : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {\n this.focusNextNode(nextNode, false);\n }\n else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[index];\n if (isNOU(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[index];\n if (isNOU(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[index];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[index];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], FOCUS);\n preNode.setAttribute(\"tabindex\", \"-1\");\n if (!nextNode.classList.contains('e-disable') && !nextNode.classList.contains(PREVENTSELECT)) {\n addClass([nextNode], FOCUS);\n nextNode.setAttribute('tabindex', '0');\n nextNode.focus();\n EventHandler.add(nextNode, 'blur', this.focusOut, this);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n var focusedElement = this.getFocusedNode();\n focusedElement.setAttribute(\"tabindex\", \"0\");\n addClass([focusedElement], FOCUS);\n EventHandler.add(focusedElement, 'blur', this.focusOut, this);\n }\n this.mouseDownStatus = false;\n };\n TreeView.prototype.focusOut = function (event) {\n var focusedElement = this.getFocusedNode();\n if (event.target == focusedElement) {\n removeClass([focusedElement], FOCUS);\n EventHandler.remove(focusedElement, 'blur', this.focusOut);\n }\n };\n TreeView.prototype.onMouseOver = function (e) {\n var target = e.target;\n var classList = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList.contains(PARENTITEM) || classList.contains(LISTITEM)) {\n this.removeHover();\n return;\n }\n else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER) && !li.classList.contains(PREVENTSELECT)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n ;\n TreeView.prototype.onMouseLeave = function (e) {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n ;\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNOU(currLi) && currLi.classList.contains(LISTITEM) &&\n !isNOU(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var selectable = currLi.classList.contains(PREVENTSELECT) ? false : true;\n var expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;\n var hasChildren = currLi.getAttribute('aria-expanded') !== null ? true : (select('.' + EXPANDABLE, currLi) || select('.' + COLLAPSIBLE, currLi)) != null ? true : false;\n var checked = null;\n var checkboxElement = select('.' + CHECKBOXWRAP, currLi);\n if (this.showCheckBox && checkboxElement) {\n checked = currLi.getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, selectable: selectable, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return { cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\n };\n TreeView.prototype.renderNodeTemplate = function (data, textEle, dataId) {\n var tempArr = this.nodeTemplateFn(data, this, 'nodeTemplate' + dataId, this.element.id + 'nodeTemplate', this.isStringTemplate, undefined, textEle, this.root);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n };\n TreeView.prototype.destroyTemplate = function (liEle) {\n this.clearTemplate(['nodeTemplate' + liEle.getAttribute('data-uid')]);\n };\n TreeView.prototype.reRenderNodes = function () {\n this.updateListProp(this.fields);\n if (Browser.isIE) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n else {\n this.element.innerHTML = '';\n }\n if (!isNOU(this.nodeTemplateFn)) {\n this.clearTemplate();\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding(true);\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle, e);\n }\n };\n TreeView.prototype.createTextbox = function (liEle, e) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var style_1 = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n if (!isNOU(_this.nodeTemplateFn)) {\n _this.destroyTemplate(liEle);\n }\n if (_this.isReact) {\n setTimeout(function () {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }, 5);\n }\n else {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }\n }\n });\n };\n TreeView.prototype.renderTextBox = function (eventArgs, textEle, style) {\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: this.enableRtl,\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n this.wireInputEvents(inpEle);\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n }\n else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n _this.updateText(liEle, txtEle, newText, isInput);\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent('nodeEdited', [_this.getNode(liEle)]);\n }\n });\n };\n TreeView.prototype.updateText = function (liEle, txtEle, newText, isInput) {\n var newData = setValue(this.editFields.text, newText, this.editData);\n if (!isNOU(this.nodeTemplateFn)) {\n txtEle.innerText = '';\n var dataId = liEle.getAttribute('data-uid');\n this.renderNodeTemplate(newData, txtEle, dataId);\n this.renderReactTemplates();\n }\n else {\n this.enableHtmlSanitizer ? txtEle.innerText = SanitizeHtmlHelper.sanitize(newText) : txtEle.innerHTML = newText;\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n liEle.focus();\n EventHandler.add(liEle, 'blur', this.focusOut, this);\n addClass([liEle], FOCUS);\n }\n if (this.allowTextWrap) {\n this.calculateWrap(liEle);\n }\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNOU(id)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[i]);\n if (!isNOU(this.treeData[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeData[i];\n }\n }\n }\n else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNOU(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[i]);\n if (obj[i] && dataId && dataId.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[i]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.isChildObject()) {\n var children = 'child';\n var childData = getValue(children, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind && !this.disabled) {\n this.initializeDrag();\n }\n else {\n this.destroyDrag();\n }\n };\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n var proxy = this;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, enableAutoScroll: true,\n dragArea: this.dragArea,\n dragTarget: '.' + TEXTWRAP,\n enableTapHold: true,\n tapHoldThreshold: 100,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap ||\n _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) ||\n _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = (dragWrap.cloneNode(true));\n if (isNOU(select('div.' + ICON, cloneEle))) {\n var icon = proxy.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL : '');\n virtualEle = proxy.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = proxy.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.dragStartAction = true;\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({ cursorAt: { top: (!isNOU(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n _this.removeVirtualEle();\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n var isHelperElement = true;\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n _this.dragStartAction = false;\n });\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNOU(e) && !e.target.classList.contains(SIBLING) && (_this.dropObj.dragData.default && _this.dropObj.dragData.default.helper.classList.contains(ROOT))) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function (e) {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\n if (this.fullRowSelect && !dropWrap && !isNOU(classList) && classList.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || (dropWrap &&\n (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {\n if (this.hasTemplate && dropLi) {\n var templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n if ((e && (!expand && !collapse) && e.event.offsetY < 7 && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((e && (!expand && !collapse) && !checkWrapper && templateTarget && e.event.offsetY > templateTarget.offsetHeight - 10) || ((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n else {\n if ((dropLi && e && (!expand && !collapse) && (e.event.offsetY < 7) && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((dropLi && e && (!expand && !collapse) && (e.target.offsetHeight > 0 && e.event.offsetY > (e.target.offsetHeight - 10)) && !checkWrapper) || (((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19)))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n }\n else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\n }\n else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.appendIndicator = function (dropLi, icon, index) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n dropLi.insertBefore(virEle, dropLi.children[index]);\n };\n /* eslint-disable */\n TreeView.prototype.dropAction = function (e) {\n var offsetY = e.event.offsetY;\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var dragInstance;\n var nodeData = [];\n var liArray = [];\n dragInstance = e.dragData.draggable;\n for (var i_2 = 0; i_2 < dragInstance.ej2_instances.length; i_2++) {\n if (dragInstance.ej2_instances[i_2] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[i_2];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = (closest(dragTarget, '.' + LISTITEM));\n var dropLi = (closest(dropTarget, '.' + LISTITEM));\n liArray.push(dragLi);\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n detach(e.droppedElement);\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n liArray = sNodes;\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i_3 = sNodes.length - 1; i_3 >= 0; i_3--) {\n if (dropLi.isSameNode(sNodes[i_3]) || this.isDescendant(sNodes[i_3], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i_3], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (var i_4 = 0; i_4 < sNodes.length; i_4++) {\n if (dropLi.isSameNode(sNodes[i_4]) || this.isDescendant(sNodes[i_4], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i_4], dropLi, e, dragObj, offsetY);\n }\n }\n }\n else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n for (var i = 0; i < liArray.length; i++) {\n nodeData.push(this.getNode(liArray[i]));\n }\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n if (dragObj.element.id !== this.element.id) {\n dragObj.triggerEvent('nodeDropped', nodeData);\n this.isNodeDropped = true;\n this.fields.dataSource = this.treeData;\n }\n this.triggerEvent('nodeDropped', nodeData);\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && ((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3) || (expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19) || (!expand && !collapse))) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true);\n }\n if (this.showCheckBox) {\n this.ensureIndeterminate();\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n else if (e.target.classList.contains('e-icon-expandable') || (e.target.classList.contains('e-icon-collapsible'))) {\n if ((e.event.offsetY < 5) || (e.event.offsetX < 3)) {\n pre = true;\n }\n else if ((e.event.offsetY > 15) || (e.event.offsetX > 17)) {\n pre = false;\n }\n }\n if ((e.target.classList.contains('e-icon-expandable')) || (e.target.classList.contains('e-icon-collapsible'))) {\n var target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n }\n else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n var templateTarget;\n if (e && e.target) {\n templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n }\n if (e && (pos < 7) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\n else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10)) && !isCheck && !this.hasTemplate) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else if (this.hasTemplate && templateTarget && pos > templateTarget.offsetHeight - 10 && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else {\n var dropUl = this.expandParent(dropLi);\n var childLi = dropUl.childNodes[index];\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNOU(index) ? this.treeData.length : (pre ? index : index + 1);\n if (isNOU(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n }\n else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[i]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNOU(dropUl) && this.preventExpand === true) {\n dropUl.style.display = 'none';\n }\n if (!isNOU(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNOU(dropUl) && this.preventExpand === true) {\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNOU(dropUl)) {\n var args = this.expandArgs;\n if (isNOU(args) || args.name != 'nodeExpanding') {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n }\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNOU(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n if (e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[index]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = (drop === true) ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n var position = null;\n dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = (drop === true) ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[i])) {\n iconClass = iconCss[i];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = (drop !== true && index.children[i] === draggedNode && dropLi !== draggedNode) ? ++dropTar : dropTar;\n if ((drop !== true && index.children[i].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[i] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n position = (iconClass == \"e-drop-in\") ? \"Inside\" : ((event.offsetY < 7) ? \"Before\" : \"After\");\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\n else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = (parent_2) ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ?\n this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = (parent_3) ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n position: position,\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[i]);\n }\n }\n else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[i]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', { className: FULLROW });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n }\n else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[i];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var i = 0, len = eIcons.length; i < len; i++) {\n var icon = eIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[i])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n if (!isNOU(this.nodeTemplateFn)) {\n this.destroyTemplate(node);\n }\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n this.setProperties({ selectedNodes: [] }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({ expandedNodes: [] }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[i]);\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n }\n else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[i]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n toExpand ? this.expandAction(liEle, icon, null) : this.collapseNode(liEle, icon, null);\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var id = this.getId(dropLi);\n var refNode;\n var dropIcon1;\n if (!isNullOrUndefined(dropLi)) {\n dropIcon1 = select('div.' + ICON, dropLi);\n }\n if (this.dataType === 1 && dropIcon1 && dropIcon1.classList.contains(EXPANDABLE) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = true;\n }\n if (this.dataType !== 1) {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n this.isFirstRender = false;\n }\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n }\n else {\n dropUl = dropEle;\n }\n refNode = dropUl.childNodes[index];\n if (!this.isFirstRender || this.dataType === 1) {\n var args = this.expandArgs;\n if (refNode || this.sortOrder === 'None') {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name != 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n if (!refNode && ((this.sortOrder === 'Ascending') || (this.sortOrder === 'Descending'))) {\n if (dropUl.childNodes.length === 0) {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name != 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n else {\n var cNodes = dropUl.childNodes;\n for (var i = 0; i < li.length; i++) {\n for (var j = 0; j < cNodes.length; j++) {\n var returnValue = (this.sortOrder === 'Ascending') ? cNodes[j].textContent.toUpperCase() > li[i].innerText.toUpperCase() : cNodes[j].textContent.toUpperCase() < li[i].innerText.toUpperCase();\n if (returnValue) {\n dropUl.insertBefore(li[i], cNodes[j]);\n break;\n }\n dropUl.insertBefore(li[i], cNodes[cNodes.length]);\n }\n }\n }\n }\n }\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNOU(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNOU(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[j]);\n }\n this.treeData.splice(pos, 0, nodes[j]);\n pos++;\n }\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = (level === 1) ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = prop.hasOwnProperty('navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var data = getValue(mapper.child, obj[i]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var items = getValue('child', obj[i]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNOU(id)) {\n index = isNOU(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[k]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && (obj[i].hasOwnProperty(mapper.child) && obj[i][mapper.child] !== null)) ||\n ((this.fields.dataSource instanceof DataManager) && obj[i].hasOwnProperty('child'))) {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n var childData = getValue(key, obj[i]);\n if (isNOU(childData)) {\n childData = [];\n }\n index = isNOU(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[k]);\n index++;\n }\n }\n else {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[i][key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childObj = getValue(mapper.child, obj[i]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if ((this.fields.dataSource instanceof DataManager) && !isNOU(getValue('child', obj[i]))) {\n var childData = getValue('child', obj[i]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n var validNodes = this.nodeType(nodes);\n var validID = this.checkValidId(validNodes);\n this.validArr = [];\n for (var i = 0, len = validID.length; i < len; i++) {\n var id = validID[i][this.fields.id].toString();\n if (id && this.disableNode.indexOf(id) === -1) {\n this.disableNode.push(id);\n }\n var liEle = this.getElement(id);\n if (liEle) {\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n var strNodes = this.nodeType(nodes);\n for (var i = 0, len = strNodes.length; i < len; i++) {\n var liEle = this.getElement(strNodes[i]);\n var id = strNodes[i];\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n if (liEle) {\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.nodeType = function (nodes) {\n var validID = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var id = void 0;\n if (typeof nodes[i] == \"string\") {\n id = (nodes[i]) ? nodes[i].toString() : null;\n }\n else if (typeof nodes[i] === \"object\") {\n id = nodes[i] ? nodes[i].getAttribute(\"data-uid\").toString() : null;\n }\n if (validID.indexOf(id) == -1) {\n validID.push(id);\n }\n }\n return validID;\n };\n TreeView.prototype.checkValidId = function (node) {\n var _this = this;\n if (this.dataType === 1) {\n this.validArr = this.treeData.filter(function (data) {\n return node.indexOf(data[_this.fields.id] ? data[_this.fields.id].toString() : null) !== -1;\n });\n }\n else if (this.dataType === 2) {\n for (var k = 0; k < this.treeData.length; k++) {\n var id = this.treeData[k][this.fields.id] ? this.treeData[k][this.fields.id].toString() : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, node);\n }\n }\n }\n return this.validArr;\n };\n TreeView.prototype.filterNestedChild = function (treeData, nodes) {\n for (var k = 0; k < treeData.length; k++) {\n var id = treeData[k][this.fields.id] ? treeData[k][this.fields.id].toString() : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, nodes);\n }\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNOU(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[l], 'selected', true);\n }\n var enodes = this.expandedNodes;\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[k], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[m], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNOU(obj) || isNOU(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[j]);\n if (!isNOU(obj[i][field])) {\n delete obj[i][field];\n }\n }\n if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n this.removeField(getValue(mapper.child, obj[i]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n this.removeField(getValue('child', obj[i]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNOU(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNOU(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNOU(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNOU(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n var childNodes;\n if (isNOU(id)) {\n return;\n }\n else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n }\n else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove) {\n var removedData;\n if (isNOU(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[i]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var childItems = getValue('child', obj[i]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function (action, node) {\n this.renderReactTemplates();\n if (action === 'addNodes') {\n var nodeData = [];\n for (var i = 0; i < node.length; i++) {\n nodeData.push(this.getNode(this.getElement(isNOU(node[i][this.fields.id]) ? getValue(this.fields.id, node[i]).toString() : null)));\n }\n node = nodeData;\n }\n var eventArgs = { data: this.treeData, action: action, nodeData: node };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n var _this = this;\n if (toBind && !this.disabled) {\n var proxy_2 = this;\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.isDoubleTapped(e) && e.tapCount === 2) {\n e.originalEvent.preventDefault();\n proxy_2.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n var proxy_3 = this;\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n proxy_3.clickHandler(e);\n }\n });\n }\n else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var proxy_4 = this;\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if ((_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && _this.isDoubleTapped(e) && e.tapCount === 2))\n && e.originalEvent.which !== 3) {\n proxy_4.expandHandler(e);\n }\n }\n });\n }\n else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n ;\n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n if (!this.disabled) {\n this.keyboardModule.destroy();\n }\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDoubleTapped = function (e) {\n var target = e.originalEvent.target;\n var secondTap;\n if (target && e.tapCount) {\n if (e.tapCount === 1) {\n this.firstTap = closest(target, '.' + LISTITEM);\n }\n else if (e.tapCount === 2) {\n secondTap = closest(target, '.' + LISTITEM);\n }\n }\n return (this.firstTap === secondTap);\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNOU(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n */\n TreeView.prototype.setValidCheckedNode = function (node) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0]);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[len][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkedNodes.push(parent_4);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[a][this.fields.id] ? this.treeData[a][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[a]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[a]);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData) {\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkedNodes.push(checkNode);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n }\n else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedParent);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[i]);\n }\n };\n TreeView.prototype.updatePosition = function (id, newData, isRefreshChild, childValue) {\n if (this.dataType === 1) {\n var pos = this.getDataPos(this.treeData, this.fields, id);\n this.treeData.splice(pos, 1, newData);\n if (isRefreshChild) {\n this.removeChildNodes(id);\n for (var j = 0; j < childValue.length; j++) {\n this.treeData.splice(pos, 0, childValue[j]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);\n }\n };\n TreeView.prototype.updateChildPosition = function (treeData, mapper, currID, newData, index) {\n var found;\n for (var i = 0, objlen = treeData.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, treeData[i]);\n if (treeData[i] && nodeId && nodeId.toString() === currID) {\n treeData[i] = newData[0];\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, treeData[i]))) {\n var childObj = getValue(mapper.child, treeData[i]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', treeData[i]))) {\n var childData = getValue('child', treeData[i]);\n found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n }\n return found;\n };\n TreeView.prototype.dynamicState = function () {\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEditingEvents(this.allowEditing);\n if (!this.disabled) {\n this.wireEvents();\n this.setRipple();\n }\n else {\n this.unWireEvents();\n this.rippleFn();\n this.rippleIconFn();\n }\n };\n TreeView.prototype.crudOperation = function (operation, nodes, target, newText, newNode, index, prevent) {\n var _this = this;\n var data = this.fields.dataSource;\n var matchedArr = [];\n var query = this.getQuery(this.fields);\n var key = this.fields.id;\n var crud;\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var nodesID = [];\n if (nodes) {\n nodesID = this.nodeType(nodes);\n }\n else if (target) {\n if (typeof target == \"string\") {\n nodesID[0] = target.toString();\n }\n else if (typeof target === \"object\") {\n nodesID[0] = target.getAttribute(\"data-uid\").toString();\n }\n }\n for (var i = 0, len = nodesID.length; i < len; i++) {\n var liEle = this.getElement(nodesID[i]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var removedData = this.getNodeObject(nodesID[i]);\n matchedArr.push(removedData);\n }\n switch (operation) {\n case 'delete':\n if (nodes.length == 1) {\n crud = data.remove(key, matchedArr[0], query.fromTable, query);\n }\n else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) { return _this.deleteSuccess(nodesID); })\n .catch(function (e) { return _this.dmFailure(e); });\n break;\n case 'update':\n matchedArr[0][this.fields.text] = newText;\n crud = data.update(key, matchedArr[0], query.fromTable, query);\n crud.then(function (e) { return _this.editSucess(target, newText, prevent); })\n .catch(function (e) { return _this.dmFailure(e, target, prevent); });\n break;\n case 'insert':\n if (newNode.length == 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n }\n else {\n var arr = [];\n for (var i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[i]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) {\n var dropLi = _this.getElement(target);\n _this.addSuccess(newNode, dropLi, index);\n _this.preventExpand = false;\n }).catch(function (e) { return _this.dmFailure(e); });\n break;\n }\n };\n TreeView.prototype.deleteSuccess = function (nodes) {\n var nodeData = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n nodeData.push(this.getNode(liEle));\n if (isNOU(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n this.updateInstance();\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent('removeNode', nodeData);\n };\n TreeView.prototype.editSucess = function (target, newText, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.appendNewText(liEle, txtEle, newText, prevent);\n };\n TreeView.prototype.addSuccess = function (nodes, dropLi, index) {\n var dropUl;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n var proxy = this;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n proxy.renderChildNodes(dropLi, null, function () {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n proxy.addGivenNodes(nodes, dropLi, index, true, dropUl);\n proxy.triggerEvent('addNodes', nodes);\n });\n }\n else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent('addNodes', nodes);\n }\n };\n TreeView.prototype.dmFailure = function (e, target, prevent) {\n if (target) {\n this.updatePreviousText(target, prevent);\n }\n this.trigger('actionFailure', { error: e });\n };\n TreeView.prototype.updatePreviousText = function (target, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateText(liEle, txtEle, this.oldText, prevent);\n };\n TreeView.prototype.getHierarchicalParentId = function (node, data, parentsID) {\n var _this = this;\n var index = data.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });\n if (index == -1) {\n for (var i = 0; i < data.length; i++) {\n var childItems = getValue(this.fields.child.toString(), data[i]);\n if (!isNOU(childItems)) {\n index = childItems.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });\n if (index == -1) {\n this.getHierarchicalParentId(node, childItems, parentsID);\n }\n else {\n parentsID.push(data[i][this.fields.id].toString());\n this.getHierarchicalParentId(data[i][this.fields.id].toString(), this.treeData, parentsID);\n break;\n }\n }\n }\n }\n return parentsID;\n };\n /**\n * Called internally if any of the property value changed.\n * @param {TreeView} newProp\n * @param {TreeView} oldProp\n * @returns void\n * @private\n */\n TreeView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.dragObj.dragArea = this.dragArea;\n }\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'allowTextWrap':\n this.setTextWrap();\n this.updateWrap();\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n this.setProperties({ expandedNodes: [] }, true);\n this.collapseAll();\n this.isInitalExpand = true;\n this.setProperties({ expandedNodes: isNOU(newProp.expandedNodes) ? [] : newProp.expandedNodes }, true);\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None' && !this.disabled) {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'disabled':\n this.setDisabledMode();\n this.dynamicState();\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n if (!this.isReact || this.isReact && !(this.fields.dataSource instanceof DataManager)) {\n this.reRenderNodes();\n }\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n if (this.allowTextWrap) {\n this.setTextWrap();\n this.updateWrap();\n }\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n if (nodes[i].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[i], true, null, true);\n }\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.hasTemplate = false;\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({ fullRowNavigable: newProp.fullRowNavigable }, true);\n this.listBaseOption.itemNavigable = newProp.fullRowNavigable;\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n */\n TreeView.prototype.destroy = function () {\n this.clearTemplate();\n this.element.removeAttribute('aria-activedescendant');\n this.unWireEvents();\n this.wireEditingEvents(false);\n if (!this.disabled) {\n this.rippleFn();\n this.rippleIconFn();\n }\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n this.ulElement = null;\n this.liList = null;\n this.startNode = null;\n this.firstTap = null;\n this.expandArgs = null;\n this.dragLi = null;\n this.dragTarget = null;\n this.dragParent = null;\n this.dragObj = null;\n this.dropObj = null;\n this.inputObj = null;\n this.touchEditObj = null;\n this.touchExpandObj = null;\n this.touchClickObj = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n * @param { { [key: string]: Object }[] } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNOU(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager) {\n if (!this.isOffline) {\n this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);\n }\n else {\n this.addSuccess(nodes, dropLi, index);\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[i]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n this.addGivenNodes([nodes[i]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.updateCheckedStateFromDS();\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if ((this.fields.dataSource instanceof DataManager === false)) {\n this.preventExpand = false;\n this.triggerEvent('addNodes', nodes);\n }\n };\n /**\n * Editing can also be enabled by using the `beginEdit` property, instead of clicking on the\n * TreeView node. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (isNOU(ele) || this.disabled) {\n return;\n }\n this.createTextbox(ele, null);\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n */\n TreeView.prototype.ensureVisible = function (node) {\n var parentsId = [];\n if (this.dataType == 1) {\n var nodeData = this.getTreeData(node);\n while (nodeData.length != 0 && !isNOU(nodeData[0][this.fields.parentID])) {\n parentsId.push(nodeData[0][this.fields.parentID].toString());\n nodeData = this.getTreeData(nodeData[0][this.fields.parentID].toString());\n }\n }\n else if (this.dataType == 2) {\n parentsId = this.getHierarchicalParentId(node, this.treeData, parentsId);\n }\n this.expandAll(parentsId.reverse());\n var liEle = this.getElement(node);\n if (!isNOU(liEle)) {\n if (typeof node == 'object') {\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n }\n setTimeout(function () { liEle.scrollIntoView({ behavior: \"smooth\" }); }, 450);\n }\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n return checkNodes;\n };\n /**\n * Gets all the disabled nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getDisabledNodes = function () {\n var disabledNodes = this.disableNode;\n return disabledNodes;\n };\n /**\n * Gets the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNOU(id)) {\n return this.treeData;\n }\n else {\n var data = this.getNodeObject(id);\n return isNOU(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n var dropLi = this.getElement(target);\n var nodeData = [];\n if (isNOU(dropLi)) {\n return;\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[i]);\n nodeData.push(this.getNode(dragLi));\n if (isNOU(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent('moveNodes', nodeData);\n };\n /**\n * Refreshes a particular node of the TreeView.\n * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {{ [key: string]: Object }[]} newData - Specifies the new data of TreeView node.\n */\n TreeView.prototype.refreshNode = function (target, newData) {\n if (isNOU(target) || isNOU(newData)) {\n return;\n }\n var id;\n var isRefreshChild = false;\n if (this.dataType == 1 && newData.length > 1) {\n isRefreshChild = true;\n }\n else if (this.dataType == 2 && newData.length === 1) {\n var updatedChildValue = getValue(this.fields.child.toString(), newData[0]);\n if (!isNOU(updatedChildValue)) {\n isRefreshChild = true;\n }\n }\n var liEle = this.getElement(target);\n id = liEle ? liEle.getAttribute('data-uid') : ((target) ? target.toString() : null);\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n /* eslint-disable */\n var newNodeData;\n var parentData;\n if (this.dataType == 1 && isRefreshChild) {\n for (var k = 0; k < newData.length; k++) {\n if (isNOU(newData[k][this.fields.parentID])) {\n parentData = newData[k];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n }\n else {\n newNodeData = extend({}, this.refreshData, newData[0]);\n }\n if (isNOU(liEle)) {\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n return;\n }\n this.isRefreshed = true;\n var level = parseFloat(liEle.getAttribute('aria-level'));\n var newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);\n var ul = select('.' + PARENTITEM, liEle);\n var childItems = getValue(this.fields.child.toString(), newNodeData);\n if ((isRefreshChild && ul) || (isRefreshChild && !isNOU(childItems))) {\n var parentEle = liEle.parentElement;\n var index = Array.prototype.indexOf.call(parentEle.childNodes, liEle);\n remove(liEle);\n parentEle.insertBefore(newliEle[0], parentEle.childNodes[index]);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\n }\n else {\n var txtEle = select('.' + TEXTWRAP, liEle);\n var newTextEle = select('.' + TEXTWRAP, newliEle[0]);\n var icon = select('div.' + ICON, txtEle);\n var newIcon = select('div.' + ICON, newTextEle);\n if (icon && newIcon) {\n if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {\n removeClass([newIcon], EXPANDABLE);\n addClass([newIcon], COLLAPSIBLE);\n }\n else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n }\n else if (icon.classList.contains('interaction')) {\n addClass([newIcon], 'interaction');\n }\n }\n remove(txtEle);\n var fullEle = select('.' + FULLROW, liEle);\n fullEle.parentNode.insertBefore(newTextEle, fullEle.nextSibling);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n }\n liEle = this.getElement(target);\n if (newNodeData[this.fields.tooltip]) {\n liEle.setAttribute(\"title\", newNodeData[this.fields.tooltip]);\n }\n if (newNodeData.hasOwnProperty(this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {\n var attr = {};\n merge(attr, newNodeData[this.fields.htmlAttributes]);\n if (attr.class) {\n addClass([liEle], attr.class.split(' '));\n delete attr.class;\n }\n else {\n attributes(liEle, attr);\n }\n }\n if (this.selectedNodes.indexOf(id) !== -1) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n }\n this.isRefreshed = false;\n this.triggerEvent('refreshNode', [this.getNode(liEle)]);\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNOU(nodes)) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('delete', nodes);\n }\n else {\n this.deleteSuccess(nodes);\n }\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNOU(target) || isNOU(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNOU(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.fields.dataSource instanceof DataManager && !_this.isOffline) {\n _this.crudOperation('update', null, target, newText, null, null, false);\n }\n else {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, NodeAnimationSettings)\n ], TreeView.prototype, \"animation\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate([\n Property('')\n ], TreeView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"disabled\", void 0);\n __decorate([\n Property(null)\n ], TreeView.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate([\n Property('Auto')\n ], TreeView.prototype, \"expandOn\", void 0);\n __decorate([\n Complex({}, FieldsSettings)\n ], TreeView.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"locale\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate([\n Property('None')\n ], TreeView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"autoCheck\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"fullRowNavigable\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"drawNode\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate([\n NotifyPropertyChanges\n ], TreeView);\n return TreeView;\n}(Component));\nexport { TreeView };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, formatUnit, isNullOrUndefined, append, detach, extend } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, prepend, closest, remove } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, Property, Complex, Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { compile, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Animation, rippleEffect, Touch, animationMode } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { ListBase, getFieldValues } from '../common/list-base';\n// Effect Configuration Effect[] = [fromViewBackward,fromViewForward,toViewBackward,toviewForward];\nvar effectsConfig = {\n 'None': [],\n 'SlideLeft': ['SlideRightOut', 'SlideLeftOut', 'SlideLeftIn', 'SlideRightIn'],\n 'SlideDown': ['SlideTopOut', 'SlideBottomOut', 'SlideBottomIn', 'SlideTopIn'],\n 'Zoom': ['FadeOut', 'FadeZoomOut', 'FadeZoomIn', 'FadeIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\nvar effectsRTLConfig = {\n 'None': [],\n 'SlideLeft': ['SlideLeftOut', 'SlideRightOut', 'SlideRightIn', 'SlideLeftIn'],\n 'SlideDown': ['SlideBottomOut', 'SlideTopOut', 'SlideTopIn', 'SlideBottomIn'],\n 'Zoom': ['FadeZoomOut', 'FadeOut', 'FadeIn', 'FadeZoomIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\n// don't use space in classnames.\nexport var classNames = {\n root: 'e-listview',\n hover: 'e-hover',\n selected: 'e-active',\n focused: 'e-focused',\n parentItem: 'e-list-parent',\n listItem: 'e-list-item',\n listIcon: 'e-list-icon',\n textContent: 'e-text-content',\n listItemText: 'e-list-text',\n groupListItem: 'e-list-group-item',\n hasChild: 'e-has-child',\n view: 'e-view',\n header: 'e-list-header',\n headerText: 'e-headertext',\n headerTemplateText: 'e-headertemplate-text',\n text: 'e-text',\n disable: 'e-disabled',\n container: 'e-list-container',\n icon: 'e-icons',\n backIcon: 'e-icon-back',\n backButton: 'e-back-button',\n checkboxWrapper: 'e-checkbox-wrapper',\n checkbox: 'e-checkbox',\n checked: 'e-check',\n checklist: 'e-checklist',\n checkboxIcon: 'e-frame',\n checkboxRight: 'e-checkbox-right',\n checkboxLeft: 'e-checkbox-left',\n listviewCheckbox: 'e-listview-checkbox',\n itemCheckList: 'e-checklist',\n virtualElementContainer: 'e-list-virtualcontainer'\n};\nvar LISTVIEW_TEMPLATE_PROPERTY = 'Template';\nvar LISTVIEW_GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar LISTVIEW_HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar swipeVelocity = 0.5;\n/**\n * Represents the field settings of the ListView.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"id\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('isVisible')\n ], FieldSettings.prototype, \"isVisible\", void 0);\n __decorate([\n Property('enabled')\n ], FieldSettings.prototype, \"enabled\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('child')\n ], FieldSettings.prototype, \"child\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('groupBy')\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"sortBy\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('tableName')\n ], FieldSettings.prototype, \"tableName\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Represents the EJ2 ListView control.\n * ```html\n *
\n *
    \n *
  • Favorite
  • \n *
  • Documents
  • \n *
  • Downloads
  • \n *
\n *
\n * ```\n * ```typescript\n * var listviewObject = new ListView({});\n * listviewObject.appendTo(\"#listview\");\n * ```\n */\nvar ListView = /** @class */ (function (_super) {\n __extends(ListView, _super);\n /**\n * Constructor for creating the widget\n *\n * @param options\n *\n * @param element\n */\n function ListView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousSelectedItems = [];\n _this.hiddenItems = [];\n _this.enabledItems = [];\n _this.disabledItems = [];\n return _this;\n }\n /**\n * @param newProp\n *\n * @param oldProp\n *\n * @private\n */\n ListView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'htmlAttributes':\n this.setHTMLAttribute();\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enable':\n this.setEnable();\n break;\n case 'width':\n case 'height':\n this.setSize();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'fields':\n // eslint-disable-next-line\n this.listBaseOption.fields = this.fields.properties;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'headerTitle':\n if (!this.curDSLevel.length) {\n this.header(this.headerTitle, false, 'header');\n }\n break;\n case 'query':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'showHeader':\n this.header(this.headerTitle, false, 'header');\n break;\n case 'enableVirtualization':\n if (!isNullOrUndefined(this.contentContainer)) {\n detach(this.contentContainer);\n }\n this.refresh();\n break;\n case 'showCheckBox':\n case 'checkBoxPosition':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.setCheckbox();\n }\n break;\n case 'dataSource':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'sortOrder':\n case 'template':\n if (!this.enableVirtualization) {\n this.refresh();\n }\n break;\n case 'showIcon':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.listBaseOption.showIcon = this.showIcon;\n this.curViewDS = this.getSubDS();\n this.resetCurrentList();\n }\n break;\n default:\n break;\n }\n }\n };\n // Model Changes\n ListView.prototype.setHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n attributes(this.element, this.htmlAttributes);\n }\n };\n ListView.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' ').filter(function (css) { return css; }));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' ').filter(function (css) { return css; }));\n }\n };\n ListView.prototype.setSize = function () {\n this.element.style.height = formatUnit(this.height);\n this.element.style.width = formatUnit(this.width);\n this.isWindow = this.element.clientHeight ? false : true;\n };\n ListView.prototype.setEnable = function () {\n this.enableElement(this.element, this.enable);\n };\n ListView.prototype.setEnableRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n ListView.prototype.enableElement = function (element, isEnabled) {\n if (isEnabled) {\n element.classList.remove(classNames.disable);\n }\n else {\n element.classList.add(classNames.disable);\n }\n };\n // Support Component Functions\n ListView.prototype.header = function (text, showBack, prop) {\n if (this.headerEle === undefined && this.showHeader) {\n this.headerEle = this.createElement('div', { className: classNames.header });\n var innerHeaderEle = this.createElement('span', { className: classNames.headerText });\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n innerHeaderEle.innerText = this.headerTitle;\n }\n else {\n innerHeaderEle.innerHTML = this.headerTitle;\n }\n var textEle = this.createElement('div', { className: classNames.text, innerHTML: innerHeaderEle.outerHTML });\n var hedBackButton = this.createElement('div', {\n className: classNames.icon + ' ' + classNames.backIcon + ' ' + classNames.backButton,\n attrs: { style: 'display:none;' }\n });\n this.headerEle.appendChild(hedBackButton);\n this.headerEle.appendChild(textEle);\n if (this.headerTemplate) {\n var compiledString = compile(this.headerTemplate);\n var headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n // eslint-disable-next-line\n var compiledElement = compiledString({}, this, prop, this.LISTVIEW_HEADERTEMPLATE_ID, null, null, this.headerEle);\n if (compiledElement) {\n append(compiledElement, headerTemplateEle);\n }\n append([headerTemplateEle], this.headerEle);\n // eslint-disable-next-line\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n if (this.headerTemplate && this.headerTitle) {\n textEle.classList.add('header');\n }\n this.element.classList.add('e-has-header');\n prepend([this.headerEle], this.element);\n }\n else if (this.headerEle) {\n if (this.showHeader) {\n this.headerEle.style.display = '';\n var textEle = this.headerEle.querySelector('.' + classNames.headerText);\n var hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);\n if (this.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n textEle.innerHTML = text;\n if (this.headerTemplate && showBack) {\n textEle.parentElement.classList.remove('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');\n }\n if (this.headerTemplate && !showBack) {\n textEle.parentElement.classList.add('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.remove('nested-header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('header');\n }\n if (showBack === true) {\n hedBackButton.style.display = '';\n }\n else {\n hedBackButton.style.display = 'none';\n }\n }\n else {\n this.headerEle.style.display = 'none';\n }\n }\n };\n // Animation Related Functions\n ListView.prototype.switchView = function (fromView, toView, reverse) {\n var _this = this;\n if (fromView && toView) {\n var fPos_1 = fromView.style.position;\n var overflow_1 = (this.element.style.overflow !== 'hidden') ? this.element.style.overflow : '';\n fromView.style.position = 'absolute';\n fromView.classList.add('e-view');\n var anim = void 0;\n var duration = this.animation.duration;\n if (this.animation.effect) {\n anim = (this.enableRtl ? effectsRTLConfig[this.animation.effect] : effectsConfig[this.animation.effect]);\n }\n else {\n var slideLeft = 'SlideLeft';\n anim = effectsConfig[\"\" + slideLeft];\n reverse = this.enableRtl;\n duration = 0;\n }\n this.element.style.overflow = 'hidden';\n this.aniObj.animate(fromView, {\n name: (reverse === true ? anim[0] : anim[1]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n // eslint-disable-next-line\n end: function (model) {\n fromView.style.display = 'none';\n _this.element.style.overflow = overflow_1;\n fromView.style.position = fPos_1;\n fromView.classList.remove('e-view');\n }\n });\n toView.style.display = '';\n this.aniObj.animate(toView, {\n name: (reverse === true ? anim[2] : anim[3]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n end: function () {\n _this.trigger('actionComplete');\n }\n });\n this.curUL = toView;\n }\n };\n ListView.prototype.preRender = function () {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.setProperties({ template: document.querySelector(this.template).innerHTML.trim() }, true);\n }\n }\n catch (e) {\n compile(this.template);\n }\n }\n this.listBaseOption = {\n template: this.template,\n headerTemplate: this.headerTemplate,\n groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',\n ariaAttributes: {\n itemRole: 'listitem', listRole: 'list', itemText: '',\n groupItemRole: 'presentation', wrapperRole: 'presentation'\n },\n // eslint-disable-next-line\n fields: (this.fields.properties),\n sortOrder: this.sortOrder,\n showIcon: this.showIcon,\n itemCreated: this.renderCheckbox.bind(this),\n templateID: \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY,\n groupTemplateID: \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY,\n enableHtmlSanitizer: this.enableHtmlSanitizer\n };\n this.initialization();\n };\n ListView.prototype.initialization = function () {\n this.curDSLevel = [];\n this.animateOptions = {};\n this.curViewDS = [];\n this.currentLiElements = [];\n this.isNestedList = false;\n this.selectedData = [];\n this.selectedId = this.enablePersistence ? this.selectedId : [];\n this.LISTVIEW_TEMPLATE_ID = \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY;\n this.LISTVIEW_GROUPTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY;\n this.LISTVIEW_HEADERTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_HEADERTEMPLATE_PROPERTY;\n this.aniObj = new Animation(this.animateOptions);\n this.removeElement(this.curUL);\n this.removeElement(this.ulElement);\n this.removeElement(this.headerEle);\n this.removeElement(this.contentContainer);\n this.curUL = this.ulElement = this.liCollection = this.headerEle = this.contentContainer = undefined;\n };\n ListView.prototype.renderCheckbox = function (args) {\n var _this = this;\n if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && args.item.classList.contains(classNames.listItem)) {\n var checkboxElement = void 0;\n var fieldData_1;\n // eslint-disable-next-line prefer-const\n checkboxElement = createCheckBox(this.createElement, false, {\n checked: false, enableRtl: this.enableRtl,\n cssClass: classNames.listviewCheckbox\n });\n checkboxElement.setAttribute('role', 'checkbox');\n var frameElement_1 = checkboxElement.querySelector('.' + classNames.checkboxIcon);\n args.item.classList.add(classNames.itemCheckList);\n args.item.firstElementChild.classList.add(classNames.checkbox);\n if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {\n fieldData_1 = getFieldValues(args.curData, this.listBaseOption.fields);\n if (this.enablePersistence && !isNullOrUndefined(this.selectedId)) {\n var index = this.selectedId.findIndex(function (e) { return e === fieldData_1[_this.listBaseOption.fields.id].toString(); });\n if (index !== -1) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (fieldData_1[this.listBaseOption.fields.isChecked]) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (((typeof this.dataSource[0] === 'string' ||\n typeof this.dataSource[0] === 'number') && this.selectedData.indexOf(args.text) !== -1)) {\n this.checkInternally(args, checkboxElement);\n }\n checkboxElement.setAttribute('aria-checked', frameElement_1.classList.contains(classNames.checked) ? 'true' : 'false');\n checkboxElement.setAttribute('aria-label', args.text);\n if (this.checkBoxPosition === 'Left') {\n checkboxElement.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.insertBefore(checkboxElement, args.item.firstElementChild.childNodes[0]);\n }\n else {\n checkboxElement.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.appendChild(checkboxElement);\n }\n this.currentLiElements.push(args.item);\n if (this.checkBoxPosition === 'Left') {\n this.virtualCheckBox = args.item.firstElementChild.children[0];\n }\n else {\n this.virtualCheckBox = args.item.firstElementChild.lastElementChild;\n }\n }\n };\n ListView.prototype.checkInternally = function (args, checkboxElement) {\n args.item.classList.add(classNames.selected);\n checkboxElement.querySelector('.' + classNames.checkboxIcon).classList.add(classNames.checked);\n checkboxElement.setAttribute('aria-checked', 'true');\n };\n /**\n * Checks the specific list item by passing the unchecked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.checkItem = function (item) {\n this.toggleCheckBase(item, true);\n };\n ListView.prototype.toggleCheckBase = function (item, checked) {\n if (this.showCheckBox) {\n var liElement = item;\n if (item instanceof Object && item.constructor !== HTMLLIElement) {\n liElement = this.getLiFromObjOrElement(item);\n }\n if (!isNullOrUndefined(liElement)) {\n var checkboxIcon = liElement.querySelector('.' + classNames.checkboxIcon);\n if (checked === true) {\n liElement.classList.add(classNames.selected);\n }\n else {\n liElement.classList.remove(classNames.selected);\n }\n if (checked === true) {\n checkboxIcon.classList.add(classNames.checked);\n }\n else {\n checkboxIcon.classList.remove(classNames.checked);\n }\n checkboxIcon.parentElement.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n this.setSelectedItemData(liElement);\n this.updateSelectedId();\n }\n };\n /**\n * Uncheck the specific list item by passing the checked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.uncheckItem = function (item) {\n this.toggleCheckBase(item, false);\n };\n /**\n * Checks all the unchecked items in the ListView.\n */\n ListView.prototype.checkAllItems = function () {\n this.toggleAllCheckBase(true);\n };\n /**\n * Uncheck all the checked items in ListView.\n */\n ListView.prototype.uncheckAllItems = function () {\n this.toggleAllCheckBase(false);\n };\n ListView.prototype.toggleAllCheckBase = function (checked) {\n if (this.showCheckBox) {\n for (var i = 0; i < this.liCollection.length; i++) {\n var checkIcon = this.liCollection[i].querySelector('.' + classNames.checkboxIcon);\n if (checkIcon) {\n if (checked) {\n if (!checkIcon.classList.contains(classNames.checked)) {\n this.checkItem(this.liCollection[i]);\n }\n }\n else {\n if (checkIcon.classList.contains(classNames.checked)) {\n this.uncheckItem(this.liCollection[i]);\n }\n }\n }\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.checkedItem(checked);\n }\n this.updateSelectedId();\n }\n };\n ListView.prototype.setCheckbox = function () {\n if (this.showCheckBox) {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n var args = {\n item: undefined, curData: undefined, dataSource: undefined, fields: undefined,\n options: undefined, text: ''\n };\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n args.item = element;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.curData = this.getItemData(element);\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n this.renderCheckbox(args);\n if (args.item.classList.contains(classNames.selected)) {\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n }\n else {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.itemCheckList));\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n element.classList.remove(classNames.selected);\n element.firstElementChild.classList.remove(classNames.checkbox);\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n if (this.selectedItems) {\n this.selectedItems.item.classList.add(classNames.selected);\n }\n }\n };\n /**\n * Refresh the height of the list item only on enabling the virtualization property.\n */\n ListView.prototype.refreshItemHeight = function () {\n if (this.virtualizationModule) {\n this.virtualizationModule.refreshItemHeight();\n }\n };\n ListView.prototype.clickHandler = function (e) {\n if (Array.isArray(this.dataSource) && this.dataSource.length === 0) {\n return;\n }\n var target = e.target;\n this.targetElement = target;\n var classList = target.classList;\n var closestElement;\n if (classList.contains(classNames.backIcon) || classList.contains(classNames.headerText)) {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n else {\n var li = closest(target.parentNode, '.' + classNames.listItem);\n if (li === null) {\n li = target;\n }\n this.removeFocus();\n if (this.enable && this.showCheckBox && this.isValidLI(li)) {\n if (e.target.classList.contains(classNames.checkboxIcon)) {\n li.classList.add(classNames.focused);\n if (isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n else {\n this.uncheckItem(li);\n li.classList.add(classNames.focused);\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n if (e) {\n var eventArgs = this.selectEventData(li, e);\n var checkIcon = li.querySelector('.' + classNames.checkboxIcon);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n this.trigger('select', eventArgs);\n }\n }\n else if (li.classList.contains(classNames.hasChild)) {\n this.removeHover();\n this.removeSelect();\n this.removeSelect(li);\n this.setSelectLI(li, e);\n li.classList.remove(classNames.selected);\n }\n else {\n this.setCheckboxLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n }\n else {\n this.setSelectLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n closestElement = closest(e.target, 'li');\n if (!isNullOrUndefined(closestElement)) {\n if (closestElement.classList.contains('e-has-child') &&\n !e.target.parentElement.classList.contains('e-listview-checkbox')) {\n closestElement.classList.add(classNames.disable);\n }\n }\n }\n this.updateSelectedId();\n };\n ListView.prototype.removeElement = function (element) {\n return element && element.parentNode && element.parentNode.removeChild(element);\n };\n ListView.prototype.hoverHandler = function (e) {\n var curLi = closest(e.target.parentNode, '.' + classNames.listItem);\n this.setHoverLI(curLi);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ListView.prototype.leaveHandler = function (e) {\n this.removeHover();\n };\n ListView.prototype.homeKeyHandler = function (e, end) {\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var li = this.curUL.querySelectorAll('.' + classNames.listItem);\n var focusedElement = this.curUL.querySelector('.' + classNames.focused) ||\n this.curUL.querySelector('.' + classNames.selected);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n focusedElement.classList.remove(classNames.selected);\n }\n }\n var index = !end ? 0 : li.length - 1;\n if (li[index].classList.contains(classNames.hasChild) || this.showCheckBox) {\n li[index].classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(li[index], e);\n }\n if (li[index]) {\n this.element.setAttribute('aria-activedescendant', li[index].id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n }\n };\n ListView.prototype.onArrowKeyDown = function (e, prev) {\n var siblingLI;\n var li;\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n if (hasChild || this.showCheckBox) {\n li = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n if (!isNullOrUndefined(siblingLI)) {\n if (li) {\n li.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n li.classList.remove(classNames.selected);\n }\n }\n if (siblingLI.classList.contains(classNames.hasChild) || this.showCheckBox) {\n siblingLI.classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(siblingLI, e);\n }\n }\n }\n else {\n li = this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n this.setSelectLI(siblingLI, e);\n }\n if (siblingLI) {\n this.element.setAttribute('aria-activedescendant', siblingLI.id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n return siblingLI;\n };\n ListView.prototype.arrowKeyHandler = function (e, prev) {\n var _this = this;\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var siblingLI = this.onArrowKeyDown(e, prev);\n var elementTop = this.element.getBoundingClientRect().top;\n var elementHeight = this.element.getBoundingClientRect().height;\n var firstItemBounds = this.curUL.querySelector('.' + classNames.listItem).getBoundingClientRect();\n var heightDiff = void 0;\n var groupItemBounds = void 0;\n if (this.fields.groupBy) {\n groupItemBounds = this.curUL.querySelector('.' + classNames.groupListItem).getBoundingClientRect();\n }\n if (siblingLI) {\n var siblingTop = siblingLI.getBoundingClientRect().top;\n var siblingHeight = siblingLI.getBoundingClientRect().height;\n if (!prev) {\n var height = this.isWindow ? window.innerHeight : elementHeight;\n heightDiff = this.isWindow ? (siblingTop + siblingHeight) :\n ((siblingTop - elementTop) + siblingHeight);\n if (heightDiff > height) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + (heightDiff - height));\n }\n else {\n this.element.scrollTop = this.element.scrollTop + (heightDiff - height);\n }\n }\n }\n else {\n heightDiff = this.isWindow ? siblingTop : (siblingTop - elementTop);\n if (heightDiff < 0) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop + heightDiff;\n }\n }\n }\n }\n else if (this.enableVirtualization && prev && this.virtualizationModule.uiFirstIndex) {\n this.onUIScrolled = function () {\n _this.onArrowKeyDown(e, prev);\n _this.onUIScrolled = undefined;\n };\n heightDiff = this.virtualizationModule.listItemHeight;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n else if (prev) {\n if (this.showHeader && this.headerEle) {\n var topHeight = groupItemBounds ? groupItemBounds.top : firstItemBounds.top;\n var headerBounds = this.headerEle.getBoundingClientRect();\n heightDiff = headerBounds.top < 0 ? (headerBounds.height - topHeight) : 0;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = 0;\n }\n }\n else if (this.fields.groupBy) {\n heightDiff = this.isWindow ? (groupItemBounds.top < 0 ? groupItemBounds.top : 0) :\n (elementTop - firstItemBounds.top) + groupItemBounds.height;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n }\n }\n };\n ListView.prototype.enterKeyHandler = function (e) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n var li = this.curUL.querySelector('.' + classNames.focused);\n if (hasChild && li) {\n li.classList.remove(classNames.focused);\n if (this.showCheckBox) {\n this.removeSelect();\n this.removeSelect(li);\n this.removeHover();\n }\n this.setSelectLI(li, e);\n }\n }\n };\n ListView.prototype.spaceKeyHandler = function (e) {\n e.preventDefault();\n if (this.enable && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\n var li = this.curUL.querySelector('.' + classNames.focused);\n var checkboxElement = void 0;\n var checkIcon = void 0;\n if (!isNullOrUndefined(li) && isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n checkboxElement = args.item.querySelector('.' + classNames.checkboxWrapper);\n this.checkInternally(args, checkboxElement);\n checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n }\n else {\n this.uncheckItem(li);\n }\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon ? checkIcon.classList.contains(classNames.checked) : false });\n this.trigger('select', eventArgs);\n this.updateSelectedId();\n }\n };\n ListView.prototype.keyActionHandler = function (e) {\n switch (e.keyCode) {\n case 36:\n this.homeKeyHandler(e);\n break;\n case 35:\n this.homeKeyHandler(e, true);\n break;\n case 40:\n this.arrowKeyHandler(e);\n break;\n case 38:\n this.arrowKeyHandler(e, true);\n break;\n case 13:\n this.enterKeyHandler(e);\n break;\n case 8:\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n break;\n case 32:\n if (isNullOrUndefined(this.targetElement) || !(this.targetElement.classList.contains('e-focused'))) {\n this.spaceKeyHandler(e);\n }\n break;\n }\n };\n ListView.prototype.swipeActionHandler = function (e) {\n if (e.swipeDirection === 'Right' && e.velocity > swipeVelocity && e.originalEvent.type === 'touchend') {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n };\n ListView.prototype.focusout = function () {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var focusedElement = this.curUL.querySelector('.' + classNames.focused);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox && !isNullOrUndefined(this.selectedLI)) {\n this.selectedLI.classList.add(classNames.selected);\n }\n }\n }\n };\n ListView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'keydown', this.keyActionHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusout, this);\n this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.add(this.element, 'scroll', this.onListScroll, this);\n }\n };\n ListView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.remove(this.element, 'scroll', this.onListScroll);\n }\n this.touchModule.destroy();\n this.touchModule = null;\n };\n ListView.prototype.removeFocus = function () {\n var focusedLI = this.element.querySelectorAll('.' + classNames.focused);\n for (var _i = 0, focusedLI_1 = focusedLI; _i < focusedLI_1.length; _i++) {\n var ele = focusedLI_1[_i];\n ele.classList.remove(classNames.focused);\n }\n };\n ListView.prototype.removeHover = function () {\n var hoverLI = this.element.querySelector('.' + classNames.hover);\n if (hoverLI) {\n hoverLI.classList.remove(classNames.hover);\n }\n };\n ListView.prototype.removeSelect = function (li) {\n if (isNullOrUndefined(li)) {\n var selectedLI = this.element.querySelectorAll('.' + classNames.selected);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.showCheckBox && ele.querySelector('.' + classNames.checked)) {\n continue;\n }\n else {\n ele.classList.remove(classNames.selected);\n }\n }\n }\n else {\n li.classList.remove(classNames.selected);\n }\n };\n ListView.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(classNames.listItem)\n && !li.classList.contains(classNames.groupListItem)\n && !li.classList.contains(classNames.disable));\n };\n ListView.prototype.setCheckboxLI = function (li, e) {\n if (this.isValidLI(li) && this.enable && this.showCheckBox) {\n if (this.curUL.querySelector('.' + classNames.focused)) {\n this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n var textAreaFocus = li.querySelector('textarea') || li.querySelector('input');\n li.classList.add(classNames.focused);\n if (!isNullOrUndefined(e)) {\n if (e.target === textAreaFocus) {\n textAreaFocus.classList.add('e-focused');\n }\n }\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n this.removeHover();\n if (!checkIcon.classList.contains(classNames.checked)) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', checkIcon.classList.contains(classNames.checked) ?\n 'true' : 'false');\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n this.trigger('select', eventArgs);\n this.setSelectedItemData(li);\n this.renderSubList(li);\n }\n };\n ListView.prototype.selectEventData = function (li, e) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n var selectedItem;\n if (!isNullOrUndefined(data)\n && typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') {\n selectedItem = { item: li, text: li && li.innerText.trim(), data: this.dataSource };\n }\n else {\n selectedItem =\n {\n item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\n data: data\n };\n }\n var eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, { isInteracted: true, event: e, cancel: false, index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li) });\n }\n return eventArgs;\n };\n ListView.prototype.setSelectedItemData = function (li) {\n var data = this.getItemData(li);\n // eslint-disable-next-line\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n if (!isNullOrUndefined(data) && ((typeof this.dataSource[0] === 'string') ||\n (typeof this.dataSource[0] === 'number'))) {\n this.selectedItems = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n }\n else {\n this.selectedItems = {\n item: li,\n // eslint-disable-next-line\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\n data: data\n };\n }\n };\n ListView.prototype.setSelectLI = function (li, e) {\n var _this = this;\n if (this.isValidLI(li) && !li.classList.contains(classNames.selected) && this.enable) {\n if (!this.showCheckBox) {\n this.removeSelect();\n }\n li.classList.add(classNames.selected);\n this.removeHover();\n this.setSelectedItemData(li);\n if (this.enableVirtualization) {\n this.virtualizationModule.setSelectLI(li, e);\n }\n var eventArgs = this.selectEventData(li, e);\n this.trigger('select', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.selectedLI = li;\n _this.renderSubList(li);\n }\n });\n }\n };\n ListView.prototype.setHoverLI = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.hover) && this.enable) {\n var lastLi = this.element.querySelectorAll('.' + classNames.hover);\n if (lastLi && lastLi.length) {\n removeClass(lastLi, classNames.hover);\n }\n if (!li.classList.contains(classNames.selected) || this.showCheckBox) {\n li.classList.add(classNames.hover);\n }\n }\n };\n //Data Source Related Functions\n ListView.prototype.getSubDS = function () {\n var levelKeys = this.curDSLevel;\n if (levelKeys.length) {\n var ds = this.localData;\n for (var _i = 0, levelKeys_1 = levelKeys; _i < levelKeys_1.length; _i++) {\n var key = levelKeys_1[_i];\n var field = {};\n // eslint-disable-next-line\n field[this.fields.id] = key;\n this.curDSJSON = this.findItemFromDS(ds, field);\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n ds = this.curDSJSON ? fieldData[this.fields.child] : ds;\n }\n return ds;\n }\n return this.localData;\n };\n ListView.prototype.getItemData = function (li) {\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n var fields = this.getElementUID(li);\n var curDS;\n if (isNullOrUndefined(this.element.querySelector('.' + classNames.hasChild)) && this.fields.groupBy) {\n curDS = this.curViewDS;\n }\n else {\n curDS = dataSource;\n }\n return this.findItemFromDS(curDS, fields);\n };\n ListView.prototype.findItemFromDS = function (dataSource, fields, parent) {\n var _this = this;\n var resultJSON;\n if (dataSource && dataSource.length && fields) {\n dataSource.some(function (data) {\n var fieldData = \n // eslint-disable-next-line\n getFieldValues(data, _this.listBaseOption.fields);\n //(!(fid) || id === fid) && (!(ftext) || text === ftext) && (!!fid || !!ftext)\n if ((fields[_this.fields.id] || fields[_this.fields.text]) &&\n (!fields[_this.fields.id] || (!isNullOrUndefined(fieldData[_this.fields.id]) &&\n fieldData[_this.fields.id].toString()) === fields[_this.fields.id].toString()) &&\n (!fields[_this.fields.text] || fieldData[_this.fields.text] === fields[_this.fields.text])) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (typeof data !== 'object' && dataSource.indexOf(data) !== -1) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (!isNullOrUndefined(fields[_this.fields.id]) && isNullOrUndefined(fieldData[_this.fields.id])) {\n var li = _this.element.querySelector('[data-uid=\"'\n + fields[_this.fields.id] + '\"]');\n // eslint-disable-next-line\n if (li && li.innerText.trim() === fieldData[_this.fields.text]) {\n resultJSON = data;\n }\n // eslint-disable-next-line\n }\n else if (fieldData.hasOwnProperty(_this.fields.child) && fieldData[_this.fields.child].length) {\n resultJSON = _this.findItemFromDS(fieldData[_this.fields.child], fields, parent);\n }\n return !!resultJSON;\n });\n }\n else {\n resultJSON = dataSource;\n }\n return resultJSON;\n };\n ListView.prototype.getQuery = function () {\n var columns = [];\n var query = (this.query ? this.query : new Query());\n if (!this.query) {\n // eslint-disable-next-line\n for (var _i = 0, _a = Object.keys(this.fields.properties); _i < _a.length; _i++) {\n var column = _a[_i];\n if (column !== 'tableName' && !!(this.fields[\"\" + column]) &&\n this.fields[\"\" + column] !==\n ListBase.defaultMappedFields[\"\" + column]\n && columns.indexOf(this.fields[\"\" + column]) === -1) {\n columns.push(this.fields[\"\" + column]);\n }\n }\n query.select(columns);\n // eslint-disable-next-line\n if (this.fields.properties.hasOwnProperty('tableName')) {\n query.from(this.fields.tableName);\n }\n }\n return query;\n };\n ListView.prototype.setViewDataSource = function (dataSource) {\n if (dataSource === void 0) { dataSource = this.localData; }\n // eslint-disable-next-line\n var fieldValue = (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : this.fields.sortBy;\n var query = ListBase.addSorting(this.sortOrder, fieldValue);\n if (dataSource && this.fields.groupBy) {\n if (this.sortOrder !== 'None') {\n this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, query), this.listBaseOption.fields, this.sortOrder);\n }\n else {\n this.curViewDS = ListBase.groupDataSource(dataSource, this.listBaseOption.fields, this.sortOrder);\n }\n }\n else if (dataSource && this.sortOrder !== 'None') {\n this.curViewDS = ListBase.getDataSource(dataSource, query);\n }\n else {\n this.curViewDS = dataSource;\n }\n };\n ListView.prototype.isInAnimation = function () {\n return this.curUL.classList.contains('.e-animate');\n };\n ListView.prototype.renderRemoteLists = function (e, listViewComponent) {\n if (this.isDestroyed) {\n return;\n }\n this.localData = e.result;\n listViewComponent.removeElement(listViewComponent.contentContainer);\n this.renderList();\n this.trigger('actionComplete', e);\n };\n ListView.prototype.triggerActionFailure = function (e) {\n if (this.isDestroyed) {\n return;\n }\n this.trigger('actionFailure', e);\n };\n ListView.prototype.setLocalData = function () {\n var _this = this;\n this.trigger('actionBegin');\n // eslint-disable-next-line\n var listViewComponent = this;\n if (this.dataSource instanceof DataManager) {\n if (this.dataSource.ready) {\n this.dataSource.ready.then(function (e) {\n /* eslint-disable */\n _this.isOffline = _this.dataSource.dataSource.offline;\n if (_this.dataSource instanceof DataManager && _this.isOffline) {\n _this.renderRemoteLists(e, listViewComponent);\n }\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n else {\n this.dataSource.executeQuery(this.getQuery()).then(function (e) {\n _this.renderRemoteLists(e, listViewComponent);\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n }\n else if (!this.dataSource || !this.dataSource.length) {\n var ul = this.element.querySelector('ul');\n if (ul) {\n remove(ul);\n this.setProperties({ dataSource: ListBase.createJsonFromElement(ul) }, true);\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n else {\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n };\n ListView.prototype.reRender = function () {\n this.removeElement(this.headerEle);\n this.removeElement(this.ulElement);\n this.removeElement(this.contentContainer);\n if (this.isReact) {\n this.clearTemplate();\n }\n if (Object.keys(window).indexOf('ejsInterop') === -1) {\n this.element.innerHTML = '';\n }\n this.headerEle = this.ulElement = this.liCollection = undefined;\n this.header();\n this.setLocalData();\n };\n ListView.prototype.resetCurrentList = function () {\n this.setViewDataSource(this.curViewDS);\n this.contentContainer.innerHTML = '';\n this.createList();\n this.renderIntoDom(this.curUL);\n };\n ListView.prototype.setAttributes = function (liElements) {\n for (var i = 0; i < liElements.length; i++) {\n var element = liElements[i];\n if (element.classList.contains('e-list-item')) {\n element.setAttribute('id', this.element.id + '_' + element.getAttribute('data-uid'));\n element.setAttribute('tabindex', '-1');\n }\n }\n };\n ListView.prototype.createList = function () {\n this.currentLiElements = [];\n this.isNestedList = false;\n this.ulElement = this.curUL = ListBase.createList(this.createElement, this.curViewDS, this.listBaseOption, null, this);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(this.liCollection);\n };\n ListView.prototype.exceptionEvent = function (e) {\n this.trigger('actionFailure', e);\n };\n ListView.prototype.UpdateCurrentUL = function () {\n this.ulElement = this.curUL = this.element.querySelector('.' + classNames.parentItem);\n if (this.curUL) {\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n };\n ListView.prototype.renderSubList = function (li) {\n this.liElement = li;\n var uID = li.getAttribute('data-uid');\n if (li.classList.contains(classNames.hasChild) && uID) {\n var ul = closest(li.parentNode, '.' + classNames.parentItem);\n var ele = this.element.querySelector('[pid=\\'' + uID + '\\']');\n this.curDSLevel.push(uID);\n this.setViewDataSource(this.getSubDS());\n if (!ele) {\n var data = this.curViewDS;\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var lists = ele.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(lists);\n ele.setAttribute('pID', uID);\n ele.style.display = 'none';\n this.renderIntoDom(ele);\n }\n this.switchView(ul, ele);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.selectedItems) {\n var fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);\n this.header((fieldData[this.listBaseOption.fields.text]), true, 'header');\n }\n this.selectedLI = undefined;\n }\n };\n ListView.prototype.renderIntoDom = function (ele) {\n this.contentContainer.appendChild(ele);\n };\n ListView.prototype.renderList = function (data) {\n this.setViewDataSource(data);\n if (this.enableVirtualization) {\n if (Object.keys(this.dataSource).length) {\n if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {\n this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);\n }\n }\n this.virtualizationModule.uiVirtualization();\n }\n else {\n this.createList();\n this.contentContainer = this.createElement('div', { className: classNames.container });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n };\n ListView.prototype.getElementUID = function (obj) {\n var fields = {};\n if (obj instanceof Element) {\n fields[this.fields.id] = obj.getAttribute('data-uid');\n }\n else {\n fields = obj;\n }\n return fields;\n };\n /**\n * Initializes the ListView component rendering.\n */\n ListView.prototype.render = function () {\n this.element.classList.add(classNames.root);\n attributes(this.element, { tabindex: '0' });\n this.setCSSClass();\n this.setEnableRTL();\n this.setEnable();\n this.setSize();\n this.wireEvents();\n this.header();\n this.setLocalData();\n this.setHTMLAttribute();\n this.rippleFn = rippleEffect(this.element, {\n selector: '.' + classNames.listItem\n });\n this.renderComplete();\n this.previousScrollTop = this.element.scrollTop;\n };\n /**\n * It is used to destroy the ListView component.\n */\n ListView.prototype.destroy = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n this.unWireEvents();\n var classAr = [classNames.root, classNames.disable, 'e-rtl',\n 'e-has-header', 'e-lib'].concat(this.cssClass.split(' ').filter(function (css) { return css; }));\n removeClass([this.element], classAr);\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n this.curUL = this.ulElement = this.liCollection = this.headerEle = undefined;\n this.element.innerHTML = '';\n this.contentContainer = null;\n this.selectedItems = null;\n this.selectedLI = null;\n this.liElement = null;\n this.targetElement = null;\n this.currentLiElements = null;\n this.virtualCheckBox = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Switches back from the navigated sub list item.\n */\n ListView.prototype.back = function () {\n var pID = this.curDSLevel[this.curDSLevel.length - 1];\n if (pID === undefined || this.isInAnimation()) {\n return;\n }\n this.curDSLevel.pop();\n this.setViewDataSource(this.getSubDS());\n var toUL = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n var fromUL = this.curUL;\n if (!toUL) {\n this.createList();\n this.renderIntoDom(this.ulElement);\n toUL = this.curUL;\n }\n else {\n toUL = toUL.parentElement;\n }\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n var text = fieldData[this.fields.text];\n this.switchView(fromUL, toUL, true);\n this.removeFocus();\n var li = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n li.classList.remove(classNames.disable);\n li.classList.add(classNames.focused);\n if (!(this.showCheckBox && li.querySelector('.' + classNames.checkboxIcon).classList.contains(classNames.checked))) {\n li.classList.remove(classNames.selected);\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.header((this.curDSLevel.length ? text : this.headerTitle), (this.curDSLevel.length ? true : false), 'header');\n };\n /**\n * Selects the list item from the ListView by passing the elements or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.selectItem = function (item) {\n if (this.enableVirtualization) {\n this.virtualizationModule.selectItem(item);\n }\n else if (this.showCheckBox) {\n this.setCheckboxLI(this.getLiFromObjOrElement(item));\n }\n else {\n if (isNullOrUndefined(item) === true) {\n this.removeSelect();\n }\n else {\n this.setSelectLI(this.getLiFromObjOrElement(item));\n }\n }\n };\n /**\n * This method allows for deselecting a list item within the ListView. The item to be deselected can be specified by passing the element or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass an element Object or Fields as an Object with ID and Text fields.\n */\n ListView.prototype.unselectItem = function (item) {\n if (isNullOrUndefined(item)) {\n this.removeSelect();\n }\n else {\n var li = this.getLiFromObjOrElement(item);\n if (!isNullOrUndefined(li)) {\n this.removeSelect(li);\n }\n }\n };\n ListView.prototype.getLiFromObjOrElement = function (obj) {\n var li;\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (!isNullOrUndefined(obj)) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n if (obj instanceof Element) {\n var uid = obj.getAttribute('data-uid').toString();\n for (var i = 0; i < this.liCollection.length; i++) {\n if (this.liCollection[i].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[i];\n break;\n }\n }\n }\n else {\n Array.prototype.some.call(this.curUL.querySelectorAll('.' + classNames.listItem), function (item) {\n if (item.innerText.trim() === obj.toString()) {\n li = item;\n return true;\n }\n else {\n return false;\n }\n });\n }\n }\n else {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n li = this.element.querySelector('[data-uid=\"'\n + fieldData[this.fields.id] + '\"]');\n if (!this.enableVirtualization && isNullOrUndefined(li)) {\n var curLi = this.element.querySelectorAll('.' + classNames.listItem);\n for (var i = 0; i < curLi.length; i++) {\n if (curLi[i].innerText.trim() === fieldData[this.fields.text]) {\n li = curLi[i];\n }\n }\n }\n }\n }\n }\n return li;\n };\n /**\n * Selects multiple list items from the ListView.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of\n * elements or array of fields Object with ID and Text fields.\n */\n ListView.prototype.selectMultipleItems = function (item) {\n if (!isNullOrUndefined(item)) {\n for (var i = 0; i < item.length; i++) {\n if (!isNullOrUndefined(item[i])) {\n this.selectItem(item[i]);\n }\n }\n }\n };\n ListView.prototype.getParentId = function () {\n var parentId = [];\n if (this.isNestedList) {\n for (var i = this.curDSLevel.length - 1; i >= 0; i--) {\n parentId.push(this.curDSLevel[i]);\n }\n }\n return parentId;\n };\n ListView.prototype.updateSelectedId = function () {\n this.selectedId = [];\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n for (var i = 0; i < liCollection.length; i++) {\n var tempData = this.getItemData(liCollection[i]);\n if (!isNullOrUndefined(tempData) && tempData[this.listBaseOption.fields.id]) {\n this.selectedId.push(tempData[this.listBaseOption.fields.id]);\n }\n }\n };\n /**\n * Gets the details of the currently selected item from the list items.\n *\n */\n ListView.prototype.getSelectedItems = function () {\n var finalValue;\n var isCompleted = false;\n this.selectedId = [];\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (this.enableVirtualization && !isCompleted) {\n finalValue = this.virtualizationModule.getSelectedItems();\n isCompleted = true;\n }\n else if (this.showCheckBox && !isCompleted) {\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n var liTextCollection = [];\n var liDataCollection = [];\n this.selectedId = [];\n var dataParent = [];\n for (var i = 0; i < liCollection.length; i++) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n liTextCollection.push(liCollection[i].innerText.trim());\n }\n else {\n var tempData = this.getItemData(liCollection[i]);\n var fieldData = getFieldValues(tempData, this.listBaseOption.fields);\n if (this.isNestedList) {\n dataParent.push({ data: tempData, parentId: this.getParentId() });\n }\n else {\n liDataCollection.push(tempData);\n }\n if (fieldData) {\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n }\n else {\n liTextCollection.push(undefined);\n this.selectedId.push(undefined);\n }\n }\n }\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = { item: liCollection, data: dataSource, text: liTextCollection };\n isCompleted = true;\n }\n if (this.isNestedList && !isCompleted) {\n finalValue = { item: liCollection, data: dataParent, text: liTextCollection };\n isCompleted = true;\n }\n else if (!isCompleted) {\n finalValue = { item: liCollection, data: liDataCollection, text: liTextCollection };\n isCompleted = true;\n }\n }\n else if (!isCompleted) {\n var liElement = this.element.getElementsByClassName(classNames.selected)[0];\n var fieldData = getFieldValues(this.getItemData(liElement), this.listBaseOption.fields);\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = (!isNullOrUndefined(liElement)) ? {\n item: liElement, data: dataSource,\n text: liElement.innerText.trim()\n } : undefined;\n isCompleted = true;\n }\n else if (!isCompleted) {\n if (isNullOrUndefined(fieldData) || isNullOrUndefined(liElement)) {\n finalValue = undefined;\n isCompleted = true;\n }\n else {\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n finalValue = {\n text: fieldData[this.listBaseOption.fields.text], item: liElement,\n data: this.getItemData(liElement)\n };\n isCompleted = true;\n }\n }\n }\n return finalValue;\n };\n /**\n * Finds out an item details from the current list.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.findItem = function (item) {\n return this.getItemData(item);\n };\n /**\n * Enables the disabled list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.enableItem = function (item) {\n this.setItemState(item, true);\n if (this.enableVirtualization) {\n this.virtualizationModule.enableItem(item);\n }\n };\n /**\n * Disables the list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.disableItem = function (item) {\n this.setItemState(item, false);\n if (this.enableVirtualization) {\n this.virtualizationModule.disableItem(item);\n }\n };\n //A function that used to set state of the list item like enable, disable.\n ListView.prototype.setItemState = function (item, isEnable) {\n var resultJSON = this.getItemData(item);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (isEnable) {\n if (li) {\n li.classList.remove(classNames.disable);\n }\n delete resultJSON[this.fields.enabled];\n }\n else if (!isEnable) {\n if (li) {\n li.classList.add(classNames.disable);\n }\n resultJSON[this.fields.enabled] = false;\n }\n }\n };\n /**\n * Shows the hide list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.showItem = function (item) {\n this.showHideItem(item, false, '');\n if (this.enableVirtualization) {\n this.virtualizationModule.showItem(item);\n }\n };\n /**\n * Hides an list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.hideItem = function (item) {\n this.showHideItem(item, true, 'none');\n if (this.enableVirtualization) {\n this.virtualizationModule.hideItem(item);\n }\n };\n ListView.prototype.showHideItem = function (obj, isHide, display) {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (li) {\n li.style.display = display;\n }\n if (isHide) {\n resultJSON[this.fields.isVisible] = false;\n }\n else {\n delete resultJSON[this.fields.isVisible];\n }\n }\n };\n /**\n * Adds the new list item(s) to the current ListView.\n * To add a new list item(s) in the ListView, we need to pass the `data` as an array of items that need\n * to be added and `fields` as the target item to which we need to add the given item(s) as its children.\n * For example fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {{Object}[]} data - JSON Array Data that need to add.\n *\n * @param {Fields} fields - Target item to add the given data as its children (can be null).\n *\n * @param {number} index - Indicates the index where the data to be added.\n */\n ListView.prototype.addItem = function (data, fields, index) {\n if (fields === void 0) { fields = undefined; }\n var dataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n this.addItemInternally(data, fields, dataSource, index);\n };\n ListView.prototype.addItemInternally = function (data, fields, dataSource, index) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource, index);\n }\n else {\n var ds = this.findItemFromDS(dataSource, fields);\n var child = void 0;\n if (ds) {\n var fieldData = getFieldValues(ds, this.listBaseOption.fields);\n child = fieldData[this.fields.child];\n if (!child) {\n child = [];\n }\n child = child.concat(data);\n }\n // check for whether target is nested level or top level in list\n if (ds instanceof Array) {\n for (var i = 0; i < data.length; i++) {\n dataSource = this.addItemAtIndex(index, dataSource, data[i]);\n this.setViewDataSource(dataSource);\n // since it is top level target, get the content container's first child\n // as it is always the top level UL\n var targetUL = this.contentContainer\n ? this.contentContainer.children[0]\n : null;\n // check for whether the list was previously empty or not, if it is\n // proceed to call initial render\n if (this.contentContainer && targetUL) {\n this.addItemIntoDom(data[i], targetUL, this.curViewDS);\n }\n else {\n this.reRender();\n }\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n else {\n // proceed as target item is in nested level, only if it is a valid target ds\n if (ds) {\n ds[this.fields.child] = child;\n this.addItemInNestedList(ds, data);\n }\n }\n }\n }\n };\n ListView.prototype.addItemAtIndex = function (index, newDataSource, itemData) {\n var isIndexValid = !(isNullOrUndefined(index)) && index >= 0 && index < newDataSource.length && isNullOrUndefined(this.listBaseOption.fields.groupBy);\n if (isIndexValid) {\n newDataSource.splice(index, 0, itemData);\n }\n else {\n newDataSource.push(itemData);\n }\n return newDataSource;\n };\n ListView.prototype.addItemInNestedList = function (targetItemData, itemQueue) {\n var targetItemId = targetItemData[this.fields.id];\n var targetChildDS = targetItemData[this.fields.child];\n var isAlreadyRenderedUL = this.element.querySelector('[pid=\\'' + targetItemId + '\\']');\n var targetLi = this.element.querySelector('[data-uid=\\'' + targetItemId + '\\']');\n var targetUL = isAlreadyRenderedUL\n ? isAlreadyRenderedUL\n : targetLi\n ? closest(targetLi, 'ul')\n : null;\n var targetDS = isAlreadyRenderedUL ? targetChildDS : [targetItemData];\n var isTargetEmptyChild = targetLi ? !targetLi.classList.contains(classNames.hasChild) : false;\n var isRefreshTemplateNeeded = false;\n // if li element is already rendered, that element needs to be refreshed so that\n // it becomes child viewable due to new child items are added now\n if (isTargetEmptyChild) {\n var targetRefreshedElement = ListBase.createListItemFromJson(this.createElement, targetDS, this.listBaseOption, null, null, this);\n this.setAttributes(targetRefreshedElement);\n targetUL.insertBefore(targetRefreshedElement[0], targetLi);\n detach(targetLi);\n isRefreshTemplateNeeded = true;\n }\n // if it is already rendered element, we need to create and append new elements\n if (isAlreadyRenderedUL && itemQueue) {\n for (var i = 0; i < itemQueue.length; i++) {\n targetDS.push(itemQueue[i]);\n this.addItemIntoDom(itemQueue[i], targetUL, targetDS);\n }\n isRefreshTemplateNeeded = true;\n }\n };\n ListView.prototype.addItemIntoDom = function (currentItem, targetUL, curViewDS) {\n var index = curViewDS.indexOf(currentItem);\n this.addListItem(currentItem, index, targetUL, curViewDS);\n var curItemDS = curViewDS[index - 1];\n if (curItemDS && curItemDS.isHeader && curItemDS.items.length === 1) {\n this.addListItem(curItemDS, (index - 1), targetUL, curViewDS);\n }\n };\n ListView.prototype.addListItem = function (dataSource, index, ulElement, curViewDS) {\n var target = this.getLiFromObjOrElement(curViewDS[index + 1]) ||\n this.getLiFromObjOrElement(curViewDS[index + 2]) || null;\n var li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n if (this.template && this.isReact) {\n this.renderReactTemplates();\n }\n if (this.fields.groupBy && curViewDS[index + 1] && curViewDS[index + 1].isHeader) {\n var targetEle = this.getLiFromObjOrElement(curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n ulElement.insertBefore(li[0], target);\n };\n /**\n * Removes the list item from the data source based on a passed\n * element like fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.removeItem = function (item) {\n var listDataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n if (this.enableVirtualization) {\n this.virtualizationModule.removeItem(item);\n }\n else {\n this.removeItemFromList(item, listDataSource);\n }\n };\n ListView.prototype.removeItemFromList = function (obj, listDataSource) {\n var _this = this;\n var curViewDS = this.curViewDS;\n var fields = obj instanceof Element ? this.getElementUID(obj) : obj;\n var dataSource;\n dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n var data_1;\n data_1 = this.findItemFromDS(dataSource, fields);\n var index = curViewDS.indexOf(data_1);\n var li = this.getLiFromObjOrElement(obj);\n var groupLi = void 0;\n this.validateNestedView(li);\n if (this.fields.groupBy && this.curViewDS[index - 1] &&\n curViewDS[index - 1].isHeader &&\n curViewDS[index - 1].items.length === 1) {\n if (li && li.previousElementSibling.classList.contains(classNames.groupListItem) &&\n (isNullOrUndefined(li.nextElementSibling) || (li.nextElementSibling &&\n li.nextElementSibling.classList.contains(classNames.groupListItem)))) {\n groupLi = li.previousElementSibling;\n }\n }\n if (li) {\n detach(li);\n }\n if (groupLi) {\n detach(groupLi);\n }\n var foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, function (value) { return value === data_1[_this.fields.id]; }, null) : null;\n var dsIndex = dataSource.indexOf(data_1);\n dataSource.splice(dsIndex, 1);\n this.setViewDataSource(listDataSource);\n if (foundData\n && foundData.parent\n && Array.isArray(foundData.parent[this.fields.child])\n && foundData.parent[this.fields.child].length <= 0) {\n var parentLi = this.getLiFromObjOrElement(foundData.parent);\n if (parentLi) {\n var li_1 = ListBase.createListItemFromJson(this.createElement, [foundData.parent], this.listBaseOption, null, null, this);\n this.setAttributes(li_1);\n parentLi.parentElement.insertBefore(li_1[0], parentLi);\n parentLi.parentElement.removeChild(parentLi);\n }\n }\n if (dataSource.length <= 0) {\n this.back();\n }\n this.liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n }\n };\n // validate before removing an element whether the current view is inside target element's child view\n ListView.prototype.validateNestedView = function (li) {\n var liID = li ? li.getAttribute('data-uid').toString().toLowerCase() : null;\n if (liID && this.curDSLevel && this.curDSLevel.length > 0) {\n while (this.curDSLevel.some(function (id) { return id.toString().toLowerCase() === liID; })) {\n this.back();\n }\n }\n };\n /**\n * Removes multiple items from the ListView by passing the array of elements or array of field objects.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of elements or array of field Object with ID and Text fields.\n */\n ListView.prototype.removeMultipleItems = function (item) {\n if (item.length) {\n for (var i = 0; i < item.length; i++) {\n this.removeItem(item[i]);\n }\n }\n };\n ListView.prototype.findParent = function (dataSource, id, callback, parent) {\n if (dataSource.hasOwnProperty(id) && callback(dataSource[id]) === true) {\n return extend({}, dataSource);\n }\n for (var i = 0; i < Object.keys(dataSource).length; i++) {\n if (dataSource[Object.keys(dataSource)[i]]\n && typeof dataSource[Object.keys(dataSource)[i]] === 'object') {\n var result = this.findParent(dataSource[Object.keys(dataSource)[i]], id, callback, dataSource);\n if (result != null) {\n if (!result.parent) {\n result.parent = parent;\n }\n return result;\n }\n }\n }\n return null;\n };\n // Module Required function\n ListView.prototype.getModuleName = function () {\n return 'listview';\n };\n ListView.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'virtualization' });\n }\n return modules;\n };\n ListView.prototype.onListScroll = function (e) {\n var args = { originalEvent: e, scrollDirection: \"Bottom\", distanceY: this.element.scrollHeight - this.element.scrollTop };\n var currentScrollTop = this.element.scrollTop;\n if (currentScrollTop > this.previousScrollTop) {\n args.scrollDirection = \"Bottom\";\n args.distanceY = this.element.scrollHeight - this.element.clientHeight - this.element.scrollTop;\n this.trigger('scroll', args);\n }\n else if (this.previousScrollTop > currentScrollTop) {\n args.scrollDirection = \"Top\";\n args.distanceY = this.element.scrollTop;\n this.trigger('scroll', args);\n }\n this.previousScrollTop = currentScrollTop;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n ListView.prototype.getPersistData = function () {\n return this.addOnPersist(['cssClass', 'enableRtl', 'htmlAttributes',\n 'enable', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition', 'selectedId']);\n };\n __decorate([\n Property('')\n ], ListView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property({})\n ], ListView.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enable\", void 0);\n __decorate([\n Property([])\n ], ListView.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], ListView.prototype, \"query\", void 0);\n __decorate([\n Complex(ListBase.defaultMappedFields, FieldSettings)\n ], ListView.prototype, \"fields\", void 0);\n __decorate([\n Property({ effect: 'SlideLeft', duration: 400, easing: 'ease' })\n ], ListView.prototype, \"animation\", void 0);\n __decorate([\n Property('None')\n ], ListView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showIcon\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property('Left')\n ], ListView.prototype, \"checkBoxPosition\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"headerTitle\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showHeader\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"groupTemplate\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"scroll\", void 0);\n ListView = __decorate([\n NotifyPropertyChanges\n ], ListView);\n return ListView;\n}(Component));\nexport { ListView };\n","import { createElement, Browser, isBlazor, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nimport { ListView } from '@syncfusion/ej2-lists';\nimport { AjaxHandler } from '../index';\n/**\n * BookmarkView module\n */\nvar BookmarkView = /** @class */ (function () {\n /**\n * @param pdfViewer\n * @param pdfViewerBase\n * @param pdfViewer\n * @param pdfViewerBase\n * @private\n */\n function BookmarkView(pdfViewer, pdfViewerBase) {\n var _this = this;\n this.isKeyboardNavigation = false;\n /**\n * @private\n */\n this.childNavigateCount = 0;\n // eslint-disable-next-line\n this.bookmarkClick = function (args) {\n // eslint-disable-next-line\n if (!args.event.target.classList.contains('e-icons')) {\n var bookid = args.data.Id;\n _this.childNavigateCount = 0;\n _this.pdfViewerBase.navigationPane.goBackToToolbar();\n // eslint-disable-next-line\n var selectedItem = _this.bookmarkList.getSelectedItems();\n _this.navigateToBookmark(bookid, args.text, selectedItem.data.FileName);\n }\n else {\n _this.childNavigateCount++;\n }\n return false;\n };\n this.nodeClick = function (args) {\n _this.setHeight(args.node);\n // eslint-disable-next-line\n var data = _this.treeObj.getTreeData(args.node);\n var bookid = Number(data[0].Id);\n _this.navigateToBookmark(bookid, args.node.textContent, data[0].FileName);\n if (_this.pdfViewer.annotationModule && _this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(_this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n _this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n return false;\n };\n this.bookmarkKeypress = function (args) {\n // eslint-disable-next-line max-len\n if (args.event && args.event.pointerType !== 'mouse' && args.event.pointerType !== 'touch' && (args.event.key === \"Enter\" || args.event.key === \" \")) {\n _this.isKeyboardNavigation = true;\n _this.nodeClick(args);\n _this.isKeyboardNavigation = false;\n }\n };\n this.bookmarkPanelBeforeOpen = function (args) {\n if (_this.pdfViewer.enableBookmarkStyles) {\n for (var k = 0; k < _this.bookmarkStyles.length; k++) {\n if ((args.text.trim()) === (_this.bookmarkStyles[k].Text.trim())) {\n // eslint-disable-next-line\n var element = args.node.lastElementChild;\n if (element) {\n // eslint-disable-next-line\n var fontStyle = _this.bookmarkStyles[k].FontStyle.split(',');\n for (var n = 0; n < fontStyle.length; n++) {\n switch (fontStyle[n].trim()) {\n case 'Italic':\n element.style.fontStyle = 'italic';\n break;\n case 'Bold':\n element.style.fontWeight = 'Bold';\n }\n }\n // eslint-disable-next-line\n var currentElement = element.getElementsByClassName('e-pv-bookmark-title')[0];\n if (currentElement) {\n currentElement.style.color = _this.bookmarkStyles[k].Color;\n }\n else {\n element.children[0].style.color = _this.bookmarkStyles[k].Color;\n }\n }\n break;\n }\n }\n }\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @private\n */\n BookmarkView.prototype.createRequestForBookmarks = function () {\n var proxy = this;\n // eslint-disable-next-line max-len\n var jsonObject = { hashId: this.pdfViewerBase.hashId, action: 'Bookmarks', elementId: this.pdfViewer.element.id, uniqueId: this.pdfViewerBase.documentId };\n if (this.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.pdfViewerBase.jsonDocumentId;\n }\n if (this.pdfViewer.enableBookmarkStyles) {\n // eslint-disable-next-line\n jsonObject.bookmarkStyles = this.pdfViewer.enableBookmarkStyles;\n }\n this.bookmarkRequestHandler = new AjaxHandler(this.pdfViewer);\n this.bookmarkRequestHandler.url = proxy.pdfViewer.serviceUrl + '/Bookmarks';\n this.bookmarkRequestHandler.responseType = 'json';\n if (this.pdfViewerBase.clientSideRendering) {\n var data = this.pdfViewer.pdfRendererModule.getBookmarks(jsonObject);\n this.renderBookmarksOnSuccess(data, proxy);\n }\n else {\n this.pdfViewerBase.requestCollection.push(this.bookmarkRequestHandler);\n this.bookmarkRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this.bookmarkRequestHandler.onSuccess = function (result) {\n if (proxy.pdfViewerBase.navigationPane) {\n proxy.pdfViewerBase.navigationPane.disableBookmarkButton();\n }\n // eslint-disable-next-line\n var data = result.data;\n var redirect = proxy.pdfViewerBase.checkRedirection(data);\n if (!redirect) {\n proxy.renderBookmarksOnSuccess(data, proxy);\n }\n };\n // eslint-disable-next-line\n this.bookmarkRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, 'Bookmarks');\n };\n // eslint-disable-next-line\n this.bookmarkRequestHandler.onError = function (result) {\n proxy.pdfViewerBase.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, 'Bookmarks');\n };\n }\n };\n BookmarkView.prototype.renderBookmarksOnSuccess = function (data, proxy) {\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.pdfViewerBase.onControlError(500, data, 'Bookmarks');\n data = null;\n }\n }\n if (data && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess('Bookmarks', data);\n proxy.bookmarks = { bookMark: data.Bookmarks };\n proxy.bookmarkStyles = data.Bookmarkstyles;\n proxy.bookmarksDestination = { bookMarkDestination: data.BookmarksDestination };\n if (isBlazor()) {\n // eslint-disable-next-line\n var bookmarkCollection = { bookmarks: proxy.bookmarks, bookmarksDestination: proxy.bookmarksDestination };\n if (proxy.pdfViewer && proxy.pdfViewer._dotnetInstance) {\n proxy.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateBookmarkCollection', bookmarkCollection);\n }\n }\n }\n }\n if (proxy.pdfViewerBase.navigationPane) {\n if (proxy.bookmarks == null) {\n proxy.pdfViewerBase.navigationPane.disableBookmarkButton();\n if (isBlazor() && proxy.pdfViewer._dotnetInstance) {\n proxy.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateBookmarkCollection', null);\n }\n }\n else {\n proxy.pdfViewerBase.navigationPane.enableBookmarkButton();\n proxy.isBookmarkViewDiv = false;\n if (proxy.pdfViewer.isBookmarkPanelOpen) {\n proxy.pdfViewerBase.navigationPane.openBookmarkcontentInitially();\n }\n }\n }\n };\n /**\n * @private\n */\n BookmarkView.prototype.renderBookmarkcontent = function () {\n var _this = this;\n if (!this.isBookmarkViewDiv) {\n var isblazor = isBlazor();\n // eslint-disable-next-line max-len\n this.bookmarkView = isblazor ? this.pdfViewer.element.querySelector('.e-pv-bookmark-view') : createElement('div', { id: this.pdfViewer.element.id + '_bookmark_view', className: 'e-pv-bookmark-view' });\n this.pdfViewerBase.navigationPane.sideBarContent.appendChild(this.bookmarkView);\n // eslint-disable-next-line max-len\n var bookmarkIconView_1 = createElement('div', { id: this.pdfViewer.element.id + '_bookmark_iconview', className: 'e-pv-bookmark-icon-view' });\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n var bookmarkIcon = createElement('span', { id: this.pdfViewer.element.id + '_bookmark_icon', className: 'e-pv-bookmark-icon e-pv-icon' });\n bookmarkIconView_1.appendChild(bookmarkIcon);\n }\n else {\n // eslint-disable-next-line max-len\n var bookmarkIcon = createElement('span', { id: this.pdfViewer.element.id + '_bookmark_icon', className: 'e-pv-bookmark-icon e-pv-icon e-right' });\n bookmarkIconView_1.appendChild(bookmarkIcon);\n }\n // eslint-disable-next-line max-len\n var bookmarkTitle = createElement('div', { id: this.pdfViewer.element.id + '_bookmark_Title', className: 'e-pv-bookmark-title' });\n if (this.pdfViewer.enableRtl) {\n bookmarkTitle.style.paddingRight = 26 + 'px';\n }\n bookmarkTitle.innerText = '${Title}';\n bookmarkIconView_1.appendChild(bookmarkTitle);\n if (!isblazor) {\n // eslint-disable-next-line max-len\n this.treeObj = new TreeView({\n fields: {\n dataSource: this.bookmarks.bookMark,\n id: 'Id',\n text: 'Title',\n child: 'Child',\n hasChildren: 'HasChild'\n },\n nodeTemplate: initializeCSPTemplate(function (data) { return bookmarkIconView_1.outerHTML.replace('${Title}', data.Title); }),\n nodeClicked: this.nodeClick.bind(this),\n keyPress: this.bookmarkKeypress.bind(this),\n drawNode: this.bookmarkPanelBeforeOpen.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.treeObj.enableRtl = true;\n }\n this.treeObj.appendTo(this.bookmarkView);\n }\n // eslint-disable-next-line\n var event_1 = ['mouseover', 'keydown'];\n for (var m = 0; m < event_1.length; m++) {\n this.bookmarkView.addEventListener(event_1[m], function (event) {\n _this.setHeight(event.target);\n });\n }\n this.isBookmarkViewDiv = true;\n }\n this.bookmarkView.style.display = 'block';\n };\n /**\n * @private\n */\n BookmarkView.prototype.renderBookmarkContentMobile = function () {\n if (this.bookmarkView != null) {\n this.bookmarkView.remove();\n }\n this.bookmarkView = createElement('div', { id: this.pdfViewer.element.id + '_bookmark_view', className: 'e-pv-bookmark-view' });\n this.pdfViewerBase.getElement('_bookmarks_container').appendChild(this.bookmarkView);\n this.bookmarkList = new ListView({\n dataSource: this.bookmarks.bookMark,\n fields: {\n id: 'Id',\n text: 'Title',\n child: 'Child'\n },\n showHeader: false,\n select: this.bookmarkClick.bind(this)\n });\n this.bookmarkList.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.bookmarkList.enableRtl = true;\n }\n this.bookmarkList.appendTo(this.bookmarkView);\n };\n // eslint-disable-next-line\n BookmarkView.prototype.setHeight = function (element) {\n if (this.treeObj) {\n if (this.treeObj.fullRowSelect && element.classList) {\n if (element.classList.contains('e-treeview') && element.classList.contains('.e-active')) {\n element = element.querySelector('.e-active').querySelector('.e-fullrow');\n }\n else if (element.classList.contains('e-treeview')) {\n element = element.querySelector('.e-fullrow');\n }\n else if (element.classList.contains('e-list-parent')) {\n element = element.querySelector('.e-fullrow');\n }\n else if (element.classList.value !== ('e-fullrow')) {\n if (element.closest && element.closest('.e-list-item')) {\n element = element.closest('.e-list-item').querySelector('.e-fullrow');\n }\n else {\n if (element.classList.contains('e-list-item')) {\n element = element.querySelector('.e-fullrow');\n }\n else if (element.classList.contains('e-icons') && element.classList.contains('interaction')\n && element.parentElement.parentElement.classList.contains('e-list-item')) {\n element = element.parentElement.parentElement.querySelector('.e-fullrow');\n }\n }\n }\n if (element.nextElementSibling) {\n element.style.height = element.nextElementSibling.offsetHeight + 'px';\n }\n }\n }\n };\n /**\n * @private\n */\n BookmarkView.prototype.setBookmarkContentHeight = function () {\n if (this.treeObj) {\n // eslint-disable-next-line\n var element = this.treeObj.element;\n if (this.treeObj.fullRowSelect) {\n if (element.classList.contains('e-treeview') && element.classList.contains('.e-active')) {\n element = element.querySelector('.e-active').querySelector('.e-fullrow');\n }\n else if (element.classList.contains('e-treeview')) {\n element = element.querySelector('.e-fullrow');\n }\n if (element.nextElementSibling) {\n element.style.height = element.nextElementSibling.offsetHeight + 'px';\n }\n }\n }\n };\n BookmarkView.prototype.navigateToBookmark = function (bookid, text, fileName) {\n var pageIndex = this.bookmarksDestination.bookMarkDestination[bookid].PageIndex;\n var Y = this.bookmarksDestination.bookMarkDestination[bookid].Y;\n if (pageIndex !== -1) {\n this.goToBookmark(pageIndex, Y);\n }\n this.pdfViewer.fireBookmarkClick(pageIndex !== -1 ? pageIndex + 1 : pageIndex, Y, text, fileName);\n };\n /**\n * Get Bookmarks of the PDF document being loaded in the ejPdfViewer control\n *\n * @returns any\n */\n // eslint-disable-next-line\n BookmarkView.prototype.getBookmarks = function () {\n if (this.bookmarks && this.bookmarksDestination) {\n // eslint-disable-next-line max-len\n return { bookmarks: this.bookmarks, bookmarksDestination: this.bookmarksDestination };\n }\n };\n /**\n * Navigate To current Bookmark location of the PDF document being loaded in the ejPdfViewer control.\n *\n * @param {number} pageIndex - Specifies the pageIndex for Navigate\n * @param {number} y - Specifies the Y coordinates value of the Page\n * @returns void\n */\n BookmarkView.prototype.goToBookmark = function (pageIndex, y) {\n var proxy = this;\n var destPage = (this.pdfViewerBase.pageSize[pageIndex].height);\n var scrollValue;\n if (y === 0) {\n scrollValue = this.pdfViewerBase.pageSize[pageIndex].top * this.pdfViewerBase.getZoomFactor();\n }\n else {\n // eslint-disable-next-line max-len\n scrollValue = this.pdfViewerBase.pageSize[pageIndex].top * this.pdfViewerBase.getZoomFactor() + ((destPage - y) * this.pdfViewerBase.getZoomFactor());\n }\n var scroll = scrollValue.toString();\n // eslint-disable-next-line radix\n proxy.pdfViewerBase.viewerContainer.scrollTop = parseInt(scroll);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewerBase.mobileScrollerContainer.style.display = '';\n this.pdfViewerBase.updateMobileScrollerPosition();\n }\n if (!this.isKeyboardNavigation) {\n this.pdfViewerBase.focusViewerContainer();\n }\n this.isKeyboardNavigation = false;\n return false;\n };\n /**\n * @private\n */\n BookmarkView.prototype.clear = function () {\n if (this.pdfViewerBase.navigationPane) {\n this.pdfViewerBase.navigationPane.disableBookmarkButton();\n this.pdfViewerBase.navigationPane.updateViewerContainerOnClose();\n }\n if (this.bookmarks) {\n this.bookmarks.bookMark = [];\n this.bookmarks = null;\n }\n if (this.bookmarksDestination) {\n this.bookmarksDestination.bookMarkDestination = [];\n }\n if (this.bookmarkView != null && !isBlazor()) {\n if (this.bookmarkView.parentElement !== null) {\n this.bookmarkView.parentElement.removeChild(this.bookmarkView);\n }\n while (this.bookmarkView.hasChildNodes()) {\n this.bookmarkView.removeChild(this.bookmarkView.lastChild);\n }\n }\n if (this.bookmarkRequestHandler) {\n this.bookmarkRequestHandler.clear();\n }\n };\n /**\n * @private\n */\n BookmarkView.prototype.destroy = function () {\n this.clear();\n };\n /**\n * @private\n */\n BookmarkView.prototype.getModuleName = function () {\n return 'BookmarkView';\n };\n return BookmarkView;\n}());\nexport { BookmarkView };\n","/* eslint-disable */\nimport { AjaxHandler } from '../index';\nimport { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * The `ThumbnailView` module is used to handle thumbnail view navigation of PDF viewer.\n */\nvar ThumbnailView = /** @class */ (function () {\n /**\n * @param pdfViewer\n * @param pdfViewerBase\n * @param pdfViewer\n * @param pdfViewerBase\n * @private\n */\n function ThumbnailView(pdfViewer, pdfViewerBase) {\n var _this = this;\n this.thumbnailLimit = 30;\n this.thumbnailThreshold = 50;\n this.thumbnailTopMargin = 10;\n this.thumbnailTop = 8;\n this.list = [];\n /**\n * @private\n */\n this.thumbnailPageSize = [];\n /**\n * @private\n */\n this.isThumbnailClicked = false;\n this.thumbnailOnScroll = function (event) {\n var _loop_1 = function (i) {\n var scrollPosition = _this.pdfViewerBase.navigationPane.sideBarContent.scrollTop;\n var index = _this.thumbnailPageSize.findIndex(function (page) { return page.top >= scrollPosition; });\n if (index !== -1) {\n var number = Math.floor((index) / 50) * 50;\n _this.updateScrollTopForThumbnail(number);\n return \"break\";\n }\n };\n for (var i = 0; i < _this.thumbnailPageSize.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n };\n /**\n * @param event\n * @private\n */\n this.thumbnailClick = function (event, isKeyboard) {\n var proxy = _this;\n var pageNumber = proxy.getPageNumberFromID(event.srcElement.id);\n if (proxy.previousElement) {\n proxy.previousElement.classList.remove('e-pv-thumbnail-selection');\n proxy.previousElement.classList.remove('e-pv-thumbnail-focus');\n proxy.previousElement.classList.add('e-pv-thumbnail-selection-ring');\n }\n if (event.srcElement.parentElement.id === proxy.pdfViewer.element.id + '_thumbnail_Selection_Ring_' + pageNumber) {\n proxy.setSelectionStyle(event.srcElement.parentElement);\n proxy.previousElement = event.srcElement.parentElement;\n }\n else if (event.srcElement.id === proxy.pdfViewer.element.id + '_thumbnail_Selection_Ring_' + pageNumber) {\n proxy.setSelectionStyle(event.srcElement);\n proxy.previousElement = event.srcElement;\n }\n proxy.pdfViewer.fireThumbnailClick(pageNumber + 1);\n proxy.isThumbnailClicked = true;\n proxy.goToThumbnailPage(pageNumber + 1);\n if (!isKeyboard) {\n proxy.pdfViewerBase.focusViewerContainer();\n }\n if (_this.pdfViewer.annotationModule && _this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(_this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n _this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n /**\n * @param event\n * @private\n */\n this.thumbnailKeydown = function (event) {\n if (event && event.key === \"Enter\" || event.key === \" \") {\n _this.thumbnailClick(event, true);\n event.preventDefault();\n event.stopPropagation();\n }\n };\n /**\n * @param event\n * @private\n */\n this.thumbnailMouseOver = function (event) {\n var proxy = _this;\n var pageNumber = proxy.getPageNumberFromID(event.srcElement.id);\n if (event.srcElement.id === proxy.pdfViewer.element.id + '_thumbnail_Selection_Ring_' + pageNumber) {\n proxy.setMouseOverStyle(event.srcElement);\n }\n else if (event.srcElement.id === proxy.pdfViewer.element.id + '_thumbnail_image_' + pageNumber) {\n proxy.setMouseOverStyle(event.srcElement.parentElement);\n }\n };\n /**\n * @param event\n * @private\n */\n this.thumbnailMouseLeave = function (event) {\n var proxy = _this;\n var pageNumber = proxy.getPageNumberFromID(event.srcElement.id);\n if (event.srcElement.parentElement.id === proxy.pdfViewer.element.id + '_thumbnail_view') {\n proxy.setMouseLeaveStyle(event.srcElement.children[0].children[0]);\n }\n else if (event.srcElement.parentElement.id === proxy.pdfViewer.element.id + '_thumbnail_' + pageNumber) {\n proxy.setMouseLeaveStyle(event.srcElement.parentElement.children[0]);\n }\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @private\n */\n ThumbnailView.prototype.createThumbnailContainer = function () {\n var proxy = this;\n // eslint-disable-next-line max-len\n this.thumbnailView = createElement('div', { id: this.pdfViewer.element.id + '_thumbnail_view', className: 'e-pv-thumbnail-view e-pv-thumbnail-row' });\n this.pdfViewerBase.navigationPane.sideBarContent.appendChild(this.thumbnailView);\n this.pdfViewerBase.navigationPane.sideBarContent.addEventListener('scrollend', this.thumbnailOnScroll);\n };\n /**\n * Open the thumbnail pane of the PdfViewer.\n *\n * @returns void\n */\n ThumbnailView.prototype.openThumbnailPane = function () {\n if (this.pdfViewerBase.navigationPane) {\n this.pdfViewerBase.navigationPane.openThumbnailPane();\n }\n };\n /**\n * Close the thumbnail pane of the PdfViewer.\n *\n * @returns void\n */\n ThumbnailView.prototype.closeThumbnailPane = function () {\n if (this.pdfViewerBase.navigationPane) {\n this.pdfViewerBase.navigationPane.closeThumbnailPane();\n }\n };\n ;\n /**\n * @private\n */\n // eslint-disable-next-line\n ThumbnailView.prototype.createRequestForThumbnails = function () {\n var proxy = this;\n // eslint-disable-next-line\n for (var i = 0; i < proxy.pdfViewer.pageCount; i++) {\n proxy.renderThumbnailEmptyPage(i);\n }\n if (proxy.pdfViewer.isThumbnailViewOpen) {\n proxy.pdfViewerBase.navigationPane.isThumbnailOpen = true; // eslint-disable-next-line max-len\n proxy.pdfViewerBase.navigationPane.sideBarTitle.textContent = proxy.pdfViewer.localeObj.getConstant('Page Thumbnails');\n document.getElementById(proxy.pdfViewer.element.id + '_thumbnail_view').style.display = 'flex';\n var bookmarkContent = proxy.pdfViewer.element.querySelector('.e-pv-bookmark-view');\n if (bookmarkContent) {\n bookmarkContent.style.display = 'none';\n }\n proxy.pdfViewerBase.navigationPane.setThumbnailSelectionIconTheme();\n proxy.pdfViewerBase.navigationPane.updateViewerContainerOnExpand();\n proxy.pdfViewerBase.navigationPane.isBookmarkOpen = false;\n }\n };\n /**\n * Checks if thumbnails have been requested for the given page number.\n * @param pageNumber The page number to check.\n * @returns True if thumbnails have been requested, otherwise false.\n */\n ThumbnailView.prototype.thumbnailsRequestedForPage = function (pageNumber) {\n for (var _i = 0, _a = this.list; _i < _a.length; _i++) {\n var requestedPage = _a[_i];\n if (pageNumber === requestedPage) {\n return true;\n }\n }\n return false;\n };\n /**\n * @param {number} pageNumber - Specify the pageNumber.\n * @returns {void}\n * @private\n */\n ThumbnailView.prototype.updateScrollTopForThumbnail = function (pageNumber) {\n var _this = this;\n var step = 50;\n var number = Math.floor((pageNumber + 1) / step) * step;\n var lastNum = this.pdfViewer.thumbnailViewModule.thumbnailLimit;\n var numbers = [number, number - step, number + step, lastNum];\n numbers.forEach(function (num) {\n if (num < 0) {\n return;\n }\n if (!_this.thumbnailsRequestedForPage(num)) {\n _this.renderThumbnailImage(null, num);\n }\n });\n };\n /**\n * @private\n * @returns {void}\n */\n ThumbnailView.prototype.renderThumbnailEmptyPage = function (pageIndex) {\n if (this.thumbnailView) {\n // eslint-disable-next-line max-len\n var pageLink = createElement('a', { id: 'page_' + pageIndex, attrs: { 'aria-label': 'Thumbnail of Page' + (pageIndex + 1), 'tabindex': '-1', 'role': 'link' }, className: 'e-pv-thumbnail-anchor-node' });\n // eslint-disable-next-line max-len\n var thumbnail = createElement('div', { id: this.pdfViewer.element.id + '_thumbnail_' + pageIndex, className: 'e-pv-thumbnail e-pv-thumbnail-column' });\n // eslint-disable-next-line max-len\n this.thumbnailSelectionRing = createElement('div', { id: this.pdfViewer.element.id + '_thumbnail_Selection_Ring_' + pageIndex, className: 'e-pv-thumbnail-selection-ring' });\n thumbnail.appendChild(this.thumbnailSelectionRing);\n // eslint-disable-next-line max-len\n var thumbnailPageNumber = createElement('div', { id: this.pdfViewer.element.id + '_thumbnail_pagenumber_' + pageIndex, className: 'e-pv-thumbnail-number' });\n thumbnailPageNumber.textContent = (pageIndex + 1).toString();\n thumbnail.appendChild(thumbnailPageNumber);\n var height = 180;\n // eslint-disable-next-line max-len\n this.thumbnailImage = createElement('img', { id: this.pdfViewer.element.id + '_thumbnail_image_' + pageIndex, className: 'e-pv-thumbnail-image' });\n if (this.pdfViewerBase.pageSize[pageIndex] && (this.pdfViewerBase.pageSize[pageIndex].height < this.pdfViewerBase.pageSize[pageIndex].width)) {\n this.thumbnailImage.style.height = '86px';\n this.thumbnailImage.style.width = '126px';\n thumbnail.style.height = '100px';\n thumbnail.style.width = '140px';\n thumbnailPageNumber.style.left = '18px';\n pageLink.style.marginRight = '41px';\n thumbnail.style.marginLeft = '-5px';\n thumbnail.style.marginRight = '0px';\n height = 140;\n }\n if (pageIndex !== 0) {\n this.thumbnailTop = this.thumbnailPageSize[pageIndex - 1].top + this.thumbnailPageSize[pageIndex - 1].height;\n var thumbnailSize = { height: height, top: this.thumbnailTop };\n this.thumbnailPageSize[pageIndex] = thumbnailSize;\n }\n else {\n var thumbnailSize = { height: height, top: this.thumbnailTop };\n this.thumbnailPageSize[pageIndex] = thumbnailSize;\n }\n this.thumbnailSelectionRing.appendChild(this.thumbnailImage);\n pageLink.appendChild(thumbnail);\n this.thumbnailView.appendChild(pageLink);\n this.wireUpEvents();\n if (pageIndex === 0) {\n this.setMouseFocusToFirstPage();\n }\n this.pdfViewerBase.navigationPane.enableThumbnailButton();\n }\n };\n /**\n * @private\n * @returns {void}\n */\n ThumbnailView.prototype.renderViewPortThumbnailImage = function (prox) {\n var proxy = prox ? prox : this;\n // Removed the condition to skip multiple request for thumbnail image.\n proxy.startIndex = proxy.thumbnailLimit;\n // eslint-disable-next-line max-len\n this.list.push(proxy.startIndex);\n // eslint-disable-next-line max-len\n if (proxy.startIndex >= 100)\n this.renderDiv();\n proxy.thumbnailLimit = proxy.startIndex + proxy.thumbnailThreshold < proxy.pdfViewer.pageCount ? proxy.startIndex + proxy.thumbnailThreshold : proxy.pdfViewer.pageCount;\n if (!this.pdfViewerBase.clientSideRendering) {\n var digitalSignaturePresent = false;\n for (var i = proxy.startIndex; i < proxy.thumbnailLimit; i++) {\n if (proxy.pdfViewerBase.digitalSignaturePresent(i)) {\n digitalSignaturePresent = true;\n }\n }\n var digitalSignatureList = \"\";\n if (digitalSignaturePresent) {\n digitalSignatureList = proxy.pdfViewerBase.digitalSignaturePages.toString();\n }\n // eslint-disable-next-line max-len\n var jsonObject = { startPage: proxy.startIndex.toString(), endPage: proxy.thumbnailLimit.toString(), sizeX: \"99.7\", sizeY: \"141\", hashId: proxy.pdfViewerBase.hashId, action: 'RenderThumbnailImages', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.pdfViewerBase.documentId, digitalSignaturePresent: digitalSignaturePresent, digitalSignaturePageList: digitalSignatureList };\n if (this.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.pdfViewerBase.jsonDocumentId;\n }\n this.thumbnailRequestHandler = new AjaxHandler(this.pdfViewer);\n this.thumbnailRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.renderThumbnail;\n this.thumbnailRequestHandler.responseType = 'json';\n if ((proxy.startIndex.toString() !== proxy.thumbnailLimit.toString()) && proxy.thumbnailLimit > 0 && !isNullOrUndefined(proxy.pdfViewerBase.hashId)) {\n this.pdfViewerBase.requestCollection.push(this.thumbnailRequestHandler);\n this.thumbnailRequestHandler.send(jsonObject);\n }\n // eslint-disable-next-line\n this.thumbnailRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n var redirect = proxy.pdfViewerBase.checkRedirection(data);\n if (!redirect) {\n proxy.updateThumbnailCollection(data);\n }\n };\n // eslint-disable-next-line\n this.thumbnailRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderThumbnail);\n };\n // eslint-disable-next-line\n this.thumbnailRequestHandler.onError = function (result) {\n proxy.pdfViewerBase.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderThumbnail);\n };\n }\n else {\n for (var count = proxy.startIndex; count < proxy.thumbnailLimit; count++) {\n var currentPageImage = this.getThumbnailImageElement(count);\n if (currentPageImage && currentPageImage.src === '') {\n this.pdfViewerBase.pdfViewerRunner.postMessage({\n pageIndex: count,\n message: 'renderThumbnail'\n });\n }\n }\n }\n };\n /**\n * @private\n */\n ThumbnailView.prototype.thumbnailOnMessage = function (event) {\n if (event.data.message === 'renderThumbnail') {\n var canvas = document.createElement('canvas');\n var _a = event.data, value = _a.value, width = _a.width, height = _a.height, pageIndex = _a.pageIndex;\n canvas.width = width;\n canvas.height = height;\n var canvasContext = canvas.getContext('2d');\n var imageData = canvasContext.createImageData(width, height);\n imageData.data.set(value);\n canvasContext.putImageData(imageData, 0, 0);\n var imageUrl = canvas.toDataURL();\n var currentPageImage = this.getThumbnailImageElement(pageIndex);\n if (currentPageImage)\n currentPageImage.src = imageUrl;\n }\n };\n /**\n * @param jsonData\n * @private\n */\n // eslint-disable-next-line\n ThumbnailView.prototype.updateThumbnailCollection = function (data) {\n if (data) {\n var proxy = this;\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.pdfViewerBase.onControlError(500, data, proxy.pdfViewer.serverActionSettings.renderThumbnail);\n data = null;\n }\n }\n if (data && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.renderThumbnail, data);\n proxy.renderThumbnailImage(data);\n }\n }\n };\n ThumbnailView.prototype.renderDiv = function () {\n if (this.pdfViewerBase.pageSize.length === this.pdfViewerBase.pageCount) {\n for (var i = 100; i < this.pdfViewer.pageCount; i++) {\n var thumbnail = document.getElementById(this.pdfViewer.element.id + '_thumbnail_' + i);\n var pageLink = document.getElementById('page_' + i);\n var thumbnailPageNumber = document.getElementById(this.pdfViewer.element.id + '_thumbnail_pagenumber_' + i);\n var currentPageImage = this.getThumbnailImageElement(i);\n var height = 180;\n if (this.pdfViewerBase.pageSize[i] && (this.pdfViewerBase.pageSize[i].height < this.pdfViewerBase.pageSize[i].width)) {\n currentPageImage.style.height = '86px';\n currentPageImage.style.width = '126px';\n thumbnail.style.height = '100px';\n thumbnail.style.width = '140px';\n thumbnailPageNumber.style.left = '18px';\n pageLink.style.marginRight = '41px';\n thumbnail.style.marginLeft = '-5px';\n thumbnail.style.marginRight = '0px';\n height = 140;\n }\n this.thumbnailTop = this.thumbnailPageSize[i - 1].top + this.thumbnailPageSize[i - 1].height;\n var thumbnailSize = { height: height, top: this.thumbnailTop };\n this.thumbnailPageSize[i] = thumbnailSize;\n }\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n ThumbnailView.prototype.gotoThumbnailImage = function (pageNumber) {\n var shouldScroll = this.checkThumbnailScroll(pageNumber);\n if (this.thumbnailView) {\n var thumbnailChild = this.thumbnailView.children[pageNumber];\n if (thumbnailChild) {\n var thumbnailDiv = thumbnailChild.children[0];\n var offsetTop = void 0;\n if (shouldScroll) {\n if (this.pdfViewerBase.pageSize) {\n this.renderDiv();\n }\n if (thumbnailDiv.offsetTop <= 0) {\n offsetTop = thumbnailDiv.parentElement.offsetTop + thumbnailDiv.clientTop - this.thumbnailTopMargin;\n }\n else {\n offsetTop = thumbnailDiv.offsetTop + thumbnailDiv.clientTop - this.thumbnailTopMargin;\n }\n this.pdfViewerBase.navigationPane.sideBarContent.scrollTop = offsetTop;\n }\n if (!this.isThumbnailClicked) {\n if (this.previousElement) {\n this.previousElement.classList.remove('e-pv-thumbnail-selection');\n this.previousElement.classList.remove('e-pv-thumbnail-focus');\n this.previousElement.classList.remove('e-pv-thumbnail-hover');\n this.previousElement.classList.add('e-pv-thumbnail-selection-ring');\n }\n this.setFocusStyle(thumbnailDiv, pageNumber);\n }\n this.previousElement = thumbnailDiv.children[0];\n }\n }\n };\n /**\n * Determines if there is a need to request thumbnails based on the current page number.\n * @param currentPageNumber The current page number.\n * @returns The page number to request thumbnails for.\n */\n ThumbnailView.prototype.determineThumbnailsRequest = function (currentPageNumber) {\n var pageCount = this.pdfViewer.pageCount;\n var batchSize = 50; // Assuming thumbnails are requested in batches of 50\n var numberOfBatches = Math.ceil(pageCount / batchSize);\n if (this.list.length === numberOfBatches) {\n return pageCount;\n }\n for (var i = 0; i < this.list.length; i++) {\n if (currentPageNumber === this.list[i]) {\n currentPageNumber += batchSize;\n i = -1; // Resetting i to -1 to start from the beginning of the list again\n }\n }\n return currentPageNumber !== undefined && currentPageNumber < pageCount ? currentPageNumber : pageCount;\n };\n ThumbnailView.prototype.checkThumbnailScroll = function (pageNumber) {\n var shouldScroll = false;\n if (this.thumbnailView) {\n var visibleThumbs = this.getVisibleThumbs();\n var numVisibleThumbs = visibleThumbs.views.length;\n // if the thumbnail isn't currently visible, scroll it into view.\n if (numVisibleThumbs > 0) {\n var visibleFirstPageID = this.getPageNumberFromID(visibleThumbs.first.id);\n // account for only one thumbnail being visible.\n // eslint-disable-next-line max-len\n var visibleLastPageID = (numVisibleThumbs > 1 ? this.getPageNumberFromID(visibleThumbs.last.id) : visibleFirstPageID);\n if (pageNumber <= visibleFirstPageID || pageNumber >= visibleLastPageID) {\n shouldScroll = true;\n }\n else {\n // eslint-disable-next-line\n visibleThumbs.views.some(function (view) {\n var pageID = view.id.split('_');\n var thumbPageNumber = pageID[pageID.length - 1];\n // eslint-disable-next-line radix\n if (parseInt(thumbPageNumber) !== pageNumber) {\n return false;\n }\n shouldScroll = view.percent < 100 && (view.view.offsetWidth > view.view.offsetHeight && view.percent < 97);\n return true;\n });\n }\n }\n }\n return shouldScroll;\n };\n ThumbnailView.prototype.getPageNumberFromID = function (pageId) {\n var pageID = pageId.split('_');\n var pageNumber = pageID[pageID.length - 1];\n // eslint-disable-next-line radix\n return parseInt(pageNumber);\n };\n ThumbnailView.prototype.setFocusStyle = function (thumbnail, pageNumber) {\n if (thumbnail.children[0].id === this.pdfViewer.element.id + '_thumbnail_Selection_Ring_' + pageNumber) {\n this.setMouseFocusStyle(thumbnail.children[0]);\n }\n };\n // eslint-disable-next-line\n ThumbnailView.prototype.renderThumbnailImage = function (data, pageNumber) {\n if (this.thumbnailView && data) {\n this.pdfViewerBase.clientSideRendering ? this.renderClientThumbnailImage(data) : this.renderServerThumbnailImage(data);\n }\n this.pdfViewerBase.navigationPane.enableThumbnailButton();\n this.thumbnailLimit = this.determineThumbnailsRequest(!isNullOrUndefined(pageNumber) ? pageNumber : this.thumbnailLimit);\n if (this.thumbnailLimit !== this.pdfViewerBase.pageCount && this.thumbnailView) {\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (!isIE) {\n Promise.all([this.createRequestForThumbnail()]);\n }\n else {\n this.createRequestForThumbnail();\n }\n }\n };\n ThumbnailView.prototype.createRequestForThumbnail = function () {\n var proxy = this;\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (!isIE) {\n // eslint-disable-next-line\n return new Promise(\n // eslint-disable-next-line\n function (renderThumbnailImage, reject) {\n proxy.renderViewPortThumbnailImage(proxy);\n });\n }\n else {\n this.renderViewPortThumbnailImage(proxy);\n return null;\n }\n };\n // eslint-disable-next-line\n ThumbnailView.prototype.renderServerThumbnailImage = function (data) {\n var startPage = !isNullOrUndefined(data && (data.startPage)) ? data.startPage : this.startIndex;\n var endPage = !isNullOrUndefined(data && (data.endPage)) ? data.endPage : this.thumbnailLimit;\n for (var i = startPage; i < endPage; i++) {\n this.thumbnailImageRender(i, data);\n }\n };\n // eslint-disable-next-line\n ThumbnailView.prototype.renderClientThumbnailImage = function (data) {\n var pageIndex = data.pageIndex;\n this.thumbnailImageRender(pageIndex, data);\n };\n // eslint-disable-next-line\n ThumbnailView.prototype.thumbnailImageRender = function (pageIndex, data) {\n if (this.pdfViewer.isThumbnailViewOpen) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.display = 'block';\n }\n // eslint-disable-next-line max-len\n var thumbnail = document.getElementById(this.pdfViewer.element.id + '_thumbnail_' + pageIndex);\n var pageLink = document.getElementById('page_' + pageIndex);\n var thumbnailPageNumber = document.getElementById(this.pdfViewer.element.id + '_thumbnail_pagenumber_' + pageIndex);\n var currentPageImage = this.getThumbnailImageElement(pageIndex);\n currentPageImage.src = this.pdfViewerBase.clientSideRendering || typeof data.thumbnailImage === 'string' || data.thumbnailImage instanceof String ? data.thumbnailImage : data.thumbnailImage[pageIndex];\n currentPageImage.alt = this.pdfViewer.element.id + '_thumbnail_page_' + pageIndex;\n if (this.pdfViewerBase.pageSize[pageIndex] && (this.pdfViewerBase.pageSize[pageIndex].height < this.pdfViewerBase.pageSize[pageIndex].width)) {\n currentPageImage.style.height = '86px';\n currentPageImage.style.width = '126px';\n thumbnail.style.height = '100px';\n thumbnail.style.width = '140px';\n // pageLink.style.left = '-25px'; \n thumbnailPageNumber.style.left = '18px';\n pageLink.style.marginRight = '41px';\n thumbnail.style.marginLeft = '-5px';\n thumbnail.style.marginRight = '0px';\n }\n };\n ThumbnailView.prototype.wireUpEvents = function () {\n if (this.thumbnailSelectionRing) {\n this.thumbnailSelectionRing.addEventListener('click', this.thumbnailClick);\n this.thumbnailImage.addEventListener('keydown', this.thumbnailKeydown);\n this.thumbnailSelectionRing.addEventListener('mouseover', this.thumbnailMouseOver);\n this.thumbnailSelectionRing.addEventListener('mouseleave', this.thumbnailMouseLeave);\n }\n };\n ThumbnailView.prototype.unwireUpEvents = function () {\n if (this.thumbnailSelectionRing && this.thumbnailImage) {\n this.thumbnailSelectionRing.removeEventListener('click', this.thumbnailClick);\n this.thumbnailImage.removeEventListener('keydown', this.thumbnailKeydown);\n this.thumbnailSelectionRing.removeEventListener('mouseover', this.thumbnailMouseOver);\n this.thumbnailSelectionRing.removeEventListener('mouseleave', this.thumbnailMouseLeave);\n }\n };\n ThumbnailView.prototype.goToThumbnailPage = function (pageNumber) {\n if (pageNumber > 0 && pageNumber <= this.pdfViewerBase.pageCount && this.pdfViewerBase.currentPageNumber !== pageNumber) {\n this.pdfViewerBase.updateScrollTop(pageNumber - 1);\n }\n else {\n this.isThumbnailClicked = false;\n }\n };\n ThumbnailView.prototype.setSelectionStyle = function (thumbnailElement) {\n thumbnailElement.classList.remove('e-pv-thumbnail-selection-ring');\n thumbnailElement.classList.remove('e-pv-thumbnail-hover');\n thumbnailElement.classList.remove('e-pv-thumbnail-focus');\n thumbnailElement.classList.add('e-pv-thumbnail-selection');\n };\n ThumbnailView.prototype.setMouseOverStyle = function (thumbnailElement) {\n // eslint-disable-next-line max-len\n if (!thumbnailElement.classList.contains('e-pv-thumbnail-selection')) {\n thumbnailElement.classList.remove('e-pv-thumbnail-selection-ring');\n if (!thumbnailElement.classList.contains('e-pv-thumbnail-focus')) {\n thumbnailElement.classList.add('e-pv-thumbnail-hover');\n }\n }\n };\n ThumbnailView.prototype.setMouseLeaveStyle = function (thumbnailElement) {\n if (!thumbnailElement.classList.contains('e-pv-thumbnail-selection')) {\n if (!thumbnailElement.classList.contains('e-pv-thumbnail-focus')) {\n thumbnailElement.classList.add('e-pv-thumbnail-selection-ring');\n }\n thumbnailElement.classList.remove('e-pv-thumbnail-hover');\n }\n else {\n if (!thumbnailElement.classList.contains('e-pv-thumbnail-selection')) {\n thumbnailElement.classList.remove('e-pv-thumbnail-selection');\n thumbnailElement.classList.add('e-pv-thumbnail-focus');\n }\n }\n };\n ThumbnailView.prototype.setMouseFocusStyle = function (thumbnailElement) {\n thumbnailElement.classList.remove('e-pv-thumbnail-selection');\n thumbnailElement.classList.remove('e-pv-thumbnail-hover');\n thumbnailElement.classList.add('e-pv-thumbnail-focus');\n };\n ThumbnailView.prototype.setMouseFocusToFirstPage = function () {\n var thumbnailChild = this.thumbnailView.children[0];\n if (thumbnailChild) {\n var thumbnailDiv = thumbnailChild.children[0].children[0];\n this.setMouseFocusStyle(thumbnailDiv);\n this.previousElement = thumbnailDiv;\n }\n };\n /**\n * @private\n */\n ThumbnailView.prototype.clear = function () {\n this.startIndex = 0;\n this.thumbnailLimit = 0;\n this.list = [];\n this.thumbnailPageSize = [];\n this.thumbnailTop = 0;\n if (this.pdfViewerBase.navigationPane) {\n if (this.pdfViewerBase.navigationPane.sideBarContentContainer) {\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.display = 'block';\n this.pdfViewerBase.navigationPane.sideBarContent.scrollTop = 0;\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.display = 'none';\n }\n }\n if (this.thumbnailView) {\n while (this.thumbnailView.hasChildNodes()) {\n this.thumbnailView.removeChild(this.thumbnailView.lastChild);\n }\n }\n if (this.pdfViewerBase.navigationPane) {\n this.pdfViewerBase.navigationPane.resetThumbnailView();\n }\n if (this.thumbnailRequestHandler) {\n this.thumbnailRequestHandler.clear();\n }\n this.unwireUpEvents();\n };\n ThumbnailView.prototype.getVisibleThumbs = function () {\n return this.getVisibleElements(this.pdfViewerBase.navigationPane.sideBarContent, this.thumbnailView.children);\n };\n ThumbnailView.prototype.getVisibleElements = function (scrollElement, thumbnailViewChildren) {\n var top = scrollElement.scrollTop;\n var bottom = top + scrollElement.clientHeight;\n var left = scrollElement.scrollLeft;\n var right = left + scrollElement.clientWidth;\n /**\n * @param thumbnailViewChildrenElement\n */\n function isThumbnailElementBottomAfterViewTop(thumbnailViewChildrenElement) {\n var elementBottom = thumbnailViewChildrenElement.offsetTop + thumbnailViewChildrenElement.clientTop + thumbnailViewChildrenElement.clientHeight;\n return elementBottom > top;\n }\n // eslint-disable-next-line\n var visible = [];\n var thumbnailView;\n var element;\n var currentHeight;\n var viewHeight;\n var viewBottom;\n var hiddenHeight;\n var currentWidth;\n var viewWidth;\n var viewRight;\n var hiddenWidth;\n var percentVisible;\n var firstVisibleElementInd = thumbnailViewChildren.length === 0 ? 0 :\n this.binarySearchFirstItem(thumbnailViewChildren, isThumbnailElementBottomAfterViewTop);\n if (thumbnailViewChildren.length > 0) {\n firstVisibleElementInd =\n this.backtrackBeforeAllVisibleElements(firstVisibleElementInd, thumbnailViewChildren, top);\n }\n var lastEdge = -1;\n for (var i = firstVisibleElementInd, ii = thumbnailViewChildren.length; i < ii; i++) {\n thumbnailView = this.getThumbnailElement(i);\n element = thumbnailView;\n currentWidth = element.offsetLeft + element.clientLeft;\n currentHeight = element.offsetTop + element.clientTop;\n viewWidth = element.clientWidth;\n viewHeight = element.clientHeight;\n viewRight = currentWidth + viewWidth;\n viewBottom = currentHeight + viewHeight;\n if (lastEdge === -1) {\n if (viewBottom >= bottom) {\n lastEdge = viewBottom;\n }\n }\n else if (currentHeight > lastEdge) {\n break;\n }\n if (viewBottom <= top || currentHeight >= bottom ||\n viewRight <= left || currentWidth >= right) {\n continue;\n }\n hiddenHeight = Math.max(0, top - currentHeight) +\n Math.max(0, viewBottom - bottom);\n hiddenWidth = Math.max(0, left - currentWidth) +\n Math.max(0, viewRight - right);\n // eslint-disable-next-line no-bitwise\n percentVisible = ((viewHeight - hiddenHeight) * (viewWidth - hiddenWidth) * 100 / viewHeight / viewWidth) | 0;\n visible.push({\n id: thumbnailView.id,\n x: currentWidth,\n y: currentHeight,\n view: thumbnailView,\n percent: percentVisible\n });\n }\n var first = visible[0];\n var last = visible[visible.length - 1];\n return { first: first, last: last, views: visible };\n };\n // eslint-disable-next-line\n ThumbnailView.prototype.binarySearchFirstItem = function (items, condition) {\n var minIndex = 0;\n var maxIndex = items.length - 1;\n if (items.length === 0 || !condition(this.getThumbnailElement(maxIndex))) {\n return items.length - 1;\n }\n if (condition(this.getThumbnailElement(minIndex))) {\n return minIndex;\n }\n while (minIndex < maxIndex) {\n // eslint-disable-next-line no-bitwise\n var currentIndex = (minIndex + maxIndex) >> 1;\n if (condition(this.getThumbnailElement(currentIndex))) {\n maxIndex = currentIndex;\n }\n else {\n minIndex = currentIndex + 1;\n }\n }\n return minIndex; /* === maxIndex */\n };\n ThumbnailView.prototype.backtrackBeforeAllVisibleElements = function (index, views, top) {\n if (index < 2) {\n return index;\n }\n var thumbnailElement = this.getThumbnailElement(index);\n var pageTop = thumbnailElement.offsetTop + thumbnailElement.clientTop;\n if (pageTop >= top) {\n thumbnailElement = this.getThumbnailElement(index - 1);\n pageTop = thumbnailElement.offsetTop + thumbnailElement.clientTop;\n }\n for (var i = index - 2; i >= 0; --i) {\n thumbnailElement = this.getThumbnailElement(i);\n if (thumbnailElement.offsetTop + thumbnailElement.clientTop + thumbnailElement.clientHeight <= pageTop) {\n break;\n }\n index = i;\n }\n return index;\n };\n /**\n * @private\n */\n ThumbnailView.prototype.getThumbnailElement = function (index) {\n var thumbnailChild = this.thumbnailView.children[index];\n return thumbnailChild.children[0];\n };\n /**\n * @private\n */\n ThumbnailView.prototype.getThumbnailLinkElement = function (index) {\n var thumbnailChild = this.thumbnailView.children[index];\n return thumbnailChild;\n };\n /**\n * @private\n */\n ThumbnailView.prototype.getThumbnailImageElement = function (index) {\n var thumbnailChild = this.thumbnailView.children[index];\n if (thumbnailChild)\n return thumbnailChild.children[0].children[0].children[0];\n else\n return null;\n };\n /**\n * @private\n */\n ThumbnailView.prototype.destroy = function () {\n this.clear();\n };\n /**\n * @private\n */\n ThumbnailView.prototype.getModuleName = function () {\n return 'ThumbnailView';\n };\n return ThumbnailView;\n}());\nexport { ThumbnailView };\n","import { createElement, Browser } from '@syncfusion/ej2-base';\nimport { AjaxHandler } from '../index';\n/**\n * Print module\n */\nvar Print = /** @class */ (function () {\n /**\n * @param viewer\n * @param base\n * @private\n */\n function Print(viewer, base) {\n this.printHeight = 1056;\n this.printWidth = 816;\n this.pdfViewer = viewer;\n this.pdfViewerBase = base;\n }\n /**\n * Print the PDF document being loaded in the ejPdfViewer control.\n *\n * @returns void\n */\n Print.prototype.print = function () {\n var _this = this;\n var pageIndex;\n if (this.pdfViewerBase.pageCount > 0) {\n // eslint-disable-next-line max-len\n this.printViewerContainer = createElement('div', {\n id: this.pdfViewer.element.id + '_print_viewer_container',\n className: 'e-pv-print-viewer-container'\n });\n if (this.pdfViewer.printMode === 'Default') {\n this.pdfViewerBase.showPrintLoadingIndicator(true);\n this.iframe = document.createElement('iframe');\n this.iframe.className = 'iframeprint';\n this.iframe.id = 'iframePrint';\n this.iframe.style.position = 'fixed';\n this.iframe.style.top = '-100000000px';\n document.body.appendChild(this.iframe);\n this.frameDoc = this.iframe.contentWindow ? this.iframe.contentWindow : this.iframe.contentDocument;\n this.frameDoc.document.open();\n }\n else {\n this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWindow.moveTo(0, 0);\n this.printWindow.resizeTo(screen.availWidth, screen.availHeight);\n this.createPrintLoadingIndicator(this.printWindow.document.body);\n }\n setTimeout(function () {\n for (pageIndex = 0; pageIndex < _this.pdfViewerBase.pageCount; pageIndex++) {\n var pageWidth = _this.pdfViewerBase.pageSize[pageIndex].width;\n var pageHeight = _this.pdfViewerBase.pageSize[pageIndex].height;\n // Check if the document is A4 by comparing the A4 standard values with the buffer value\n var a4StdWidth = 793;\n var a4StdHeight = 1122;\n var bufferWidth = 10;\n var bufferHeight = 10;\n //Reduced the A4 standard width and height to prevent blank pages while printing\n var a4PrintWidth = 783;\n var a4PrintHeight = 1110;\n _this.printWidth = 816;\n _this.printHeight = 1056;\n // Check if the A4 document is protrait or landscape\n if (pageWidth > pageHeight) {\n a4StdWidth = 1122;\n a4StdHeight = 793;\n }\n if (!(pageWidth >= (a4StdWidth + bufferWidth) || pageWidth <= (a4StdWidth - bufferWidth)) && !(pageHeight >= (a4StdHeight + bufferHeight) || pageHeight <= (a4StdHeight - bufferHeight))) {\n _this.printWidth = a4PrintWidth;\n _this.printHeight = a4PrintHeight;\n }\n _this.pdfViewer.printModule.createRequestForPrint(pageIndex, pageWidth, pageHeight, _this.pdfViewerBase.pageCount, _this.pdfViewer.printScaleRatio);\n }\n _this.pdfViewer.firePrintEnd(_this.pdfViewer.downloadFileName);\n }, 100);\n }\n };\n Print.prototype.createRequestForPrint = function (pageIndex, pageWidth, pageHeight, pageCount, printScaleFactor) {\n var proxy = this;\n // tslint: disable-next-line:max-line-length\n // set default zoomFactor value.\n var jsonObject = {\n pageNumber: pageIndex.toString(), documentId: this.pdfViewerBase.documentId,\n hashId: this.pdfViewerBase.hashId, zoomFactor: \"1\",\n action: 'PrintImages',\n elementId: this.pdfViewer.element.id,\n uniqueId: this.pdfViewerBase.documentId,\n digitalSignaturePresent: this.pdfViewerBase.digitalSignaturePresent(pageIndex)\n };\n if (this.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.pdfViewerBase.jsonDocumentId;\n }\n proxy.pdfViewerBase.createFormfieldsJsonData();\n proxy.printRequestHandler = new AjaxHandler(proxy.pdfViewer);\n proxy.printRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.print;\n proxy.printRequestHandler.responseType = null;\n proxy.printRequestHandler.mode = false;\n if (this.pdfViewerBase.validateForm && this.pdfViewer.enableFormFieldsValidation) {\n this.pdfViewer.fireValidatedFailed(proxy.pdfViewer.serverActionSettings.download);\n this.pdfViewerBase.validateForm = false;\n this.pdfViewerBase.showPrintLoadingIndicator(false);\n }\n else {\n if (proxy.pdfViewerBase.clientSideRendering) {\n this.pdfViewerBase.pdfViewerRunner.postMessage({ pageIndex: pageIndex, message: 'printImage', printScaleFactor: printScaleFactor >= 1 ? printScaleFactor : 1 });\n }\n else {\n proxy.printRequestHandler.send(jsonObject);\n }\n }\n // eslint-disable-next-line\n proxy.printRequestHandler.onSuccess = function (result) {\n proxy.printSuccess(result, pageWidth, pageHeight, pageIndex);\n };\n // eslint-disable-next-line\n this.printRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.print);\n };\n // eslint-disable-next-line\n this.printRequestHandler.onError = function (result) {\n proxy.pdfViewerBase.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.print);\n };\n };\n /**\n * @private\n */\n Print.prototype.printOnMessage = function (event) {\n var canvas = document.createElement('canvas');\n var _a = event.data, value = _a.value, width = _a.width, height = _a.height, pageIndex = _a.pageIndex, pageWidth = _a.pageWidth, pageHeight = _a.pageHeight;\n canvas.width = width;\n canvas.height = height;\n var canvasContext = canvas.getContext('2d');\n var imageData = canvasContext.createImageData(width, height);\n imageData.data.set(value);\n canvasContext.putImageData(imageData, 0, 0);\n var imageUrl = canvas.toDataURL();\n var data = ({ image: imageUrl, pageNumber: pageIndex, uniqueId: this.pdfViewerBase.documentId, pageWidth: width });\n this.printSuccess(data, pageWidth, pageHeight, pageIndex);\n };\n Print.prototype.printSuccess = function (result, pageWidth, pageHeight, pageIndex) {\n var _this = this;\n this.pdfViewerBase.isPrint = true;\n // eslint-disable-next-line\n var printImage = this.pdfViewerBase.clientSideRendering ? result : result.data;\n var redirect = this.pdfViewerBase.checkRedirection(printImage);\n if (redirect) {\n this.pdfViewerBase.showPrintLoadingIndicator(false);\n }\n else {\n if (printImage) {\n if (typeof printImage !== 'object') {\n try {\n printImage = JSON.parse(printImage);\n if (typeof printImage !== 'object') {\n this.pdfViewerBase.onControlError(500, printImage, this.pdfViewer.serverActionSettings.print);\n printImage = null;\n }\n }\n catch (error) {\n this.pdfViewerBase.onControlError(500, printImage, this.pdfViewer.serverActionSettings.print);\n printImage = null;\n }\n }\n }\n if (printImage && printImage.uniqueId === this.pdfViewerBase.documentId) {\n this.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.print, printImage);\n var annotationSource_1 = '';\n if (!this.pdfViewer.annotationSettings.skipPrint) {\n // eslint-disable-next-line\n var annotationCollections = this.pdfViewerBase.documentAnnotationCollections;\n if (annotationCollections && annotationCollections[printImage.pageNumber] && this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n // eslint-disable-next-line\n var printCollection = annotationCollections[printImage.pageNumber];\n if (this.pdfViewerBase.isImportAction) {\n var textMarkupAnnotation = printCollection.textMarkupAnnotation;\n var shapeAnnotation = printCollection.shapeAnnotation;\n var measureShapeAnnotation = printCollection.measureShapeAnnotation;\n var stampAnnotation = printCollection.stampAnnotations;\n var freeTextAnnotation = printCollection.freeTextAnnotation;\n // eslint-disable-next-line\n var stickyNoteAnnotation = printCollection.stickyNotesAnnotation;\n // eslint-disable-next-line max-len\n annotationSource_1 = this.pdfViewer.annotationModule.textMarkupAnnotationModule.printTextMarkupAnnotations(textMarkupAnnotation, printImage.pageNumber, stampAnnotation, shapeAnnotation, measureShapeAnnotation, stickyNoteAnnotation, freeTextAnnotation);\n }\n else {\n // eslint-disable-next-line max-len\n annotationSource_1 = this.pdfViewer.annotationModule.textMarkupAnnotationModule.printTextMarkupAnnotations(printCollection.textMarkupAnnotation, printImage.pageNumber, printCollection.stampAnnotations, printCollection.shapeAnnotation, printCollection.measureShapeAnnotation, printCollection.stickyNoteAnnotation, printCollection.freeTextAnnotation);\n }\n }\n if (this.pdfViewerBase.isAnnotationCollectionRemoved) {\n // eslint-disable-next-line max-len\n annotationSource_1 = this.pdfViewer.annotationModule.textMarkupAnnotationModule.printTextMarkupAnnotations(null, printImage.pageNumber, null, null, null, null, null);\n }\n }\n var currentPageNumber_1 = printImage.pageNumber;\n // eslint-disable-next-line max-len\n this.printCanvas = createElement('canvas', { id: this.pdfViewer.element.id + '_printCanvas_' + pageIndex, className: 'e-pv-print-canvas' });\n this.printCanvas.style.width = pageWidth + 'px';\n this.printCanvas.style.height = pageHeight + 'px';\n var printScaleValue = 2;\n if (this.pdfViewerBase.clientSideRendering) {\n //An A0 piece of paper measures 33.1 × 46.8 inches, with 46.8 inches being the greater dimension. The pixel value of 46.8 inches is 4493px. If the document size is too large, we may not be able to display the image. Therefore, we should consider the maximum size of A0 paper if the page size is greater than 4493 pixels.\n var maxPageSize = 4493;\n var whichIsBigger = (pageWidth > pageHeight) ? 'Width' : 'Height';\n var maxWidth = pageWidth;\n var maxHeight = pageHeight;\n if (whichIsBigger === 'Width') {\n maxWidth = (pageWidth > maxPageSize) ? maxPageSize : pageWidth;\n if (maxWidth === maxPageSize) {\n maxHeight = pageHeight / (pageWidth / maxPageSize);\n }\n }\n else {\n maxHeight = (pageHeight > maxPageSize) ? maxPageSize : pageHeight;\n if (maxHeight === maxPageSize) {\n maxWidth = pageWidth / (pageHeight / maxPageSize);\n }\n }\n if ((pageHeight < pageWidth) && this.pdfViewer.enablePrintRotation) {\n this.printCanvas.height = pageWidth * printScaleValue * window.devicePixelRatio;\n this.printCanvas.width = pageHeight * printScaleValue * window.devicePixelRatio;\n }\n else {\n this.printCanvas.height = maxHeight * printScaleValue * window.devicePixelRatio;\n this.printCanvas.width = maxWidth * printScaleValue * window.devicePixelRatio;\n }\n }\n else {\n this.printCanvas.height = this.printHeight * printScaleValue * window.devicePixelRatio;\n this.printCanvas.width = this.printWidth * printScaleValue * window.devicePixelRatio;\n }\n var context_1 = this.printCanvas.getContext('2d');\n var pageImage_1 = new Image();\n var annotationImage_1 = new Image();\n pageImage_1.onload = function () {\n if ((pageHeight > pageWidth) || !_this.pdfViewer.enablePrintRotation) {\n context_1.drawImage(pageImage_1, 0, 0, _this.printCanvas.width, _this.printCanvas.height);\n if (annotationSource_1) {\n context_1.drawImage(annotationImage_1, 0, 0, _this.printCanvas.width, _this.printCanvas.height);\n }\n }\n else {\n // translate to center canvas\n context_1.translate(_this.printCanvas.width * 0.5, _this.printCanvas.height * 0.5);\n // rotate the canvas to - 90 degree\n context_1.rotate(-0.5 * Math.PI);\n // un translate the canvas back to origin\n context_1.translate(-_this.printCanvas.height * 0.5, -_this.printCanvas.width * 0.5);\n // draw the image\n context_1.drawImage(pageImage_1, 0, 0, _this.printCanvas.height, _this.printCanvas.width);\n if (annotationSource_1) {\n context_1.drawImage(annotationImage_1, 0, 0, _this.printCanvas.height, _this.printCanvas.width);\n }\n }\n if (currentPageNumber_1 === (_this.pdfViewerBase.pageCount - 1)) {\n _this.printWindowOpen();\n }\n _this.pdfViewer.renderDrawing(null, pageIndex);\n };\n pageImage_1.src = printImage.image;\n annotationImage_1.src = annotationSource_1;\n this.printViewerContainer.appendChild(this.printCanvas);\n }\n }\n this.pdfViewerBase.isPrint = false;\n };\n // eslint-disable-next-line\n Print.prototype.renderFieldsForPrint = function (pageIndex, heightRatio, widthRatio) {\n // eslint-disable-next-line\n var data = null;\n var targetField;\n if (this.pdfViewer.printMode === 'Default') {\n targetField = this.frameDoc.document.getElementById('fields_' + pageIndex);\n }\n else {\n targetField = this.printWindow.document.getElementById('fields_' + pageIndex);\n }\n if (this.pdfViewer.formFieldsModule) {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n }\n if (!this.pdfViewer.formDesignerModule) {\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[i];\n // eslint-disable-next-line\n if (parseFloat(currentData['PageIndex']) === pageIndex) {\n // eslint-disable-next-line\n var field = this.pdfViewer.formFieldsModule.createFormFields(currentData, pageIndex, i, targetField);\n // eslint-disable-next-line\n var inputField = field.currentField;\n if (inputField) {\n // eslint-disable-next-line\n var bounds = currentData['LineBounds'];\n // eslint-disable-next-line\n var font = currentData['Font'];\n this.applyPosition(inputField, bounds, font, heightRatio, widthRatio);\n inputField.InsertSpaces = currentData.InsertSpaces;\n if (inputField.InsertSpaces) {\n // eslint-disable-next-line\n var font_1 = ((parseInt(inputField.style.width) / inputField.maxLength) - (parseFloat(inputField.style.fontSize) / 2)) - 0.6;\n inputField.style.letterSpacing = '' + font_1 + 'px';\n inputField.style.fontFamily = 'monospace';\n }\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if ((pageDetails.width > pageDetails.height) && this.pdfViewer.enablePrintRotation) {\n /*\n The below logig have been modified for the bug https://syncfusion.atlassian.net/browse/EJ2-57986\n This code changes is specific for form field elements.\n \n inputField.style.transform = 'rotate(-90deg)';\n let previousLeft: number = parseFloat(inputField.style.left);\n let currentWidthPosition: number = parseFloat(inputField.style.width) / 2;\n let currentHeightPosition: number = parseFloat(inputField.style.height) / 2;\n let currentTop: number = parseFloat(inputField.style.top);\n let currentHeight: number = parseFloat(inputField.style.height);\n inputField.style.left = (currentHeightPosition - currentWidthPosition + currentTop) + 'px';\n inputField.style.top = (pageDetails.width / widthRatio) - (currentHeight / heightRatio) - ((currentWidthPosition / heightRatio) - (currentHeightPosition / heightRatio) + previousLeft) + 'px';\n */\n var x = this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.X);\n var y = this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.Y);\n var width = this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.Width);\n var height = this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.Height);\n var pageHeight = pageDetails.width;\n var top = pageHeight - x - height;\n var left = (y + height);\n var width = (width);\n var height = (height);\n inputField.style.transform = \"rotate(-90deg)\";\n inputField.style.transformOrigin = \"left bottom\";\n inputField.style.left = left + 'px';\n inputField.style.top = top + 'px';\n inputField.style.height = height + 'px';\n inputField.style.width = width + 'px';\n }\n inputField.style.backgroundColor = 'transparent';\n if (!currentData.IsSignatureField) {\n inputField.style.borderColor = 'transparent';\n }\n targetField.appendChild(inputField);\n }\n }\n }\n }\n }\n else {\n var formDesignerData = null;\n if (this.pdfViewer.formDesignerModule) {\n formDesignerData = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n }\n if (formDesignerData) {\n var formDesignerFieldsData = JSON.parse(formDesignerData);\n for (var i = 0; i < formDesignerFieldsData.length; i++) {\n // eslint-disable-next-line\n var currentData = formDesignerFieldsData[i].FormField;\n if (currentData.pageNumber - 1 === pageIndex && currentData.isPrint) {\n var signatureField = this.pdfViewer.nameTable[formDesignerFieldsData[i].Key.split(\"_\")[0]];\n var element = signatureField.wrapper.children[0];\n var htmlElement = void 0;\n if (element) {\n if (currentData.formFieldAnnotationType === \"RadioButton\") {\n for (var j = 0; j < currentData.radiobuttonItem.length; j++) {\n signatureField = this.pdfViewer.nameTable[currentData.radiobuttonItem[j].id.split(\"_\")[0]];\n htmlElement = this.createFormDesignerFields(currentData.radiobuttonItem[j], element, signatureField);\n if (htmlElement) {\n // eslint-disable-next-line\n var bounds = currentData.radiobuttonItem[j].lineBound;\n // eslint-disable-next-line\n var font = currentData.radiobuttonItem[j].fontFamily;\n this.applyPosition(htmlElement, bounds, font, heightRatio, widthRatio, true, currentData.radiobuttonItem[j].zoomValue, currentData.pageNumber - 1);\n targetField.appendChild(htmlElement);\n }\n }\n }\n else {\n htmlElement = this.createFormDesignerFields(currentData, element, signatureField);\n if (htmlElement) {\n // eslint-disable-next-line\n var bounds = currentData.lineBound;\n // eslint-disable-next-line\n var font = currentData.fontFamily;\n this.applyPosition(htmlElement, bounds, font, heightRatio, widthRatio, true, currentData.zoomValue, currentData.pageNumber - 1);\n targetField.appendChild(htmlElement);\n }\n }\n }\n }\n }\n }\n }\n };\n Print.prototype.createFormDesignerFields = function (currentData, element, signatureField) {\n var htmlElement;\n var parentHtmlElement;\n var parentHtmlElementAttribute = {\n 'id': \"form_field_\" + element.id + '_html_element',\n 'class': 'foreign-object'\n };\n parentHtmlElement = this.pdfViewer.formDesignerModule.createHtmlElement('div', parentHtmlElementAttribute);\n var HtmlElementAttribute = {\n 'id': element.id + '_html_element',\n 'class': 'foreign-object'\n };\n htmlElement = this.pdfViewer.formDesignerModule.createHtmlElement('div', HtmlElementAttribute);\n if (currentData.formFieldAnnotationType === \"SignatureField\" || currentData.formFieldAnnotationType === \"InitialField\") {\n this.pdfViewer.formDesignerModule.disableSignatureClickEvent = true;\n element.template = htmlElement.appendChild(this.pdfViewer.formDesignerModule.createSignatureDialog(this.pdfViewer, signatureField, null, true));\n this.pdfViewer.formDesignerModule.disableSignatureClickEvent = false;\n }\n else if (currentData.formFieldAnnotationType === \"DropdownList\") {\n element.template = htmlElement.appendChild(this.pdfViewer.formDesignerModule.createDropDownList(element, signatureField, true));\n }\n else if (currentData.formFieldAnnotationType === \"ListBox\") {\n element.template = htmlElement.appendChild(this.pdfViewer.formDesignerModule.createListBox(element, signatureField, true));\n }\n else {\n element.template = htmlElement.appendChild(this.pdfViewer.formDesignerModule.createInputElement(currentData.formFieldAnnotationType, signatureField, null, true));\n }\n parentHtmlElement.appendChild(htmlElement);\n return htmlElement;\n };\n /**\n * @param inputField\n * @param bounds\n * @param font\n * @param heightRatio\n * @param widthRatio\n * @param inputField\n * @param bounds\n * @param font\n * @param heightRatio\n * @param widthRatio\n * @private\n */\n // eslint-disable-next-line\n Print.prototype.applyPosition = function (inputField, bounds, font, heightRatio, widthRatio, isFormDesignerField, zoomValue, pageIndex) {\n if (bounds) {\n var pageHeight = void 0;\n var left = void 0;\n var top_1;\n var width = void 0;\n var height = void 0;\n // This code changes is specific for form designer elements. https://syncfusion.atlassian.net/browse/EJ2-57986 \n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n var actualWidth = pageDetails ? pageDetails.width : 0;\n var actualHeight = pageDetails ? pageDetails.height : 0;\n if (isFormDesignerField && actualHeight < actualWidth && this.pdfViewer.enablePrintRotation) {\n /*\n The below logig have been modified for the bug https://syncfusion.atlassian.net/browse/EJ2-57986\n This code changes is specific for form designer elements.\n pageHeight = actualWidth;\n top= pageHeight - bounds.X / zoomValue;\n left = bounds.Y / zoomValue;\n width = (bounds.Width / zoomValue);\n height = (bounds.Height / zoomValue);\n inputField.style.transform = \"rotate(-90deg)\";\n inputField.style.transformOrigin = \"top left\";\n */\n // need to set inverse page height and width \n pageHeight = actualWidth;\n top_1 = pageHeight - bounds.X / zoomValue - bounds.Height / zoomValue;\n left = (bounds.Y + bounds.Height) / zoomValue;\n width = (bounds.Width / zoomValue);\n height = (bounds.Height / zoomValue);\n inputField.style.transform = \"rotate(-90deg)\";\n inputField.style.transformOrigin = \"left bottom\";\n }\n else {\n left = isFormDesignerField ? (bounds.X / zoomValue) / widthRatio : (this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.X)) / widthRatio;\n top_1 = isFormDesignerField ? (bounds.Y / zoomValue) / heightRatio : (this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.Y)) / heightRatio;\n width = isFormDesignerField ? (bounds.Width / zoomValue) / widthRatio : (this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.Width)) / widthRatio;\n height = isFormDesignerField ? (bounds.Height / zoomValue) / heightRatio : (this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.Height)) / heightRatio;\n }\n var fontHeight = 0;\n if (font !== null && font.Height) {\n inputField.style.fontFamily = font.Name;\n if (font.Italic) {\n inputField.style.fontStyle = 'italic';\n }\n if (font.Bold) {\n inputField.style.fontWeight = 'Bold';\n }\n fontHeight = this.pdfViewerBase.ConvertPointToPixel(font.Size);\n }\n if (Browser.isIE) {\n top_1 = top_1 - 1;\n }\n this.pdfViewerBase.setStyleToTextDiv(inputField, left, top_1, fontHeight, width, height, true);\n }\n };\n Print.prototype.printWindowOpen = function () {\n var _this = this;\n var browserUserAgent = navigator.userAgent;\n // eslint-disable-next-line\n var printDocument;\n if (this.pdfViewer.printMode === 'Default') {\n printDocument = this.frameDoc.document;\n }\n else {\n printDocument = this.printWindow.document;\n }\n for (var i = 0; i < this.printViewerContainer.children.length; i++) {\n /*\n Create a new Base64-encoded image with increased quality\n Also help to reduce the file size while save as pdf\n */\n // eslint-disable-next-line max-len\n var canvasUrl = this.printViewerContainer.children[i].toDataURL('image/jpeg', 0.75);\n printDocument.write('
');\n if (this.pdfViewer.formFieldsModule || this.pdfViewer.formDesignerModule) {\n var pageWidth = this.pdfViewerBase.pageSize[i].width;\n var pageHeight = this.pdfViewerBase.pageSize[i].height;\n var heightRatio;\n var widthRatio;\n if ((pageHeight < pageWidth) && this.pdfViewer.enablePrintRotation) {\n heightRatio = pageHeight / this.printWidth;\n widthRatio = pageWidth / this.printHeight;\n }\n else {\n heightRatio = pageHeight / this.printHeight;\n widthRatio = pageWidth / this.printWidth;\n }\n this.renderFieldsForPrint(i, heightRatio, widthRatio);\n }\n if (i === 0) {\n if ((browserUserAgent.indexOf('Chrome') !== -1) || (browserUserAgent.indexOf('Safari') !== -1) ||\n (browserUserAgent.indexOf('Firefox')) !== -1) {\n printDocument.write('');\n printDocument.write('');\n }\n else {\n printDocument.write('');\n printDocument.write(''\n + '');\n }\n }\n }\n if (Browser.isIE || Browser.info.name === 'edge') {\n try {\n if (this.pdfViewer.printMode === 'Default') {\n this.pdfViewerBase.showPrintLoadingIndicator(false);\n this.iframe.contentWindow.document.execCommand('print', false, null);\n }\n else {\n this.printWindow.document.execCommand('print', false, null);\n }\n }\n catch (e) {\n if (this.pdfViewer.printMode === 'Default') {\n this.pdfViewerBase.showPrintLoadingIndicator(false);\n this.iframe.contentWindow.print();\n }\n else {\n this.printWindow.print();\n }\n }\n }\n else {\n setTimeout(function () {\n if (_this.pdfViewer.printMode === 'Default') {\n _this.pdfViewerBase.showPrintLoadingIndicator(false);\n _this.iframe.contentWindow.print();\n _this.iframe.contentWindow.focus();\n if (_this.pdfViewerBase.isDeviceiOS || Browser.isDevice) {\n var proxy_1 = _this;\n window.onafterprint = function (event) {\n document.body.removeChild(proxy_1.iframe);\n };\n }\n else {\n document.body.removeChild(_this.iframe);\n }\n }\n else {\n if (_this.printWindow) {\n _this.printWindow.print();\n _this.printWindow.focus();\n if (!Browser.isDevice || _this.pdfViewerBase.isDeviceiOS) {\n _this.printWindow.close();\n }\n }\n }\n }, 200);\n }\n };\n // eslint-disable-next-line\n Print.prototype.createPrintLoadingIndicator = function (element) {\n // eslint-disable-next-line\n var printWindowContainer = createElement('div', {\n id: this.pdfViewer.element.id + '_printWindowcontainer'\n });\n printWindowContainer.style.height = '100%';\n printWindowContainer.style.width = '100%';\n printWindowContainer.style.position = 'absolute';\n printWindowContainer.style.zIndex = 2000;\n printWindowContainer.style.left = 0;\n printWindowContainer.style.top = 0;\n printWindowContainer.style.overflow = 'auto';\n printWindowContainer.style.backgroundColor = 'rgba(0, 0, 0, 0.3)';\n element.appendChild(printWindowContainer);\n var printWaitingPopup = createElement('div', {\n id: this.pdfViewer.element.id + '_printLoadingContainer'\n });\n printWaitingPopup.style.position = 'absolute';\n printWaitingPopup.style.width = '50px';\n printWaitingPopup.style.height = '50px';\n printWaitingPopup.style.left = '46%';\n printWaitingPopup.style.top = '45%';\n printWindowContainer.style.zIndex = 3000;\n printWindowContainer.appendChild(printWaitingPopup);\n // eslint-disable-next-line\n var printImageContainer = new Image();\n // eslint-disable-next-line\n printImageContainer.src = 'data:image/gif;base64,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';\n printImageContainer.style.width = '50px';\n printImageContainer.style.height = '50px';\n printWaitingPopup.appendChild(printImageContainer);\n var printLabelContainer = createElement('div', {\n id: this.pdfViewer.element.id + '_printLabelContainer'\n });\n printLabelContainer.style.position = 'absolute';\n printLabelContainer.textContent = 'Loading ...';\n printLabelContainer.style.fontWeight = 'Bold';\n printLabelContainer.style.left = '46%';\n printLabelContainer.style.top = '54.5%';\n printLabelContainer.style.zIndex = '3000';\n printWindowContainer.appendChild(printLabelContainer);\n };\n /**\n * @private\n */\n Print.prototype.destroy = function () {\n this.printViewerContainer = undefined;\n this.frameDoc = undefined;\n this.printWindow = undefined;\n };\n /**\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'Print';\n };\n return Print;\n}());\nexport { Print };\n","/* eslint-disable */\nimport { createElement, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * The `TextSelection` module is used to handle the text selection of PDF viewer.\n */\nvar TextSelection = /** @class */ (function () {\n /**\n * @param pdfViewer\n * @param pdfViewerBase\n * @param pdfViewer\n * @param pdfViewerBase\n * @private\n */\n function TextSelection(pdfViewer, pdfViewerBase) {\n var _this = this;\n /**\n * @private\n */\n this.isTextSelection = false;\n /**\n * @private\n */\n this.selectionStartPage = null;\n this.isBackwardPropagatedSelection = false;\n this.contextMenuHeight = 144;\n this.backwardStart = 0;\n /**\n * @private\n */\n this.selectionRangeArray = [];\n this.selectionAnchorTouch = null;\n this.selectionFocusTouch = null;\n // eslint-disable-next-line\n this.scrollMoveTimer = 0;\n this.isMouseLeaveSelection = false;\n this.isTouchSelection = false;\n this.previousScrollDifference = 0;\n this.topStoreLeft = null;\n this.topStoreRight = null;\n this.isTextSearched = false;\n this.isSelectionStartTriggered = false;\n this.allTextContent = \"\";\n this.onLeftTouchSelectElementTouchStart = function (event) {\n _this.initiateSelectionByTouch();\n };\n this.onRightTouchSelectElementTouchStart = function (event) {\n _this.initiateSelectionByTouch();\n };\n this.onLeftTouchSelectElementTouchEnd = function (event) {\n _this.terminateSelectionByTouch(event);\n };\n this.onRightTouchSelectElementTouchEnd = function (event) {\n _this.terminateSelectionByTouch(event);\n };\n this.onLeftTouchSelectElementTouchMove = function (event) {\n var range;\n var nodeElement;\n event.preventDefault();\n event.target.style.zIndex = '0';\n var rightElement = _this.dropDivElementRight;\n var isTouchedWithinViewerContainer = _this.isTouchedWithinContainer(event);\n if (rightElement && isTouchedWithinViewerContainer) {\n var dropBounds = rightElement.getBoundingClientRect();\n var xTouch = event.changedTouches[0].clientX;\n var yTouch = event.changedTouches[0].clientY;\n event.target.style.zIndex = '1000';\n nodeElement = _this.getNodeElement(range, xTouch, yTouch, event, nodeElement);\n if (nodeElement) {\n // eslint-disable-next-line max-len\n var currentDifference = Math.sqrt((yTouch - dropBounds.top) * (yTouch - dropBounds.top) + (xTouch - dropBounds.left) * (xTouch - dropBounds.left));\n var isCloserMovement = _this.isCloserTouchScroll(currentDifference);\n var isTextSelected = false;\n if (yTouch <= dropBounds.top) {\n _this.dropElementLeft.style.transform = 'rotate(0deg)';\n _this.dropElementRight.style.transform = 'rotate(-90deg)';\n isTextSelected = _this.selectTextByTouch(nodeElement.parentElement, xTouch, yTouch, false, 'left', isCloserMovement);\n }\n else {\n _this.dropElementLeft.style.transform = 'rotate(-90deg)';\n _this.dropElementRight.style.transform = 'rotate(0deg)';\n isTextSelected = _this.selectTextByTouch(nodeElement.parentElement, xTouch, yTouch, true, 'left', isCloserMovement);\n }\n if (isTextSelected) {\n var elementClientRect = _this.dropDivElementLeft.getBoundingClientRect();\n var pageTopValue = _this.pdfViewerBase.pageSize[_this.pdfViewerBase.currentPageNumber - 1].top;\n var topClientValue = _this.getClientValueTop(yTouch, _this.pdfViewerBase.currentPageNumber - 1);\n // eslint-disable-next-line max-len\n var currentPageLeft = _this.pdfViewerBase.getElement('_pageDiv_' + (_this.pdfViewerBase.currentPageNumber - 1)).getBoundingClientRect().left;\n var currentRangeLeft = xTouch - currentPageLeft;\n // eslint-disable-next-line max-len\n _this.dropDivElementLeft.style.top = pageTopValue * _this.pdfViewerBase.getZoomFactor() + topClientValue + 'px';\n _this.topStoreLeft = { pageTop: pageTopValue, topClientValue: _this.getMagnifiedValue(topClientValue), pageNumber: _this.pdfViewerBase.currentPageNumber - 1, left: _this.getMagnifiedValue(currentRangeLeft), isHeightNeeded: false };\n // eslint-disable-next-line max-len\n _this.dropDivElementLeft.style.left = xTouch - _this.pdfViewerBase.viewerContainer.getBoundingClientRect().left - (elementClientRect.width / 2) + 'px';\n _this.previousScrollDifference = currentDifference;\n }\n }\n }\n };\n // eslint-disable-next-line\n this.onRightTouchSelectElementTouchMove = function (event) {\n var range;\n var nodeElement;\n event.preventDefault();\n event.target.style.zIndex = '0';\n var leftElement = _this.dropDivElementLeft;\n var isTouchedWithinViewerContainer = _this.isTouchedWithinContainer(event);\n if (leftElement && isTouchedWithinViewerContainer) {\n var dropPosition = leftElement.getBoundingClientRect();\n var touchX = event.changedTouches[0].clientX;\n var touchY = event.changedTouches[0].clientY;\n event.target.style.zIndex = '1000';\n nodeElement = _this.getNodeElement(range, touchX, touchY, event, nodeElement);\n if (nodeElement) {\n // eslint-disable-next-line max-len\n var currentDifference = Math.sqrt((touchY - dropPosition.top) * (touchY - dropPosition.top) + (touchX - dropPosition.left) * (touchX - dropPosition.left));\n var isCloserMovement = _this.isCloserTouchScroll(currentDifference);\n var isTextSelected = false;\n if (touchY >= dropPosition.top) {\n _this.dropElementRight.style.transform = 'rotate(-90deg)';\n _this.dropElementLeft.style.transform = 'rotate(0deg)';\n isTextSelected = _this.selectTextByTouch(nodeElement.parentElement, touchX, touchY, true, 'right', isCloserMovement);\n }\n else {\n _this.dropElementRight.style.transform = 'rotate(0deg)';\n _this.dropElementLeft.style.transform = 'rotate(-90deg)';\n isTextSelected = _this.selectTextByTouch(nodeElement.parentElement, touchX, touchY, false, 'right', isCloserMovement);\n }\n if (isTextSelected) {\n var pageTopValue = _this.pdfViewerBase.pageSize[_this.pdfViewerBase.currentPageNumber - 1].top;\n var topClientValue = _this.getClientValueTop(touchY, _this.pdfViewerBase.currentPageNumber - 1);\n var elementClientRect = _this.dropDivElementRight.getBoundingClientRect();\n _this.dropDivElementRight.style.top = pageTopValue * _this.pdfViewerBase.getZoomFactor() + topClientValue + 'px';\n // eslint-disable-next-line max-len\n var currentPageLeft = _this.pdfViewerBase.getElement('_pageDiv_' + (_this.pdfViewerBase.currentPageNumber - 1)).getBoundingClientRect().left;\n var currentRangeLeft = touchX - currentPageLeft;\n // eslint-disable-next-line max-len\n _this.topStoreRight = { pageTop: pageTopValue, topClientValue: _this.getMagnifiedValue(topClientValue), pageNumber: _this.pdfViewerBase.currentPageNumber - 1, left: _this.getMagnifiedValue(currentRangeLeft), isHeightNeeded: false };\n // eslint-disable-next-line max-len\n _this.dropDivElementRight.style.left = touchX - _this.pdfViewerBase.viewerContainer.getBoundingClientRect().left - (elementClientRect.width / 2) + 'px';\n _this.previousScrollDifference = currentDifference;\n }\n }\n }\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param target\n * @param x\n * @param y\n * @param isExtended\n * @private\n */\n TextSelection.prototype.textSelectionOnMouseMove = function (target, x, y, isExtended) {\n var targetElement = target;\n this.isTextSearched = true;\n if (targetElement.nodeType === targetElement.TEXT_NODE) {\n if (!this.isSelectionStartTriggered && !this.pdfViewerBase.getTextMarkupAnnotationMode()) {\n this.pdfViewer.fireTextSelectionStart(this.pdfViewerBase.currentPageNumber);\n this.isSelectionStartTriggered = true;\n }\n this.isBackwardPropagatedSelection = false;\n var range = targetElement.ownerDocument.createRange();\n var selection = window.getSelection();\n if (selection.anchorNode !== null) {\n var position = selection.anchorNode.compareDocumentPosition(selection.focusNode);\n if (!position && selection.anchorOffset > selection.focusOffset || position === Node.DOCUMENT_POSITION_PRECEDING) {\n this.isBackwardPropagatedSelection = true;\n }\n }\n range.selectNodeContents(targetElement);\n var currentPosition = 0;\n var endPosition = range.endOffset;\n while (currentPosition < endPosition) {\n range.setStart(targetElement, currentPosition);\n range.setEnd(targetElement, currentPosition + 1);\n var rangeBounds = range.getBoundingClientRect();\n var rightBounds = rangeBounds.right;\n if (isExtended) {\n // eslint-disable-next-line\n rightBounds = parseInt(rangeBounds.right.toString());\n }\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (rangeBounds.left <= x && rightBounds >= x && parseInt(rangeBounds.top.toString()) <= y && rangeBounds.bottom >= y) {\n if (selection.anchorNode !== null && selection.anchorNode.parentNode.classList.contains('e-pv-text')) {\n if (selection.anchorOffset > currentPosition) {\n if (this.backwardStart != 0) {\n range.setStart(selection.anchorNode, this.backwardStart);\n }\n else {\n range.setStart(selection.anchorNode, selection.anchorOffset + 1);\n }\n }\n else {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n }\n }\n selection.removeAllRanges();\n selection.addRange(range);\n if (!this.isTextSelection) {\n this.selectionStartPage = this.pdfViewerBase.currentPageNumber - 1;\n }\n this.isTextSelection = true;\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (!isIE) {\n if (this.isBackwardPropagatedSelection || range.endOffset > currentPosition) {\n if (this.backwardStart != range.startOffset && range.startOffset >= currentPosition) {\n this.backwardStart = range.endOffset;\n }\n if (currentPosition === 0 && range.endOffset != 1) {\n selection.extend(targetElement, currentPosition);\n }\n else {\n selection.extend(targetElement, currentPosition + 1);\n }\n }\n else if (isExtended) {\n selection.extend(targetElement, currentPosition);\n }\n else {\n selection.extend(targetElement, currentPosition + 1);\n }\n }\n range.detach();\n }\n currentPosition += 1;\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotationModule;\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.isEnableTextMarkupResizer(annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode)) {\n // eslint-disable-next-line\n var leftDivElement = document.getElementById(this.pdfViewer.element.id + '_droplet_left');\n if (this.pdfViewerBase.isSelection && selection && selection.rangeCount > 0) {\n // eslint-disable-next-line\n var currentrange = selection.getRangeAt(0);\n // eslint-disable-next-line\n var rect = currentrange.getBoundingClientRect();\n var left = rect.left;\n var top_1 = rect.top;\n this.pdfViewer.annotation.textMarkupAnnotationModule.updateLeftposition(left, top_1);\n this.pdfViewerBase.isSelection = false;\n }\n else if ((leftDivElement && leftDivElement.style.display === 'none')) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.updateLeftposition(x, y);\n }\n this.pdfViewer.annotation.textMarkupAnnotationModule.updatePosition(x, y);\n }\n }\n else {\n for (var i = 0; i < targetElement.childNodes.length; i++) {\n if (targetElement.childNodes[i].nodeType === targetElement.TEXT_NODE) {\n var range = this.getSelectionRange(i, targetElement);\n var rangeBounds = range.getBoundingClientRect();\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (rangeBounds.left <= x && rangeBounds.right >= parseInt(x.toString()) && parseInt(rangeBounds.top.toString()) <= y && rangeBounds.bottom >= y) {\n range.detach();\n this.textSelectionOnMouseMove(targetElement.childNodes[i], x, y, isExtended);\n }\n else {\n range.detach();\n }\n }\n }\n }\n };\n /**\n * @param target\n * @param x\n * @param y\n * @param isforward\n * @param target\n * @param x\n * @param y\n * @param isforward\n * @param target\n * @param x\n * @param y\n * @param isforward\n * @private\n */\n TextSelection.prototype.textSelectionOnDrag = function (target, x, y, isforward) {\n var targetElement = target;\n this.isTextSearched = true;\n if (targetElement.nodeType === targetElement.TEXT_NODE) {\n this.isBackwardPropagatedSelection = false;\n var range = targetElement.ownerDocument.createRange();\n var selection = window.getSelection();\n if (selection.anchorNode !== null) {\n var position = selection.anchorNode.compareDocumentPosition(selection.focusNode);\n if (!position && selection.anchorOffset > selection.focusOffset || position === Node.DOCUMENT_POSITION_PRECEDING) {\n this.isBackwardPropagatedSelection = true;\n }\n }\n range.selectNodeContents(targetElement);\n var currentPosition = 0;\n var endPosition = range.endOffset;\n while (currentPosition < endPosition) {\n range.setStart(targetElement, currentPosition);\n range.setEnd(targetElement, currentPosition + 1);\n var rangeBounds = range.getBoundingClientRect();\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (rangeBounds.left <= x && rangeBounds.right >= x && parseInt(rangeBounds.top.toString()) <= y && rangeBounds.bottom >= y) {\n if (isforward) {\n // eslint-disable-next-line max-len\n if (selection.anchorNode !== null && selection.anchorNode.parentNode.classList.contains('e-pv-text')) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n }\n selection.removeAllRanges();\n selection.addRange(range);\n selection.extend(targetElement, currentPosition);\n }\n else if (selection.focusNode) {\n range.setEnd(selection.focusNode, selection.focusOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n if (!this.isTextSelection) {\n this.selectionStartPage = this.pdfViewerBase.currentPageNumber - 1;\n }\n this.isTextSelection = true;\n range.detach();\n return true;\n }\n currentPosition += 1;\n }\n if (this.pdfViewerBase.isSelection) {\n // eslint-disable-next-line\n var currentrange = selection.getRangeAt(0);\n // eslint-disable-next-line\n var rect = currentrange.getBoundingClientRect();\n var left = rect.left;\n var top_2 = rect.top;\n this.pdfViewer.annotation.textMarkupAnnotationModule.updateLeftposition(left, top_2);\n this.pdfViewerBase.isSelection = false;\n }\n this.pdfViewer.annotation.textMarkupAnnotationModule.updatePosition(x, y);\n }\n else {\n for (var i = 0; i < targetElement.childNodes.length; i++) {\n if (targetElement.childNodes[i].nodeType === targetElement.TEXT_NODE) {\n var range = this.getSelectionRange(i, targetElement);\n var rangeBounds = range.getBoundingClientRect();\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (rangeBounds.left <= x && rangeBounds.right >= x && parseInt(rangeBounds.top.toString()) <= y && rangeBounds.bottom >= y) {\n range.detach();\n this.textSelectionOnDrag(targetElement.childNodes[i], x, y, isforward);\n }\n else {\n range.detach();\n }\n }\n }\n }\n return null;\n };\n /**\n * Select the target text region in the PDF document of the given bounds.\n *\n * @param {number} pageNumbers - Specifies the page number\n * @param {IRectangle[]} bounds - Specifies the bounds of the texts.\n * @returns void\n */\n TextSelection.prototype.selectTextRegion = function (pageNumbers, bounds) {\n // eslint-disable-next-line\n var element = null;\n var pageNumber = (pageNumbers - 1);\n for (var k = 0; k < bounds.length; k++) {\n // eslint-disable-next-line\n var bound = bounds[k];\n var x = (bound.left ? bound.left : bound.Left) * this.pdfViewerBase.getZoomFactor();\n var y = (bound.top ? bound.top : bound.Top) * this.pdfViewerBase.getZoomFactor();\n var width = (bound.width ? bound.width : bound.Width) * this.pdfViewerBase.getZoomFactor();\n var height = bound.height ? bound.height : bound.Height;\n // eslint-disable-next-line\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + pageNumber);\n if (textLayer) {\n // eslint-disable-next-line\n var textDivs = textLayer.childNodes;\n for (var n = 0; n < textDivs.length; n++) {\n if (textDivs[n]) {\n // eslint-disable-next-line\n var rangebounds = textDivs[n].getBoundingClientRect();\n var top_3 = this.getClientValueTop(rangebounds.top, pageNumber);\n // eslint-disable-next-line max-len\n var currentLeft = rangebounds.left - this.pdfViewerBase.getElement('_pageDiv_' + pageNumber).getBoundingClientRect().left;\n var totalLeft = currentLeft + rangebounds.width;\n // eslint-disable-next-line\n var textDiVLeft = parseInt(textDivs[n].style.left);\n // eslint-disable-next-line\n var currentTop = parseInt(textDivs[n].style.top);\n var isLeftBounds = this.checkLeftBounds(currentLeft, textDiVLeft, totalLeft, x);\n var isTopBounds = this.checkTopBounds(top_3, currentTop, y);\n if (isLeftBounds && isTopBounds) {\n element = textDivs[n];\n break;\n }\n }\n }\n if (element != null) {\n // eslint-disable-next-line\n var boundingRect = this.pdfViewerBase.getElement('_textLayer_' + pageNumber).getBoundingClientRect();\n this.textSelectionOnMouseMove(element, x + boundingRect.left, y + boundingRect.top, false);\n if ((bounds.length - 1) === k) {\n // eslint-disable-next-line max-len\n this.textSelectionOnMouseMove(element, x + boundingRect.left + width, y + boundingRect.top, false);\n }\n }\n }\n }\n };\n /**\n * @param left\n * @param textDiVLeft\n * @param totalLeft\n * @param x\n * @private\n */\n TextSelection.prototype.checkLeftBounds = function (left, textDiVLeft, totalLeft, x) {\n var isExists = false;\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (left === parseInt(x.toString()) || parseInt(left.toString()) === parseInt(x.toString()) || (left + 1) === parseInt(x.toString()) || (left - 1) === parseInt(x.toString())\n // eslint-disable-next-line\n || textDiVLeft === parseInt(x.toString()) || textDiVLeft === x || (totalLeft >= x && left <= x)) {\n isExists = true;\n }\n return isExists;\n };\n /**\n * @param top\n * @param currentTop\n * @param y\n * @param top\n * @param currentTop\n * @param y\n * @private\n */\n TextSelection.prototype.checkTopBounds = function (top, currentTop, y) {\n var isExists = false;\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if ((top === parseInt(y.toString()) || parseInt(top.toString()) === parseInt(y.toString()) || parseInt((top + 1).toString()) === parseInt(y.toString()) || parseInt((top - 1).toString()) === parseInt(y.toString())\n // eslint-disable-next-line\n || currentTop === parseInt(y.toString()) || currentTop === y)) {\n isExists = true;\n }\n return isExists;\n };\n /**\n * @param event\n * @private\n */\n TextSelection.prototype.textSelectionOnMouseLeave = function (event) {\n var _this = this;\n event.preventDefault();\n var viewerTop = this.pdfViewerBase.viewerContainer.offsetTop;\n if (this.pdfViewer.magnificationModule) {\n if (this.pdfViewer.magnificationModule.fitType === 'fitToPage') {\n return;\n }\n }\n if (event.clientY > viewerTop) {\n this.scrollMoveTimer = setInterval(function () {\n _this.scrollForwardOnSelection();\n }, 500);\n }\n else {\n this.scrollMoveTimer = setInterval(function () {\n _this.scrollBackwardOnSelection();\n }, 500);\n }\n };\n TextSelection.prototype.scrollForwardOnSelection = function () {\n this.isMouseLeaveSelection = true;\n this.pdfViewerBase.viewerContainer.scrollTop = this.pdfViewerBase.viewerContainer.scrollTop + 200;\n this.stichSelectionOnScroll(this.pdfViewerBase.currentPageNumber - 1);\n };\n TextSelection.prototype.scrollBackwardOnSelection = function () {\n this.isMouseLeaveSelection = true;\n this.pdfViewerBase.viewerContainer.scrollTop = this.pdfViewerBase.viewerContainer.scrollTop - 200;\n this.stichSelectionOnScroll(this.pdfViewerBase.currentPageNumber - 1);\n };\n /**\n * @private\n */\n TextSelection.prototype.clear = function () {\n if (this.scrollMoveTimer) {\n this.isMouseLeaveSelection = false;\n clearInterval(this.scrollMoveTimer);\n }\n };\n /**\n * @param element\n * @param x\n * @param y\n * @param isStoreSelection\n * @param element\n * @param x\n * @param y\n * @param isStoreSelection\n * @param element\n * @param x\n * @param y\n * @param isStoreSelection\n * @private\n */\n // eslint-disable-next-line\n TextSelection.prototype.selectAWord = function (element, x, y, isStoreSelection) {\n if (element.nodeType === element.TEXT_NODE) {\n var selection = window.getSelection();\n var range = element.ownerDocument.createRange();\n range.selectNodeContents(element);\n var currentPosition = 0;\n var endPosition = range.endOffset;\n while (currentPosition < endPosition) {\n range.setStart(element, currentPosition);\n range.setEnd(element, currentPosition + 1);\n var rangeBounds = range.getBoundingClientRect();\n if (rangeBounds.left <= x && rangeBounds.right >= x && rangeBounds.top <= y && rangeBounds.bottom >= y) {\n var textContent = element.textContent;\n var indices = [];\n var startPosition = void 0;\n var endPos = void 0;\n for (var i = 0; i < textContent.length; i++) {\n if (textContent[i] === ' ') {\n indices.push(i);\n }\n }\n for (var j = 0; j < indices.length; j++) {\n if (currentPosition === indices[j]) {\n startPosition = indices[j];\n endPos = indices[j];\n }\n if (indices[0] > currentPosition) {\n startPosition = 0;\n endPos = indices[j];\n break;\n }\n if (currentPosition > indices[j] && currentPosition < indices[j + 1]) {\n startPosition = indices[j];\n endPos = indices[j + 1];\n }\n else if (currentPosition > indices[j]) {\n if (!indices[j + 1]) {\n startPosition = indices[j];\n }\n }\n }\n if (!endPos) {\n endPos = textContent.length;\n }\n if (startPosition === 0) {\n range.setStart(element, startPosition);\n }\n else {\n range.setStart(element, startPosition + 1);\n }\n range.setEnd(element, endPos);\n selection.removeAllRanges();\n selection.addRange(range);\n this.isTextSelection = true;\n // eslint-disable-next-line max-len\n var startParent = isNullOrUndefined(range.startContainer.parentElement) ? range.startContainer.parentNode : range.startContainer.parentElement;\n // eslint-disable-next-line radix\n this.selectionStartPage = parseInt(startParent.id.split('_text_')[1]);\n if (isStoreSelection) {\n // eslint-disable-next-line max-len\n this.selectionAnchorTouch = { anchorNode: selection.anchorNode.parentElement.id, anchorOffset: selection.anchorOffset };\n this.selectionFocusTouch = { focusNode: selection.focusNode.parentElement.id, focusOffset: selection.focusOffset };\n }\n if (!Browser.isIE) {\n range.detach();\n }\n break;\n }\n currentPosition += 1;\n }\n }\n else {\n for (var i = 0; i < element.childNodes.length; i++) {\n var range = this.getSelectionRange(i, element);\n var rangeBounds = range.getBoundingClientRect();\n if (rangeBounds.left <= x && rangeBounds.right >= x && rangeBounds.top <= y && rangeBounds.bottom >= y) {\n range.detach();\n this.selectAWord(element.childNodes[i], x, y, isStoreSelection);\n }\n else {\n range.detach();\n }\n }\n }\n };\n TextSelection.prototype.getSelectionRange = function (index, element) {\n var range = element.childNodes[index].ownerDocument.createRange();\n range.selectNodeContents(element.childNodes[index]);\n return range;\n };\n /**\n * @param event\n * @private\n */\n TextSelection.prototype.selectEntireLine = function (event) {\n var textIds = [];\n var targetElement = event.target;\n var targetRect = targetElement.getBoundingClientRect();\n // eslint-disable-next-line\n var targetcentre = parseInt((targetRect.top + (targetRect.height / 2)).toString());\n // eslint-disable-next-line radix\n var pageNumber = parseInt(event.target.id.split('_text_')[1]);\n var textDivs = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_text_' + pageNumber + '\"]');\n if (targetElement.classList.contains('e-pv-text')) {\n this.pdfViewer.fireTextSelectionStart(pageNumber + 1);\n for (var i = 0; i < textDivs.length; i++) {\n var rect = textDivs[i].getBoundingClientRect();\n // eslint-disable-next-line radix\n var topValue = parseInt(rect.top.toString());\n // eslint-disable-next-line radix\n var bottomValue = parseInt(rect.bottom.toString());\n if ((topValue <= targetcentre && bottomValue > targetcentre) && (targetRect.bottom + 10 > bottomValue)) {\n var textId = textDivs[i].id;\n if (textId !== '') {\n textIds.push(textId);\n }\n }\n }\n var selection = window.getSelection();\n selection.removeAllRanges();\n var range = document.createRange();\n var lengths = (textIds.length - 1);\n var d1 = document.getElementById(textIds[0]);\n var d2 = document.getElementById(textIds[lengths]);\n var childNodes = d2.childNodes.length;\n if (childNodes > 0) {\n range.setStart(d1.childNodes[0], 0);\n range.setEnd(d2.childNodes[0], d2.textContent.length);\n }\n else {\n range.setStart(d1.childNodes[0], 0);\n range.setEnd(d2, 1);\n }\n // eslint-disable-next-line radix\n this.selectionStartPage = parseInt(range.startContainer.parentElement.id.split('_text_')[1]);\n selection.addRange(range);\n this.isTextSelection = true;\n if (selection != null && this.pdfViewer.contextMenuSettings.contextMenuAction === 'MouseUp') {\n this.calculateContextMenuPosition(event.clientY, event.clientY);\n }\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.enableTextSelectionMode = function () {\n this.pdfViewerBase.isTextSelectionDisabled = false;\n if (!isNullOrUndefined(this.pdfViewerBase.viewerContainer)) {\n this.pdfViewerBase.viewerContainer.classList.remove('e-disable-text-selection');\n this.pdfViewerBase.viewerContainer.classList.add('e-enable-text-selection');\n this.pdfViewerBase.viewerContainer.addEventListener('selectstart', function () {\n return true;\n });\n }\n };\n TextSelection.prototype.clearTextSelection = function () {\n if (this.isTextSelection) {\n this.pdfViewerBase.textLayer.clearDivSelection();\n if (window.getSelection) {\n if (window.getSelection().removeAllRanges) {\n window.getSelection().removeAllRanges();\n }\n }\n if (this.pdfViewer.linkAnnotationModule) {\n var lowerPageIndex = this.pdfViewerBase.currentPageNumber - 3;\n lowerPageIndex = (lowerPageIndex < 0) ? 0 : lowerPageIndex;\n var higherPageIndex = this.pdfViewer.currentPageNumber + 1;\n // eslint-disable-next-line max-len\n higherPageIndex = (higherPageIndex < (this.pdfViewerBase.pageCount - 1)) ? higherPageIndex : (this.pdfViewerBase.pageCount - 1);\n for (var i = lowerPageIndex; i <= higherPageIndex; i++) {\n this.pdfViewer.linkAnnotationModule.modifyZindexForTextSelection(i, false);\n }\n }\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.textMarkupAnnotationModule) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n this.selectionRangeArray = [];\n this.isTextSelection = false;\n this.isTouchSelection = false;\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n this.pdfViewerBase.contextMenuModule.close();\n this.removeTouchElements();\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.removeTouchElements = function () {\n if (this.dropDivElementLeft) {\n this.dropDivElementLeft.parentElement.removeChild(this.dropDivElementLeft);\n this.dropDivElementLeft = null;\n this.dropElementLeft.style.transform = 'rotate(0deg)';\n }\n if (this.dropDivElementRight) {\n this.dropDivElementRight.parentElement.removeChild(this.dropDivElementRight);\n this.dropDivElementRight = null;\n this.dropElementRight.style.transform = 'rotate(-90deg)';\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.resizeTouchElements = function () {\n var viewerContainerLeft = this.pdfViewerBase.viewerContainer.getBoundingClientRect().left;\n if (this.dropDivElementLeft) {\n var elementClientRect = this.dropDivElementLeft.getBoundingClientRect();\n var dropElementHeight = 0;\n // eslint-disable-next-line max-len\n var leftCurrentPagePosition = this.pdfViewerBase.getElement('_pageDiv_' + this.topStoreLeft.pageNumber).getBoundingClientRect();\n this.dropDivElementLeft.style.left = parseFloat(this.topStoreLeft.left.toString()) * this.pdfViewerBase.getZoomFactor() + leftCurrentPagePosition.left - viewerContainerLeft - (elementClientRect.width / 2) + 'px';\n if (this.topStoreLeft.isHeightNeeded) {\n dropElementHeight = (elementClientRect.height / 2) * this.pdfViewerBase.getZoomFactor();\n }\n // eslint-disable-next-line max-len\n this.dropDivElementLeft.style.top = parseFloat(this.topStoreLeft.pageTop.toString()) * this.pdfViewerBase.getZoomFactor() + parseFloat(this.topStoreLeft.topClientValue.toString()) * this.pdfViewerBase.getZoomFactor() + dropElementHeight + 'px';\n }\n if (this.dropDivElementRight) {\n var elementClientRect = this.dropDivElementRight.getBoundingClientRect();\n var dropElementHeight = 0;\n // eslint-disable-next-line max-len\n var rightCurrentPagePosition = this.pdfViewerBase.getElement('_pageDiv_' + this.topStoreRight.pageNumber).getBoundingClientRect();\n this.dropDivElementRight.style.left = parseFloat(this.topStoreRight.left.toString()) * this.pdfViewerBase.getZoomFactor() + rightCurrentPagePosition.left - viewerContainerLeft - (elementClientRect.width / 2) + 'px';\n if (this.topStoreRight.isHeightNeeded) {\n dropElementHeight = (elementClientRect.height / 2) * this.pdfViewerBase.getZoomFactor();\n }\n // eslint-disable-next-line max-len\n this.dropDivElementRight.style.top = parseFloat(this.topStoreRight.pageTop.toString()) * this.pdfViewerBase.getZoomFactor() + parseFloat(this.topStoreRight.topClientValue.toString()) * this.pdfViewerBase.getZoomFactor() + dropElementHeight + 'px';\n }\n };\n /**\n * @param event\n * @private\n */\n TextSelection.prototype.textSelectionOnMouseup = function (event) {\n this.clear();\n if (window.getSelection().anchorNode !== null) {\n this.isMouseLeaveSelection = false;\n this.isSelectionStartTriggered = false;\n this.maintainSelectionOnZoom(true, false);\n this.fireTextSelectEnd();\n var isTextSearch = this.pdfViewerBase.textLayer.getTextSearchStatus();\n if (isTextSearch) {\n this.pdfViewerBase.textLayer.clearDivSelection();\n // eslint-disable-next-line\n var indexes = this.pdfViewer.textSearchModule.getIndexes();\n var lowerPageValue = parseFloat(indexes.lowerPageValue.toString());\n var higherPageValue = parseFloat(indexes.higherPageValue.toString());\n for (var i = lowerPageValue; i < higherPageValue; i++) {\n this.applySelectionRangeOnScroll(i);\n }\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n else {\n this.applySpanForSelection();\n }\n if (this.pdfViewer.linkAnnotationModule) {\n this.pdfViewer.linkAnnotationModule.modifyZindexForTextSelection(this.pdfViewerBase.currentPageNumber - 1, false);\n }\n if (this.isTextSearched && this.pdfViewer.contextMenuSettings.contextMenuAction === 'MouseUp') {\n this.calculateContextMenuPosition(event.clientY, event.clientX);\n this.isTextSearched = false;\n }\n }\n else {\n this.pdfViewerBase.textLayer.clearDivSelection();\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n this.pdfViewerBase.contextMenuModule.close();\n this.removeTouchElements();\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.fireTextSelectEnd = function () {\n if (this.selectionRangeArray.length !== 0) {\n var selectEndPageIndex = 0;\n var selectedText = '';\n // eslint-disable-next-line\n var selectedBounds = [];\n for (var k = 0; k < this.selectionRangeArray.length; k++) {\n selectedText += this.selectionRangeArray[k].textContent;\n for (var j = 0; j < this.selectionRangeArray[k].rectangleBounds.length; j++) {\n var currentBound = this.selectionRangeArray[k].rectangleBounds[j];\n // eslint-disable-next-line max-len\n selectedBounds.push({ left: currentBound.left, right: currentBound.right, top: currentBound.top, bottom: currentBound.bottom, width: currentBound.width, height: currentBound.height, pageIndex: this.selectionRangeArray[k].pageNumber + 1 });\n }\n if (this.selectionRangeArray[k].isBackward && k === 0) {\n selectEndPageIndex = this.selectionRangeArray[k].pageNumber + 1;\n }\n else if (!this.selectionRangeArray[k].isBackward && k === this.selectionRangeArray.length - 1) {\n selectEndPageIndex = this.selectionRangeArray[k].pageNumber + 1;\n }\n }\n this.pdfViewer.fireTextSelectionEnd(selectEndPageIndex, selectedText, selectedBounds);\n }\n };\n /**\n * @param isMaintainSelection\n * @param isStich\n * @param isMaintainSelection\n * @param isStich\n * @private\n */\n TextSelection.prototype.maintainSelectionOnZoom = function (isMaintainSelection, isStich) {\n var selection = window.getSelection();\n if (selection.type === 'Range' || (!selection.type && !selection.isCollapsed)) {\n var isBackward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n if (selection.anchorNode !== null) {\n // eslint-disable-next-line radix\n var anchorPageId = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n // eslint-disable-next-line radix\n var focusPageId = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n if (this.isTouchSelection && isNaN(focusPageId)) {\n var focusElement = selection.focusNode;\n if (focusElement === this.pdfViewerBase.pageContainer) {\n var lastChildNode = this.pdfViewerBase.pageContainer.lastChild;\n if (lastChildNode.classList.contains('e-pv-touch-select-drop')) {\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastChildNode.previousSibling.previousSibling.id.split('_pageDiv_')[1]);\n }\n else if (lastChildNode.classList.contains('e-pv-page-div')) {\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastChildNode.id.split('_pageDiv_')[1]);\n }\n }\n }\n if (!isBackward) {\n for (var i = anchorPageId; i <= focusPageId; i++) {\n this.maintainSelectionOnScroll(i, isStich);\n }\n }\n else {\n for (var i = anchorPageId; i >= focusPageId; i--) {\n this.maintainSelectionOnScroll(i, isStich);\n }\n }\n }\n if (!isMaintainSelection) {\n selection.removeAllRanges();\n }\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n TextSelection.prototype.isSelectionAvailableOnScroll = function (pageNumber) {\n var isSelectionAvailable = false;\n var ranges = this.selectionRangeArray;\n for (var i = 0; i < ranges.length; i++) {\n if (ranges[i] !== null) {\n if (pageNumber === ranges[i].pageNumber) {\n isSelectionAvailable = true;\n if (this.isTouchSelection && !this.pdfViewerBase.getMagnified()) {\n isSelectionAvailable = false;\n }\n break;\n }\n }\n }\n return isSelectionAvailable;\n };\n /**\n * @param pageNumber\n * @private\n */\n TextSelection.prototype.applySelectionRangeOnScroll = function (pageNumber) {\n if (this.isMouseLeaveSelection) {\n this.applySelectionMouseScroll(pageNumber);\n }\n else {\n this.applySelectionRange(pageNumber);\n }\n };\n // eslint-disable-next-line\n TextSelection.prototype.getSelectionRangeFromArray = function (pageNumber) {\n var isSelectionAvailable = false;\n var selectionRange = null;\n var ranges = this.selectionRangeArray;\n for (var i = 0; i < ranges.length; i++) {\n if (ranges[i] !== null) {\n if (pageNumber === ranges[i].pageNumber) {\n selectionRange = ranges[i];\n isSelectionAvailable = true;\n break;\n }\n }\n }\n return { isSelectionAvailable: isSelectionAvailable, selectionRange: selectionRange };\n };\n TextSelection.prototype.applySelectionRange = function (pageNumber) {\n var selectionObject = this.getSelectionRangeFromArray(pageNumber);\n var isSelectionAvailable = selectionObject.isSelectionAvailable;\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageNumber);\n if (textLayer) {\n if (isSelectionAvailable && textLayer.childNodes.length !== 0) {\n var selectionRange = selectionObject.selectionRange;\n var anchorOffsetDiv = void 0;\n var focusOffsetDiv = void 0;\n var anchorOffset = void 0;\n var focusOffset = void 0;\n if (selectionRange.isBackward) {\n // eslint-disable-next-line radix\n var startId = parseInt(selectionRange.endNode.split('_text_')[1].split('_')[1]);\n // eslint-disable-next-line radix\n var endId = parseInt(selectionRange.startNode.split('_text_')[1].split('_')[1]);\n if (startId < endId) {\n anchorOffsetDiv = startId;\n anchorOffset = selectionRange.endOffset;\n focusOffset = selectionRange.startOffset;\n focusOffsetDiv = endId;\n }\n else {\n anchorOffsetDiv = endId;\n anchorOffset = selectionRange.endOffset;\n focusOffsetDiv = startId;\n focusOffset = selectionRange.startOffset;\n }\n }\n else {\n // eslint-disable-next-line radix\n anchorOffsetDiv = parseInt(selectionRange.startNode.split('text_')[1].split('_')[1]);\n // eslint-disable-next-line radix\n focusOffsetDiv = parseInt(selectionRange.endNode.split('text_')[1].split('_')[1]);\n anchorOffset = selectionRange.startOffset;\n focusOffset = selectionRange.endOffset;\n }\n window.getSelection().removeAllRanges();\n // eslint-disable-next-line max-len\n this.pdfViewerBase.textLayer.applySpanForSelection(pageNumber, pageNumber, anchorOffsetDiv, focusOffsetDiv, anchorOffset, focusOffset);\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n }\n }\n };\n TextSelection.prototype.applySelectionMouseScroll = function (pageNumber) {\n var selectionObject = this.getSelectionRangeFromArray(pageNumber);\n var isSelectionAvailable = selectionObject.isSelectionAvailable;\n if (isSelectionAvailable) {\n var selectionRange = selectionObject.selectionRange;\n var selection = window.getSelection();\n var anchorNode = document.getElementById(selectionRange.startNode).childNodes[0];\n var focusNode = document.getElementById(selectionRange.endNode).childNodes[0];\n var range = document.createRange();\n if (selection.anchorNode === null) {\n if (!selectionRange.isBackward) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n }\n }\n else {\n // eslint-disable-next-line\n var anchorPageIndex = isNaN(parseInt(selection.anchorNode.parentElement.id.split('_text_')[1])) ? parseInt(selection.anchorNode.id.split('_pageDiv_')[1]) : parseInt(selection.anchorNode.parentElement.id.split('_text_')[1]);\n if (isNaN(anchorPageIndex)) {\n // eslint-disable-next-line radix\n anchorPageIndex = parseInt(selection.anchorNode.id.split('_text_')[1]);\n }\n // eslint-disable-next-line\n var focusPageIndex = isNaN(parseInt(selection.focusNode.parentElement.id.split('_text_')[1])) ? parseInt(selection.focusNode.id.split('_pageDiv_')[1]) : parseInt(selection.focusNode.parentElement.id.split('_text_')[1]);\n // eslint-disable-next-line radix\n var currentAnchorIndex = parseInt(selectionRange.startNode.split('_text_')[1]);\n if ((anchorPageIndex === focusPageIndex) && (anchorPageIndex === currentAnchorIndex)) {\n if (!selectionRange.isBackward) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n }\n }\n else if (!isNaN(anchorPageIndex)) {\n if (!isNaN(anchorPageIndex) && !selectionRange.isBackward) {\n // eslint-disable-next-line max-len\n if (anchorPageIndex < currentAnchorIndex && currentAnchorIndex < focusPageIndex && anchorPageIndex !== focusPageIndex) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n else if (anchorPageIndex < currentAnchorIndex) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n }\n else {\n var isBackward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n // eslint-disable-next-line max-len\n if (anchorPageIndex > currentAnchorIndex && currentAnchorIndex > focusPageIndex && anchorPageIndex !== focusPageIndex) {\n if (!isBackward) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n else {\n selection.extend(selection.focusNode, selection.focusOffset);\n }\n // eslint-disable-next-line max-len\n }\n else if (anchorPageIndex < currentAnchorIndex && currentAnchorIndex < focusPageIndex && anchorPageIndex !== focusPageIndex) {\n if (!isBackward) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n else {\n selection.extend(selection.focusNode, selection.focusOffset);\n }\n }\n else if (anchorPageIndex < currentAnchorIndex) {\n if (!isBackward) {\n if (currentAnchorIndex !== this.selectionRangeArray[0].pageNumber) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n }\n }\n else {\n if (currentAnchorIndex !== this.selectionRangeArray[0].pageNumber) {\n this.extendCurrentSelection(focusNode.parentElement, selectionRange.endOffset, selection, range);\n }\n else {\n this.extendCurrentSelection(anchorNode.parentElement, selectionRange.startOffset, selection, range);\n }\n }\n }\n else if (anchorPageIndex === currentAnchorIndex) {\n if (currentAnchorIndex === focusPageIndex) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n range = document.createRange();\n selection.extend(focusNode, selectionRange.endOffset);\n }\n else {\n if (isBackward) {\n this.extendCurrentSelection(focusNode.parentElement, selectionRange.endOffset, selection, range);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n }\n }\n else if (focusPageIndex === currentAnchorIndex) {\n if (isBackward) {\n selection.extend(selection.focusNode, selection.focusOffset);\n }\n else {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n }\n else if (anchorPageIndex > currentAnchorIndex) {\n // eslint-disable-next-line radix\n var currentAnchorOffset = parseInt(selectionRange.startNode.split('_' + currentAnchorIndex + '_')[1]);\n // eslint-disable-next-line radix\n var currentFocusOffset = parseInt(selectionRange.endNode.split('_' + currentAnchorIndex + '_')[1]);\n if (isBackward) {\n if (currentAnchorIndex !== this.selectionRangeArray[0].pageNumber) {\n if (currentAnchorOffset < currentFocusOffset) {\n this.extendCurrentSelection(anchorNode.parentElement, selectionRange.startOffset, selection, range);\n }\n else {\n range.setStart(focusNode.parentElement, selectionRange.endOffset);\n range.setEnd(selection.anchorNode, selection.anchorOffset);\n }\n }\n else {\n this.extendCurrentSelection(focusNode.parentElement, selectionRange.endOffset, selection, range);\n }\n }\n else {\n if (currentAnchorOffset < currentFocusOffset) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n }\n }\n }\n }\n else if (isNaN(anchorPageIndex)) {\n if (!selectionRange.isBackward) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n }\n }\n }\n if (range.toString() !== '') {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n };\n /**\n * @param pageNumber\n * @param isStich\n * @param pageNumber\n * @param isStich\n * @private\n */\n TextSelection.prototype.maintainSelectionOnScroll = function (pageNumber, isStich) {\n var isSelectionAvailable = this.isSelectionAvailableOnScroll(pageNumber);\n if (this.isTextSelection && !isSelectionAvailable) {\n this.maintainSelection(pageNumber, isStich);\n }\n };\n /**\n * @param pageNumber\n * @param isStich\n * @private\n */\n TextSelection.prototype.maintainSelection = function (pageNumber, isStich) {\n var selection = window.getSelection();\n if (this.isTextSelection && (selection.type === 'Range' || (!selection.type && !selection.isCollapsed))) {\n // eslint-disable-next-line\n var anchorPageId = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n // eslint-disable-next-line\n var focusPageId = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n if (isNaN(focusPageId) && selection.anchorNode !== null) {\n var backward_1 = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n if (!backward_1) {\n // eslint-disable-next-line radix\n var lastChildNode = this.pdfViewerBase.pageContainer.lastChild;\n if (lastChildNode.classList.contains('e-pv-touch-select-drop')) {\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastChildNode.previousSibling.previousSibling.id.split('_pageDiv_')[1]);\n }\n else {\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastChildNode.id.split('_pageDiv_')[1]);\n }\n }\n else {\n // eslint-disable-next-line radix\n focusPageId = parseInt(this.pdfViewerBase.pageContainer.firstChild.id.split('_pageDiv_')[1]);\n }\n }\n var backward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n if (this.isTouchSelection && pageNumber > focusPageId && pageNumber > anchorPageId) {\n return;\n }\n if (anchorPageId === focusPageId) {\n var selectionObject = null;\n var selectionBounds = this.getSelectionBounds(selection.getRangeAt(0), pageNumber);\n var selectionRectBounds = this.getSelectionRectangleBounds(selection.getRangeAt(0), pageNumber);\n // eslint-disable-next-line max-len\n var anchorOffsetValue = (this.getNodeElementFromNode(selection.anchorNode).childNodes.length === 1) ? selection.anchorOffset : this.getCorrectOffset(selection.anchorNode, selection.anchorOffset);\n var focusOffsetValue = (this.getNodeElementFromNode(selection.focusNode).childNodes.length === 1) ? selection.focusOffset : this.getCorrectOffset(selection.focusNode, selection.focusOffset);\n selectionObject = {\n isBackward: backward, startNode: this.getNodeElementFromNode(selection.anchorNode).id,\n startOffset: anchorOffsetValue, endNode: this.getNodeElementFromNode(selection.focusNode).id,\n // eslint-disable-next-line max-len\n endOffset: focusOffsetValue, textContent: this.allTextContent, pageNumber: pageNumber, bound: selectionBounds, rectangleBounds: selectionRectBounds\n };\n this.pushSelectionRangeObject(selectionObject, pageNumber);\n }\n else {\n var selectionObject = this.createRangeObjectOnScroll(pageNumber, anchorPageId, focusPageId);\n if (selectionObject) {\n this.pushSelectionRangeObject(selectionObject, pageNumber);\n if (isStich) {\n this.stichSelection(backward, selection, pageNumber);\n }\n }\n }\n }\n };\n TextSelection.prototype.getCorrectOffset = function (node, offset) {\n var offsetValue = 0;\n var parentElement = this.getNodeElementFromNode(node);\n for (var i = 0; i < parentElement.childNodes.length; i++) {\n if (parentElement.childNodes[i] === node) {\n offsetValue = offsetValue + offset;\n break;\n }\n else {\n offsetValue = offsetValue + parentElement.childNodes[i].textContent.length;\n }\n }\n return offsetValue;\n };\n TextSelection.prototype.pushSelectionRangeObject = function (selectionObject, pageNumber) {\n if (this.isTouchSelection) {\n var currentObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (obj.pageNumber === pageNumber);\n });\n if (currentObject.length > 0) {\n var currentObjectIndex = this.selectionRangeArray.indexOf(currentObject[0]);\n this.selectionRangeArray.splice(currentObjectIndex, 1, selectionObject);\n return;\n }\n }\n var nextPageObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (obj.pageNumber === (pageNumber + 1));\n });\n if (nextPageObject.length === 0) {\n if (this.isTouchSelection && this.selectionRangeArray.length !== 0) {\n var prevPageObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (obj.pageNumber === (pageNumber - 1));\n });\n if (prevPageObject.length !== 0) {\n var prevIndex = this.selectionRangeArray.indexOf(prevPageObject[0]);\n this.selectionRangeArray.splice(prevIndex + 1, 0, selectionObject);\n }\n else {\n var firstObject = this.selectionRangeArray[0];\n if (pageNumber < firstObject.pageNumber) {\n this.selectionRangeArray.splice(0, 0, selectionObject);\n }\n else {\n this.selectionRangeArray.push(selectionObject);\n }\n }\n }\n else {\n this.selectionRangeArray.push(selectionObject);\n }\n }\n else {\n var index = this.selectionRangeArray.indexOf(nextPageObject[0]);\n this.selectionRangeArray.splice(index, 0, selectionObject);\n }\n };\n TextSelection.prototype.extendCurrentSelection = function (element, offset, selection, range) {\n var currentFocusOffset = selection.focusOffset;\n var currentFocusElement = selection.focusNode.parentElement.id;\n // eslint-disable-next-line\n var focusPageId = isNaN(parseInt(currentFocusElement.split('_text_')[1])) ? parseInt(selection.focusNode.id.split('_pageDiv_')[1]) : parseInt(currentFocusElement.split('_text_')[1]);\n // eslint-disable-next-line radix\n if (isNaN(parseInt(currentFocusElement.split('_text_')[1]))) {\n // eslint-disable-next-line\n currentFocusElement = this.pdfViewerBase.getElement('_textLayer_' + (focusPageId + 1)).firstChild.id;\n }\n range.setStart(element.childNodes[0], offset);\n range.setEnd(element.childNodes[0], offset);\n selection.removeAllRanges();\n selection.addRange(range);\n selection.extend(document.getElementById(currentFocusElement).childNodes[0], currentFocusOffset);\n };\n TextSelection.prototype.stichSelection = function (backward, selection, pageNumber) {\n var range = document.createRange();\n var nextPageElement;\n if (backward) {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber - 1));\n if (nextPageElement) {\n var lastElement = nextPageElement.lastChild;\n if (lastElement) {\n this.extendCurrentSelection(lastElement, this.getTextLastLength(lastElement), selection, range);\n }\n else {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber - 2));\n lastElement = nextPageElement.lastChild;\n this.extendCurrentSelection(lastElement, this.getTextLastLength(lastElement), selection, range);\n }\n }\n else {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber + 1));\n var lastElement = nextPageElement.firstChild;\n this.extendCurrentSelection(lastElement, 0, selection, range);\n }\n }\n else {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber + 1));\n if (nextPageElement) {\n var firstElement = nextPageElement.firstChild;\n if (!firstElement) {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber + 2));\n firstElement = nextPageElement.firstChild;\n range.setStart(firstElement.childNodes[0], 0);\n }\n else {\n range.setStart(firstElement.childNodes[0], 0);\n }\n range.setEnd(selection.focusNode, selection.focusOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n };\n /**\n * @param currentPageNumber\n * @private\n */\n TextSelection.prototype.textSelectionOnMouseWheel = function (currentPageNumber) {\n this.isMouseLeaveSelection = true;\n this.stichSelectionOnScroll(currentPageNumber);\n };\n /**\n * @param currentPageNumber\n * @private\n */\n TextSelection.prototype.stichSelectionOnScroll = function (currentPageNumber) {\n var selection = window.getSelection();\n if (this.isTextSelection) {\n // eslint-disable-next-line radix\n var anchorPageId = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n // eslint-disable-next-line radix\n var focusPageId = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n var nextPageElement = void 0;\n if (anchorPageId !== currentPageNumber && focusPageId !== currentPageNumber) {\n var backward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n if (!backward) {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (currentPageNumber - 1));\n if (nextPageElement) {\n var lastElement = nextPageElement.lastChild;\n if (lastElement) {\n if (lastElement.childNodes[0]) {\n this.extendSelectionStich(lastElement.childNodes[0], this.getTextLastLength(lastElement), selection);\n }\n else {\n this.extendSelectionStich(lastElement, this.getTextLastLength(lastElement), selection);\n }\n }\n else {\n nextPageElement = this.pdfViewerBase.getElement('_textLayer_' + currentPageNumber);\n var lastElement_1 = nextPageElement.firstChild;\n this.extendSelectionStich(lastElement_1.childNodes[0], 0, selection);\n }\n }\n }\n else {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (currentPageNumber - 1));\n if (nextPageElement) {\n var lastElement = nextPageElement.firstChild;\n if (lastElement) {\n this.extendSelectionStich(lastElement.childNodes[0], 0, selection);\n }\n }\n }\n }\n this.maintainSelectionArray();\n }\n };\n TextSelection.prototype.extendSelectionStich = function (node, offset, selection) {\n if (selection.extend) {\n selection.extend(node, offset);\n }\n };\n /**\n * @param pageNumber\n * @param anchorPageId\n * @param focusPageId\n * @param pageNumber\n * @param anchorPageId\n * @param focusPageId\n * @private\n */\n TextSelection.prototype.createRangeObjectOnScroll = function (pageNumber, anchorPageId, focusPageId) {\n var selectionObject = null;\n var selection = window.getSelection();\n if (selection.anchorNode !== null) {\n var backward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n var firstElement = void 0;\n var lastElement = void 0;\n var startOffset = void 0;\n var endOffset = void 0;\n var element = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageNumber);\n if (element.childNodes) {\n if (!backward) {\n if (pageNumber === anchorPageId) {\n firstElement = this.getNodeElementFromNode(selection.anchorNode);\n // eslint-disable-next-line max-len\n lastElement = element.lastChild;\n startOffset = this.getCorrectOffset(selection.anchorNode, selection.anchorOffset);\n endOffset = this.getTextLastLength(lastElement);\n }\n else if (pageNumber > anchorPageId && pageNumber < focusPageId) {\n // eslint-disable-next-line max-len\n firstElement = element.firstChild;\n // eslint-disable-next-line max-len\n lastElement = element.lastChild;\n startOffset = 0;\n endOffset = this.getTextLastLength(lastElement);\n }\n else if (pageNumber === focusPageId) {\n // eslint-disable-next-line max-len\n firstElement = element.firstChild;\n var pageNumberIndex = this.getNodeElementFromNode(selection.focusNode).id.indexOf(focusPageId.toString());\n if (pageNumberIndex !== -1) {\n lastElement = this.getNodeElementFromNode(selection.focusNode);\n endOffset = this.getCorrectOffset(selection.focusNode, selection.focusOffset);\n }\n else {\n // eslint-disable-next-line max-len\n lastElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + focusPageId).lastChild;\n endOffset = this.getTextLastLength(lastElement);\n }\n startOffset = 0;\n }\n }\n else {\n if (pageNumber === anchorPageId) {\n firstElement = this.getNodeElementFromNode(selection.anchorNode);\n // eslint-disable-next-line max-len\n lastElement = element.firstChild;\n startOffset = this.getCorrectOffset(selection.anchorNode, selection.anchorOffset);\n endOffset = 0;\n }\n else if (pageNumber < anchorPageId && pageNumber > focusPageId) {\n // eslint-disable-next-line max-len\n firstElement = element.firstChild;\n // eslint-disable-next-line max-len\n lastElement = element.lastChild;\n startOffset = 0;\n endOffset = this.getTextLastLength(lastElement);\n }\n else if (pageNumber === focusPageId) {\n firstElement = this.getNodeElementFromNode(selection.focusNode);\n // eslint-disable-next-line max-len\n lastElement = element.lastChild;\n startOffset = this.getCorrectOffset(selection.focusNode, selection.focusOffset);\n endOffset = this.getTextLastLength(lastElement);\n }\n }\n if (firstElement && lastElement) {\n // eslint-disable-next-line max-len\n var selectionRangeObject = this.getSelectionRangeObject(firstElement.id, startOffset, lastElement.id, endOffset, pageNumber);\n var selectionString = selectionRangeObject.toString();\n var selectionBound = this.getSelectionBounds(selectionRangeObject, pageNumber);\n var selectionRectBounds = this.getSelectionRectangleBounds(selectionRangeObject, pageNumber);\n // eslint-disable-next-line max-len\n return selectionObject = { isBackward: backward, startNode: firstElement.id, startOffset: startOffset, endNode: lastElement.id, endOffset: endOffset, textContent: this.allTextContent, pageNumber: pageNumber, bound: selectionBound, rectangleBounds: selectionRectBounds };\n }\n else {\n return null;\n }\n }\n }\n return null;\n };\n TextSelection.prototype.getSelectionRangeObject = function (startNode, startOffset, endNode, endOffset, pageNumber) {\n var startElement = document.getElementById(startNode);\n var endElement = document.getElementById(endNode);\n if (startElement.childNodes[0]) {\n startElement = startElement.childNodes[0];\n }\n if (endElement.childNodes[0]) {\n endElement = endElement.childNodes[0];\n }\n // eslint-disable-next-line radix\n var currentAnchorOffset = parseInt(startNode.split('_' + pageNumber + '_')[1]);\n // eslint-disable-next-line radix\n var currentFocusOffset = parseInt(endNode.split('_' + pageNumber + '_')[1]);\n var range = document.createRange();\n if (currentAnchorOffset <= currentFocusOffset) {\n range.setStart(startElement, startOffset);\n range.setEnd(endElement, endOffset);\n }\n else {\n range.setStart(endElement, endOffset);\n range.setEnd(startElement, startOffset);\n }\n return range;\n };\n TextSelection.prototype.getSelectionBounds = function (range, pageNumber) {\n var startElement = this.getNodeElementFromNode(range.startContainer);\n var endElement = this.getNodeElementFromNode(range.endContainer);\n var bounds = null;\n if (startElement !== endElement) {\n var newStartRange = document.createRange();\n // eslint-disable-next-line max-len\n var startRange = this.createRangeForSelection(range.startContainer, range.endContainer, range.startOffset, range.endOffset, newStartRange);\n bounds = this.normalizeBounds(startRange.getBoundingClientRect(), pageNumber);\n }\n else {\n bounds = this.normalizeBounds(range.getBoundingClientRect(), pageNumber);\n }\n return bounds;\n };\n TextSelection.prototype.getSelectionRectangleBounds = function (range, pageNumber) {\n var selectionBounds = [];\n var startElement = this.getNodeElementFromNode(range.startContainer);\n var endElement = this.getNodeElementFromNode(range.endContainer);\n var bounds = null;\n var selectionTexts = [];\n this.allTextContent = \"\";\n if (startElement !== endElement) {\n var startOffset = 0;\n var endOffset = 0;\n var currentId = 0;\n var anchorPageId = this.pdfViewerBase.textLayer.getPageIndex(range.startContainer);\n var anchorTextId = this.pdfViewerBase.textLayer.getTextIndex(range.startContainer, anchorPageId);\n var focusPageId = this.pdfViewerBase.textLayer.getPageIndex(range.endContainer);\n var focusTextId = this.pdfViewerBase.textLayer.getTextIndex(range.endContainer, focusPageId);\n var textDivs = this.pdfViewerBase.getElement('_textLayer_' + focusPageId).childNodes;\n if (pageNumber === anchorPageId) {\n currentId = anchorTextId;\n }\n else {\n currentId = 0;\n }\n for (var j = currentId; j < textDivs.length; j++) {\n var textElement = textDivs[j];\n if (j === anchorTextId) {\n startOffset = range.startOffset;\n }\n else {\n startOffset = 0;\n }\n if (j === focusTextId) {\n endOffset = range.endOffset;\n }\n else {\n endOffset = textElement.textContent.length;\n }\n if (startOffset !== 0 || endOffset !== 0) {\n var newRange = document.createRange();\n for (var k = 0; k < textElement.childNodes.length; k++) {\n var node = textElement.childNodes[k];\n newRange.setStart(node, startOffset);\n newRange.setEnd(node, endOffset);\n }\n var boundingRect = void 0;\n if (this.pdfViewerBase.clientSideRendering) {\n boundingRect = this.normalizeBounds(newRange.getBoundingClientRect(), pageNumber);\n var pageDetails = this.pdfViewerBase.pageSize[pageNumber];\n var textRotate = 0;\n var pageRotation = this.getAngle(pageDetails.rotation);\n if (textElement && textElement.style.transform !== '') {\n if (textElement.style.transform.startsWith('rotate(90deg)')) {\n textRotate = 90;\n }\n else if (textElement.style.transform.startsWith('rotate(180deg)')) {\n textRotate = 180;\n }\n else if (textElement.style.transform.startsWith('rotate(-90deg)') || textElement.style.transform.startsWith('rotate(270deg)')) {\n textRotate = 270;\n }\n else {\n textRotate = 0;\n }\n }\n boundingRect.rotation = textRotate;\n }\n else {\n boundingRect = this.normalizeBounds(newRange.getBoundingClientRect(), pageNumber);\n }\n selectionBounds.push(boundingRect);\n var textselection = newRange.toString();\n selectionTexts.push(textselection);\n newRange.detach();\n if (textselection === '\\r\\n') {\n if (j === focusTextId + 1) {\n break;\n }\n }\n else if (j === focusTextId) {\n break;\n }\n }\n }\n for (var i = 0; i < selectionTexts.length; i++) {\n var text = selectionTexts[i];\n // While copy and paste for space construct new line\n if ((i != 0 && text === ' ' && selectionTexts[i - 1].includes('\\r\\n')) || (i != selectionTexts.length - 1 && selectionTexts[i] === ' ' && selectionTexts[i + 1] === '\\r\\n')) {\n text = '';\n }\n if (text.slice(text.length - 2) !== '\\r\\n' || i === selectionTexts.length - 1) {\n this.allTextContent += text;\n }\n else {\n this.allTextContent += text;\n }\n }\n }\n else {\n bounds = this.normalizeBounds(range.getBoundingClientRect(), pageNumber);\n if (this.pdfViewerBase.clientSideRendering) {\n var pageDetails = this.pdfViewerBase.pageSize[pageNumber];\n var textRotate = 0;\n var pageRotation = this.getAngle(pageDetails.rotation);\n if (startElement && startElement.style.transform !== '') {\n if (startElement.style.transform.startsWith('rotate(90deg)')) {\n textRotate = 90;\n }\n else if (startElement.style.transform.startsWith('rotate(180deg)')) {\n textRotate = 180;\n }\n else if (startElement.style.transform.startsWith('rotate(-90deg)') || startElement.style.transform.startsWith('rotate(270deg)')) {\n textRotate = 270;\n }\n else {\n textRotate = 0;\n }\n }\n bounds.rotation = textRotate;\n }\n this.allTextContent = range.toString();\n selectionBounds.push(bounds);\n }\n return selectionBounds;\n };\n TextSelection.prototype.getAngle = function (rotation) {\n var angle = 0;\n if (rotation) {\n switch (rotation) {\n case 0:\n angle = 0;\n break;\n case 1:\n angle = 90;\n break;\n case 2:\n angle = 180;\n break;\n case 3:\n angle = 270;\n break;\n }\n }\n return angle;\n };\n ;\n TextSelection.prototype.getTextId = function (elementId) {\n var index = elementId.lastIndexOf('_');\n var divId = elementId.substring(index + 1, elementId.length);\n // eslint-disable-next-line radix\n return parseInt(divId);\n };\n TextSelection.prototype.normalizeBounds = function (bound, pageNumber) {\n var newBounds = null;\n var currentPageElement = this.pdfViewerBase.getElement('_pageDiv_' + pageNumber);\n if (this.pdfViewerBase.isMixedSizeDocument) {\n var currentTextElement = this.pdfViewerBase.getElement('_textLayer_' + pageNumber);\n if (currentTextElement) {\n currentPageElement = currentTextElement;\n }\n }\n var currentPageRect = currentPageElement.getBoundingClientRect();\n newBounds = {\n bottom: this.getMagnifiedValue(bound.bottom - currentPageRect.top), height: this.getMagnifiedValue(bound.height),\n left: this.getMagnifiedValue(bound.left - currentPageRect.left), top: this.getMagnifiedValue(bound.top - currentPageRect.top),\n right: this.getMagnifiedValue(bound.right - currentPageRect.left), width: this.getMagnifiedValue(bound.width)\n };\n return newBounds;\n };\n TextSelection.prototype.getMagnifiedValue = function (value) {\n return value / this.pdfViewerBase.getZoomFactor();\n };\n /**\n * @param pageNumber\n * @private\n */\n TextSelection.prototype.getCurrentSelectionBounds = function (pageNumber) {\n var bound = null;\n var ranges = this.selectionRangeArray;\n for (var i = 0; i < ranges.length; i++) {\n if (ranges[i] !== null) {\n if (pageNumber === ranges[i].pageNumber) {\n bound = ranges[i].bound;\n }\n }\n }\n return bound;\n };\n TextSelection.prototype.createRangeForSelection = function (start, end, startOffset, endOffset, range) {\n range.setStart(start, startOffset);\n range.setEnd(end, endOffset);\n return range;\n };\n TextSelection.prototype.maintainSelectionArray = function () {\n var _this = this;\n if (this.selectionRangeArray.length !== 0) {\n var selection = window.getSelection();\n var isBackward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n // eslint-disable-next-line\n var anchorPage = isNaN(parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1])) ? parseInt(selection.anchorNode.id.split('_pageDiv_')[1]) : parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n if (isNaN(anchorPage)) {\n // eslint-disable-next-line radix\n anchorPage = parseInt(selection.anchorNode.id.split('_text_')[1]);\n }\n // eslint-disable-next-line\n var focusPage_1 = isNaN(parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1])) ? parseInt(selection.focusNode.id.split('_pageDiv_')[1]) : parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n if (isNaN(focusPage_1)) {\n // eslint-disable-next-line\n focusPage_1 = isNaN(parseInt(selection.focusNode.id.split('_text_')[1])) ? parseInt(selection.focusNode.id.split('_textLayer_')[1]) : parseInt(selection.focusNode.id.split('_text_')[1]);\n }\n var arrayObject = [];\n if (!isBackward) {\n arrayObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (!((_this.selectionStartPage <= obj.pageNumber) && (obj.pageNumber < focusPage_1)));\n });\n }\n else {\n arrayObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (!((focusPage_1 < obj.pageNumber) && (obj.pageNumber <= _this.selectionStartPage)));\n });\n }\n if (arrayObject.length > 0) {\n for (var i = 0; i < arrayObject.length; i++) {\n var indexInArray = this.selectionRangeArray.indexOf(arrayObject[i]);\n if (indexInArray !== -1) {\n this.selectionRangeArray.splice(indexInArray, 1);\n }\n }\n if (this.selectionRangeArray.length === 1) {\n // eslint-disable-next-line max-len\n if (this.selectionRangeArray[0].pageNumber === anchorPage || this.selectionRangeArray[0].pageNumber === focusPage_1) {\n arrayObject = [];\n }\n }\n }\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.applySpanForSelection = function () {\n var selection = window.getSelection();\n // eslint-disable-next-line max-len\n if (selection.anchorNode === selection.focusNode && selection.anchorOffset === selection.focusOffset && !selection.isCollapsed) {\n selection.removeAllRanges();\n }\n // eslint-disable-next-line max-len\n if (selection.anchorNode !== null && this.pdfViewerBase.viewerContainer.contains(this.getNodeElementFromNode(selection.anchorNode))) {\n var isBackWardSelection = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n var anchorPageId = void 0;\n var focusPageId = void 0;\n var anchorOffsetDiv = void 0;\n var focusOffsetDiv = void 0;\n var anchorOffset = void 0;\n var focusOffset = void 0;\n if (isBackWardSelection) {\n // eslint-disable-next-line radix\n anchorPageId = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n // eslint-disable-next-line radix\n focusPageId = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n // eslint-disable-next-line radix\n anchorOffsetDiv = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1].split('_')[1]);\n // eslint-disable-next-line radix\n focusOffsetDiv = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1].split('_')[1]);\n anchorOffset = selection.focusOffset;\n focusOffset = selection.anchorOffset;\n }\n else {\n var anchorElement = this.getNodeElementFromNode(selection.anchorNode);\n var focusElement = this.getNodeElementFromNode(selection.focusNode);\n // eslint-disable-next-line\n anchorPageId = (anchorElement.id.indexOf('text_') !== -1) ? parseInt(anchorElement.id.split('text_')[1]) : parseInt(anchorElement.id.split('_textLayer_')[1]);\n // eslint-disable-next-line\n focusPageId = (focusElement.id.indexOf('text_') !== -1) ? parseInt(focusElement.id.split('text_')[1]) : parseInt(focusElement.id.split('_textLayer_')[1]);\n var isFocusChanged = false;\n if (this.isTouchSelection) {\n if (selection.focusNode === this.pdfViewerBase.pageContainer) {\n var lastChildNode = this.pdfViewerBase.pageContainer.lastChild;\n if (lastChildNode.classList.contains('e-pv-touch-select-drop')) {\n var lastPageDiv = lastChildNode.previousSibling.previousSibling;\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastPageDiv.id.split('_pageDiv_')[1]);\n focusElement = this.pdfViewerBase.getElement('_textLayer_' + focusPageId).lastChild;\n isFocusChanged = true;\n }\n else if (lastChildNode.classList.contains('e-pv-page-div')) {\n var lastPageDiv = lastChildNode;\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastPageDiv.id.split('_pageDiv_')[1]);\n focusElement = this.pdfViewerBase.getElement('_textLayer_' + focusPageId).lastChild;\n isFocusChanged = true;\n }\n }\n }\n if (anchorElement.classList.contains('e-pv-maintaincontent')) {\n anchorElement = this.getNodeElementFromNode(anchorElement);\n // eslint-disable-next-line radix\n anchorPageId = parseInt(anchorElement.id.split('text_')[1]);\n }\n if (focusElement.classList.contains('e-pv-maintaincontent')) {\n focusElement = this.getNodeElementFromNode(focusElement);\n // eslint-disable-next-line radix\n focusPageId = parseInt(focusElement.id.split('text_')[1]);\n }\n if (anchorPageId === focusPageId) {\n if (anchorElement.contains(focusElement)) {\n anchorElement = focusElement;\n }\n if (focusElement.contains(anchorElement)) {\n focusElement = anchorElement;\n }\n }\n // eslint-disable-next-line radix\n anchorOffsetDiv = (anchorElement.id.split('text_')[1]) ? parseInt(anchorElement.id.split('text_')[1].split('_')[1]) : null;\n // eslint-disable-next-line radix\n focusOffsetDiv = (focusElement.id.split('text_')[1]) ? parseInt(focusElement.id.split('text_')[1].split('_')[1]) : null;\n anchorOffsetDiv = isNaN(anchorOffsetDiv) ? focusOffsetDiv : anchorOffsetDiv;\n focusOffsetDiv = isNaN(focusOffsetDiv) ? anchorOffsetDiv : focusOffsetDiv;\n anchorOffset = selection.anchorOffset;\n focusOffset = !isFocusChanged ? selection.focusOffset : focusElement.textContent.length;\n }\n if (this.pdfViewerBase.checkIsNormalText()) {\n selection.removeAllRanges();\n this.pdfViewerBase.textLayer.clearDivSelection();\n // eslint-disable-next-line max-len\n this.pdfViewerBase.textLayer.applySpanForSelection(anchorPageId, focusPageId, anchorOffsetDiv, focusOffsetDiv, anchorOffset, focusOffset);\n }\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n }\n };\n /**\n * @param event\n * @param x\n * @param y\n * @private\n */\n TextSelection.prototype.initiateTouchSelection = function (event, x, y) {\n if (this.pdfViewerBase.isShapeBasedAnnotationsEnabled()) {\n if (this.pdfViewer.selectedItems.annotations.length > 0) {\n this.pdfViewer.clearSelection(this.pdfViewer.selectedItems.annotations[0].pageIndex);\n }\n }\n // eslint-disable-next-line\n var element = event.target;\n var belowElements = document.elementsFromPoint(event.touches[0].clientX, event.touches[0].clientY);\n if (belowElements.length !== 0) {\n if (belowElements[0].classList.contains('e-pv-hyperlink') && belowElements[1].classList.contains('e-pv-text')) {\n element = belowElements[1];\n }\n }\n var pageNumber = parseFloat(element.id.split('_')[2]);\n this.pdfViewer.fireTextSelectionStart(pageNumber + 1);\n this.selectAWord(element, x, y, true);\n this.createTouchSelectElement(event);\n this.maintainSelectionOnZoom(true, false);\n this.fireTextSelectEnd();\n this.applySpanForSelection();\n };\n // eslint-disable-next-line\n TextSelection.prototype.selectTextByTouch = function (element, x, y, isForwardSelection, target, isCloserMovement) {\n var isTextSelected = false;\n if (element.nodeType === element.TEXT_NODE) {\n var rangeObject = element.ownerDocument.createRange();\n var selection = window.getSelection();\n rangeObject.selectNodeContents(element);\n var currentPosition = 0;\n var endPosition = rangeObject.endOffset;\n while (currentPosition < endPosition) {\n rangeObject.setStart(element, currentPosition);\n rangeObject.setEnd(element, currentPosition + 1);\n var rangeBounds = rangeObject.getBoundingClientRect();\n if (rangeBounds.left <= x && rangeBounds.right >= x && rangeBounds.top <= y && rangeBounds.bottom >= y) {\n if (selection.anchorNode != null) {\n if (isForwardSelection) {\n rangeObject.setStart(selection.anchorNode, selection.anchorOffset);\n }\n // eslint-disable-next-line max-len\n rangeObject = this.setTouchSelectionStartPosition(selection, rangeObject, isForwardSelection, target, element, currentPosition, isCloserMovement);\n if (isForwardSelection) {\n selection.extend(element, currentPosition);\n }\n isTextSelected = true;\n }\n rangeObject.detach();\n return isTextSelected;\n }\n currentPosition += 1;\n }\n }\n else {\n for (var i = 0; i < element.childNodes.length; i++) {\n var range = element.childNodes[i].ownerDocument.createRange();\n range.selectNodeContents(element.childNodes[i]);\n var rangeBounds = range.getBoundingClientRect();\n if (rangeBounds.left <= x && rangeBounds.right >= x && rangeBounds.top <= y && rangeBounds.bottom >= y) {\n range.detach();\n return (this.selectTextByTouch(element.childNodes[i], x, y, isForwardSelection, target, isCloserMovement));\n }\n else {\n range.detach();\n }\n }\n }\n return isTextSelected;\n };\n // eslint-disable-next-line\n TextSelection.prototype.setTouchSelectionStartPosition = function (selection, range, isForwardSelection, target, element, currentPosition, isCloserMovement) {\n if (isForwardSelection) {\n if (target === 'left') {\n // eslint-disable-next-line\n var startNode = this.getTouchFocusElement(selection, true);\n range.setStart(startNode.focusNode, startNode.focusOffset);\n range.setEnd(element, currentPosition);\n this.selectionAnchorTouch = { anchorNode: range.endContainer.parentElement.id, anchorOffset: range.endOffset };\n }\n else if (target === 'right') {\n // eslint-disable-next-line\n var startNode = this.getTouchAnchorElement(selection, false);\n range.setStart(startNode.anchorNode, startNode.anchorOffset);\n range.setEnd(element, currentPosition);\n this.selectionFocusTouch = { focusNode: range.endContainer.parentElement.id, focusOffset: range.endOffset };\n }\n }\n else {\n if (target === 'left') {\n if (!isCloserMovement) {\n // eslint-disable-next-line\n var startNode = this.getTouchFocusElement(selection, false);\n range.setStart(element, currentPosition);\n // eslint-disable-next-line radix\n range.setEnd(startNode.focusNode, startNode.focusOffset);\n if (range.toString() === '') {\n range.setStart(element, currentPosition);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n this.selectionAnchorTouch = { anchorNode: range.startContainer.parentElement.id, anchorOffset: range.startOffset };\n }\n else {\n range.setStart(element, currentPosition);\n range.setEnd(selection.focusNode, selection.focusOffset);\n this.selectionAnchorTouch = { anchorNode: range.startContainer.parentElement.id, anchorOffset: range.startOffset };\n }\n }\n else if (target === 'right') {\n // eslint-disable-next-line\n var startNode = this.getTouchAnchorElement(selection, true);\n range.setStart(element, currentPosition);\n range.setEnd(startNode.anchorNode, startNode.anchorOffset);\n if (range.toString() === '') {\n range.setStart(startNode.anchorNode, startNode.anchorOffset);\n range.setEnd(element, currentPosition);\n }\n this.selectionFocusTouch = { focusNode: range.startContainer.parentElement.id, focusOffset: range.startOffset };\n }\n }\n selection.removeAllRanges();\n selection.addRange(range);\n return range;\n };\n TextSelection.prototype.getTouchAnchorElement = function (selection, isCurrentFocus) {\n var element = document.getElementById(this.selectionAnchorTouch.anchorNode.toString());\n var startNode = null;\n var offset = 0;\n if (element) {\n startNode = element.childNodes[0];\n // eslint-disable-next-line radix\n offset = parseInt(this.selectionAnchorTouch.anchorOffset.toString());\n }\n else {\n if (isCurrentFocus) {\n startNode = selection.focusNode;\n offset = selection.focusOffset;\n }\n else {\n startNode = selection.anchorNode;\n offset = selection.anchorOffset;\n }\n }\n return { anchorNode: startNode, anchorOffset: offset };\n };\n TextSelection.prototype.getTouchFocusElement = function (selection, isCurrentAnchor) {\n var element = document.getElementById(this.selectionFocusTouch.focusNode.toString());\n var startNode = null;\n var offset = 0;\n if (element) {\n startNode = element.childNodes[0];\n // eslint-disable-next-line radix\n offset = parseInt(this.selectionFocusTouch.focusOffset.toString());\n }\n else {\n if (isCurrentAnchor) {\n startNode = selection.anchorNode;\n offset = selection.anchorOffset;\n }\n else {\n startNode = selection.focusNode;\n offset = selection.focusOffset;\n }\n }\n return { focusNode: startNode, focusOffset: offset };\n };\n TextSelection.prototype.createTouchSelectElement = function (event) {\n var topMargin = 10;\n this.isTouchSelection = true;\n var selection = window.getSelection();\n if (selection.type === 'Range') {\n // eslint-disable-next-line max-len\n this.dropDivElementLeft = createElement('div', { id: this.pdfViewer.element.id + '_touchSelect_droplet_left', className: 'e-pv-touch-select-drop' });\n // eslint-disable-next-line max-len\n this.dropDivElementRight = createElement('div', { id: this.pdfViewer.element.id + '_touchSelect_droplet_right', className: 'e-pv-touch-select-drop' });\n this.dropElementLeft = createElement('div', { className: 'e-pv-touch-ellipse' });\n this.dropElementLeft.style.transform = 'rotate(0deg)';\n this.dropDivElementLeft.appendChild(this.dropElementLeft);\n this.dropElementRight = createElement('div', { className: 'e-pv-touch-ellipse' });\n this.dropElementRight.style.transform = 'rotate(-90deg)';\n this.dropElementRight.style.margin = '0 9px 0 0';\n this.dropDivElementRight.appendChild(this.dropElementRight);\n this.pdfViewerBase.pageContainer.appendChild(this.dropDivElementLeft);\n this.pdfViewerBase.pageContainer.appendChild(this.dropDivElementRight);\n var range = selection.getRangeAt(0);\n var rangePosition = range.getBoundingClientRect();\n var dropElementRect = this.dropDivElementLeft.getBoundingClientRect();\n // eslint-disable-next-line max-len\n var pageTopValue = this.pdfViewerBase.pageSize[this.pdfViewerBase.currentPageNumber - 1].top;\n var viewerLeftPosition = this.pdfViewerBase.viewerContainer.getBoundingClientRect().left;\n var topClientValue = this.getClientValueTop(rangePosition.top, this.pdfViewerBase.currentPageNumber - 1);\n // eslint-disable-next-line max-len\n var topPositionValue = topClientValue + pageTopValue * this.pdfViewerBase.getZoomFactor() + (dropElementRect.height / 2) * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropDivElementLeft.style.top = topPositionValue;\n this.dropDivElementLeft.style.left = rangePosition.left - (viewerLeftPosition + (dropElementRect.width)) + 'px';\n this.dropDivElementRight.style.top = topPositionValue;\n // eslint-disable-next-line max-len\n this.dropDivElementRight.style.left = rangePosition.left + rangePosition.width - viewerLeftPosition + 'px';\n var currentPageLeft = this.pdfViewerBase.getElement('_pageDiv_' + (this.pdfViewerBase.currentPageNumber - 1)).getBoundingClientRect().left;\n var currentRangeLeft = rangePosition.left - currentPageLeft;\n // eslint-disable-next-line max-len\n this.topStoreLeft = { pageTop: pageTopValue, topClientValue: this.getMagnifiedValue(topClientValue), pageNumber: this.pdfViewerBase.currentPageNumber - 1, left: this.getMagnifiedValue(currentRangeLeft), isHeightNeeded: true };\n // eslint-disable-next-line max-len\n this.topStoreRight = { pageTop: pageTopValue, topClientValue: this.getMagnifiedValue(topClientValue), pageNumber: this.pdfViewerBase.currentPageNumber - 1, left: this.getMagnifiedValue(currentRangeLeft + rangePosition.width), isHeightNeeded: true };\n this.dropDivElementLeft.addEventListener('touchstart', this.onLeftTouchSelectElementTouchStart);\n this.dropDivElementLeft.addEventListener('touchmove', this.onLeftTouchSelectElementTouchMove);\n this.dropDivElementLeft.addEventListener('touchend', this.onLeftTouchSelectElementTouchEnd);\n this.dropDivElementRight.addEventListener('touchstart', this.onRightTouchSelectElementTouchStart);\n this.dropDivElementRight.addEventListener('touchmove', this.onRightTouchSelectElementTouchMove);\n this.dropDivElementRight.addEventListener('touchend', this.onRightTouchSelectElementTouchEnd);\n // eslint-disable-next-line max-len\n this.calculateContextMenuPosition((event.touches[0].clientY + this.dropDivElementLeft.clientHeight + topMargin), (parseInt(this.dropDivElementLeft.style.left, 10) - topMargin));\n }\n };\n /**\n * @param top\n * @param left\n * @private\n */\n // eslint-disable-next-line\n TextSelection.prototype.calculateContextMenuPosition = function (top, left) {\n var _this = this;\n var topMargin = 10;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line\n var contextTop = top - this.contextMenuHeight;\n if (contextTop < this.pdfViewerBase.toolbarHeight) {\n top = top + this.contextMenuHeight;\n }\n else {\n top = contextTop;\n }\n if ((top + this.contextMenuHeight) > window.innerHeight) {\n top = top - this.contextMenuHeight;\n }\n }\n if (this.pdfViewer.contextMenuSettings.contextMenuAction === 'MouseUp') {\n left = left - 50;\n }\n var proxy = this;\n setTimeout(function () {\n var leftValue = 35;\n var selectedContent = document.getElementsByClassName(\"e-pv-maintaincontent\")[0] ? document.getElementsByClassName(\"e-pv-maintaincontent\")[0].getBoundingClientRect() : null;\n if (selectedContent) {\n if ((selectedContent.bottom + proxy.contextMenuHeight + proxy.pdfViewerBase.toolbarHeight) > window.innerHeight) {\n top = selectedContent.top - (proxy.contextMenuHeight + proxy.pdfViewerBase.toolbarHeight - topMargin);\n }\n else {\n top = selectedContent.bottom + proxy.pdfViewerBase.toolbarHeight - topMargin;\n }\n left = selectedContent.left - leftValue;\n var toolbarModule = _this.pdfViewer.toolbarModule ? _this.pdfViewer.toolbarModule.annotationToolbarModule : 'null';\n if (!toolbarModule || !toolbarModule.textMarkupToolbarElement || toolbarModule.textMarkupToolbarElement.children.length === 0) {\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.contextMenuModule.open(top, left, proxy.pdfViewerBase.viewerContainer);\n }\n }\n });\n };\n /**\n * @private\n */\n TextSelection.prototype.initiateSelectionByTouch = function () {\n this.pdfViewerBase.textLayer.clearDivSelection();\n this.pdfViewerBase.contextMenuModule.close();\n var lowerPageIndex = this.pdfViewerBase.currentPageNumber - 3;\n lowerPageIndex = (lowerPageIndex < 0) ? 0 : lowerPageIndex;\n var higherPageIndex = this.pdfViewer.currentPageNumber + 1;\n // eslint-disable-next-line max-len\n higherPageIndex = (higherPageIndex < (this.pdfViewerBase.pageCount - 1)) ? higherPageIndex : (this.pdfViewerBase.pageCount - 1);\n for (var i = lowerPageIndex; i <= higherPageIndex; i++) {\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + i);\n if (textLayer) {\n if (textLayer.childNodes !== null) {\n this.applySelectionMouseScroll(i);\n }\n }\n }\n if (this.selectionRangeArray.length > 0) {\n this.pdfViewer.fireTextSelectionStart(this.selectionRangeArray[0].pageNumber + 1);\n }\n };\n // eslint-disable-next-line\n TextSelection.prototype.terminateSelectionByTouch = function (event) {\n var topMargin = 10;\n this.maintainSelectionOnZoom(true, false);\n this.applySpanForSelection();\n if (this.pdfViewerBase.getTextMarkupAnnotationMode()) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations(this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode);\n }\n else {\n this.fireTextSelectEnd();\n var top_4 = event.changedTouches[0].clientY + event.currentTarget.clientHeight;\n var spanBounds = this.getSpanBounds();\n if ((spanBounds.bottom + this.contextMenuHeight + this.pdfViewerBase.toolbarHeight) > window.innerHeight) {\n top_4 = spanBounds.top - (this.contextMenuHeight + this.pdfViewerBase.toolbarHeight);\n }\n else {\n top_4 = spanBounds.bottom + this.pdfViewerBase.toolbarHeight - topMargin;\n }\n this.pdfViewerBase.contextMenuModule.open(top_4, (spanBounds.right - spanBounds.left) / 2, this.pdfViewerBase.viewerContainer);\n }\n };\n TextSelection.prototype.getSpanBounds = function () {\n var spanWidth = [];\n var spanRight = [];\n var spanLeft = [];\n var spanHeight = 0;\n var selectedContent = document.getElementsByClassName(\"e-pv-maintaincontent\");\n if (selectedContent.length > 0) {\n for (var i = 0; i < selectedContent.length; i++) {\n var spanElement = selectedContent[i].getBoundingClientRect();\n spanHeight = spanHeight + spanElement.height;\n spanWidth.push(spanElement.width);\n spanRight.push(spanElement.right);\n spanLeft.push(spanElement.left);\n }\n // eslint-disable-next-line max-len\n return { top: selectedContent[0].getBoundingClientRect().top, bottom: selectedContent[selectedContent.length - 1].getBoundingClientRect().bottom, left: Math.min.apply(null, spanLeft), right: Math.max.apply(null, spanRight), width: Math.max.apply(null, spanWidth), height: spanHeight };\n }\n };\n TextSelection.prototype.getNodeElement = function (range, touchX, touchY, event, nodeElement) {\n if (document.caretRangeFromPoint) {\n range = document.caretRangeFromPoint(touchX, touchY);\n nodeElement = this.onTouchElementScroll(range, nodeElement, touchY, event);\n // eslint-disable-next-line\n }\n else if (document.caretPositionFromPoint) {\n // eslint-disable-next-line\n var start = document.caretPositionFromPoint(touchX, touchY);\n // eslint-disable-next-line\n var end = document.caretPositionFromPoint(touchX, touchY);\n range = document.createRange();\n range.setStart(start.offsetNode, start.offset);\n range.setEnd(end.offsetNode, end.offset);\n nodeElement = this.onTouchElementScroll(range, nodeElement, touchY, event);\n }\n return nodeElement;\n };\n TextSelection.prototype.isTouchedWithinContainer = function (event) {\n var elements = document.elementsFromPoint(event.touches[0].clientX, event.touches[0].clientY);\n var isTouchedWithinContainer = false;\n if (elements.length !== 0) {\n isTouchedWithinContainer = true;\n }\n return isTouchedWithinContainer;\n };\n TextSelection.prototype.onTouchElementScroll = function (range, nodeElement, touchY, event) {\n var viewerScrollTop = this.pdfViewerBase.viewerContainer.scrollTop;\n if (range != null) {\n nodeElement = range.startContainer;\n var isScrollBar = this.isScrolledOnScrollBar(event);\n if (!this.pdfViewerBase.viewerContainer.contains(nodeElement.parentElement) || isScrollBar) {\n if (touchY < this.pdfViewerBase.viewerContainer.clientHeight) {\n this.pdfViewerBase.viewerContainer.scrollTop = viewerScrollTop - 30;\n }\n else {\n this.pdfViewerBase.viewerContainer.scrollTop = viewerScrollTop + 30;\n }\n }\n }\n else {\n if (touchY < this.pdfViewerBase.viewerContainer.clientHeight) {\n this.pdfViewerBase.viewerContainer.scrollTop = viewerScrollTop - 30;\n }\n else {\n this.pdfViewerBase.viewerContainer.scrollTop = viewerScrollTop + 30;\n }\n }\n return nodeElement;\n };\n TextSelection.prototype.isCloserTouchScroll = function (currentDifference) {\n var isForwardMovement = false;\n if (this.previousScrollDifference > currentDifference) {\n isForwardMovement = true;\n }\n return isForwardMovement;\n };\n TextSelection.prototype.getClientValueTop = function (clientValue, pageNumber) {\n if (this.pdfViewerBase.getElement('_pageDiv_' + pageNumber)) {\n // eslint-disable-next-line max-len\n return clientValue - this.pdfViewerBase.getElement('_pageDiv_' + pageNumber).getBoundingClientRect().top;\n }\n else {\n return clientValue;\n }\n };\n TextSelection.prototype.isScrolledOnScrollBar = function (event) {\n var isScrollBar = false;\n // eslint-disable-next-line max-len\n if (event.touches && (this.pdfViewerBase.viewerContainer.clientHeight + this.pdfViewerBase.viewerContainer.offsetTop) < event.touches[0].clientY && event.touches[0].clientY < (this.pdfViewerBase.viewerContainer.offsetHeight + this.pdfViewerBase.viewerContainer.offsetTop)) {\n isScrollBar = true;\n }\n return isScrollBar;\n };\n TextSelection.prototype.getTextLastLength = function (element) {\n if (element) {\n return element.textContent.length;\n }\n else {\n return 0;\n }\n };\n TextSelection.prototype.getNodeElementFromNode = function (node) {\n if (node.parentElement) {\n return node.parentElement;\n }\n else {\n return node.parentNode;\n }\n };\n /**\n * Copy the selected text in the PDF Document.\n *\n * @returns void\n */\n TextSelection.prototype.copyText = function () {\n var selectionText = '';\n this.maintainSelectionOnZoom(true, false);\n if (this.selectionRangeArray.length > 0) {\n for (var i = 0; i < this.selectionRangeArray.length; i++) {\n selectionText += this.selectionRangeArray[i].textContent;\n }\n }\n if (selectionText.length > 0) {\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.isShapeCopied = false;\n }\n var textArea = document.createElement('textarea');\n textArea.contentEditable = 'true';\n textArea.textContent = selectionText;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.freeTextAnnotationModule) {\n this.pdfViewer.annotation.freeTextAnnotationModule.selectedText = selectionText;\n }\n textArea.style.position = 'fixed';\n document.body.appendChild(textArea);\n textArea.select();\n try {\n document.execCommand('copy');\n }\n catch (ex) {\n console.warn('Copy to clipboard failed.', ex);\n }\n finally {\n if (textArea) {\n document.body.removeChild(textArea);\n }\n }\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.destroy = function () {\n this.clear();\n };\n /**\n * @private\n */\n TextSelection.prototype.getModuleName = function () {\n return 'TextSelection';\n };\n return TextSelection;\n}());\nexport { TextSelection };\n","/* eslint-disable */\nimport { createElement, Browser, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { AjaxHandler } from '../index';\nimport { createSpinner, showSpinner, hideSpinner } from '../index';\nvar searchTextCollection = [];\n/**\n * TextSearch module\n */\nvar TextSearch = /** @class */ (function () {\n /**\n * @param pdfViewer\n * @param pdfViewerBase\n * @param pdfViewer\n * @param pdfViewerBase\n * @private\n */\n function TextSearch(pdfViewer, pdfViewerBase) {\n var _this = this;\n /**\n * @private\n */\n this.isTextSearch = false;\n /**\n * @private\n */\n this.searchCount = 0;\n this.searchIndex = 0;\n this.currentSearchIndex = 0;\n this.startIndex = null;\n this.searchPageIndex = null;\n this.searchString = null;\n this.isMatchCase = false;\n this.searchRequestHandler = null;\n // eslint-disable-next-line\n this.textContents = new Array();\n // eslint-disable-next-line\n this.searchMatches = new Array();\n // eslint-disable-next-line\n this.searchCollection = new Array();\n this.searchedPages = [];\n this.isPrevSearch = false;\n /**\n * @private\n */\n this.searchTextDivzIndex = \"-1\";\n // eslint-disable-next-line\n this.tempElementStorage = new Array();\n /**\n * @private\n */\n this.isMessagePopupOpened = false;\n /**\n * @private\n */\n this.isTextRetrieved = false;\n this.isTextSearched = false;\n this.isTextSearchEventTriggered = false;\n this.isSearchText = false;\n // eslint-disable-next-line\n this.checkBoxOnChange = function (event) {\n if (isBlazor()) {\n if (event.currentTarget && event.currentTarget.checked) {\n _this.isMatchCase = true;\n }\n else {\n _this.isMatchCase = false;\n }\n }\n else {\n if (event.checked) {\n _this.isMatchCase = true;\n }\n else {\n _this.isMatchCase = false;\n }\n }\n if (_this.isTextSearch) {\n _this.resetVariables();\n _this.clearAllOccurrences();\n var inputString = _this.searchInput.value;\n _this.searchIndex = 0;\n _this.textSearch(inputString);\n }\n };\n this.searchKeypressHandler = function (event) {\n _this.enableNextButton(true);\n _this.enablePrevButton(true);\n if (event.which === 13) {\n _this.initiateTextSearch(_this.searchInput);\n _this.updateSearchInputIcon(false);\n }\n else {\n _this.resetVariables();\n }\n };\n this.searchClickHandler = function (event) {\n _this.searchButtonClick(_this.searchBtn, _this.searchInput);\n };\n this.nextButtonOnClick = function (event) {\n _this.nextSearch();\n };\n this.prevButtonOnClick = function (event) {\n _this.prevSearch();\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @private\n */\n TextSearch.prototype.createTextSearchBox = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n this.searchBox = createElement('div', { id: this.pdfViewer.element.id + '_search_box', className: 'e-pv-search-bar' });\n var toolbarElement;\n if (isBlazor()) {\n toolbarElement = document.getElementById('toolbarContainer');\n }\n else {\n toolbarElement = this.pdfViewerBase.getElement('_toolbarContainer');\n }\n if (toolbarElement) {\n if (isBlazor()) {\n this.searchBox.style.top = toolbarElement.clientHeight + 'px';\n }\n else {\n this.searchBox.style.top = toolbarElement.clientHeight + 'px';\n }\n }\n var searchElementsContainer = createElement('div', { id: this.pdfViewer.element.id + '_search_box_elements', className: 'e-pv-search-bar-elements' });\n // eslint-disable-next-line max-len\n var searchInputContainer = createElement('div', { id: this.pdfViewer.element.id + '_search_input_container', className: 'e-input-group e-pv-search-input' });\n this.searchInput = createElement('input', { id: this.pdfViewer.element.id + '_search_input', className: 'e-input' });\n this.searchInput.type = 'text';\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Findindocument');\n promise.then(function (value) {\n _this.searchInput.placeholder = value;\n });\n }\n else {\n this.searchInput.placeholder = this.pdfViewer.localeObj.getConstant('Find in document');\n }\n // eslint-disable-next-line max-len\n this.searchBtn = createElement('span', { id: this.pdfViewer.element.id + '_search_box-icon', className: 'e-input-group-icon e-input-search-group-icon e-pv-search-icon' });\n this.searchBtn.setAttribute('tabindex', '0');\n searchInputContainer.appendChild(this.searchInput);\n searchInputContainer.appendChild(this.searchBtn);\n searchElementsContainer.appendChild(searchInputContainer);\n if (this.pdfViewer.enableRtl) {\n this.prevSearchBtn = this.createSearchBoxButtons('prev_occurrence', 'e-pv-next-search');\n }\n else {\n this.prevSearchBtn = this.createSearchBoxButtons('prev_occurrence', 'e-pv-prev-search');\n }\n this.prevSearchBtn.setAttribute('aria-label', 'Previous Search text');\n searchElementsContainer.appendChild(this.prevSearchBtn);\n if (this.pdfViewer.enableRtl) {\n this.nextSearchBtn = this.createSearchBoxButtons('next_occurrence', 'e-pv-prev-search');\n }\n else {\n this.nextSearchBtn = this.createSearchBoxButtons('next_occurrence', 'e-pv-next-search');\n }\n this.nextSearchBtn.setAttribute('aria-label', 'Next Search text');\n searchElementsContainer.appendChild(this.nextSearchBtn);\n // eslint-disable-next-line max-len\n var matchCaseContainer = createElement('div', { id: this.pdfViewer.element.id + '_match_case_container', className: 'e-pv-match-case-container' });\n var matchCaseInput = createElement('input', { id: this.pdfViewer.element.id + '_match_case' });\n matchCaseInput.type = 'checkbox';\n if (isBlazor()) {\n matchCaseInput.style.height = '17px';\n matchCaseInput.style.width = '17px';\n matchCaseInput.addEventListener('change', this.checkBoxOnChange.bind(this));\n }\n matchCaseContainer.appendChild(matchCaseInput);\n this.searchBox.appendChild(searchElementsContainer);\n this.searchBox.appendChild(matchCaseContainer);\n this.pdfViewerBase.mainContainer.appendChild(this.searchBox);\n if (isBlazor()) {\n // eslint-disable-next-line max-len\n var matchCaseText_1 = createElement('span', { id: this.pdfViewer.element.id + '_search_box_text', styles: 'position: absolute; padding-top: 3px; padding-left: 8px; padding-right: 8px; font-size: 13px' });\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Matchcase');\n promise.then(function (value) {\n matchCaseText_1.textContent = value;\n });\n matchCaseContainer.appendChild(matchCaseText_1);\n }\n else {\n // eslint-disable-next-line max-len\n var checkBox = new CheckBox({ cssClass: 'e-pv-match-case', label: this.pdfViewer.localeObj.getConstant('Match case'), htmlAttributes: { 'tabindex': '0' }, change: this.checkBoxOnChange.bind(this) });\n checkBox.appendTo(matchCaseInput);\n }\n matchCaseContainer.firstElementChild.addEventListener('keydown', function (event) {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.target.click();\n event.preventDefault();\n event.stopPropagation();\n }\n });\n var waitingPopup = createElement('div', { id: this.pdfViewer.element.id + '_textSearchLoadingIndicator' });\n searchInputContainer.appendChild(waitingPopup);\n waitingPopup.style.position = 'absolute';\n waitingPopup.style.top = '15px';\n waitingPopup.style.left = searchInputContainer.clientWidth - 46 + 'px';\n createSpinner({ target: waitingPopup, cssClass: 'e-spin-center' });\n this.setLoaderProperties(waitingPopup);\n this.showSearchBox(false);\n if (this.pdfViewer.enableRtl) {\n this.searchBox.classList.add('e-rtl');\n this.searchBox.style.left = '88.3px';\n }\n else {\n this.searchBox.classList.remove('e-rtl');\n this.searchBox.style.right = '88.3px';\n }\n this.searchInput.addEventListener('focus', function () {\n _this.searchInput.parentElement.classList.add('e-input-focus');\n });\n this.searchInput.addEventListener('blur', function () {\n _this.searchInput.parentElement.classList.remove('e-input-focus');\n });\n this.searchInput.addEventListener('keydown', this.searchKeypressHandler.bind(this));\n this.searchBtn.addEventListener('click', this.searchClickHandler.bind(this));\n this.searchBtn.addEventListener('keydown', function (event) {\n if (event.key === \"Enter\" || event.key === \" \") {\n _this.searchClickHandler(event);\n event.preventDefault();\n event.stopPropagation();\n }\n });\n this.nextSearchBtn.addEventListener('click', this.nextButtonOnClick.bind(this));\n this.prevSearchBtn.addEventListener('click', this.prevButtonOnClick.bind(this));\n };\n TextSearch.prototype.setLoaderProperties = function (element) {\n var spinnerElement = element.firstChild.firstChild.firstChild;\n if (spinnerElement) {\n spinnerElement.style.height = '18px';\n spinnerElement.style.width = '18px';\n spinnerElement.style.transformOrigin = '9px 9px 9px';\n }\n };\n TextSearch.prototype.showLoadingIndicator = function (isShow) {\n var waitingPopup = document.getElementById(this.pdfViewer.element.id + '_textSearchLoadingIndicator');\n if (waitingPopup) {\n if (isShow) {\n showSpinner(waitingPopup);\n }\n else {\n hideSpinner(waitingPopup);\n }\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.textSearchBoxOnResize = function () {\n if (this.pdfViewer.toolbarModule && this.pdfViewer.enableToolbar) {\n var secondaryToolbar = this.pdfViewerBase.getElement('_toolbarContainer_popup');\n if (secondaryToolbar) {\n if (secondaryToolbar.contains(this.pdfViewerBase.getElement('_search').parentElement)) {\n this.searchBox.style.right = '0px';\n }\n }\n }\n else {\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.viewerContainer.clientWidth + this.pdfViewerBase.viewerContainer.offsetLeft < this.searchBox.offsetLeft + this.searchBox.clientWidth) {\n this.searchBox.style.right = '0px';\n // eslint-disable-next-line\n this.searchBox.style.width = parseInt(this.searchBox.style.width) - ((this.searchBox.offsetLeft + this.searchBox.clientWidth) - (this.pdfViewerBase.viewerContainer.clientWidth)) + 'px';\n // eslint-disable-next-line\n this.searchInput.style.width = parseInt(this.searchInput.style.width) - ((this.searchBox.offsetLeft + this.searchBox.clientWidth) - (this.pdfViewerBase.viewerContainer.clientWidth)) + 'px';\n }\n else {\n this.searchBox.style.right = '88.3px';\n this.searchBox.style.width = '';\n this.searchInput.style.width = '';\n }\n }\n };\n /**\n * @param isShow\n * @private\n */\n TextSearch.prototype.showSearchBox = function (isShow) {\n if (isShow) {\n this.searchBox.style.display = 'block';\n }\n else {\n this.searchBox.style.display = 'none';\n this.searchInput.value = '';\n }\n this.onTextSearchClose();\n };\n /**\n * @private\n */\n TextSearch.prototype.searchAfterSelection = function () {\n if (this.isTextSearch) {\n this.initSearch(this.searchPageIndex, true);\n this.highlightOthers();\n }\n };\n TextSearch.prototype.initiateTextSearch = function (searchElement) {\n var inputString = searchElement.value;\n if (inputString && inputString.length > 0 && inputString[inputString.length - 1] === ' ') {\n inputString = inputString.slice(0, inputString.length - 1);\n }\n this.initiateSearch(inputString);\n };\n /**\n * @param inputString\n * @private\n */\n TextSearch.prototype.initiateSearch = function (inputString) {\n if (inputString !== this.searchString) {\n this.isTextSearch = false;\n this.searchPageIndex = this.pdfViewerBase.currentPageNumber - 1;\n }\n this.clearAllOccurrences();\n if (inputString !== '') {\n // eslint-disable-next-line\n if (this.searchMatches[this.searchPageIndex] && inputString === this.searchString) {\n if (this.searchMatches[this.searchPageIndex].length === 0) {\n this.initSearch(this.searchPageIndex, false);\n }\n else {\n this.nextSearch();\n }\n }\n else if (isNullOrUndefined(this.searchMatches[this.searchPageIndex]) && inputString === this.searchString) {\n this.initSearch(this.searchPageIndex, false);\n }\n else {\n this.resetVariables();\n this.searchIndex = 0;\n this.textSearch(inputString);\n }\n }\n };\n TextSearch.prototype.textSearch = function (inputString) {\n if (inputString !== '' || inputString) {\n this.searchString = inputString;\n this.isTextSearch = true;\n this.isSearchText = true;\n this.searchPageIndex = this.pdfViewerBase.currentPageNumber - 1;\n this.searchCount = 0;\n this.isTextSearchEventTriggered = false;\n this.showLoadingIndicator(true);\n this.pdfViewer.fireTextSearchStart(inputString, this.isMatchCase);\n if (this.pdfViewer.isExtractText) {\n if (this.isTextRetrieved) {\n for (var i = 0; i < this.pdfViewerBase.pageCount; i++) {\n this.initSearch(i, false, true);\n }\n }\n else {\n this.isTextSearched = true;\n for (var i = 0; i < this.documentTextCollection.length; i++) {\n this.initSearch(i, false, true);\n }\n }\n }\n this.initSearch(this.searchPageIndex, false);\n this.highlightOthers();\n }\n };\n TextSearch.prototype.nextSearch = function () {\n this.isPrevSearch = false;\n this.isTextSearch = true;\n this.isSearchText = false;\n if (this.searchString) {\n this.clearAllOccurrences();\n this.searchIndex = this.searchIndex + 1;\n if (this.searchMatches[this.searchPageIndex]) {\n if (this.searchIndex >= this.searchMatches[this.searchPageIndex].length) {\n this.searchIndex = 0;\n this.searchPageIndex = ((this.searchPageIndex + 1) < this.pdfViewerBase.pageCount) ? (this.searchPageIndex + 1) : 0;\n if (this.pdfViewerBase.pageCount > 1) {\n this.initSearch(this.searchPageIndex, false);\n }\n else {\n this.initSearch(this.searchPageIndex, true);\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.pdfViewerBase.updateScrollTop(this.searchPageIndex);\n }\n this.showLoadingIndicator(true);\n }\n else {\n this.highlightSearchedTexts(this.searchPageIndex, false, undefined);\n this.showLoadingIndicator(false);\n }\n this.highlightOthers(true);\n }\n else if (!this.searchMatches[this.searchPageIndex]) {\n if (this.pdfViewerBase.pageCount > 1) {\n this.initSearch(this.searchPageIndex, false);\n }\n }\n else {\n this.initiateTextSearch(this.searchInput);\n }\n }\n else {\n this.initiateTextSearch(this.searchInput);\n }\n };\n TextSearch.prototype.prevSearch = function () {\n searchTextCollection.push(this.searchPageIndex);\n this.isPrevSearch = true;\n this.isTextSearch = true;\n this.isSearchText = false;\n if (this.searchString) {\n this.clearAllOccurrences();\n this.searchIndex = this.searchIndex - 1;\n if (this.searchIndex < 0) {\n this.searchPageIndex = this.findPreviousPageWithText();\n this.initSearch(this.searchPageIndex, false);\n this.showLoadingIndicator(true);\n }\n else {\n this.highlightSearchedTexts(this.searchPageIndex, false, undefined);\n this.showLoadingIndicator(false);\n }\n this.highlightOthers(true);\n }\n else {\n this.searchIndex = this.searchIndex - 1;\n this.searchPageIndex = ((this.searchPageIndex - 1) < 0) ? (this.pdfViewerBase.pageCount - 1) : this.searchPageIndex - 1;\n var inputString = this.searchInput.value;\n this.textSearch(inputString);\n }\n };\n TextSearch.prototype.findPreviousPageWithText = function () {\n var currentPageIndex = this.searchPageIndex;\n for (var i = 1; i < this.pdfViewerBase.pageCount; i++) {\n var prevPageIndex = (currentPageIndex - i + this.pdfViewerBase.pageCount) % this.pdfViewerBase.pageCount;\n if (this.searchMatches[prevPageIndex] && this.searchMatches[prevPageIndex].length > 0) {\n return prevPageIndex;\n }\n }\n return currentPageIndex;\n };\n ;\n TextSearch.prototype.initSearch = function (pageIndex, isSinglePageSearch, isCount) {\n // eslint-disable-next-line\n var storedData = this.pdfViewerBase.getStoredData(pageIndex, true);\n var pageText = null;\n var textContents = null;\n // eslint-disable-next-line\n var characterBounds = null;\n if (isCount) {\n if (this.documentTextCollection.length !== 0) {\n // eslint-disable-next-line\n var documentIndex = this.documentTextCollection[pageIndex][pageIndex];\n var pageTextData = documentIndex.pageText ? documentIndex.pageText : documentIndex.PageText;\n if (this.documentTextCollection[pageIndex] && documentIndex) {\n // eslint-disable-next-line max-len\n this.getSearchTextContent(pageIndex, this.searchString, pageTextData, textContents, isSinglePageSearch, this.documentTextCollection[pageIndex]);\n }\n }\n }\n else {\n if (storedData) {\n // eslint-disable-next-line\n pageText = storedData['pageText'];\n // eslint-disable-next-line\n textContents = storedData['textContent'];\n characterBounds = this.pdfViewerBase.textLayer.characterBound[pageIndex];\n this.textContents[pageIndex] = textContents;\n this.getPossibleMatches(pageIndex, this.searchString, pageText, textContents, isSinglePageSearch, characterBounds);\n }\n else {\n if (!isSinglePageSearch) {\n this.createRequestForSearch(pageIndex);\n }\n }\n }\n if (this.pdfViewerBase.pageCount === (this.searchedPages && this.searchedPages.length)) {\n if (!this.isTextSearchEventTriggered) {\n this.isTextSearchEventTriggered = true;\n this.pdfViewer.fireTextSearchComplete(this.searchString, this.isMatchCase);\n }\n }\n };\n // eslint-disable-next-line\n TextSearch.prototype.getPossibleMatches = function (pageIndex, searchString, pageString, textContents, isSinglePageSearch, characterBounds) {\n var arrayReturns;\n if (this.searchMatches && !this.searchMatches[pageIndex]) {\n var pageText = pageString;\n var searchText = searchString;\n var multiSearch = (pageText.replace((/(\\s\\r\\n)/gm), ' ')).replace((/(\\r\\n)/gm), \" \");\n var Multiline = (pageString.replace((/(\\s\\r\\n)/gm), ' ')).replace((/(\\r\\n)/gm), \" \");\n var specialCharcterSearch = multiSearch.replace(/[^a-zA-z0-9\" \"]/g, \"\");\n var queryLength = searchString.length;\n if (!this.isMatchCase) {\n searchText = searchString.toLowerCase();\n pageText = pageString.toLowerCase();\n multiSearch = multiSearch.toLowerCase();\n Multiline = Multiline.toLowerCase();\n specialCharcterSearch = specialCharcterSearch.toLowerCase();\n }\n var matches = [];\n var matchedArray = [];\n var matchIndex = -queryLength;\n var newIndex = -queryLength;\n var multiSearchIndex = -queryLength;\n var MultilineIndex = -queryLength;\n var specialcharcterIndex = -queryLength;\n while (matchIndex !== 0 || matchIndex === 0) {\n if (searchText === '' || searchText === ' ' || !searchText) {\n break;\n }\n matchIndex = pageText.indexOf(searchText, matchIndex + queryLength);\n if (searchText.indexOf(' ') !== -1) {\n var newString = searchString.replace(' ', '\\r\\n');\n newIndex = pageText.indexOf(newString, newIndex + queryLength);\n newIndex = -1;\n if (!(newIndex <= -1)) {\n if (newIndex < matchIndex) {\n matches.push(newIndex);\n }\n }\n }\n if (matchIndex <= -1 && newIndex <= -1) {\n break;\n }\n if (!(matchIndex <= -1)) {\n matches.push(matchIndex);\n }\n if (newIndex > matchIndex && !(newIndex <= -1)) {\n matches.push(newIndex);\n }\n }\n if (matches.length == 0) {\n multiSearchIndex = multiSearch.indexOf(searchText, multiSearchIndex + queryLength);\n MultilineIndex = Multiline.indexOf(searchText, MultilineIndex + queryLength);\n specialcharcterIndex = specialCharcterSearch.indexOf(searchText, specialcharcterIndex + queryLength);\n if (multiSearchIndex !== -1) {\n arrayReturns = this.correctLinetext(searchString, matchIndex, pageText);\n matchIndex = -arrayReturns[0].length;\n for (var i = 0; i < arrayReturns.length; i++) {\n matchIndex = pageText.indexOf(arrayReturns[i].trim(), matchIndex + (arrayReturns[i - 1] === undefined || null ? arrayReturns[0].length : arrayReturns[i - 1].length));\n matchedArray.push(matchIndex);\n if (matchedArray.length > 1) {\n if ((matchedArray[1] - (matchedArray[0] + arrayReturns[0].length)) <= 3) {\n matches.push(matchedArray);\n this.searchMatches[pageIndex] = matches;\n }\n else {\n i = -1;\n matchIndex = matchedArray[0] + arrayReturns[0].length;\n matchedArray.splice(0, matchedArray.length);\n }\n }\n }\n }\n else if (specialcharcterIndex !== -1) {\n arrayReturns = this.correctLinetext(searchString, matchIndex, pageText);\n matchIndex = -arrayReturns[0].length;\n for (var i = 0; i < arrayReturns.length; i++) {\n matchIndex = pageText.indexOf(arrayReturns[i].trim(), matchIndex + (arrayReturns[i - 1] === undefined || null ? arrayReturns[0].length : arrayReturns[i - 1].length));\n matchedArray.push(matchIndex);\n if (matchedArray.length > 1) {\n if ((matchedArray[1] - (matchedArray[0] + arrayReturns[0].length)) <= 3) {\n matches.push(matchedArray);\n this.searchMatches[pageIndex] = matches;\n }\n else {\n i = -1;\n matchIndex = matchedArray[0] + arrayReturns[0].length;\n matchedArray.splice(0, matchedArray.length);\n }\n }\n }\n }\n else if (MultilineIndex !== -1) {\n arrayReturns = this.correctLinetext(searchString, matchIndex, pageText);\n matchIndex = -arrayReturns[0].length;\n for (var i = 0; i < arrayReturns.length; i++) {\n matchIndex = pageText.indexOf(arrayReturns[i].trim(), matchIndex + (arrayReturns[i - 1] === undefined || null ? arrayReturns[0].length : arrayReturns[i - 1].length));\n matchedArray.push(matchIndex);\n if (matchedArray.length > 1) {\n if ((matchedArray[1] - (matchedArray[0] + arrayReturns[0].length)) <= 3) {\n matches.push(matchedArray);\n this.searchMatches[pageIndex] = matches;\n }\n else {\n i = -1;\n matchIndex = matchedArray[0] + arrayReturns[0].length;\n matchedArray.splice(0, matchedArray.length);\n }\n }\n }\n }\n if (matches.length > 1) {\n matches.splice(1, matches.length);\n }\n }\n if (this.searchMatches && matches.length > 0) {\n this.searchMatches[pageIndex] = matches;\n }\n }\n if (!isSinglePageSearch) {\n if (this.searchedPages.indexOf(pageIndex) === -1) {\n this.searchedPages.push(pageIndex);\n this.startIndex = this.searchedPages[0];\n }\n this.updateSearchInputIcon(false);\n }\n if (this.searchMatches && this.searchMatches[pageIndex] && this.searchMatches[pageIndex].length !== 0) {\n if (!isSinglePageSearch) {\n if (this.isPrevSearch) {\n this.searchIndex = this.searchMatches[pageIndex].length - 1;\n }\n if ((this.pdfViewerBase.currentPageNumber - 1) !== this.searchPageIndex) {\n // eslint-disable-next-line max-len\n if (this.searchMatches.length > 0 && (this.searchIndex === 0 || this.searchIndex === -1) && (this.searchPageIndex) === this.currentSearchIndex) {\n if (!this.isMessagePopupOpened && !this.isSearchText) {\n this.onMessageBoxOpen();\n }\n this.searchPageIndex = this.getSearchPage(this.pdfViewerBase.currentPageNumber - 1);\n this.searchedPages = [this.searchPageIndex];\n }\n // eslint-disable-next-line max-len\n else if (this.isPrevSearch && this.searchMatches && this.searchMatches.length > 0 && (this.searchMatches[this.searchPageIndex] && this.searchMatches[this.searchPageIndex].length > 0) && this.searchedPages.length === this.pdfViewerBase.pageCount && this.startIndex - 1 === this.searchPageIndex) {\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.searchedPages = [this.startIndex];\n }\n else if (searchTextCollection[0] == this.searchPageIndex) {\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n }\n this.pdfViewerBase.updateScrollTop(this.searchPageIndex);\n }\n else if (this.searchMatches && (this.searchMatches[this.searchPageIndex] && this.searchMatches[this.searchPageIndex].length > 0) && this.searchedPages.length === this.pdfViewerBase.pageCount && this.startIndex === this.searchPageIndex && this.pdfViewerBase.pageCount > 1) {\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.searchedPages = [this.startIndex];\n }\n }\n this.highlightSearchedTexts(pageIndex, isSinglePageSearch, arrayReturns);\n }\n else {\n if (!isSinglePageSearch) {\n if (this.isPrevSearch) {\n this.searchPageIndex = ((this.searchPageIndex - 1) < 0) ? (this.pdfViewerBase.pageCount - 1) : this.searchPageIndex - 1;\n }\n else {\n this.searchPageIndex = ((this.searchPageIndex + 1) < this.pdfViewerBase.pageCount) ? (this.searchPageIndex + 1) : 0;\n }\n if (this.searchedPages.indexOf(this.searchPageIndex) === -1 && this.searchedPages.length !== this.pdfViewerBase.pageCount) {\n this.showLoadingIndicator(true);\n this.initSearch(this.searchPageIndex, false);\n }\n else {\n var searchPageIndex = this.getSearchPage(pageIndex);\n // eslint-disable-next-line max-len\n if (this.searchMatches && isNullOrUndefined(this.searchMatches[this.searchPageIndex]) && this.searchedPages.length === this.pdfViewerBase.pageCount) {\n // eslint-disable-next-line max-len\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.pdfViewerBase.updateScrollTop(this.startIndex);\n // eslint-disable-next-line max-len\n }\n else if (this.searchMatches && this.searchMatches.length > 0 && (this.searchIndex === 0 || this.searchIndex === -1) && (searchPageIndex) === this.currentSearchIndex) {\n if (this.isPrevSearch) {\n // eslint-disable-next-line max-len\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.searchPageIndex = searchPageIndex;\n this.searchedPages = [searchPageIndex];\n this.searchIndex = -1;\n }\n else {\n if (!this.isMessagePopupOpened && this.pdfViewerBase.currentPageNumber !== 0 && !this.isSearchText) {\n this.onMessageBoxOpen();\n }\n this.searchPageIndex = searchPageIndex;\n this.searchedPages = [searchPageIndex];\n this.searchIndex = 0;\n }\n this.highlightSearchedTexts(this.searchPageIndex, isSinglePageSearch, undefined);\n }\n else if (this.searchMatches && (this.searchMatches[this.searchPageIndex] && this.searchMatches[this.searchPageIndex].length > 0) && this.searchedPages.length === this.pdfViewerBase.pageCount) {\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.searchPageIndex = this.startIndex;\n this.searchedPages = [this.searchPageIndex];\n this.searchIndex = 0;\n this.pdfViewerBase.updateScrollTop(this.startIndex);\n this.highlightSearchedTexts(this.searchPageIndex, isSinglePageSearch, undefined);\n }\n }\n }\n }\n };\n TextSearch.prototype.correctLinetext = function (searchString, matchIndex, pageText) {\n var indiuvalLineArray = [];\n var searchArray = searchString.split(/[\" \"]+/);\n if (!this.isMatchCase) {\n searchArray = searchString.toLowerCase().split(/[\" \"]+/);\n }\n matchIndex = 0;\n var linestring = \"\";\n var mergedText = pageText.replace(/ \\r\\n/g, \" \");\n mergedText = mergedText.replace(/\\r\\n/g, \" \");\n mergedText = mergedText.replace(/[^a-zA-Z0-9 ]/g, '');\n searchString = searchString.replace(/[^a-zA-Z0-9 ]/g, '');\n var result = mergedText.match(searchString);\n if (!this.isMatchCase) {\n result = mergedText.match(searchString.toLowerCase());\n }\n if (isNullOrUndefined(result)) {\n return indiuvalLineArray;\n }\n else {\n result = pageText.slice(result.index, pageText.length);\n }\n var pageCheck = result;\n for (var i = 0; i < searchArray.length; i++) {\n var searchArrayText = linestring + searchArray[i];\n matchIndex = pageText.indexOf(searchArrayText, matchIndex);\n pageCheck = pageCheck ? pageCheck.replace(searchArray[i - 1], \"\") : pageText.replace(searchArray[i - 1], \"\");\n if ((pageCheck[pageCheck.indexOf(searchArray[i]) - 1] === \"\\n\" && (pageCheck[pageCheck.indexOf(searchArray[i + 1]) - 1]) === \"\\n\") || (pageCheck[pageCheck.indexOf(searchArray[i]) - 1] === \"\\n\" && isNullOrUndefined((pageCheck[pageCheck.indexOf(searchArray[i + 1]) - 1])))) {\n matchIndex = -1;\n if (linestring === \"\") {\n linestring = searchArray[i];\n i = i + 1;\n }\n }\n if (matchIndex !== -1) {\n linestring += searchArray[i] + \" \";\n if (i == (searchArray.length - 1)) {\n indiuvalLineArray.push(linestring);\n }\n }\n else {\n indiuvalLineArray.push(linestring);\n linestring = searchArray[i] + \" \";\n if (pageCheck[pageCheck.indexOf(searchArray[i]) - 1] == \"\\n\" && pageCheck[pageCheck.indexOf(searchArray[i + 1]) - 1] == \"\\n\") {\n indiuvalLineArray.push(linestring);\n linestring = searchArray[i + 1] + \" \";\n pageCheck = pageCheck ? pageCheck.replace(searchArray[i - 1], \"\") : pageText.replace(searchArray[i - 1], \"\");\n i = i + 1;\n }\n if (i == (searchArray.length - 1)) {\n indiuvalLineArray.push(linestring);\n }\n }\n }\n return indiuvalLineArray;\n };\n // eslint-disable-next-line\n TextSearch.prototype.getSearchTextContent = function (pageIndex, searchString, pageString, textContents, isSinglePageSearch, characterBounds) {\n var pageText = pageString;\n var searchText = searchString;\n var queryLength = searchString.length;\n if (!this.isMatchCase) {\n searchText = searchString.toLowerCase();\n pageText = pageString.toLowerCase();\n }\n var matches = [];\n var matchIndex = -queryLength;\n var newIndex = -queryLength;\n while (matchIndex !== 0) {\n if (searchText === '' || searchText === ' ' || !searchText) {\n break;\n }\n matchIndex = pageText.indexOf(searchText, matchIndex + queryLength);\n if (searchText.indexOf(' ') !== -1) {\n var newString = searchString.replace(' ', '\\r\\n');\n newIndex = pageText.indexOf(newString, newIndex + queryLength);\n if (!(newIndex <= -1)) {\n if (newIndex < matchIndex) {\n matches.push(newIndex);\n }\n }\n }\n if (matchIndex <= -1 && newIndex <= -1) {\n break;\n }\n if (!(matchIndex <= -1)) {\n matches.push(matchIndex);\n }\n if (newIndex > matchIndex && !(newIndex <= -1)) {\n matches.push(newIndex);\n }\n }\n if (matches.length !== 0) {\n this.searchCount = this.searchCount + matches.length;\n }\n this.searchMatches[pageIndex] = matches;\n };\n TextSearch.prototype.getSearchPage = function (pageIndex) {\n var pageNumber = null;\n if (this.isPrevSearch) {\n for (var i = pageIndex; i >= 0; i--) {\n if (i !== pageIndex && this.searchMatches[i]) {\n pageNumber = i;\n break;\n }\n }\n if (!pageNumber) {\n for (var j = this.pdfViewerBase.pageCount - 1; j > pageIndex; j--) {\n if (this.searchMatches[j]) {\n pageNumber = j;\n break;\n }\n }\n }\n }\n else {\n for (var i = pageIndex; i < this.pdfViewerBase.pageCount; i++) {\n if (i !== pageIndex && this.searchMatches[i]) {\n pageNumber = i;\n break;\n }\n }\n if (!pageNumber) {\n if (pageIndex === 0) {\n pageNumber = pageIndex;\n }\n else {\n for (var j = 0; j < pageIndex; j++) {\n if (this.searchMatches[j]) {\n pageNumber = j;\n break;\n }\n }\n }\n }\n }\n return pageNumber;\n };\n TextSearch.prototype.highlightSearchedTexts = function (pageIndex, isSinglePageSearch, ArrayReturns) {\n // eslint-disable-next-line\n var matches = this.searchMatches[pageIndex];\n var prevEnd = null;\n // eslint-disable-next-line\n var scrollPoint = { y: -100, x: -100 };\n var startId;\n var className;\n var searchingText = this.searchString;\n // eslint-disable-next-line\n var characterBounds = this.pdfViewerBase.textLayer.characterBound[pageIndex];\n var isHighlight = false;\n if (isSinglePageSearch && (this.pdfViewerBase.currentPageNumber - 1) !== this.searchPageIndex) {\n if (this.searchMatches.length > 0) {\n if (pageIndex === this.getSearchPage(this.pdfViewerBase.currentPageNumber - 1)) {\n isHighlight = true;\n }\n }\n }\n if (characterBounds && matches !== undefined) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].length !== undefined && ArrayReturns !== undefined) {\n if (i === this.searchIndex && pageIndex === this.searchPageIndex) {\n for (var j = 0; j < ArrayReturns.length; j++) {\n className = 'e-pv-search-text-highlight';\n this.searchString = ArrayReturns[j].trim();\n this.addDivForSearch(i, pageIndex, characterBounds, this.searchString.length, className, j);\n }\n }\n else {\n for (var j = 0; j < ArrayReturns.length; j++) {\n className = 'e-pv-search-text-highlightother';\n this.searchString = ArrayReturns[j].trim();\n this.addDivForSearch(i, pageIndex, characterBounds, this.searchString.length, className, j);\n }\n }\n }\n else if (i === this.searchIndex && pageIndex === this.searchPageIndex) {\n className = 'e-pv-search-text-highlight';\n }\n else {\n className = 'e-pv-search-text-highlightother';\n }\n if (matches[i].length == undefined) {\n this.addDivForSearch(i, pageIndex, characterBounds, this.searchString.length, className, undefined);\n }\n }\n this.searchString = searchingText;\n if (pageIndex === this.searchPageIndex && !isSinglePageSearch) {\n var element = this.pdfViewerBase.getElement('_searchtext_' + pageIndex + '_' + this.searchIndex);\n if (element) {\n var targetScrollElement = this.getScrollElement(element);\n this.scrollToSearchStr(targetScrollElement, scrollPoint);\n }\n else {\n this.pdfViewerBase.updateScrollTop(pageIndex);\n var element_1 = this.pdfViewerBase.getElement('_searchtext_' + pageIndex + '_' + this.searchIndex);\n if (element_1) {\n var targetScrollElement = this.getScrollElement(element_1);\n this.scrollToSearchStr(targetScrollElement, scrollPoint);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n TextSearch.prototype.addDivForSearch = function (index, pageIndex, characterBounds, queryLength, className, nestedIndex) {\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + pageIndex);\n if (isNullOrUndefined(textLayer) && className === 'e-pv-search-text-highlight') {\n if (this.pdfViewer.navigation) {\n this.pdfViewer.navigation.goToPage(pageIndex + 1);\n }\n }\n var count;\n if (this.searchMatches[pageIndex][index].length !== undefined) {\n count = this.searchMatches[pageIndex][index][nestedIndex];\n }\n else {\n count = this.searchMatches[pageIndex][index];\n }\n var initial = count;\n var divCount = 0;\n while (count < initial + queryLength) {\n count = this.addDivElement(count, characterBounds, queryLength, className, index, pageIndex, initial, divCount, nestedIndex);\n divCount++;\n }\n if (className === 'e-pv-search-text-highlight') {\n this.showLoadingIndicator(false);\n }\n };\n // eslint-disable-next-line\n TextSearch.prototype.addDivElement = function (count, characterBounds, queryLength, className, index, pageIndex, initial, divCount, nestedIndex) {\n var height = 0;\n var width = 0;\n var top = 0;\n var left = 0;\n var isRTL = false;\n if (characterBounds[count]) {\n left = characterBounds[count].X;\n top = characterBounds[count].Y;\n }\n var v = 0;\n if ((count - initial) !== 0) {\n v = count - initial;\n queryLength += 1;\n }\n for (v = v; v < queryLength; v++) {\n if (characterBounds[count]) {\n // eslint-disable-next-line\n var charBound = characterBounds[count];\n if (left > charBound.X + charBound.Width) {\n isRTL = true;\n }\n top = (top < charBound.Y) ? top : charBound.Y;\n var topDifference = (top < charBound.Y) ? (charBound.Y - top) : (top - charBound.Y);\n height = (height > (topDifference + charBound.Height)) ? height : (topDifference + charBound.Height);\n count++;\n }\n }\n var isContinuation = false;\n if (!isRTL) {\n if (initial + queryLength !== count) {\n isContinuation = true;\n if (characterBounds[count - 1]) {\n width = (characterBounds[count - 1].X - left);\n }\n }\n else {\n isContinuation = false;\n // eslint-disable-next-line\n var storedData = this.pdfViewerBase.clientSideRendering ? this.pdfViewerBase.getLinkInformation(pageIndex, true) : this.pdfViewerBase.getStoredData(pageIndex, true);\n var pageText = null;\n if (storedData) {\n pageText = storedData['pageText'];\n }\n else if (this.pdfViewer.isExtractText && this.documentTextCollection.length !== 0) {\n // eslint-disable-next-line\n var documentIndex = this.documentTextCollection[pageIndex][pageIndex];\n pageText = documentIndex.pageText ? documentIndex.pageText : documentIndex.PageText;\n }\n if (characterBounds[count]) {\n if (pageText && (pageText[count] === '' || pageText[count] === ' ' || pageText[count] === '\\r' || pageText[count] === '\\n') && (characterBounds[count].Width) === 0) {\n width = (characterBounds[count - 1].X - left) + characterBounds[count - 1].Width;\n }\n else {\n width = (characterBounds[count].X - left);\n }\n }\n else {\n if (characterBounds[count - 1]) {\n width = (characterBounds[count - 1].X - left) + characterBounds[count - 1].Width;\n }\n }\n }\n }\n else {\n var charBound = characterBounds[(initial + queryLength) - 1];\n left = charBound.X;\n width = characterBounds[initial].X - characterBounds[(initial + queryLength) - 1].X;\n top = (top < charBound.Y) ? top : charBound.Y;\n var topDifference = (top < charBound.Y) ? (charBound.Y - top) : (top - charBound.Y);\n height = (height > (topDifference + charBound.Height)) ? height : (topDifference + charBound.Height);\n //some RTL character calculated width is zero and width difference value calculated from Y possition difference in the same line.\n var widthDifference = characterBounds[initial - 1].Y - characterBounds[initial].Y;\n for (var j = (initial + queryLength) - 1; j >= initial; j--) {\n charBound = characterBounds[j];\n if (charBound.Width === 0) {\n widthDifference = charBound.Y - characterBounds[j - 1].Y;\n }\n }\n width = width + widthDifference;\n }\n this.createSearchTextDiv(index, pageIndex, height, width, top, left, className, isContinuation, divCount, nestedIndex);\n return count;\n };\n // eslint-disable-next-line\n TextSearch.prototype.createSearchTextDiv = function (index, pageIndex, height, width, top, left, className, isContinuation, divCount, nestedIndex) {\n var idString = '_searchtext_' + pageIndex + '_' + index;\n if (isContinuation) {\n idString += '_' + divCount;\n }\n if (nestedIndex !== undefined && this.pdfViewerBase.getElement(idString)) {\n var textDiv = createElement('div', { id: this.pdfViewer.element.id + idString + \"_\" + nestedIndex });\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n this.calculateBounds(textDiv, height, width, top, left, pageDetails);\n textDiv.classList.add(className);\n if (className === 'e-pv-search-text-highlight') {\n // eslint-disable-next-line max-len\n textDiv.style.backgroundColor = (this.pdfViewer.textSearchColorSettings.searchHighlightColor === '') ? '#fdd835' : this.pdfViewer.textSearchColorSettings.searchHighlightColor;\n var bounds = { left: left, top: top, width: width, height: height };\n this.pdfViewer.fireTextSearchHighlight(this.searchString, this.isMatchCase, bounds, (pageIndex + 1));\n }\n else if (className === 'e-pv-search-text-highlightother') {\n // eslint-disable-next-line max-len\n textDiv.style.backgroundColor = (this.pdfViewer.textSearchColorSettings.searchColor === '') ? '#8b4c12' : this.pdfViewer.textSearchColorSettings.searchColor;\n }\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + pageIndex);\n textDiv.style.zIndex = this.searchTextDivzIndex;\n if (textLayer) {\n textLayer.appendChild(textDiv);\n }\n }\n if (!this.pdfViewerBase.getElement(idString)) {\n var textDiv = createElement('div', { id: this.pdfViewer.element.id + idString });\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n this.calculateBounds(textDiv, height, width, top, left, pageDetails);\n textDiv.classList.add(className);\n if (className === 'e-pv-search-text-highlight') {\n // eslint-disable-next-line max-len\n textDiv.style.backgroundColor = (this.pdfViewer.textSearchColorSettings.searchHighlightColor === '') ? '#fdd835' : this.pdfViewer.textSearchColorSettings.searchHighlightColor;\n var bounds = { left: left, top: top, width: width, height: height };\n this.pdfViewer.fireTextSearchHighlight(this.searchString, this.isMatchCase, bounds, (pageIndex + 1));\n }\n else if (className === 'e-pv-search-text-highlightother') {\n // eslint-disable-next-line max-len\n textDiv.style.backgroundColor = (this.pdfViewer.textSearchColorSettings.searchColor === '') ? '#8b4c12' : this.pdfViewer.textSearchColorSettings.searchColor;\n }\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + pageIndex);\n textDiv.style.zIndex = this.searchTextDivzIndex;\n if (textLayer) {\n textLayer.appendChild(textDiv);\n }\n }\n };\n // eslint-disable-next-line\n TextSearch.prototype.calculateBounds = function (textDiv, height, width, top, left, pageDetails) {\n if (pageDetails.rotation === 0 || pageDetails.rotation === 2) {\n textDiv.style.height = Math.ceil(height) * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.width = width * this.pdfViewerBase.getZoomFactor() + 'px';\n if (pageDetails.rotation === 2) {\n textDiv.style.top = (pageDetails.height - top - height) * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.left = Math.ceil(pageDetails.width - left - width) * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n else {\n textDiv.style.top = top * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.left = left * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n }\n else if (pageDetails.rotation === 1) {\n textDiv.style.height = width * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.width = height * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.top = left * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.left = (pageDetails.height - top - height) * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n else if (pageDetails.rotation === 3) {\n textDiv.style.height = width * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.width = height * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.left = ((pageDetails.width - pageDetails.height) + top) * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.top = (pageDetails.height - left - width) * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n };\n TextSearch.prototype.isClassAvailable = function () {\n var isClass = false;\n for (var j = 0; j < this.tempElementStorage.length; j++) {\n if (this.tempElementStorage[j].classString) {\n // eslint-disable-next-line max-len\n if (this.tempElementStorage[j].classString === 'e-pv-search-text-highlight' || this.tempElementStorage[j].classString === 'e-pv-search-text-highlightother') {\n isClass = true;\n break;\n }\n }\n }\n return isClass;\n };\n TextSearch.prototype.getScrollElement = function (element) {\n var targetElement = element;\n if (element.childNodes.length > 0) {\n for (var i = 0; i < element.childNodes.length; i++) {\n if (element.childNodes[i].classList) {\n if (element.childNodes[i].classList.contains('e-pv-search-text-highlight')) {\n targetElement = element.childNodes[i];\n }\n }\n }\n }\n return targetElement;\n };\n // eslint-disable-next-line\n TextSearch.prototype.scrollToSearchStr = function (element, scrollPoint) {\n var parent = element.offsetParent;\n var offsetY = element.offsetTop + element.clientTop;\n var offsetX = element.offsetLeft + element.clientLeft;\n while (parent.id !== this.pdfViewerBase.viewerContainer.id) {\n offsetY += parent.offsetTop;\n offsetX += parent.offsetLeft;\n parent = parent.offsetParent;\n }\n if (scrollPoint) {\n offsetY += scrollPoint.y;\n offsetX += scrollPoint.x;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n parent.scrollLeft = offsetX;\n }\n else {\n if (this.pdfViewerBase.getZoomFactor() > 1.5) {\n parent.scrollLeft = offsetX;\n }\n }\n }\n parent.scrollTop = offsetY;\n this.pdfViewerBase.updateMobileScrollerPosition();\n };\n /**\n * @param pageIndex\n * @private\n */\n TextSearch.prototype.resizeSearchElements = function (pageIndex) {\n var searchDivs = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_searchtext_' + pageIndex + '\"]');\n for (var i = 0; i < searchDivs.length; i++) {\n var textDiv = searchDivs[i];\n var previousZoomFactor = 1;\n if (this.pdfViewer.magnificationModule) {\n previousZoomFactor = this.pdfViewer.magnificationModule.previousZoomFactor;\n }\n // eslint-disable-next-line max-len\n var outputdata = pageIndex + '_' + previousZoomFactor + '_' + this.pdfViewerBase.getZoomFactor();\n if (textDiv.getAttribute('name') !== outputdata) {\n // eslint-disable-next-line\n textDiv.style.width = (parseFloat(textDiv.style.width) / previousZoomFactor) * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line\n textDiv.style.height = (parseFloat(textDiv.style.height) / previousZoomFactor) * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line\n textDiv.style.top = (parseFloat(textDiv.style.top) / previousZoomFactor) * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line\n textDiv.style.left = (parseFloat(textDiv.style.left) / previousZoomFactor) * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.setAttribute('name', outputdata);\n }\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n TextSearch.prototype.highlightOtherOccurrences = function (pageNumber) {\n this.initSearch(pageNumber, true);\n };\n TextSearch.prototype.highlightOthers = function (isSearched) {\n var indexes = this.getIndexes();\n var lowerPageValue = parseFloat(indexes.lowerPageValue.toString());\n var higherPageValue = parseFloat(indexes.higherPageValue.toString());\n for (var i = lowerPageValue; i <= higherPageValue; i++) {\n this.highlightOtherOccurrences(i);\n }\n if (isSearched) {\n this.showLoadingIndicator(false);\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.clearAllOccurrences = function () {\n var searchTextDivs = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_searchtext_\"]');\n for (var i = 0; i < searchTextDivs.length; i++) {\n searchTextDivs[i].parentElement.removeChild(searchTextDivs[i]);\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n TextSearch.prototype.getIndexes = function () {\n var lowerPageValue = this.pdfViewerBase.currentPageNumber - 3;\n lowerPageValue = (lowerPageValue > 0) ? lowerPageValue : 0;\n var higherPageValue = this.pdfViewerBase.currentPageNumber + 1;\n higherPageValue = (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n return { lowerPageValue: lowerPageValue, higherPageValue: higherPageValue };\n };\n TextSearch.prototype.applyTextSelection = function () {\n if (this.pdfViewer.textSelectionModule && !this.pdfViewerBase.isTextSelectionDisabled) {\n var indexes = this.getIndexes();\n var lowerPageValue = parseFloat(indexes.lowerPageValue.toString());\n var higherPageValue = parseFloat(indexes.higherPageValue.toString());\n for (var i = lowerPageValue; i <= higherPageValue; i++) {\n this.pdfViewer.textSelectionModule.applySelectionRangeOnScroll(i);\n }\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.resetTextSearch = function () {\n this.resetVariables();\n this.onTextSearchClose();\n this.searchPageIndex = null;\n this.searchIndex = 0;\n this.updateSearchInputIcon(true);\n this.enableNextButton(false);\n this.enablePrevButton(false);\n this.documentTextCollection = [];\n this.isTextRetrieved = false;\n this.isTextSearched = false;\n this.isSearchText = false;\n if (this.searchRequestHandler) {\n this.searchRequestHandler.clear();\n }\n };\n TextSearch.prototype.onTextSearchClose = function () {\n this.isPrevSearch = false;\n this.isTextSearch = false;\n if (this.pdfViewerBase.pageCount > 0) {\n this.clearAllOccurrences();\n }\n };\n TextSearch.prototype.createRequestForSearch = function (pageIndex) {\n var proxy = this;\n var viewPortWidth = 816;\n var viewPortHeight = this.pdfViewer.element.clientHeight;\n var pageWidth = this.pdfViewerBase.pageSize[pageIndex].width;\n var pageHeight = this.pdfViewerBase.pageSize[pageIndex].height;\n var tileCount = this.pdfViewerBase.getTileCount(pageWidth);\n var noTileX = viewPortWidth >= pageWidth ? 1 : tileCount;\n var noTileY = viewPortWidth >= pageWidth ? 1 : tileCount;\n var isTileRendering = false;\n var tileSettings = this.pdfViewer.tileRenderingSettings;\n if (tileSettings.enableTileRendering && tileSettings.x > 0 && tileSettings.y > 0) {\n noTileX = viewPortWidth >= pageWidth ? 1 : tileSettings.x;\n noTileY = viewPortWidth >= pageWidth ? 1 : tileSettings.y;\n }\n if (noTileX > 1 && noTileY > 1) {\n isTileRendering = true;\n }\n var _loop_1 = function (x) {\n var _loop_2 = function (y) {\n var jsonObject = void 0;\n // eslint-disable-next-line max-len\n jsonObject = { xCoordinate: x, yCoordinate: y, pageNumber: pageIndex, viewPortWidth: viewPortWidth, viewPortHeight: viewPortHeight, documentId: proxy.pdfViewerBase.getDocumentId(), hashId: proxy.pdfViewerBase.hashId, zoomFactor: proxy.pdfViewerBase.getZoomFactor(), tilecount: tileCount, action: 'Search', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.pdfViewerBase.documentId,\n tileXCount: noTileX, tileYCount: noTileY };\n if (this_1.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this_1.pdfViewerBase.jsonDocumentId;\n }\n var zoomFactor = this_1.pdfViewerBase.retrieveCurrentZoomFactor();\n this_1.searchRequestHandler = new AjaxHandler(this_1.pdfViewer);\n this_1.searchRequestHandler.url = this_1.pdfViewer.serviceUrl + '/' + this_1.pdfViewer.serverActionSettings.renderPages;\n this_1.searchRequestHandler.responseType = 'json';\n if (!this_1.pdfViewerBase.clientSideRendering) {\n this_1.searchRequestHandler.send(jsonObject);\n }\n // eslint-disable-next-line\n this_1.searchRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.pdfViewerBase.onControlError(500, data, this.pdfViewer.serverActionSettings.renderPages);\n data = null;\n }\n }\n if (data) {\n proxy.searchRequestOnSuccess(data, proxy, viewPortWidth, pageWidth, isTileRendering, pageIndex, x, y, noTileX, noTileY);\n }\n }\n };\n // eslint-disable-next-line\n this_1.searchRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, this.pdfViewer.serverActionSettings.renderPages);\n };\n // eslint-disable-next-line\n this_1.searchRequestHandler.onError = function (result) {\n proxy.pdfViewerBase.openNotificationPopup();\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, this.pdfViewer.serverActionSettings.renderPages);\n };\n if (this_1.pdfViewerBase.clientSideRendering) {\n var textDetailsId = this_1.pdfViewerBase.documentId + '_' + pageIndex + '_textDetails';\n var isTextNeed = this_1.pdfViewerBase.pageTextDetails ? this_1.pdfViewerBase.pageTextDetails[textDetailsId] ? false : true : true;\n if (viewPortWidth >= pageWidth || !this_1.pdfViewer.tileRenderingSettings.enableTileRendering) {\n this_1.pdfViewerBase.pdfViewerRunner.postMessage({\n pageIndex: pageIndex,\n message: 'renderPageSearch',\n zoomFactor: proxy.pdfViewer.magnificationModule.zoomFactor,\n isTextNeed: isTextNeed,\n textDetailsId: textDetailsId\n });\n }\n else {\n this_1.pdfViewerBase.pdfViewerRunner.postMessage({\n pageIndex: pageIndex,\n message: 'renderImageAsTileSearch',\n zoomFactor: zoomFactor,\n tileX: x,\n tileY: y,\n tileXCount: noTileX,\n tileYCount: noTileY,\n isTextNeed: isTextNeed,\n textDetailsId: textDetailsId\n });\n }\n this_1.pdfViewerBase.pdfViewerRunner.onmessage = function (event) {\n switch (event.data.message) {\n case 'imageRenderedSearch':\n if (event.data.message === 'imageRenderedSearch') {\n var canvas = document.createElement('canvas');\n var _a = event.data, value = _a.value, width = _a.width, height = _a.height, pageIndex_1 = _a.pageIndex;\n canvas.width = width;\n canvas.height = height;\n var canvasContext = canvas.getContext('2d');\n var imageData = canvasContext.createImageData(width, height);\n imageData.data.set(value);\n canvasContext.putImageData(imageData, 0, 0);\n var imageUrl = canvas.toDataURL();\n var textBounds = event.data.textBounds;\n var textContent = event.data.textContent;\n var pageText = event.data.pageText;\n var rotation = event.data.rotation;\n var characterBounds = event.data.characterBounds;\n var hyperlinksDetails = proxy.pdfViewer.pdfRendererModule.getHyperlinks(pageIndex_1);\n var data = ({ image: imageUrl, pageNumber: pageIndex_1, uniqueId: proxy.pdfViewerBase.documentId, pageWidth: width, zoomFactor: event.data.zoomFactor, hyperlinks: hyperlinksDetails.hyperlinks, hyperlinkBounds: hyperlinksDetails.hyperlinkBounds, linkAnnotation: hyperlinksDetails.linkAnnotation, linkPage: hyperlinksDetails.linkPage, annotationLocation: hyperlinksDetails.annotationLocation, characterBounds: characterBounds });\n if (event.data.isTextNeed) {\n data.textBounds = textBounds;\n data.textContent = textContent;\n data.rotation = rotation;\n data.pageText = pageText;\n proxy.pdfViewerBase.storeTextDetails(pageIndex_1, textBounds, textContent, pageText, rotation, characterBounds);\n }\n else {\n var textDetails = JSON.parse(proxy.pdfViewerBase.pageTextDetails[\"\" + event.data.textDetailsId]);\n data.textBounds = textDetails.textBounds;\n data.textContent = textDetails.textContent;\n data.rotation = textDetails.rotation;\n data.pageText = textDetails.pageText;\n data.characterBounds = textDetails.characterBounds;\n }\n if (data && data.image && data.uniqueId === proxy.pdfViewerBase.documentId) {\n var currentPageWidth = (data.pageWidth && data.pageWidth > 0) ? data.pageWidth : pageWidth;\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.renderPages, data);\n var pageNumber = (data.pageNumber !== undefined) ? data.pageNumber : pageIndex_1;\n var blobObj = proxy.pdfViewerBase.createBlobUrl(data.image.split('base64,')[1], 'image/png');\n var Url = URL || webkitURL;\n var blobUrl = Url.createObjectURL(blobObj);\n var storeObject = {\n // eslint-disable-next-line\n image: blobUrl, width: data.pageWidth, uniqueId: data.uniqueId, zoomFactor: data.zoomFactor\n };\n proxy.pdfViewerBase.storeImageData(pageNumber, storeObject);\n proxy.searchRequestOnSuccess(data, proxy, viewPortWidth, pageWidth, isTileRendering, pageIndex_1, x, y, noTileX, noTileY);\n }\n }\n break;\n case 'renderTileImageSearch':\n if (event.data.message === 'renderTileImageSearch') {\n var canvas = document.createElement('canvas');\n var _b = event.data, value = _b.value, w = _b.w, h = _b.h, noTileX_1 = _b.noTileX, noTileY_1 = _b.noTileY, x_1 = _b.x, y_1 = _b.y, pageIndex_2 = _b.pageIndex;\n canvas.setAttribute('height', h);\n canvas.setAttribute('width', w);\n canvas.width = w;\n canvas.height = h;\n var canvasContext = canvas.getContext('2d');\n var imageData = canvasContext.createImageData(w, h);\n imageData.data.set(value);\n canvasContext.putImageData(imageData, 0, 0);\n var imageUrl = canvas.toDataURL();\n var tileWidth = w;\n var tileHeight = h;\n var textBounds = event.data.textBounds;\n var textContent = event.data.textContent;\n var pageText = event.data.pageText;\n var rotation = event.data.rotation;\n var characterBounds = event.data.characterBounds;\n var tileData = {\n image: imageUrl,\n noTileX: noTileX_1,\n noTileY: noTileY_1,\n pageNumber: pageIndex_2,\n tileX: x_1,\n tileY: y_1,\n uniqueId: proxy.pdfViewerBase.documentId,\n pageWidth: pageWidth,\n width: tileWidth,\n transformationMatrix: {\n Values: [1, 0, 0, 1, tileWidth * x_1, tileHeight * y_1, 0, 0, 0]\n },\n zoomFactor: event.data.zoomFactor,\n characterBounds: characterBounds,\n isTextNeed: event.data.isTextNeed,\n textDetailsId: event.data.textDetailsId\n };\n if (tileData && tileData.image && tileData.uniqueId === proxy.pdfViewerBase.documentId) {\n var currentPageWidth = (tileData.pageWidth && tileData.pageWidth > 0) ? tileData.pageWidth : pageWidth;\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.renderPages, tileData);\n var pageNumber = (tileData.pageNumber !== undefined) ? tileData.pageNumber : pageIndex_2;\n if (x_1 == 0 && y_1 == 0) {\n var blobObj = proxy.pdfViewerBase.createBlobUrl(tileData.image.split('base64,')[1], 'image/png');\n var Url = URL || webkitURL;\n var blobUrl = Url.createObjectURL(blobObj);\n var storeObject = {\n // eslint-disable-next-line\n image: blobUrl, width: tileData.pageWidth, uniqueId: tileData.uniqueId, tileX: tileData.tileX, tileY: tileData.tileY,\n zoomFactor: tileData.zoomFactor\n };\n if (tileData.isTextNeed) {\n tileData.textBounds = textBounds;\n tileData.textContent = textContent;\n tileData.rotation = rotation;\n tileData.pageText = pageText;\n proxy.pdfViewerBase.storeTextDetails(pageIndex_2, textBounds, textContent, pageText, rotation, characterBounds);\n }\n else {\n var textDetails = JSON.parse(proxy.pdfViewerBase.pageTextDetails[\"\" + tileData.textDetailsId]);\n tileData.textBounds = textDetails.textBounds;\n tileData.textContent = textDetails.textContent;\n tileData.rotation = textDetails.rotation;\n tileData.pageText = textDetails.pageText;\n tileData.characterBounds = textDetails.characterBounds;\n }\n proxy.pdfViewerBase.storeImageData(pageNumber, storeObject, tileData.tileX, tileData.tileY);\n }\n else {\n var blobObj = proxy.pdfViewerBase.createBlobUrl(tileData.image.split('base64,')[1], 'image/png');\n var Url = URL || webkitURL;\n var blobUrl = Url.createObjectURL(blobObj);\n var storeObject = {\n // eslint-disable-next-line\n image: blobUrl, width: tileData.pageWidth, uniqueId: tileData.uniqueId, tileX: tileData.tileX, tileY: tileData.tileY, zoomFactor: tileData.zoomFactor\n };\n proxy.pdfViewerBase.storeImageData(pageNumber, storeObject, tileData.tileX, tileData.tileY);\n }\n proxy.searchRequestOnSuccess(tileData, proxy, viewPortWidth, pageWidth, isTileRendering, pageIndex_2, x_1, y_1, noTileX_1, noTileY_1);\n }\n }\n break;\n }\n };\n }\n };\n for (var y = 0; y < noTileY; y++) {\n _loop_2(y);\n }\n };\n var this_1 = this;\n for (var x = 0; x < noTileX; x++) {\n _loop_1(x);\n }\n };\n TextSearch.prototype.searchRequestOnSuccess = function (data, proxy, viewPortWidth, pageWidth, isTileRendering, pageIndex, x, y, noTileX, noTileY) {\n if (!isNullOrUndefined(data.pageText) && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.renderPages, data);\n var pageNumber = (data.pageNumber !== undefined) ? data.pageNumber : pageIndex;\n if (viewPortWidth >= pageWidth) {\n proxy.pdfViewerBase.storeWinData(data, pageNumber);\n }\n else {\n proxy.pdfViewerBase.storeWinData(data, pageNumber, data.tileX, data.tileY);\n }\n if (!isTileRendering) {\n proxy.initSearch(pageIndex, false);\n }\n else {\n if (x === (noTileX - 1) && y === (noTileY - 1)) {\n proxy.initSearch(pageIndex, false);\n }\n }\n }\n else if (isTileRendering && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.renderPages, data);\n var pageNumber = (data.pageNumber !== undefined) ? data.pageNumber : pageIndex;\n proxy.pdfViewerBase.storeWinData(data, pageNumber, data.tileX, data.tileY);\n if (x === (noTileX - 1) && y === (noTileY - 1)) {\n proxy.initSearch(pageIndex, false);\n }\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.getPDFDocumentTexts = function () {\n var startIndex = 0;\n var endIndex = 50;\n var pageCount = this.pdfViewerBase.pageCount;\n if (endIndex >= pageCount) {\n endIndex = pageCount;\n }\n this.createRequestForGetPdfTexts(startIndex, endIndex);\n };\n /**\n * @param startIndex\n * @param endIndex\n * @private\n */\n TextSearch.prototype.createRequestForGetPdfTexts = function (startIndex, endIndex) {\n var proxy = this;\n var jsonObject;\n // eslint-disable-next-line max-len\n jsonObject = { pageStartIndex: startIndex, pageEndIndex: endIndex, documentId: proxy.pdfViewerBase.getDocumentId(), hashId: proxy.pdfViewerBase.hashId, action: 'RenderPdfTexts', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.pdfViewerBase.documentId };\n if (this.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.pdfViewerBase.jsonDocumentId;\n }\n this.searchRequestHandler = new AjaxHandler(this.pdfViewer);\n this.searchRequestHandler.url = this.pdfViewer.serviceUrl + '/' + this.pdfViewer.serverActionSettings.renderTexts;\n this.searchRequestHandler.responseType = 'json';\n if (!this.pdfViewerBase.clientSideRendering) {\n this.searchRequestHandler.send(jsonObject);\n }\n // eslint-disable-next-line\n this.searchRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.pdfViewerBase.onControlError(500, data, this.pdfViewer.serverActionSettings.renderTexts);\n data = null;\n }\n }\n if (data) {\n proxy.pdfTextSearchRequestOnSuccess(data, proxy, startIndex, endIndex);\n }\n }\n };\n // eslint-disable-next-line\n this.searchRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, this.pdfViewer.serverActionSettings.renderTexts);\n };\n // eslint-disable-next-line\n this.searchRequestHandler.onError = function (result) {\n proxy.pdfViewerBase.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, this.pdfViewer.serverActionSettings.renderTexts);\n };\n if (this.pdfViewerBase.clientSideRendering) {\n this.pdfViewer.pdfRendererModule.getDocumentText(jsonObject).then(function (data) {\n proxy.pdfTextSearchRequestOnSuccess(data, proxy, startIndex, endIndex);\n });\n }\n };\n TextSearch.prototype.pdfTextSearchRequestOnSuccess = function (data, proxy, startIndex, endIndex) {\n if (data.documentTextCollection && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.renderTexts, data);\n if (proxy.documentTextCollection.length > 0) {\n proxy.documentTextCollection = data.documentTextCollection.concat(proxy.documentTextCollection);\n proxy.documentTextCollection = proxy.orderPdfTextCollections(proxy.documentTextCollection);\n }\n else {\n proxy.documentTextCollection = data.documentTextCollection;\n }\n var pageCount = proxy.pdfViewerBase.pageCount;\n if (endIndex !== pageCount) {\n startIndex = endIndex;\n endIndex = endIndex + 50;\n if (endIndex >= pageCount) {\n endIndex = pageCount;\n }\n proxy.createRequestForGetPdfTexts(startIndex, endIndex);\n }\n else {\n proxy.isTextRetrieved = true;\n proxy.pdfViewer.fireTextExtractionCompleted(proxy.documentTextCollection);\n if (proxy.isTextSearched && proxy.searchString.length > 0) {\n proxy.textSearch(proxy.searchString);\n proxy.isTextSearched = false;\n }\n }\n }\n };\n // eslint-disable-next-line\n TextSearch.prototype.orderPdfTextCollections = function (oldCollection) {\n // eslint-disable-next-line\n var annotationCollectionList = [];\n for (var i = 0; i < oldCollection.length; i++) {\n if (annotationCollectionList.length === 0) {\n annotationCollectionList.push(oldCollection[i]);\n }\n else {\n // eslint-disable-next-line\n if (parseInt(Object.keys(oldCollection[i])[0]) > parseInt(Object.keys(annotationCollectionList[annotationCollectionList.length - 1])[0])) {\n annotationCollectionList.push(oldCollection[i]);\n }\n else {\n for (var j = 0; j < annotationCollectionList.length; j++) {\n // eslint-disable-next-line\n if ((parseInt(Object.keys(oldCollection[i])[0]) < parseInt(Object.keys(annotationCollectionList[j])[0]))) {\n annotationCollectionList.splice(j, 0, oldCollection[i]);\n break;\n }\n }\n }\n }\n }\n return annotationCollectionList;\n };\n TextSearch.prototype.createSearchBoxButtons = function (id, className) {\n // eslint-disable-next-line max-len\n var button = createElement('button', { id: this.pdfViewer.element.id + '_' + id, className: 'e-btn e-icon-btn e-pv-search-btn ' + className });\n button.setAttribute('type', 'button');\n // eslint-disable-next-line max-len\n var iconSpan = createElement('span', { id: this.pdfViewer.element.id + '_' + id + 'Icon', className: 'e-pv-icon-search ' + className + '-icon' });\n button.disabled = true;\n button.appendChild(iconSpan);\n return button;\n };\n TextSearch.prototype.enablePrevButton = function (isEnable) {\n if ((!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n if (isEnable) {\n this.prevSearchBtn.removeAttribute('disabled');\n }\n else {\n if (this.prevSearchBtn) {\n this.prevSearchBtn.disabled = true;\n }\n }\n }\n };\n TextSearch.prototype.enableNextButton = function (isEnable) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (isEnable) {\n this.nextSearchBtn.removeAttribute('disabled');\n }\n else {\n if (this.nextSearchBtn) {\n this.nextSearchBtn.disabled = true;\n }\n }\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.resetVariables = function () {\n this.searchedPages = [];\n // eslint-disable-next-line\n this.searchMatches = new Array();\n };\n /**\n * @param element\n * @param inputElement\n * @private\n */\n TextSearch.prototype.searchButtonClick = function (element, inputElement) {\n this.isMessagePopupOpened = false;\n if (isBlazor() && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n var searchElement = this.pdfViewerBase.getElement('_search_box-icon');\n element = searchElement.children[0].children[0];\n inputElement = this.pdfViewerBase.getElement('_search_input');\n }\n if (element.classList.contains('e-pv-search-icon')) {\n this.initiateTextSearch(inputElement);\n }\n else if (element.classList.contains('e-pv-search-close')) {\n this.showLoadingIndicator(false);\n inputElement.value = '';\n this.resetTextSearch();\n inputElement.focus();\n }\n };\n TextSearch.prototype.updateSearchInputIcon = function (isEnable) {\n if (isBlazor()) {\n if (this.searchBtn && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n this.searchBtn = this.pdfViewerBase.getElement('_search_box-icon').children[0].children[0];\n }\n }\n if (this.searchBtn) {\n if (isEnable) {\n this.searchBtn.classList.remove('e-pv-search-close');\n this.searchBtn.classList.add('e-pv-search-icon');\n }\n else {\n this.searchBtn.classList.remove('e-pv-search-icon');\n this.searchBtn.classList.add('e-pv-search-close');\n }\n }\n };\n TextSearch.prototype.onMessageBoxOpen = function () {\n var _this = this;\n this.showLoadingIndicator(false);\n this.pdfViewerBase.getElement('_search_input').blur();\n this.isMessagePopupOpened = true;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Nomatches');\n promise.then(function (value) {\n _this.pdfViewerBase.textLayer.createNotificationPopup(value);\n });\n }\n else {\n this.pdfViewerBase.textLayer.createNotificationPopup(this.pdfViewer.localeObj.getConstant('No matches'));\n }\n }\n else {\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_NoTextFound');\n promise.then(function (value) {\n _this.pdfViewerBase.navigationPane.createTooltipMobile(value);\n });\n }\n else {\n this.pdfViewerBase.navigationPane.createTooltipMobile(this.pdfViewer.localeObj.getConstant('No Text Found'));\n }\n }\n };\n /**\n * Searches the target text in the PDF document and highlights the occurrences in the pages\n *\n * @param {string} searchText - Specifies the searchText content\n * @param {boolean} isMatchCase - If set true , its highlights the MatchCase content\n * @returns void\n */\n TextSearch.prototype.searchText = function (searchText, isMatchCase) {\n if (searchText && searchText.length > 0 && searchText[searchText.length - 1] === ' ') {\n searchText = searchText.slice(0, searchText.length - 1);\n }\n this.searchString = searchText;\n this.isMatchCase = isMatchCase;\n this.searchIndex = 0;\n this.textSearch(searchText);\n };\n /**\n * Searches the next occurrence of the searched text from the current occurrence of the PdfViewer.\n *\n * @returns void\n */\n TextSearch.prototype.searchNext = function () {\n this.nextSearch();\n };\n /**\n * Searches the previous occurrence of the searched text from the current occurrence of the PdfViewer.\n *\n * @returns void\n */\n TextSearch.prototype.searchPrevious = function () {\n this.prevSearch();\n };\n /**\n * Cancels the text search of the PdfViewer.\n *\n * @returns void\n */\n TextSearch.prototype.cancelTextSearch = function () {\n this.resetTextSearch();\n };\n /**\n * @private\n */\n TextSearch.prototype.destroy = function () {\n this.searchMatches = undefined;\n };\n /**\n * @private\n */\n TextSearch.prototype.getModuleName = function () {\n return 'TextSearch';\n };\n return TextSearch;\n}());\nexport { TextSearch };\n","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PdfComponent.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PdfComponent.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PdfComponent.vue?vue&type=template&id=d11d8384&scoped=true\"\nimport script from \"./PdfComponent.vue?vue&type=script&lang=js\"\nexport * from \"./PdfComponent.vue?vue&type=script&lang=js\"\nimport style0 from \"./PdfComponent.vue?vue&type=style&index=0&id=d11d8384&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d11d8384\",\n null\n \n)\n\nexport default component.exports","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n _this.orientationChangeContext = _this.orientationChange.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n window.addEventListener('orientationchange', this.orientationChangeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n window.removeEventListener('orientationchange', this.orientationChangeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index--;\n }\n return element;\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshOverflow();\n });\n }\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n var scrollEle = this.scrollModule.element.querySelector('.' + CLS_HSCROLLBAR + ', .' + 'e-vscroll-bar');\n if (scrollEle) {\n scrollEle.removeAttribute('tabindex');\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && sepItem.offsetHeight);\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = { minWidth: el.style.minWidth, height: el.style.height, minHeight: el.style.minHeight };\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate, undefined, undefined, this.root);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n var firstChild = innerEle.firstElementChild;\n if (!isNOU(firstChild)) {\n firstChild.setAttribute('tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n firstChild.setAttribute('data-tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n }\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer && !isNOU(item.tooltipText) ?\n SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n this.updateTabIndex('-1');\n curEle.removeAttribute('tabindex');\n }\n else {\n var tabIndex = parseInt(this.getDataTabindex(this.activeEle)) + 1;\n this.activeEle.setAttribute('tabindex', tabIndex.toString());\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n ele.classList.remove(CLS_RTL);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, extend, deleteObject, Property, addClass, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {Object} props - Specifies the properties\n * @param {string[]} model - Specifies the model\n * @returns {Object} Component Model\n */\nexport function getModel(props, model) {\n var obj = extend({}, props);\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((model).indexOf(prop) < 0) {\n deleteObject(obj, prop);\n }\n }\n return obj;\n}\n/** @hidden\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {number} keyCode - Specifies the keycode\n * @returns {void}\n */\nexport function upDownKeyHandler(ul, keyCode) {\n var defaultIdx = keyCode === 40 ? 0 : ul.childElementCount - 1;\n var liIdx = defaultIdx;\n var li;\n var selectedLi = ul.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains('e-focused')) {\n li = ul.children[i];\n liIdx = i;\n li.classList.remove('e-focused');\n if (keyCode === 40) {\n liIdx++;\n }\n else {\n liIdx--;\n }\n if (liIdx === (keyCode === 40 ? ul.childElementCount : -1)) {\n liIdx = defaultIdx;\n }\n }\n }\n li = ul.children[liIdx];\n liIdx = isValidLI(ul, li, liIdx, keyCode);\n if (liIdx !== -1) {\n addClass([ul.children[liIdx]], 'e-focused');\n ul.children[liIdx].focus();\n }\n}\n/**\n * Get Valid LI element\n *\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {Element} li - Specifies the LI element\n * @param {number} index - Specifies the index\n * @param {number} keyCode - Specifies the keycode\n * @param {number} count - Specifies the count\n * @returns {number} - Index\n */\nfunction isValidLI(ul, li, index, keyCode, count) {\n if (count === void 0) { count = 0; }\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n if (index === (keyCode === 40 ? ul.childElementCount - 1 : 0)) {\n index = keyCode === 40 ? 0 : ul.childElementCount - 1;\n }\n else {\n if (keyCode === 40) {\n index++;\n }\n else {\n index--;\n }\n }\n }\n li = ul.children[index];\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n count++;\n if (count === ul.childElementCount) {\n return index = -1;\n }\n index = isValidLI(ul, li, index, keyCode, count);\n }\n return index;\n}\n/** @hidden\n * @param {HTMLElement} popup - Specifies the popup element.\n * @returns {void}\n */\nexport function setBlankIconStyle(popup, blankIcon) {\n var blankIconList = [].slice.call(popup.getElementsByClassName('e-blank-icon'));\n if (blankIcon) {\n var menuItem = [].slice.call(popup.getElementsByClassName('e-item'));\n menuItem.forEach(function (li) {\n if (li.style.paddingLeft || li.style.paddingRight) {\n li.removeAttribute('style');\n }\n });\n }\n if (!blankIconList.length) {\n return;\n }\n var iconLi = popup.querySelector('.e-item:not(.e-blank-icon):not(.e-separator)');\n if (isNullOrUndefined(iconLi)) {\n return;\n }\n if (iconLi.classList.contains('e-url')) {\n iconLi = iconLi.querySelector('.e-menu-url');\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n var cssProp;\n var enableRtl = popup.classList.contains('e-rtl');\n if (enableRtl) {\n cssProp = { padding: 'paddingRight', margin: 'marginLeft' };\n }\n else {\n cssProp = { padding: 'paddingLeft', margin: 'marginRight' };\n }\n /* eslint-disable */\n var size = parseInt(getComputedStyle(icon).fontSize, 10) + parseInt((enableRtl ? getComputedStyle(icon)[cssProp.margin] : getComputedStyle(icon)[cssProp.margin]), 10)\n + parseInt(getComputedStyle(iconLi).paddingLeft, 10) + \"px\";\n blankIconList.forEach(function (li) {\n if (li.classList.contains('e-url')) {\n li.querySelector('.e-menu-url').style[cssProp.padding] = size;\n }\n else {\n li.style[cssProp.padding] = size;\n }\n });\n /* eslint-enable */\n}\n/**\n * Defines the items of Split Button/DropDownButton.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"separator\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"url\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (this.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n var isExistItem = !isNullOrUndefined(li) ? true : false;\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n if (this.dataSource instanceof DataManager && this.virtualGroupDataSource) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', this.value)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n isExistItem = true;\n var dataItem = this.getItemData();\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', this.value)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n isExistItem = true;\n var dataItem = this.getItemData();\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n }\n }\n }\n }\n if (li) {\n this.setSelection(li, null);\n }\n else if ((!this.enableVirtualization && this.allowCustom) || (this.allowCustom && this.enableVirtualization && !isExistItem)) {\n this.valueMuteChange(this.value);\n }\n else if (!this.enableVirtualization || (this.enableVirtualization && !isExistItem)) {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped && !this.enableVirtualization) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text && dataItem.text.toString() === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n while (isNullOrUndefined(activeItem) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n if (!isNullOrUndefined(activeItem)) {\n break;\n }\n if (isNullOrUndefined(activeItem) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeItem.index) {\n if ((!(this.viewPortInfo.startIndex >= activeItem.index)) || (!(activeItem.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeItem.index - ((this.itemCount / 2) - 2) > 0 ? activeItem.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeItem.item)) {\n var index_1 = this.getIndexByValue(activeItem.item.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeItem && activeItem.item) {\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n }\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n if (!this.enableVirtualization) {\n this.list.scrollTop = count * height + fixedHead;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? activeElement.offsetTop + (this.virtualListInfo.startIndex * activeElement.offsetHeight) : activeElement.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * activeElement.offsetHeight);\n }\n }\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && this.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && currentValue !== this.value) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n this.setProperties({ value: value });\n if (previousValue_1 !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE, CLS_RTL]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, setValue } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var ariaState;\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n if (frameSpan) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else if (state === 'uncheck') {\n if (frameSpan) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n }\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else {\n if (frameSpan) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n this.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n if (this.isVue) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL') {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n this.element = wrapper;\n if (this.refreshing) {\n ['e-control', 'e-checkbox', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.getLabel = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check', true);\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(label, 'mouseleave', this.labelMouseLeaveHandler);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(label, 'mouseleave', this.labelMouseLeaveHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.validCheck ? this.element.checked : !this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.getWrapper();\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Browser, L10n, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\nvar selectionTimeOut = 0;\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n else if (attributeName === 'class') {\n input.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('numerictextbox'));\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n this.wireEvents();\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'aria-label': 'hidden', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, { 'name': this.cloneElement.id });\n }\n else {\n attributes(this.hiddenInput, { 'name': this.inputName });\n }\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n if (this.min !== -(Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemin': this.min.toString() });\n }\n if (this.max !== (Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemax': this.max.toString() });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n this.inputValue = (isNullOrUndefined(this.inputValue) || isNaN(this.inputValue)) ? null : this.inputValue;\n if (this.prevValue !== this.value || this.prevValue !== this.inputValue) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator && _this.decimals === 0 && _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) || ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && this.element.value[this.element.value.length - 1] === '0')) {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.inputValue = value;\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === 'NumpadDecimal' && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === 'touchmove') {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n if (this.spinUp) {\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n }\n if (this.spinDown) {\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex',\n 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElement, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n else {\n this.element.parentElement.setAttribute('role', 'dialog');\n this.element.parentElement.setAttribute('aria-label', 'context menu');\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'mousewheel DOMMouseScroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'mousewheel DOMMouseScroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n var _this = this;\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + '-' + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n var aEle = fli.querySelector('.e-menu-url');\n if (item.url && aEle) {\n switch (aEle.getAttribute('target')) {\n case '_blank':\n window.open(item.url, '_blank');\n break;\n case '_parent':\n window.parent.location.href = item.url;\n break;\n default:\n window.location.href = item.url;\n }\n }\n this.closeMenu(null, e);\n var sli = this.getLIByClass(this.getUlByNavIdx(), SELECTED);\n if (sli) {\n sli.classList.add(FOCUSED);\n sli.focus();\n }\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n if (_this.navIdx.length === 0 && e && e.type === 'keyup') {\n _this.showSubMenu = false;\n }\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line\n trgtliId = new RegExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && (e.target.classList.contains('e-vscroll') || e.target.classList.contains('e-scroll-nav')))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n if (!(e && e.target.classList.contains('e-nav-arrow'))) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent('click', true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MenuBase.prototype.copyObject = function (source, destination) {\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n if (Browser.isIE) {\n args.curData.htmlAttributes.role = 'menuitem';\n args.curData.htmlAttributes.tabindex = '-1';\n }\n else {\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', tabindex: '-1' });\n }\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.setAttribute('role', 'separator');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n if (isNullOrUndefined(cul)) {\n return;\n }\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (this_1.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'mousewheel DOMMouseScroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'mousewheel DOMMouseScroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul && !isNullOrUndefined(idx)) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n var item;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n item = this.getItems(navIdx);\n if (ul) {\n var validUl = isUniqueId ? ul.children[index].id : item[index].text.toString();\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else if (!ishide && validUl === items[i]) {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PdfComponent.vue?vue&type=style&index=0&id=d11d8384&prod&scoped=true&lang=css\"","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, closest, Collection, Complex, attributes, detach, isNullOrUndefined, animationMode } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, select, isVisible } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Browser, formatUnit, L10n } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, isNullOrUndefined as isNOU, selectAll, addClass, removeClass, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, rippleEffect, Touch, compile, Animation } from '@syncfusion/ej2-base';\nimport { getRandomId, SanitizeHtmlHelper, Draggable } from '@syncfusion/ej2-base';\nimport { Toolbar } from '../toolbar/toolbar';\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT = 'e-content';\nvar CLS_NEST = 'e-nested';\nvar CLS_ITEMS = 'e-items';\nvar CLS_ITEM = 'e-item';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_RTL = 'e-rtl';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_DISABLE = 'e-disable';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar CLS_FILL = 'e-fill-mode';\nvar TABITEMPREFIX = 'tabitem_';\nvar CLS_REORDER_ACTIVE_ITEM = 'e-reorder-active-item';\n/**\n * Objects used for configuring the Tab selecting item action properties.\n */\nvar TabActionSettings = /** @class */ (function (_super) {\n __extends(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\nexport { TabActionSettings };\n/**\n * Objects used for configuring the Tab animation properties.\n */\nvar TabAnimationSettings = /** @class */ (function (_super) {\n __extends(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\nexport { TabAnimationSettings };\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\nexport { Header };\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @class */ (function (_super) {\n __extends(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n __decorate([\n Property(true)\n ], TabItem.prototype, \"visible\", void 0);\n __decorate([\n Property()\n ], TabItem.prototype, \"id\", void 0);\n __decorate([\n Property(-1)\n ], TabItem.prototype, \"tabIndex\", void 0);\n return TabItem;\n}(ChildProperty));\nexport { TabItem };\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n *
\n * \n * ```\n */\nvar Tab = /** @class */ (function (_super) {\n __extends(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n *\n * @param {TabModel} options - Specifies Tab model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.isInteracted = false;\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.draggableItems = [];\n _this.resizeContext = _this.refreshActiveTabBorder.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Tab.prototype.destroy = function () {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n if (!isNOU(this.tbObj)) {\n this.tbObj.destroy();\n this.tbObj = null;\n }\n this.unWireEvents();\n this.element.removeAttribute('aria-disabled');\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n this.element.classList.remove(CLS_TEMPLATE);\n if (!isNOU(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n if (this.btnCls) {\n this.btnCls = null;\n }\n this.hdrEle = null;\n this.cntEle = null;\n this.tbItems = null;\n this.tbItem = null;\n this.tbPop = null;\n this.prevItem = null;\n this.popEle = null;\n this.bdrLine = null;\n this.content = null;\n this.dragItem = null;\n this.cloneElement = null;\n this.draggingItems = [];\n if (this.draggableItems && this.draggableItems.length > 0) {\n for (var i = 0; i < this.draggableItems.length; i++) {\n this.draggableItems[i].destroy();\n this.draggableItems[i] = null;\n }\n this.draggableItems = [];\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Refresh the tab component\n *\n * @returns {void}\n */\n Tab.prototype.refresh = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.refresh.call(this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Initialize component\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwiped = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (this.allowDragAndDrop) {\n this.dragArea = !isNOU(this.dragArea) ? this.dragArea : '#' + this.element.id + ' ' + ('.' + CLS_HEADER);\n }\n if (!isNOU(nested)) {\n nested.parentElement.classList.add(CLS_NEST);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyle(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { 'aria-disabled': 'false' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.render = function () {\n var _this = this;\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.tabId = this.element.id.length > 0 ? ('-' + this.element.id) : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n if (!isNOU(_this.tbObj)) {\n _this.tbObj.refreshOverflow();\n }\n _this.refreshActiveBorder();\n });\n }\n };\n Tab.prototype.renderContainer = function () {\n var ele = this.element;\n this.items.forEach(function (item, index) {\n if (isNOU(item.id) && !isNOU(item.setProperties)) {\n item.setProperties({ id: TABITEMPREFIX + index.toString() }, true);\n }\n });\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE);\n var header = ele.querySelector('.' + CLS_HEADER);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNOU(select('.' + CLS_HEADER, this.element)) && !isNOU(select('.' + CLS_CONTENT, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN + ' ' + CLS_IGNORE });\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i));\n }\n if (count > 0) {\n var tabItems_1 = this.createElement('div', { className: CLS_ITEMS });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM, id: CLS_ITEM + _this.tabId + '_' + index\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', {\n className: CLS_WRAP, innerHTML: cont,\n attrs: { role: 'tab', tabIndex: '-1', 'aria-selected': 'false', 'aria-controls': CLS_CONTENT + _this.tabId + '_' + index, 'aria-disabled': 'false' }\n });\n wrap.querySelector('.' + CLS_TEXT).appendChild(item);\n tabItems_1.appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM, tabItems_1)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n cssClass: this.cssClass\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, { role: 'tablist' });\n if (!isNOU(this.element.getAttribute('aria-label'))) {\n this.hdrEle.setAttribute('aria-label', this.element.getAttribute('aria-label'));\n this.element.removeAttribute('aria-label');\n }\n else if (!isNOU(this.element.getAttribute('aria-labelledby'))) {\n this.hdrEle.setAttribute('aria-labelledby', this.element.getAttribute('aria-labelledby'));\n this.element.removeAttribute('aria-labelledby');\n }\n this.setCloseButton(this.showCloseButton);\n var toolbarHeader = this.tbObj.element.querySelector('.' + CLS_TB_ITEMS);\n if (!isNOU(toolbarHeader)) {\n if (isNOU(toolbarHeader.id) || toolbarHeader.id === '') {\n toolbarHeader.id = this.element.id + '_' + 'tab_header_items';\n }\n }\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n addClass([contents.item(i)], CLS_ITEM);\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT + this.tabId + '_' + i;\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbItems = Array.prototype.slice.call(selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element));\n var maxId = this.lastIndex;\n if (!this.isReplace && tbItems.length > 0) {\n var idList_1 = [];\n tbItems.forEach(function (item) {\n idList_1.push(_this.getIndexFromEle(item.id));\n });\n maxId = Math.max.apply(Math, idList_1);\n }\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n var i = 0;\n items.forEach(function (item, i) {\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNOU(item.headerTemplate)) && (isNOU(item.header) || isNOU(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n if (typeof txt === 'string' && _this.enableHtmlSanitizer) {\n txt = SanitizeHtmlHelper.sanitize(txt);\n }\n var itemIndex;\n if (_this.isReplace && !isNOU(_this.tbId) && _this.tbId !== '') {\n itemIndex = parseInt(_this.tbId.substring(_this.tbId.lastIndexOf('_') + 1), 10);\n _this.tbId = '';\n }\n else {\n itemIndex = index + i;\n }\n _this.lastIndex = ((tbItems.length === 0) ? i : ((_this.isReplace) ? (itemIndex) : (maxId + 1 + i)));\n var disabled = (item.disabled) ? ' ' + CLS_DISABLE + ' ' + CLS_OVERLAY : '';\n var hidden = (item.visible === false) ? ' ' + CLS_HIDDEN : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNOU(tHtml) && tHtml !== '');\n if (!isNOU(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAttrs = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'false', 'aria-disabled': 'false' };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray instanceof Array) {\n _this.itemIndexArray.splice((index + i), 0, CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM + _this.tabId + '_' + _this.lastIndex, 'data-id': item.id\n };\n var tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = ((item.cssClass !== undefined) ? item.cssClass : ' ') + ' ' + disabled + ' ' + hidden + ' '\n + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n if (this.isIconAlone) {\n this.element.classList.add(CLS_ICON_TAB);\n }\n else {\n this.element.classList.remove(CLS_ICON_TAB);\n }\n return tItems;\n };\n Tab.prototype.removeActiveClass = function () {\n var tabHeader = this.getTabHeader();\n if (tabHeader) {\n var tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, tabHeader);\n [].slice.call(tabItems).forEach(function (node) { return node.classList.remove(CLS_ACTIVE); });\n [].slice.call(tabItems).forEach(function (node) { return node.firstElementChild.setAttribute('aria-selected', 'false'); });\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele, selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNOU(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target);\n this.actEleId = target.id;\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER, this.element);\n if (val === true) {\n trg.classList.add(CLS_CLOSE_SHOW);\n }\n else {\n trg.classList.remove(CLS_CLOSE_SHOW);\n }\n this.tbObj.refreshOverflow();\n this.refreshActiveTabBorder();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing\n };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing\n };\n }\n else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNOU(animateObj)) {\n animateObj.begin = function () {\n setStyle(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyle(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var oldCnt;\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT).children);\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n var newCnt = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(oldCnt) && !isNOU(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n if (!isNOU(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n var isPrevent = isNOU(this.animation) || isNOU(this.animation.next.effect) || isNOU(this.animation.previous.effect)\n || this.animation.previous.effect === 'None' || this.animation.next.effect === 'None';\n if (this.initRender || value === false || isPrevent) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: (this.animation.previous.duration === 0 && animationMode === 'Enable') ? 600 : this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: (this.animation.next.duration === 0 && animationMode === 'Enable') ? 600 : this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE);\n };\n if (!this.initRender && !isNOU(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNOU(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNOU(trgParent) && trgParent.classList.contains(CLS_ACTIVE) === false) {\n this.selectTab(trgIndex, null, true);\n if (!isNOU(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n if (isNOU(this.element)) {\n return undefined;\n }\n var headers = [].slice.call(this.element.children).filter(function (e) { return e.classList.contains(CLS_HEADER); });\n if (headers.length > 0) {\n return headers[0];\n }\n else {\n var wrap = [].slice.call(this.element.children).filter(function (e) { return !e.classList.contains(CLS_BLA_TEM); })[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter(function (e) { return e.classList.contains(CLS_HEADER); })[0];\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM + this.tabId + '_', '');\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string') {\n val = val.trim();\n if (this.isVue) {\n templateFn = compile(SanitizeHtmlHelper.sanitize(val));\n }\n else {\n ele.innerHTML = SanitizeHtmlHelper.sanitize(val);\n }\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNOU(templateFn)) {\n templateFUN = templateFn({}, this, prop);\n }\n if (!isNOU(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n cnt = isNOU(cnt) ? '' : cnt;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST)) {\n ele = select('.' + CLS_NEST + '> .' + CLS_CONTENT + ' > #' + CLS_CONTENT + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT + this.tabId + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL, tbPos]);\n if (!this.element.classList.contains(CLS_NEST)) {\n addClass([this.element], [CLS_VTAB, tbPos]);\n }\n else {\n addClass([this.hdrEle], [CLS_VTAB, tbPos]);\n }\n }\n if (this.headerPlacement === 'Bottom') {\n addClass([this.hdrEle], [CLS_HBOTTOM]);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var activeTab = this.hdrEle.querySelector('.' + CLS_ACTIVE);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n if (!isNOU(activeTab) && activeTab.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(activeTab);\n }\n }\n this.addVerticalClass();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.focusItem = function () {\n var curActItem = select(' #' + CLS_ITEM + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNOU(curActItem)) {\n curActItem.firstElementChild.focus();\n }\n };\n Tab.prototype.changeToolbarOrientation = function () {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n };\n Tab.prototype.setOrientation = function (place, ele) {\n var headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n var contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT));\n if (place === 'Bottom' && (contentPos > headerPos)) {\n this.element.appendChild(ele);\n }\n else {\n removeClass([ele], [CLS_HBOTTOM]);\n this.element.insertBefore(ele, select('.' + CLS_CONTENT, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '') {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNOU(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyle(this.cntEle, { 'height': (this.element.clientHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyle(this.element, { 'height': '100%' });\n this.cntEle.style.height = 'calc(100% - ' + this.hdrEle.offsetHeight + 'px)';\n }\n else if (this.heightAdjustMode === 'Auto') {\n if (this.isTemplate === true) {\n var cnt = selectAll('.' + CLS_CONTENT + ' > .' + CLS_ITEM, this.element);\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT + this.tabId + '_' + 0), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + 0 }\n }));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n if (this.isReact) {\n this.clearTemplate(['content']);\n }\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n if (this.prevIndex !== this.selectedItem) {\n ele.classList.remove(CLS_ACTIVE);\n }\n }\n setStyle(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyle(this.cntEle, { 'height': 'auto' });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var trgHdrEle = this.getTabHeader();\n var trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, trgHdrEle);\n if (isNOU(trg)) {\n return;\n }\n if (!this.reorderActiveTab) {\n if (trg.classList.contains(CLS_TB_POPUP) && !this.bdrLine.classList.contains(CLS_HIDDEN)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n if (trgHdrEle && !trgHdrEle.classList.contains(CLS_REORDER_ACTIVE_ITEM)) {\n trgHdrEle.classList.add(CLS_REORDER_ACTIVE_ITEM);\n }\n }\n else if (trgHdrEle) {\n trgHdrEle.classList.remove(CLS_REORDER_ACTIVE_ITEM);\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n var bar = select('.' + CLS_INDICATOR, trgHdrEle);\n var scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyle(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNOU(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyle(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyle(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n if (this.overflowMode === 'MultiRow') {\n var top_1 = this.headerPlacement === 'Bottom' ? trg.offsetTop : trg.offsetHeight + trg.offsetTop;\n setStyle(bar, { 'top': top_1 + 'px', 'height': '' });\n }\n else {\n setStyle(bar, { 'top': '', 'height': '' });\n }\n var tbWidth = (isNOU(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyle(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyle(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNOU(this.bdrLine) && !trg.classList.contains(CLS_TB_POPUP)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value, skipDataBind, isInteracted) {\n if (skipDataBind === void 0) { skipDataBind = false; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\n if (value < 0 || isNaN(value) || this.tbItem.length === 0 || !isNOU(trg) && trg.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (value >= 0 && !skipDataBind) {\n this.allowServerDataBinding = false;\n this.setProperties({ selectedItem: value }, true);\n this.allowServerDataBinding = true;\n if (!this.initRender) {\n this.serverDataBind();\n }\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n attributes(trg.firstElementChild, { 'aria-controls': CLS_CONTENT + this.tabId + '_' + value });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE);\n trg.firstElementChild.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNOU(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT + this.tabId + '_' + no;\n }\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT, this.element).children, CLS_CONTENT + this.tabId + '_' + no);\n if (!isNOU(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + this.extIndex(id) }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n this.refreshItemVisibility(trg);\n if (!this.initRender && !skipDataBind) {\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwiped,\n isInteracted: isInteracted,\n preventFocus: false\n };\n this.trigger('selected', eventArg, function (selectEventArgs) {\n if (!selectEventArgs.preventFocus) {\n trg.firstElementChild.focus();\n }\n });\n }\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop && tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left') ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.bindDraggable = function () {\n var _this = this;\n if (this.allowDragAndDrop) {\n var tabHeader = this.element.querySelector('.' + CLS_HEADER);\n if (tabHeader) {\n var items = Array.prototype.slice.call(tabHeader.querySelectorAll('.' + CLS_TB_ITEM));\n items.forEach(function (element) {\n _this.initializeDrag(element);\n });\n }\n }\n };\n Tab.prototype.wireEvents = function () {\n this.bindDraggable();\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n if (!isNOU(this.tabKeyModule)) {\n this.tabKeyModule.destroy();\n }\n if (!isNOU(this.cntEle) && !isNOU(this.touchModule)) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (!isNOU(trgParent) && (trgIndex !== this.selectedItem)) {\n this.selectTab(trgIndex, args.originalEvent, true);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNOU(e.originalEvent.changedTouches)) {\n return;\n }\n if (this.isNested) {\n this.element.setAttribute('data-swipe', 'true');\n }\n var nestedTab = this.element.querySelector('[data-swipe=\"true\"]');\n if (nestedTab) {\n nestedTab.removeAttribute('data-swipe');\n return;\n }\n this.isSwiped = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.selectTab(k, null, true);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.selectTab(i, null, true);\n break;\n }\n }\n }\n this.isSwiped = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n var clstHead = closest(e.target, '.' + CLS_HEADER);\n if (!isNOU(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var tabHeader = this.getTabHeader();\n var actEle = select('.' + CLS_ACTIVE, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNOU(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE) === false) {\n trg.setAttribute('tabindex', trg.getAttribute('data-tabindex'));\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n if (!isNOU(actEle) && actEle.children.item(0).getAttribute('tabindex') === '-1') {\n actEle.children.item(0).setAttribute('tabindex', '0');\n }\n break;\n case 'moveLeft':\n case 'moveRight':\n if (!isNOU(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNOU(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n if (this.showCloseButton === true && !isNOU(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNOU(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstElementChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNOU(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n };\n Tab.prototype.getIndexFromEle = function (id) {\n return parseInt(id.substring(id.lastIndexOf('_') + 1), 10);\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNOU(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n var _this = this;\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var properties = Object.keys(newProp.items[index]);\n for (var j = 0; j < properties.length; j++) {\n var oldVal = Object(oldProp.items[index])[properties[j]];\n var newVal = Object(newProp.items[index])[properties[j]];\n var hdr = this.element.querySelectorAll('.' + CLS_TB_ITEM)[index];\n var itemIndex = void 0;\n if (hdr && !isNOU(hdr.id) && hdr.id !== '') {\n itemIndex = this.getIndexFromEle(hdr.id);\n }\n else {\n itemIndex = index;\n }\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + this.tabId + '_' + itemIndex, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + this.tabId + '_' + itemIndex, this.element);\n if (properties[j] === 'header' || properties[j] === 'headerTemplate') {\n var icon = (isNOU(this.items[index].header) ||\n isNOU(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if (properties[j] === 'headerTemplate') {\n this.clearTabTemplate(hdrItem, properties[j], CLS_TB_ITEM);\n }\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n this.tbId = hdr.id;\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (properties[j] === 'content' && !isNOU(cntItem)) {\n var strVal = typeof newVal === 'string' || isNOU(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else if (this.isAngular || this.isReact) {\n this.clearTabTemplate(cntItem, properties[j], CLS_ITEM);\n cntItem.innerHTML = '';\n this.templateCompile(cntItem, newVal, index);\n }\n else if (typeof newVal !== 'function') {\n cntItem.innerHTML = newVal;\n }\n }\n if (properties[j] === 'cssClass') {\n if (!isNOU(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNOU(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (properties[j] === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n if (properties[j] === 'visible') {\n this.hideTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshActiveTabBorder();\n });\n }\n }\n else {\n this.lastIndex = 0;\n if (isNOU(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (selectElement.firstElementChild) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n this.draggableItems = [];\n this.bindDraggable();\n }\n }\n };\n Tab.prototype.clearTabTemplate = function (templateEle, templateName, className) {\n if (!this.clearTemplates) {\n return;\n }\n if (this.registeredTemplate && this.registeredTemplate[templateName]) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[templateName].length; index++) {\n var registeredItem = registeredTemplates[templateName][index].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], [registeredTemplates[templateName][index]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[index];\n var closestItem = closest(portalItem.containerInfo, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\n }\n }\n };\n Tab.prototype.initializeDrag = function (target) {\n var _this = this;\n var dragObj = new Draggable(target, {\n dragArea: this.dragArea,\n dragTarget: '.' + CLS_TB_ITEM,\n clone: true,\n helper: this.helper.bind(this),\n dragStart: this.itemDragStart.bind(this),\n drag: function (e) {\n var dragIndex = _this.getEleIndex(_this.dragItem);\n var dropIndex;\n var dropItem;\n var dragArgs = {\n draggedItem: _this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: e.target.closest('.' + CLS_TB_ITEM),\n clonedElement: _this.cloneElement,\n index: dragIndex\n };\n if (!isNOU(e.target.closest('.' + CLS_TAB)) && !e.target.closest('.' + CLS_TAB).isEqualNode(_this.element) &&\n _this.dragArea !== '.' + CLS_HEADER) {\n _this.trigger('dragging', dragArgs);\n }\n else {\n if (!(e.target.closest(_this.dragArea)) && _this.overflowMode !== 'Popup') {\n document.body.style.cursor = 'not-allowed';\n addClass([_this.cloneElement], CLS_HIDDEN);\n if (_this.dragItem.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.dragItem], CLS_HIDDEN);\n }\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n }\n else {\n document.body.style.cursor = '';\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n if (_this.cloneElement.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.cloneElement], CLS_HIDDEN);\n }\n }\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n var scrollRightNavEle = _this.element.querySelector('.e-scroll-right-nav');\n var scrollLeftNavEle = _this.element.querySelector('.e-scroll-left-nav');\n var hscrollBar = _this.element.querySelector('.e-hscroll-bar');\n if (!isNOU(scrollRightNavEle) && Math.abs((scrollRightNavEle.offsetWidth / 2) +\n scrollRightNavEle.offsetLeft) > _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n hscrollBar.scrollLeft -= 10;\n }\n if (!isNOU(scrollLeftNavEle) && Math.abs((scrollLeftNavEle.offsetLeft + scrollLeftNavEle.offsetWidth) -\n _this.cloneElement.offsetLeft) > (scrollLeftNavEle.offsetWidth / 2)) {\n hscrollBar.scrollLeft += 10;\n }\n }\n _this.cloneElement.style.pointerEvents = 'none';\n dropItem = closest(e.target, '.' + CLS_TB_ITEM + '.e-draggable');\n var scrollContentWidth = 0;\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n scrollContentWidth = _this.element.querySelector('.e-hscroll-content').offsetWidth;\n }\n if (dropItem != null && !dropItem.isSameNode(_this.dragItem) &&\n dropItem.closest('.' + CLS_TAB).isSameNode(_this.dragItem.closest('.' + CLS_TAB))) {\n dropIndex = _this.getEleIndex(dropItem);\n if (dropIndex < dragIndex &&\n (Math.abs((dropItem.offsetLeft + dropItem.offsetWidth) -\n _this.cloneElement.offsetLeft) > (dropItem.offsetWidth / 2))) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n if (dropIndex > dragIndex &&\n (Math.abs(dropItem.offsetWidth / 2) + dropItem.offsetLeft -\n scrollContentWidth) < _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n }\n _this.droppedIndex = _this.getEleIndex(_this.dragItem);\n _this.trigger('dragging', dragArgs);\n }\n },\n dragStop: this.itemDragStop.bind(this)\n });\n this.draggableItems.push(dragObj);\n };\n Tab.prototype.helper = function (e) {\n this.cloneElement = this.createElement('div');\n if (e.element) {\n this.cloneElement = (e.element.cloneNode(true));\n addClass([this.cloneElement], 'e-tab-clone-element');\n if (this.element.querySelector('.' + CLS_HEADER).classList.contains(CLS_CLOSE_SHOW)) {\n addClass([this.cloneElement], CLS_CLOSE_SHOW);\n }\n removeClass([this.cloneElement.querySelector('.' + CLS_WRAP)], 'e-ripple');\n if (!isNOU(this.cloneElement.querySelector('.e-ripple-element'))) {\n remove(this.cloneElement.querySelector('.e-ripple-element'));\n }\n document.body.appendChild(this.cloneElement);\n }\n return this.cloneElement;\n };\n Tab.prototype.itemDragStart = function (e) {\n var _this = this;\n this.draggingItems = this.items.map(function (x) { return x; });\n this.dragItem = e.element;\n var dragArgs = {\n draggedItem: e.element,\n event: e.event,\n target: e.target,\n droppedItem: null,\n index: this.getEleIndex(this.dragItem),\n clonedElement: this.cloneElement,\n cancel: false\n };\n this.trigger('onDragStart', dragArgs, function (tabItemDragArgs) {\n if (tabItemDragArgs.cancel) {\n var dragObj = e.element.ej2_instances[0];\n if (!isNullOrUndefined(dragObj)) {\n dragObj.intDestroy(e.event);\n }\n detach(_this.cloneElement);\n }\n else {\n _this.removeActiveClass();\n addClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n }\n });\n };\n Tab.prototype.dragAction = function (dropItem, dragsIndex, dropIndex) {\n if (this.items.length > 0) {\n var item = this.draggingItems[dragsIndex];\n this.draggingItems.splice(dragsIndex, 1);\n this.draggingItems.splice(dropIndex, 0, item);\n }\n if (this.overflowMode === 'MultiRow') {\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n if (dragsIndex > dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n if (dropItem.isSameNode(dropItem.parentElement.lastChild)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(dropItem.parentElement.lastChild, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement.lastChild), this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n var lastEle = (dropItem.parentElement).lastChild;\n if (dropItem.isSameNode(lastEle)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(lastEle, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n if (dragsIndex < dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n this.dragItem.parentElement.appendChild(dropItem.parentElement.firstElementChild);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextSibling);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n }\n };\n Tab.prototype.itemDragStop = function (e) {\n var _this = this;\n detach(this.cloneElement);\n this.cloneElement = null;\n this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n document.body.style.cursor = '';\n var dragStopArgs = {\n draggedItem: this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: this.tbItem[this.droppedIndex],\n clonedElement: null,\n index: this.droppedIndex,\n cancel: false\n };\n this.trigger('dragged', dragStopArgs, function (tabItemDropArgs) {\n if (tabItemDropArgs.cancel) {\n _this.refresh();\n }\n else {\n if (_this.items.length > 0 && _this.draggingItems.length > 0) {\n _this.items = _this.draggingItems;\n _this.selectedItem = _this.droppedIndex;\n _this.refresh();\n }\n else {\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = '';\n removeClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.selectTab(_this.droppedIndex, null, true);\n }\n }\n });\n this.dragItem = null;\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n *\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns {void}.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.setAttribute('tabindex', tbItems.firstElementChild.getAttribute('data-tabindex'));\n }\n else {\n tbItems.classList.add(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE)) {\n this.select(index + 1);\n }\n }\n if (!isNOU(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.firstElementChild.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n *\n * @param {TabItemModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns {void}.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n if (isNOU(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n this.bindDraggable();\n }\n else {\n var itemsCount = selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element).length;\n if (itemsCount !== 0) {\n lastEleIndex = this.lastIndex + 1;\n }\n if (isNOU(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNOU(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n var tabItems_2 = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNOU(item.headerTemplate || item.header) || isNOU(textValue_1) ||\n (textValue_1.length === 0) && !isNOU(item.header) && isNOU(item.header.iconCss))) {\n if (tabItems_2[place]) {\n if (isNOU(item.id)) {\n item.id = CLS_ITEM + _this.tabId + '_' + TABITEMPREFIX + (lastEleIndex + place).toString();\n }\n tabItems_2[place].htmlAttributes['data-id'] = item.id;\n }\n _this.items.splice((index + i_1), 0, item);\n i_1++;\n }\n if (_this.isTemplate && !isNOU(item.header) && !isNOU(item.header.text)) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT + _this.tabId + '_' + no, className: CLS_ITEM,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + no }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[(index + place)]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems_2, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n }\n this.bindDraggable();\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n *\n * @param {number} index - Index of target item that is going to be removed.\n * @returns {void}.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(trg)) {\n return;\n }\n var removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n var header = select('#' + CLS_ITEM + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_TB_ITEMS, _this.element));\n if (!isNOU(header)) {\n _this.clearTabTemplate(header, 'headerTemplate', CLS_TB_ITEM);\n }\n _this.tbObj.removeItems(index);\n if (_this.allowDragAndDrop && (index !== Array.prototype.indexOf.call(_this.itemIndexArray, trg.id))) {\n index = Array.prototype.indexOf.call(_this.itemIndexArray, trg.id);\n }\n var targetEleIndex = _this.itemIndexArray.indexOf(trg.id);\n _this.items.splice(targetEleIndex, 1);\n _this.itemIndexArray.splice(targetEleIndex, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT, _this.element));\n if (!isNOU(cntTrg)) {\n _this.clearTabTemplate(cntTrg, 'content', CLS_ITEM);\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (_this.draggableItems && _this.draggableItems.length > 0) {\n _this.draggableItems[index].destroy();\n _this.draggableItems[index] = null;\n _this.draggableItems.splice(index, 1);\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.selectedItem = index;\n _this.select(index);\n }\n else if (index !== _this.selectedItem) {\n if (index < _this.selectedItem) {\n index = _this.itemIndexArray.indexOf(_this.tbItem[_this.selectedItem].id);\n _this.setProperties({ selectedItem: index > -1 ? index : _this.selectedItem }, true);\n _this.prevIndex = _this.selectedItem;\n }\n _this.tbItem = selectAll('.' + CLS_TB_ITEM, _this.getTabHeader());\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n _this.hdrEle.style.display = 'none';\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n *\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns {void}.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(item)) {\n return;\n }\n if (isNOU(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN);\n if (value === true) {\n item.classList.add(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n if (!isNullOrUndefined(item.firstElementChild)) {\n item.firstElementChild.setAttribute('aria-hidden', '' + value);\n }\n if (this.overflowMode === 'Popup' && this.tbObj) {\n this.tbObj.refreshOverflow();\n }\n };\n Tab.prototype.selectTab = function (args, event, isInteracted) {\n if (event === void 0) { event = null; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.isInteracted = isInteracted;\n this.select(args, event);\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n *\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @param {Event} event - An event which takes place in DOM.\n * @returns {void}\n */\n Tab.prototype.select = function (args, event) {\n var _this = this;\n var tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNOU(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNOU(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNOU(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE)) {\n this.prevItem.children.item(0).setAttribute('tabindex', this.prevItem.firstElementChild.getAttribute('tabindex'));\n }\n var eventArg = {\n event: event,\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwiped,\n isInteracted: this.isInteracted,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args, _this.isInteracted);\n }\n });\n }\n else {\n this.selectingContent(args, this.isInteracted);\n }\n this.isInteracted = false;\n };\n Tab.prototype.selectingContent = function (args, isInteracted) {\n if (typeof args === 'number') {\n if (!isNOU(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE) ||\n this.tbItem[args].classList.contains(CLS_HIDDEN))) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false && this.items[i].visible === true) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n this.prevItem = this.tbItem[this.prevIndex];\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP) && this.reorderActiveTab) {\n this.setActive(this.popupHandler(this.tbItem[args]), null, isInteracted);\n if ((!isNOU(this.items) && this.items.length > 0) && this.allowDragAndDrop) {\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var item = this.items[args];\n this.items.splice(args, 1);\n this.items.splice(this.tbItem.length - 1, 0, item);\n var itemId = this.itemIndexArray[args];\n this.itemIndexArray.splice(args, 1);\n this.itemIndexArray.splice(this.tbItem.length - 1, 0, itemId);\n }\n }\n else {\n this.setActive(args, null, isInteracted);\n }\n }\n else {\n this.setActive(0, null, isInteracted);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args), null, isInteracted);\n }\n };\n /**\n * Gets the item index from the Tab.\n *\n * @param {string} tabItemId - Item ID is used for getting index from the Tab.\n * @returns {number} - It returns item index.\n */\n Tab.prototype.getItemIndex = function (tabItemId) {\n var tabIndex;\n for (var i = 0; i < this.tbItem.length; i++) {\n var value = this.tbItem[i].getAttribute('data-id');\n if (tabItemId === value) {\n tabIndex = i;\n break;\n }\n }\n return tabIndex;\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - It returns the persisted state.\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {TabModel} newProp - It contains the new value of data.\n * @param {TabModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Tab.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyle(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyle(this.element, { height: formatUnit(newProp.height) });\n this.setContentHeight(false);\n break;\n case 'cssClass':\n var headerEle = this.element.querySelector('.' + CLS_HEADER);\n if (oldProp.cssClass !== '' && !isNullOrUndefined(oldProp.cssClass)) {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, oldProp.cssClass, false);\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n break;\n case 'items':\n this.evalOnPropertyChangeItems(newProp, oldProp);\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'reorderActiveTab':\n this.refreshActiveTabBorder();\n break;\n case 'selectedItem':\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n break;\n case 'headerPlacement':\n this.changeOrientation(newProp.headerPlacement);\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActiveTabBorder();\n break;\n case 'heightAdjustMode':\n this.setContentHeight(false);\n this.select(this.selectedItem);\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n case 'allowDragAndDrop':\n this.bindDraggable();\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.draggableItems.forEach(function (item) {\n item.dragArea = _this.dragArea;\n });\n this.refresh();\n }\n break;\n }\n }\n };\n /**\n * To refresh the active tab contents.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTab = function () {\n if (this.isReact && this.isTemplate) {\n this.clearTemplate();\n }\n if (!this.isTemplate) {\n if (this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE)) {\n detach(this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).children[0]);\n detach(this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0]);\n var item = this.items[this.selectedItem];\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n var text = item.headerTemplate || item.header.text;\n var txtWrap = this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n if (!isNOU(text.tagName)) {\n txtWrap.appendChild(text);\n }\n else {\n this.headerTextCompile(txtWrap, text, this.selectedItem);\n }\n var tEle = void 0;\n var icon = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tConts = this.createElement('div', { className: CLS_TEXT_WRAP });\n tConts.appendChild(txtWrap);\n if ((text !== '' && text !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tConts.insertBefore(icon, tConts.firstElementChild);\n }\n else {\n tConts.appendChild(icon);\n }\n tEle = txtWrap;\n this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrap : icon);\n if (tEle === icon) {\n detach(txtWrap);\n tConts.appendChild(icon);\n this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAtt = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'true', 'aria-disabled': 'false' };\n tConts.appendChild(this.btnCls.cloneNode(true));\n var wraper = this.createElement('div', { className: CLS_WRAP, attrs: wrapAtt });\n wraper.appendChild(tConts);\n if (pos === 'top' || pos === 'bottom') {\n this.element.classList.add('e-vertical-icon');\n }\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wraper);\n var crElem = this.createElement('div');\n var cnt = item.content;\n var eleStr = void 0;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n crElem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n crElem.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n this.element.querySelector('.' + CLS_ITEM + '.' + CLS_ACTIVE).appendChild(crElem);\n }\n }\n else {\n var tabItems = this.element.querySelector('.' + CLS_TB_ITEMS);\n var element = this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE);\n var index = this.getIndexFromEle(element.id);\n var header = element.innerText;\n var detachContent = this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0];\n var mainContents = detachContent.innerHTML;\n detach(element);\n detach(detachContent);\n var attr = {\n className: CLS_TB_ITEM + ' ' + CLS_TEMPLATE + ' ' + CLS_ACTIVE, id: CLS_ITEM + this.tabId + '_' + index\n };\n var txtString = this.createElement('span', {\n className: CLS_TEXT, innerHTML: header, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var conte = this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txtString + this.btnCls.outerHTML\n }).outerHTML;\n var tabIndex = element.firstElementChild.getAttribute('data-tabindex');\n var wrap = this.createElement('div', {\n className: CLS_WRAP, innerHTML: conte,\n attrs: { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-controls': CLS_CONTENT + this.tabId + '_' + index, 'aria-selected': 'true', 'aria-disabled': 'false' }\n });\n tabItems.insertBefore(this.createElement('div', attr), tabItems.children[index + 1]);\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wrap);\n var crElem = this.createElement('div', { innerHTML: mainContents });\n this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).appendChild(crElem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * To refresh the active tab indicator.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTabBorder = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle) && this.reorderActiveTab) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n __decorate([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate([\n Property('Dynamic')\n ], Tab.prototype, \"loadOn\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"reorderActiveTab\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"clearTemplates\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"onDragStart\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragging\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragged\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\nexport { Tab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Collection, Event, NotifyPropertyChanges, detach, Property, EventHandler, isRippleEnabled, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, getUniqueID, rippleEffect, getComponent } from '@syncfusion/ej2-base';\nimport { attributes, Component, closest, select, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { classList, removeClass } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { upDownKeyHandler } from './../common/common';\nimport { getModel, Item, setBlankIconStyle } from './../common/common';\nvar classNames = {\n DISABLED: 'e-disabled',\n FOCUS: 'e-focused',\n ICON: 'e-menu-icon',\n ITEM: 'e-item',\n POPUP: 'e-dropdown-popup',\n RTL: 'e-rtl',\n SEPARATOR: 'e-separator',\n VERTICAL: 'e-vertical'\n};\n/**\n * DropDownButton component is used to toggle contextual overlays for displaying list of action items.\n * It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DropDownButton = /** @class */ (function (_super) {\n __extends(DropDownButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DropDownButtonModel} options - Specifies dropdown button model\n * @param {string|HTMLButtonElement} element - Specifies element\n * @hidden\n */\n function DropDownButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = true;\n return _this;\n }\n DropDownButton.prototype.preRender = function () {\n /** */\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n DropDownButton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @returns {void}\n */\n DropDownButton.prototype.toggle = function () {\n if (this.canOpen()) {\n this.openPopUp();\n }\n else if (this.createPopupOnClick && !this.isPopupCreated) {\n this.createPopup();\n this.openPopUp();\n }\n else {\n this.closePopup();\n }\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n DropDownButton.prototype.addItems = function (items, text) {\n var newItem;\n var idx = this.items.length;\n for (var j = 0, len = this.items.length; j < len; j++) {\n if (text === this.items[j].text) {\n idx = j;\n break;\n }\n }\n for (var i = items.length - 1; i >= 0; i--) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newItem = new Item(this, 'items', items[i], true);\n this.items.splice(idx, 0, newItem);\n }\n if (!this.canOpen()) {\n this.createItems();\n }\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n DropDownButton.prototype.removeItems = function (items, isUniqueId) {\n var refresh = false;\n for (var i = 0, len = items.length; i < len; i++) {\n for (var j = 0, len_1 = this.items.length; j < len_1; j++) {\n if (items[i] === (isUniqueId ? this.items[j].id : this.items[j].text)) {\n this.items.splice(j, 1);\n refresh = true;\n break;\n }\n }\n }\n if (refresh && this.getULElement()) {\n this.createItems();\n }\n };\n DropDownButton.prototype.createPopup = function () {\n var _a;\n var div = this.createElement('div', {\n className: classNames.POPUP,\n id: this.element.id + '-popup'\n });\n document.body.appendChild(div);\n this.dropDown = new Popup(div, {\n relateTo: this.element,\n collision: { X: 'fit', Y: 'flip' },\n position: { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n content: this.target ? this.getTargetElement() : '',\n enableRtl: this.enableRtl\n });\n this.dropDown.element.setAttribute('role', 'dialog');\n this.dropDown.element.setAttribute('aria-label', 'dropdown menu');\n if (!isNullOrUndefined(this.popupContent)) {\n this.popupContent.style.display = '';\n }\n if (this.dropDown.element.style.position === 'fixed') {\n this.dropDown.refreshPosition(this.element);\n }\n this.dropDown.hide();\n attributes(this.element, (_a = {},\n _a['aria-haspopup'] = this.items.length || this.target ? 'true' : 'false',\n _a['aria-expanded'] = 'false',\n _a['type'] = 'button',\n _a));\n if (this.cssClass) {\n addClass([div], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.isPopupCreated = true;\n };\n DropDownButton.prototype.getTargetElement = function () {\n if (this.createPopupOnClick && !this.isColorPicker() && !isNullOrUndefined(this.popupContent)) {\n return this.popupContent;\n }\n return typeof (this.target) === 'string' ? select(this.target) : this.target;\n };\n DropDownButton.prototype.createItems = function (appendItems) {\n var items = this.items;\n var showIcon = this.hasIcon(this.items, 'iconCss');\n var span;\n var item;\n var li;\n var eventArgs;\n var ul = this.getULElement();\n if (ul) {\n ul.innerHTML = '';\n }\n else {\n ul = this.createElement('ul', {\n attrs: { 'role': 'menu', 'tabindex': '0' }\n });\n }\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n var tempItem = item.text;\n li = this.createElement('li', {\n innerHTML: item.url ? '' : tempItem,\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: item.separator ? { 'role': 'separator', 'tabindex': '-1', 'aria-label': 'separator', 'aria-hidden': 'true' } : { 'role': 'menuitem', 'tabindex': '-1', 'aria-label': tempItem },\n id: item.id ? item.id : getUniqueID('e-' + this.getModuleName() + '-item')\n });\n if (this.enableHtmlSanitizer) {\n li.textContent = item.url ? '' : tempItem;\n }\n else {\n li.innerHTML = item.url ? '' : tempItem;\n }\n if (item.url) {\n li.appendChild(this.createAnchor(item));\n li.classList.add('e-url');\n }\n if (item.iconCss) {\n span = this.createElement('span', { className: classNames.ICON + ' ' + item.iconCss });\n if (item.url) {\n li.childNodes[0].appendChild(span);\n }\n else {\n li.insertBefore(span, li.childNodes[0]);\n }\n }\n else {\n if (showIcon && !item.separator) {\n li.classList.add('e-blank-icon');\n }\n }\n var beforeDisabled = item.disabled;\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n eventArgs = { item: item, element: li };\n this.trigger('beforeItemRender', eventArgs);\n var afterDisabled = eventArgs.item.disabled;\n if (beforeDisabled !== afterDisabled) {\n if (eventArgs.item.disabled) {\n li.classList.add('e-disabled');\n }\n else {\n li.classList.remove('e-disabled');\n }\n }\n ul.appendChild(li);\n }\n if (appendItems) {\n this.getPopUpElement().appendChild(ul);\n }\n if (showIcon) {\n setBlankIconStyle(this.getPopUpElement());\n }\n };\n DropDownButton.prototype.hasIcon = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n DropDownButton.prototype.createAnchor = function (item) {\n var tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n return this.createElement('a', { className: 'e-menu-text e-menu-url', innerHTML: tempItem, attrs: { 'href': item.url } });\n };\n DropDownButton.prototype.initialize = function () {\n this.button = new Button({\n iconCss: this.iconCss, iconPosition: this.iconPosition, cssClass: this.cssClass, content: this.content,\n disabled: this.disabled, enableRtl: this.enableRtl, enablePersistence: this.enablePersistence\n });\n this.button.createElement = this.createElement;\n this.button.appendTo(this.element);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.appendArrowSpan();\n this.setActiveElem([this.element]);\n this.element.setAttribute('aria-label', this.element.textContent ? this.element.textContent : 'dropdownbutton');\n if ((this.target && !this.isColorPicker() && !this.createPopupOnClick) || !this.createPopupOnClick) {\n this.createPopup();\n }\n else {\n this.isPopupCreated = false;\n if (this.target && !this.isColorPicker() && this.createPopupOnClick) {\n this.popupContent = this.getTargetElement();\n this.popupContent.style.display = 'none';\n }\n }\n };\n DropDownButton.prototype.isColorPicker = function () {\n if (!this.element) {\n return false;\n }\n var prevElem = this.element.previousSibling;\n if (prevElem && prevElem.classList && prevElem.classList.contains('e-split-colorpicker')) {\n return true;\n }\n return false;\n };\n DropDownButton.prototype.appendArrowSpan = function () {\n this.element.appendChild(this.createElement('span', {\n className: 'e-btn-icon e-icons ' + 'e-icon-' + (this.cssClass.indexOf(classNames.VERTICAL) > -1\n ? 'bottom' : 'right') + ' e-caret'\n }));\n };\n DropDownButton.prototype.setActiveElem = function (elem) {\n this.activeElem = elem;\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n DropDownButton.prototype.getModuleName = function () {\n return 'dropdown-btn';\n };\n DropDownButton.prototype.canOpen = function () {\n var val = false;\n if (this.isPopupCreated) {\n val = this.getPopUpElement().classList.contains('e-popup-close');\n }\n return val;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n DropDownButton.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'dropdown-btn') {\n var classList_1;\n if (this.element.querySelector('span.e-caret')) {\n detach(this.element.querySelector('span.e-caret'));\n }\n if (this.cssClass) {\n classList_1 = this.cssClass.split(' ');\n }\n this.button.destroy();\n if (classList_1) {\n removeClass([this.element], classList_1);\n }\n removeClass(this.activeElem, ['e-active']);\n var attrList = this.element.getAttribute('class') ? ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type']\n : ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type', 'class'];\n attrList.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.popupUnWireEvents();\n this.destroyPopup();\n this.isPopupCreated = false;\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n };\n DropDownButton.prototype.destroyPopup = function () {\n if (this.isPopupCreated) {\n this.dropDown.destroy();\n if (this.getPopUpElement()) {\n var popupEle = document.getElementById(this.getPopUpElement().id);\n if (popupEle) {\n removeClass([popupEle], ['e-popup-open', 'e-popup-close']);\n detach(popupEle);\n }\n }\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated && this.dropDown) {\n this.dropDown.element = null;\n this.dropDown = undefined;\n }\n }\n this.isPopupCreated = false;\n };\n DropDownButton.prototype.getPopUpElement = function () {\n var val = null;\n if (!this.dropDown && this.activeElem[0].classList.contains('e-split-btn')) {\n var dropDownBtn = getComponent(this.activeElem[1], 'dropdown-btn');\n if (dropDownBtn) {\n this.dropDown = dropDownBtn.dropDown;\n }\n }\n if (this.dropDown) {\n val = this.dropDown.element;\n }\n return val;\n };\n DropDownButton.prototype.getULElement = function () {\n var val = null;\n if (this.getPopUpElement()) {\n val = this.getPopUpElement().children[0];\n }\n return val;\n };\n DropDownButton.prototype.wireEvents = function () {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n if (!this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n };\n DropDownButton.prototype.windowResize = function () {\n if (!this.canOpen() && this.dropDown) {\n this.dropDown.refreshPosition(this.element);\n }\n };\n DropDownButton.prototype.popupWireEvents = function () {\n if (!this.delegateMousedownHandler) {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n }\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n if (popupElement) {\n EventHandler.add(popupElement, 'click', this.clickHandler, this);\n EventHandler.add(popupElement, 'keydown', this.keyBoardHandler, this);\n if (this.closeActionEvents) {\n EventHandler.add(popupElement, this.closeActionEvents, this.focusoutHandler, this);\n }\n }\n this.rippleFn = rippleEffect(popupElement, { selector: '.' + classNames.ITEM });\n };\n DropDownButton.prototype.popupUnWireEvents = function () {\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n if (popupElement && popupElement.parentElement) {\n EventHandler.remove(popupElement, 'click', this.clickHandler);\n EventHandler.remove(popupElement, 'keydown', this.keyBoardHandler);\n if (this.closeActionEvents) {\n EventHandler.remove(popupElement, this.closeActionEvents, this.focusoutHandler);\n }\n }\n if (isRippleEnabled && this.rippleFn) {\n this.rippleFn();\n }\n };\n /**\n * Handles the keyboard interactions.\n *\n * @param {KeyboardEventArgs} e - Specifies keyboard event args.\n * @returns {void}\n * @hidden\n */\n DropDownButton.prototype.keyBoardHandler = function (e) {\n if (e.target === this.element && (e.keyCode === 9 || (!e.altKey && e.keyCode === 40) || e.keyCode === 38)) {\n return;\n }\n switch (e.keyCode) {\n case 38:\n case 40:\n if (e.altKey && (e.keyCode === 38 || e.keyCode === 40)) {\n this.keyEventHandler(e);\n }\n else {\n this.upDownKeyHandler(e);\n }\n break;\n case 9:\n case 13:\n case 27:\n case 32:\n this.keyEventHandler(e);\n break;\n }\n };\n DropDownButton.prototype.upDownKeyHandler = function (e) {\n if (this.target && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n e.preventDefault();\n upDownKeyHandler(this.getULElement(), e.keyCode);\n };\n DropDownButton.prototype.keyEventHandler = function (e) {\n if (this.target && (e.keyCode === 13 || e.keyCode === 9)) {\n return;\n }\n if (e.keyCode === 13 && this.activeElem[0].classList.contains('e-split-btn')) {\n this.triggerSelect(e);\n this.activeElem[0].focus();\n return;\n }\n if (e.target && e.target.className.indexOf('e-edit-template') > -1 && e.keyCode === 32) {\n return;\n }\n if (e.keyCode !== 9) {\n e.preventDefault();\n }\n if (e.keyCode === 27 || e.keyCode === 38 || e.keyCode === 9) {\n if (!this.canOpen()) {\n this.closePopup(e, this.element);\n }\n }\n else {\n this.clickHandler(e);\n }\n };\n DropDownButton.prototype.getLI = function (elem) {\n return elem.tagName === 'LI' ? elem : closest(elem, 'li');\n };\n DropDownButton.prototype.mousedownHandler = function (e) {\n var trgt = e.target;\n if (this.dropDown && !this.canOpen() && !(closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')\n || closest(trgt, '[id=\"' + this.element.id + '\"]'))) {\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.focusoutHandler = function (e) {\n if (this.isPopupCreated && !this.canOpen()) {\n var liTarget = e.relatedTarget;\n if (liTarget && liTarget.className.indexOf('e-item') > -1) {\n var li = this.getLI(liTarget);\n if (li) {\n var liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n var item = this.items[liIdx];\n if (item) {\n var selectEventArgs = { element: li, item: item, event: e };\n this.trigger('select', selectEventArgs);\n }\n }\n }\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.clickHandler = function (e) {\n var trgt = e.target;\n if (closest(trgt, '[id=\"' + this.element.id + '\"]')) {\n if (!this.createPopupOnClick || (this.target && this.target !== '' && !this.isColorPicker() && !this.createPopupOnClick)) {\n if (this.getPopUpElement().classList.contains('e-popup-close')) {\n this.openPopUp(e);\n }\n else {\n this.closePopup(e);\n }\n }\n else if (this.isPopupCreated) {\n this.closePopup(e, this.activeElem[0]);\n }\n else {\n this.createPopup();\n this.openPopUp(e);\n }\n }\n else {\n if (closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')) {\n var li = this.getLI(e.target);\n if (li) {\n this.triggerSelect(e);\n this.closePopup(e, this.activeElem[0]);\n }\n }\n }\n };\n DropDownButton.prototype.triggerSelect = function (e) {\n var eventArgs;\n var liIdx;\n var item;\n var li = this.getLI(e.target);\n if (li) {\n liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n item = this.items[liIdx];\n if (item) {\n eventArgs = { element: li, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n }\n };\n DropDownButton.prototype.openPopUp = function (e) {\n var _this = this;\n if (e === void 0) { e = null; }\n var isReact = false;\n var popupElem = this.getPopUpElement();\n if (!this.target) {\n this.createItems(true);\n }\n else {\n if (this.activeElem.length > 1) {\n var splitButton = getComponent(this.activeElem[0], 'split-btn');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (splitButton.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n splitButton.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n }\n var ul = this.getULElement();\n this.popupWireEvents();\n var beforeOpenArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeOpen', beforeOpenArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_1 = _this.getULElement();\n _this.dropDown.show(null, _this.element);\n addClass([_this.element], 'e-active');\n _this.element.setAttribute('aria-expanded', 'true');\n _this.element.setAttribute('aria-owns', _this.getPopUpElement().id);\n if (ul_1) {\n ul_1.focus();\n }\n if (_this.enableRtl && ul_1.parentElement.style.left !== '0px') {\n var wrapperWidth = void 0;\n if (_this.element.parentElement && _this.element.parentElement.classList.contains('e-split-btn-wrapper')) {\n wrapperWidth = _this.element.parentElement.offsetWidth;\n }\n else {\n wrapperWidth = _this.element.offsetWidth;\n }\n var popupRect = ul_1.parentElement.offsetWidth - wrapperWidth;\n var popupLeft = parseFloat(ul_1.parentElement.style.left) - popupRect;\n if (popupLeft < 0) {\n popupLeft = 0;\n }\n ul_1.parentElement.style.left = popupLeft + \"px\";\n }\n var openArgs = { element: ul_1, items: _this.items };\n _this.trigger('open', openArgs);\n }\n });\n };\n DropDownButton.prototype.closePopup = function (e, focusEle) {\n var _this = this;\n if (e === void 0) { e = null; }\n var ul = this.getULElement();\n var beforeCloseArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var popupElement = _this.getPopUpElement();\n if (popupElement) {\n EventHandler.remove(popupElement, 'keydown', _this.keyBoardHandler);\n }\n _this.popupUnWireEvents();\n var ul_2 = _this.getULElement();\n var selectedLi = void 0;\n if (ul_2) {\n selectedLi = ul_2.querySelector('.e-selected');\n }\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n _this.dropDown.hide();\n removeClass(_this.activeElem, 'e-active');\n _this.element.setAttribute('aria-expanded', 'false');\n _this.element.removeAttribute('aria-owns');\n if (focusEle) {\n focusEle.focus();\n }\n var closeArgs = { element: ul_2, items: _this.items };\n _this.trigger('close', closeArgs);\n if (!_this.target && ul_2) {\n detach(ul_2);\n }\n if (!_this.target || _this.isColorPicker() || (_this.target && !_this.isColorPicker())) {\n if (_this.createPopupOnClick) {\n _this.destroyPopup();\n }\n }\n }\n else {\n if (ul) {\n ul.focus();\n }\n }\n });\n };\n DropDownButton.prototype.unWireEvents = function () {\n if (!this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DropDownButtonModel} newProp - Specifies new properties\n * @param {DropDownButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var btnModel = ['content', 'cssClass', 'iconCss', 'iconPosition', 'disabled', 'enableRtl'];\n this.button.setProperties(getModel(newProp, btnModel));\n var popupElement;\n if (this.isPopupCreated) {\n popupElement = this.getPopUpElement();\n this.dropDown.setProperties(getModel(newProp, ['enableRtl']));\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.unWireEvents();\n if (this.isPopupCreated && !this.canOpen()) {\n this.closePopup();\n }\n }\n else {\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (newProp.cssClass.indexOf(classNames.VERTICAL) > -1 || oldProp.cssClass.indexOf(classNames.VERTICAL) > -1) {\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n var arrowSpan = this.element.querySelector('span.e-caret');\n newProp.cssClass.indexOf(classNames.VERTICAL) > -1 ? classList(arrowSpan, ['e-icon-bottom'], ['e-icon-right'])\n : classList(arrowSpan, ['e-icon-right'], ['e-icon-bottom']);\n }\n if (this.isPopupCreated) {\n if (oldProp.cssClass) {\n removeClass([popupElement], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([popupElement], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n }\n break;\n case 'target':\n this.dropDown.content = this.getTargetElement();\n this.dropDown.dataBind();\n break;\n case 'items':\n if (this.isPopupCreated && this.getULElement()) {\n this.createItems();\n }\n break;\n case 'createPopupOnClick':\n if (newProp.createPopupOnClick) {\n this.destroyPopup();\n }\n else {\n this.createPopup();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to DropDownButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n DropDownButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], DropDownButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Collection([], Item)\n ], DropDownButton.prototype, \"items\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"created\", void 0);\n DropDownButton = __decorate([\n NotifyPropertyChanges\n ], DropDownButton);\n return DropDownButton;\n}(Component));\nexport { DropDownButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, EventHandler, L10n, setValue, getValue, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, Internationalization, getUniqueID, closest } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\nvar TEXTBOX_FOCUS = 'e-input-focus';\nvar containerAttr = ['title', 'style', 'class'];\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar TextBox = /** @class */ (function (_super) {\n __extends(TextBox, _super);\n /**\n *\n * @param {TextBoxModel} options - Specifies the TextBox model.\n * @param {string | HTMLInputElement | HTMLTextAreaElement} element - Specifies the element to render as component.\n * @private\n */\n function TextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isAngular = false;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.isVue = false;\n _this.textboxOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {TextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!this.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkAttributes(true);\n this.multiline && !isNullOrUndefined(this.textarea) ? Input.validateInputType(this.textboxWrapper.container, this.textarea) : Input.validateInputType(this.textboxWrapper.container, this.element);\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n TextBox.prototype.preRender = function () {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, true);\n }\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n if (this.type === 'text') {\n this.element.setAttribute('role', 'textbox');\n }\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttr.indexOf(attributeName) < 0 &&\n !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getInputValidClassList(this.cssClass);\n }\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttrToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(this.htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([this.textboxWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.textboxWrapper.container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.textboxWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.textboxWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.multiline && !isNullOrUndefined(this.textarea) ? this.textarea.setAttribute(key, this.htmlAttributes[\"\" + key]) : this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getInputValidClassList(newClass), [this.textboxWrapper.container], this.getInputValidClassList(oldClass));\n };\n TextBox.prototype.getInputValidClassList = function (inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n TextBox.prototype.setInitialValue = function () {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n };\n TextBox.prototype.wireEvents = function () {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'keydown', this.keydownHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-autofill') &&\n this.textboxWrapper.container.classList.contains('e-outline')) {\n EventHandler.add((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler, this);\n }\n };\n TextBox.prototype.animationHandler = function () {\n this.textboxWrapper.container.classList.add('e-valid-input');\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n label.classList.add('e-label-top');\n if (label.classList.contains('e-label-bottom')) {\n label.classList.remove('e-label-bottom');\n }\n }\n };\n TextBox.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n if (value == null && this.textboxWrapper.container.classList.contains('e-valid-input')) {\n this.textboxWrapper.container.classList.remove('e-valid-input');\n }\n this.isProtectedOnChange = prevOnChange;\n };\n TextBox.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label) && this.floatLabelType !== 'Always') {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextBox.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextBox.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') &&\n (this.previousValue !== this.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextBox.prototype.keydownHandler = function (args) {\n if ((args.keyCode === 13 || args.keyCode === 9) && !((this.previousValue === null || this.previousValue === \"\") && (this.value === null || this.value === \"\") && this.respectiveElement.value === \"\")) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n }\n };\n TextBox.prototype.inputHandler = function (args) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var textboxObj = this;\n var eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({ value: this.respectiveElement.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextBox.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n if (this.previousValue != this.value) {\n this.raiseChangeEvent(args, true);\n }\n args.stopPropagation();\n };\n TextBox.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n //EJ2CORE-738:For this task we update the textarea value to the input when input tag with multiline is present\n if (this.element.tagName === 'INPUT' && this.multiline && Browser.info.name === 'mozilla') {\n this.element.value = this.respectiveElement.value;\n }\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n if (this.enabled) {\n EventHandler.add(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextBox.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!(this.textboxWrapper.clearButton.classList.contains(HIDE_CLEAR)) || this.textboxWrapper.container.classList.contains('e-static-clear')) {\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({ value: this.respectiveElement.value }, true);\n var eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n }\n };\n TextBox.prototype.unWireEvents = function () {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'keydown', this.keydownHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-outline') &&\n this.textboxWrapper.container.classList.contains('e-autofill')) {\n EventHandler.remove((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /**\n * Adding the icons to the TextBox component.\n *\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @returns {void}\n */\n TextBox.prototype.addIcon = function (position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextBox element.\n * @returns {void}\n */\n TextBox.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'class') {\n this.respectiveElement.classList.add(attributes[\"\" + key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes[\"\" + key] }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n else {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @returns {void}\n */\n TextBox.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextBox.prototype.focusOut = function () {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n __decorate([\n Property('text')\n ], TextBox.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"value\", void 0);\n __decorate([\n Property('Never')\n ], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property('')\n ], TextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('on')\n ], TextBox.prototype, \"autocomplete\", void 0);\n __decorate([\n Property({})\n ], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"multiline\", void 0);\n __decorate([\n Property(true)\n ], TextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate([\n NotifyPropertyChanges\n ], TextBox);\n return TextBox;\n}(Component));\nexport { TextBox };\n","/**\n * Save class provide method to save file\n * ```typescript\n * let blob : Blob = new Blob([''], { type: 'text/plain' });\n * Save.save('fileName.txt',blob);\n */\nvar Save = /** @class */ (function () {\n /**\n * Initialize new instance of {save}\n */\n function Save() {\n // tslint:disable\n }\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n * @param {boolean} isMicrosoftBrowser- specify whether microsoft browser or not\n * @returns {void}\n */\n Save.save = function (fileName, buffer) {\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('ArgumentException: fileName cannot be undefined, null or empty');\n }\n var extension = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length);\n var mimeType = this.getMimeType(extension);\n if (mimeType !== '') {\n buffer = new Blob([buffer], { type: mimeType });\n }\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(buffer, fileName);\n }\n else {\n var downloadLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n this.saveInternal(fileName, extension, buffer, downloadLink, 'download' in downloadLink);\n }\n };\n Save.saveInternal = function (fileName, extension, buffer, downloadLink, hasDownloadAttribute) {\n if (hasDownloadAttribute) {\n downloadLink.download = fileName;\n var dataUrl_1 = window.URL.createObjectURL(buffer);\n downloadLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n downloadLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n dataUrl_1 = undefined;\n });\n }\n else {\n if (extension !== 'docx' && extension !== 'xlsx') {\n var url = window.URL.createObjectURL(buffer);\n var isPopupBlocked = window.open(url, '_blank');\n if (!isPopupBlocked) {\n window.location.href = url;\n }\n }\n else {\n var reader_1 = new FileReader();\n reader_1.onloadend = function () {\n var isPopupBlocked = window.open(reader_1.result, '_blank');\n if (!isPopupBlocked) {\n window.location.href = reader_1.result;\n }\n };\n reader_1.readAsDataURL(buffer);\n }\n }\n };\n /**\n *\n * @param {string} extension - get mime type of the specified extension\n * @private\n */\n Save.getMimeType = function (extension) {\n var mimeType = '';\n switch (extension) {\n case 'html':\n mimeType = 'text/html';\n break;\n case 'pdf':\n mimeType = 'application/pdf';\n break;\n case 'docx':\n mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n break;\n case 'xlsx':\n mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n break;\n case 'txt':\n mimeType = 'text/plain';\n break;\n }\n return mimeType;\n };\n return Save;\n}());\nexport { Save };\n","/**\n * Encoding class: Contains the details about encoding type, whether to write a Unicode byte order mark (BOM).\n * ```typescript\n * let encoding : Encoding = new Encoding();\n * encoding.type = 'Utf8';\n * encoding.getBytes('Encoding', 0, 5);\n * ```\n */\nvar Encoding = /** @class */ (function () {\n /**\n * Initializes a new instance of the Encoding class. A parameter specifies whether to write a Unicode byte order mark\n * @param {boolean} includeBom?-true to specify that a Unicode byte order mark is written; otherwise, false.\n */\n function Encoding(includeBom) {\n this.emitBOM = true;\n this.encodingType = 'Ansi';\n this.initBOM(includeBom);\n }\n Object.defineProperty(Encoding.prototype, \"includeBom\", {\n /**\n * Gets a value indicating whether to write a Unicode byte order mark\n * @returns boolean- true to specify that a Unicode byte order mark is written; otherwise, false\n */\n get: function () {\n return this.emitBOM;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Encoding.prototype, \"type\", {\n /**\n * Gets the encoding type.\n * @returns EncodingType\n */\n get: function () {\n return this.encodingType;\n },\n /**\n * Sets the encoding type.\n * @param {EncodingType} value\n */\n set: function (value) {\n this.encodingType = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize the includeBom to emit BOM or Not\n * @param {boolean} includeBom\n */\n Encoding.prototype.initBOM = function (includeBom) {\n if (includeBom === undefined || includeBom === null) {\n this.emitBOM = true;\n }\n else {\n this.emitBOM = includeBom;\n }\n };\n /**\n * Calculates the number of bytes produced by encoding the characters in the specified string\n * @param {string} chars - The string containing the set of characters to encode\n * @returns {number} - The number of bytes produced by encoding the specified characters\n */\n Encoding.prototype.getByteCount = function (chars) {\n var byteCount = 0;\n validateNullOrUndefined(chars, 'string');\n if (chars === '') {\n var byte = this.utf8Len(chars.charCodeAt(0));\n return byte;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n return this.getByteCountInternal(chars, 0, chars.length);\n };\n /**\n * Return the Byte of character\n * @param {number} codePoint\n * @returns {number}\n */\n Encoding.prototype.utf8Len = function (codePoint) {\n var bytes = codePoint <= 0x7F ? 1 :\n codePoint <= 0x7FF ? 2 :\n codePoint <= 0xFFFF ? 3 :\n codePoint <= 0x1FFFFF ? 4 : 0;\n return bytes;\n };\n /**\n * for 4 byte character return surrogate pair true, otherwise false\n * @param {number} codeUnit\n * @returns {boolean}\n */\n Encoding.prototype.isHighSurrogate = function (codeUnit) {\n return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;\n };\n /**\n * for 4byte character generate the surrogate pair\n * @param {number} highCodeUnit\n * @param {number} lowCodeUnit\n */\n Encoding.prototype.toCodepoint = function (highCodeUnit, lowCodeUnit) {\n highCodeUnit = (0x3FF & highCodeUnit) << 10;\n var u = highCodeUnit | (0x3FF & lowCodeUnit);\n return u + 0x10000;\n };\n /**\n * private method to get the byte count for specific charindex and count\n * @param {string} chars\n * @param {number} charIndex\n * @param {number} charCount\n */\n Encoding.prototype.getByteCountInternal = function (chars, charIndex, charCount) {\n var byteCount = 0;\n if (this.encodingType === 'Utf8' || this.encodingType === 'Unicode') {\n var isUtf8 = this.encodingType === 'Utf8';\n for (var i = 0; i < charCount; i++) {\n var charCode = chars.charCodeAt(isUtf8 ? charIndex : charIndex++);\n if (this.isHighSurrogate(charCode)) {\n if (isUtf8) {\n var high = charCode;\n var low = chars.charCodeAt(++charIndex);\n byteCount += this.utf8Len(this.toCodepoint(high, low));\n }\n else {\n byteCount += 4;\n ++i;\n }\n }\n else {\n if (isUtf8) {\n byteCount += this.utf8Len(charCode);\n }\n else {\n byteCount += 2;\n }\n }\n if (isUtf8) {\n charIndex++;\n }\n }\n return byteCount;\n }\n else {\n byteCount = charCount;\n return byteCount;\n }\n };\n /**\n * Encodes a set of characters from the specified string into the ArrayBuffer.\n * @param {string} s- The string containing the set of characters to encode\n * @param {number} charIndex-The index of the first character to encode.\n * @param {number} charCount- The number of characters to encode.\n * @returns {ArrayBuffer} - The ArrayBuffer that contains the resulting sequence of bytes.\n */\n Encoding.prototype.getBytes = function (s, charIndex, charCount) {\n validateNullOrUndefined(s, 'string');\n validateNullOrUndefined(charIndex, 'charIndex');\n validateNullOrUndefined(charCount, 'charCount');\n if (charIndex < 0 || charCount < 0) {\n throw new RangeError('Argument Out Of Range Exception: charIndex or charCount is less than zero');\n }\n if (s.length - charIndex < charCount) {\n throw new RangeError('Argument Out Of Range Exception: charIndex and charCount do not denote a valid range in string');\n }\n var bytes;\n if (s === '') {\n bytes = new ArrayBuffer(0);\n return bytes;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var byteCount = this.getByteCountInternal(s, charIndex, charCount);\n switch (this.type) {\n case 'Utf8':\n bytes = this.getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount);\n return bytes;\n case 'Unicode':\n bytes = this.getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n default:\n bytes = this.getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n }\n };\n /**\n * Decodes a sequence of bytes from the specified ArrayBuffer into the string.\n * @param {ArrayBuffer} bytes- The ArrayBuffer containing the sequence of bytes to decode.\n * @param {number} index- The index of the first byte to decode.\n * @param {number} count- The number of bytes to decode.\n * @returns {string} - The string that contains the resulting set of characters.\n */\n Encoding.prototype.getString = function (bytes, index, count) {\n validateNullOrUndefined(bytes, 'bytes');\n validateNullOrUndefined(index, 'index');\n validateNullOrUndefined(count, 'count');\n if (index < 0 || count < 0) {\n throw new RangeError('Argument Out Of Range Exception: index or count is less than zero');\n }\n if (bytes.byteLength - index < count) {\n throw new RangeError('Argument Out Of Range Exception: index and count do not denote a valid range in bytes');\n }\n if (bytes.byteLength === 0 || count === 0) {\n return '';\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var out = '';\n var byteCal = new Uint8Array(bytes);\n switch (this.type) {\n case 'Utf8':\n var s = this.getStringOfUtf8Encoding(byteCal, index, count);\n return s;\n case 'Unicode':\n var byteUnicode = new Uint16Array(bytes);\n out = this.getStringofUnicodeEncoding(byteUnicode, index, count);\n return out;\n default:\n var j = index;\n for (var i = 0; i < count; i++) {\n var c = byteCal[j];\n out += String.fromCharCode(c); // 1 byte(ASCII) character \n j++;\n }\n return out;\n }\n };\n Encoding.prototype.getBytesOfAnsiEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var bufview = new Uint8Array(bytes);\n var k = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(charIndex++);\n if (charcode < 0x800) {\n bufview[k] = charcode;\n }\n else {\n bufview[k] = 63; //replacement character '?'\n }\n k++;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUtf8Encoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint = new Uint8Array(bytes);\n var index = charIndex;\n var j = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(index);\n if (charcode <= 0x7F) { // 1 byte character 2^7\n uint[j] = charcode;\n }\n else if (charcode < 0x800) { // 2 byte character 2^11\n uint[j] = 0xc0 | (charcode >> 6);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else if ((charcode < 0xd800 || charcode >= 0xe000)) { // 3 byte character 2^16 \n uint[j] = 0xe0 | (charcode >> 12);\n uint[++j] = 0x80 | ((charcode >> 6) & 0x3f);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else {\n uint[j] = 0xef;\n uint[++j] = 0xbf;\n uint[++j] = 0xbd; // U+FFFE \"replacement character\"\n }\n ++j;\n ++index;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUnicodeEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint16 = new Uint16Array(bytes);\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(i);\n uint16[i] = charcode;\n }\n return bytes;\n };\n Encoding.prototype.getStringOfUtf8Encoding = function (byteCal, index, count) {\n var j = 0;\n var i = index;\n var s = '';\n for (j; j < count; j++) {\n var c = byteCal[i++];\n while (i > byteCal.length) {\n return s;\n }\n if (c > 127) {\n if (c > 191 && c < 224 && i < count) {\n c = (c & 31) << 6 | byteCal[i] & 63;\n }\n else if (c > 223 && c < 240 && i < byteCal.byteLength) {\n c = (c & 15) << 12 | (byteCal[i] & 63) << 6 | byteCal[++i] & 63;\n }\n else if (c > 239 && c < 248 && i < byteCal.byteLength) {\n c = (c & 7) << 18 | (byteCal[i] & 63) << 12 | (byteCal[++i] & 63) << 6 | byteCal[++i] & 63;\n }\n ++i;\n }\n s += String.fromCharCode(c); // 1 byte(ASCII) character \n }\n return s;\n };\n Encoding.prototype.getStringofUnicodeEncoding = function (byteUni, index, count) {\n if (count > byteUni.length) {\n throw new RangeError('ArgumentOutOfRange_Count');\n }\n var byte16 = new Uint16Array(count);\n var out = '';\n for (var i = 0; i < count && i < byteUni.length; i++) {\n byte16[i] = byteUni[index++];\n }\n out = String.fromCharCode.apply(null, byte16);\n return out;\n };\n /**\n * To clear the encoding instance\n * @return {void}\n */\n Encoding.prototype.destroy = function () {\n this.emitBOM = undefined;\n this.encodingType = undefined;\n };\n return Encoding;\n}());\nexport { Encoding };\n/**\n * To check the object is null or undefined and throw error if it is null or undefined\n * @param {Object} value - object to check is null or undefined\n * @return {boolean}\n * @throws {ArgumentException} - if the value is null or undefined\n * @private\n */\nexport function validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n"],"sourceRoot":""}