{"version":3,"sources":["webpack://escid.espp.showcase.service/./Content/boot-threeSixtyView.tsx","webpack://escid.espp.showcase.service/./Content/components/common/scs-html-helper.tsx","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/bind.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/utils.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/core/AxiosError.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/null.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/toFormData.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/buildURL.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/core/InterceptorManager.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/defaults/transitional.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/platform/browser/index.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/platform/common/utils.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/platform/index.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/formDataToJSON.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/defaults/index.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/core/AxiosHeaders.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/core/transformData.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/cancel/isCancel.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/cancel/CanceledError.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/core/settle.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/speedometer.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/throttle.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/progressEventReducer.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/cookies.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/combineURLs.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/core/buildFullPath.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/core/mergeConfig.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/resolveConfig.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/adapters/xhr.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/composeSignals.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/trackStream.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/adapters/fetch.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/adapters/adapters.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/core/dispatchRequest.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/env/data.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/validator.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/core/Axios.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/cancel/CancelToken.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/spread.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack://escid.espp.showcase.service/./node_modules/axios/lib/axios.js","webpack://escid.espp.showcase.service/./Content/components/common/Fetch.ts","webpack://escid.espp.showcase.service/./Content/components/common/threeSixtyViewDataController.ts","webpack://escid.espp.showcase.service/./Content/Assets/svg/icon_zoom_out.tsx","webpack://escid.espp.showcase.service/./Content/Assets/svg/icon_zoom_in.tsx","webpack://escid.espp.showcase.service/./Content/components/threeSixtyAnimation/threeSixtyAnimation.scss?4a8f","webpack://escid.espp.showcase.service/./Content/components/common/scs-scrollLock.ts","webpack://escid.espp.showcase.service/./Content/components/common/loadingSpinner/loadingSpinner.scss?8e37","webpack://escid.espp.showcase.service/./Content/components/common/loadingSpinner/loadingSpinner.tsx","webpack://escid.espp.showcase.service/./Content/Assets/svg/icon_play_stop.tsx","webpack://escid.espp.showcase.service/./node_modules/react-zoom-pan-pinch/dist/index.esm.js","webpack://escid.espp.showcase.service/./Content/components/common/imageController.ts","webpack://escid.espp.showcase.service/./Content/components/threeSixtyAnimation/threeSixtyAnimation.tsx","webpack://escid.espp.showcase.service/./Content/components/threeSixtyThumbnails/threeSixtyThumbnails.scss?779c","webpack://escid.espp.showcase.service/./Content/Assets/svg/arrowUp.tsx","webpack://escid.espp.showcase.service/./Content/Assets/svg/arrowDown.tsx","webpack://escid.espp.showcase.service/./Content/components/threeSixtyThumbnails/threeSixtyThumbnails.tsx","webpack://escid.espp.showcase.service/./Content/components/threeSixtyView/threeSixtyView.scss?8d0d","webpack://escid.espp.showcase.service/./Content/Assets/svg/icon_close_large.tsx","webpack://escid.espp.showcase.service/./Content/components/threeSixtyView/threeSixtyView.tsx","webpack://escid.espp.showcase.service/./Content/styles/defaults.scss?499b","webpack://escid.espp.showcase.service/./node_modules/react-device-detect/dist/lib.js","webpack://escid.espp.showcase.service/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://escid.espp.showcase.service/./node_modules/scheduler/index.js","webpack://escid.espp.showcase.service/./node_modules/ua-parser-js/dist/ua-parser.min.js"],"names":["magicLink","window","__SCS_CLIENT_DATA__","data","JSON","parse","stringify","shell","subscribeTo","payload","placeHolder","document","getElementById","containerId","loadDataAndRenderApp","masterArticleNo","colorCode","fallBackImageUrl","threeSixtyViewController","ThreeSixtyViewDataController","instance","getThreeSixtyViewData","then","threeSixtyView","renderApp","getProductInfo","dataset","categoryName","categoryname","designation","colorName","colorname","l10n","localizationKey","root","createRoot","render","React","className","ThreeSixtyView","threeSixty","threeSixtyThumbnails","generalData","loadContentAfterPageLoad","runafterpageload","loadContentAfterPageLoadMobile","runafterpageloadmobile","doNotUpdateAfterVariantChange","donotupdateaftervariantchange","showOverlayAnimation","showoverlayanimation","preventAutoPlay","preventautoplay","productInfo","isMobileShop","getElementsByTagName","classList","contains","isTabletView","isTablet","isDeskTopView","width","parseInt","defaultStyles","breakpointDesktopMinWidth","innerWidth","decodeHTML","value","replace","match","dec","String","fromCharCode","isKioskPc","bind","fn","thisArg","wrap","apply","arguments","toString","Object","prototype","getPrototypeOf","kindOf","cache","thing","str","call","slice","toLowerCase","create","kindOfTest","type","typeOfTest","isArray","Array","isUndefined","isBuffer","val","constructor","isFunction","isArrayBuffer","isArrayBufferView","result","ArrayBuffer","isView","buffer","isString","isNumber","isObject","isBoolean","isPlainObject","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isStream","pipe","isFormData","kind","FormData","append","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","map","trim","forEach","obj","allOwnKeys","i","l","length","keys","getOwnPropertyNames","len","key","findKey","_key","_global","globalThis","self","global","isContextDefined","context","merge","caseless","this","assignValue","targetKey","extend","a","b","stripBOM","content","charCodeAt","inherits","superConstructor","props","descriptors","defineProperty","assign","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","undefined","lastIndex","indexOf","toArray","arr","isTypedArray","TypedArray","Uint8Array","forEachEntry","generator","next","done","pair","matchAll","regExp","matches","exec","push","isHTMLForm","toCamelCase","replacer","m","p1","p2","toUpperCase","hasOwnProperty","isRegExp","reduceDescriptors","reducer","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","freezeMethods","enumerable","writable","set","Error","toObjectSet","arrayOrString","delimiter","define","split","noop","toFiniteNumber","defaultValue","Number","isFinite","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","generateString","size","alphabet","Math","random","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","catch","_setImmediate","setImmediateSupported","postMessageSupported","setImmediate","token","callbacks","addEventListener","shift","cb","postMessage","setTimeout","asap","queueMicrotask","process","nextTick","hasOwnProp","AxiosError","message","code","config","request","response","captureStackTrace","status","utils","toJSON","description","number","fileName","lineNumber","columnNumber","from","error","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","each","join","isFlatArray","some","predicates","test","toFormData","formData","options","TypeError","metaTokens","indexes","defined","option","visitor","defaultVisitor","_Blob","Blob","useBlob","convertValue","toISOString","Buffer","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","AxiosURLSearchParams","params","_pairs","encoder","_encode","buildURL","url","serializeFn","serialize","serializedParams","hashmarkIndex","InterceptorManager","handlers","fulfilled","rejected","synchronous","runWhen","id","forEachHandler","h","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","URLSearchParams","isBrowser","classes","protocols","hasBrowserEnv","_navigator","navigator","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","origin","location","href","toURLEncodedForm","platform","helpers","isNode","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","entries","stringifySafely","rawValue","parser","e","defaults","transitional","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","formSerializer","_FormData","env","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","method","ignoreDuplicateOf","rawHeaders","parsed","line","substring","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","configurable","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","parseHeaders","matcher","deleted","deleteHeader","format","normalized","targets","asStrings","get","first","computed","internals","accessors","defineAccessor","accessor","mapped","headerValue","transformData","fns","transform","normalize","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","resolve","reject","ERR_BAD_REQUEST","floor","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","now","Date","startedAt","bytesCount","passed","round","throttle","freq","timestamp","threshold","lastArgs","timer","invoke","args","clearTimeout","throttled","flush","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","lengthComputable","progressBytes","rate","inRange","progress","estimated","event","progressEventDecorator","asyncDecorator","standardBrowserEnv","msie","userAgent","urlParsingNode","createElement","originURL","resolveURL","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","isURLSameOrigin","requestURL","nonStandardBrowserEnv","expires","domain","secure","cookie","toGMTString","RegExp","decodeURIComponent","write","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","computeConfigValue","configValue","newConfig","auth","btoa","username","password","unescape","Boolean","xsrfValue","cookies","read","isXHRAdapterSupported","XMLHttpRequest","Promise","dispatchXhrRequest","_config","resolveConfig","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","unsubscribe","signal","removeEventListener","open","onloadend","responseHeaders","getAllResponseHeaders","responseData","responseText","statusText","_resolve","_reject","err","onreadystatechange","handleLoad","readyState","responseURL","onabort","handleAbort","ECONNABORTED","onerror","handleError","ERR_NETWORK","ontimeout","handleTimeout","timeoutErrorMessage","ETIMEDOUT","setRequestHeader","upload","cancel","abort","subscribe","aborted","send","composeSignals","signals","controller","AbortController","reason","streamChunk","chunk","chunkSize","byteLength","pos","end","readBytes","async","iterable","readStream","stream","asyncIterator","reader","getReader","trackStream","onProgress","onFinish","_onFinish","ReadableStream","close","loadedBytes","enqueue","return","highWaterMark","isFetchSupported","fetch","Request","Response","isReadableStreamSupported","encodeText","TextEncoder","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","body","has","DEFAULT_CHUNK_SIZE","supportsResponseStream","resolvers","res","_","ERR_NOT_SUPPORT","getBodyLength","_request","resolveBodyLength","getContentLength","fetchOptions","composedSignal","toAbortSignal","requestContentLength","duplex","contentTypeHeader","isCredentialsSupported","credentials","isStreamResponse","responseContentLength","knownAdapters","http","xhr","renderReason","isResolvedHandle","getAdapter","adapters","nameOrAdapter","rejectedReasons","reasons","state","s","throwIfCancellationRequested","throwIfRequested","dispatchRequest","onAdapterResolution","onAdapterRejection","VERSION","validators","validator","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","configOrUrl","dummy","boolean","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","unshiftRequestInterceptors","interceptor","unshift","responseInterceptorChain","pushResponseInterceptors","promise","chain","onFulfilled","onRejected","fullPath","forEachMethodNoData","forEachMethodWithData","generateHTTPMethod","isForm","httpMethod","CancelToken","executor","resolvePromise","promiseExecutor","_listeners","onfulfilled","splice","c","spread","callback","isAxiosError","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","createInstance","defaultConfig","axios","Cancel","all","promises","formToJSON","default","Fetch","_classCallCheck","_createClass","apiUrl","showCase","_this","requestUrl","URL","searchParams","errorMsg","errorStack","_defineProperty","publishTo","_instance","_ThreeSixtyViewDataController","IconZoomOut","xmlns","height","viewBox","d","IconZoomIn","SCSScrollLock","lock","webContainer","querySelector","mobileContainer","bodyScrollPosition","scrollY","unlock","removeAttribute","scrollTo","_SCSScrollLock","LoadingSpinner","_React$Component","_callSuper","showLoadingSpinner","_inherits","loadingSpinnerClass","IconPlayStop","roundNumber","num","decimal","toFixed","checkIsNumber","handleCallback","easeOut","t","cos","PI","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","animations","handleCancelAnimationFrame","animation","cancelAnimationFrame","handleCancelAnimation","contextInstance","mounted","animate","velocity","handleSetupAnimation","animationName","animationTime","startTime","getTime","lastStep","frameTime","animationProgress","animationType","step","requestAnimationFrame","isValidTargetState","targetState","scale","positionX","positionY","isNaN","isValid","setTransformState","_a","transformState","scaleDiff","positionXDiff","positionYDiff","newScale","newPositionX","newPositionY","getComponentsSizes","wrapperComponent","contentComponent","wrapperWidth","offsetWidth","wrapperHeight","offsetHeight","contentWidth","contentHeight","newContentWidth","newContentHeight","newDiffWidth","newDiffHeight","getBounds","diffWidth","diffHeight","centerZoomedOut","scaleWidthFactor","scaleHeightFactor","minPositionX","maxPositionX","minPositionY","maxPositionY","calculateBounds","setup","bounds","boundLimiter","minBound","maxBound","isActive","handleCalculateBounds","getMouseBoundedPosition","limitToBounds","paddingValueX","paddingValueY","paddingX","paddingY","x","y","handleCalculateZoomPositions","mouseX","mouseY","scaleDifference","calculatedPositionX","calculatedPositionY","newPositions","checkZoomBounds","zoom","minScale","maxScale","zoomPadding","enablePadding","scalePadding","minScaleWithPadding","isPanningStartAllowed","excluded","panning","isInitialized","targetIsShadowDom","isWrapperChild","composedPath","Element","isAllowed","isExcluded","isExcludedNode","isPanningAllowed","isPanning","disabled","handlePanningSetup","clientX","clientY","startCoords","handleTouchPanningSetup","touches","oneFingerTouch","handlePanToBounds","_b","_c","xChanged","yChanged","mousePosX","mousePosY","_d","handleNewPosition","getPanningClientPosition","lockAxisX","lockAxisY","getPaddingValue","disablePadding","isVelocityCalculationAllowed","velocityAnimation","disabledVelocity","isVelocityAllowed","getVelocityMoveTime","equalToMove","sensitivity","getVelocityPosition","newPosition","startPosition","currentPosition","isLocked","minPosition","maxPosition","minTarget","maxTarget","calculatedPosition","getSizeMultiplier","defaultMultiplier","handleCalculateVelocity","lastMousePosition","velocityTime","sizeMultiplier","distanceX","distanceY","velocityX","velocityY","interval","speed","sqrt","handleVelocityPanning","alignmentAnimation","zoomAnimation","sizeX","sizeY","velocityAlignmentTime","alignAnimationTime","moveAnimationTime","finalAnimationTime","max","maxTargetX","minTargetX","maxTargetY","minTargetY","startState","alignAnimation","alignStep","customStep","currentPositionX","currentPositionY","handlePanningStart","TouchEvent","handleAlignToBounds","isDisabled","handlePanning","handlePanningEnd","velocityDisabled","wrapperRect","getBoundingClientRect","contentRect","isZoomed","shouldAnimate","handleZoomToPoint","handleAlignToScaleBounds","mousePositionX","mousePositionY","__assign","n","p","__rest","getOwnPropertySymbols","propertyIsEnumerable","__spreadArray","to","pack","ar","initialState","previousScale","initialSetup","centerOnInit","smooth","wheel","smoothStep","wheelDisabled","touchPadDisabled","activationKeys","allowLeftClickPan","allowMiddleClickPan","allowRightClickPan","wheelPanning","pinch","doubleClick","mode","createState","initialScale","initialPositionX","initialPositionY","createSetup","newSetup","validValue","validParameter","dataType","handleCalculateButtonZoom","delta","targetScale","exp","handleZoomToViewCenter","resetTransformations","onResetTransformation","initialTransformation","newBounds","boundedPositions","newState","getOffset","element","wrapper","offset","wrapperOffset","contentOffset","xOff","yOff","calculateZoomToNode","node","customZoom","nodeRect","nodeOffset","nodeLeft","nodeTop","nodeWidth","nodeHeight","scaleX","scaleY","offsetX","offsetY","left","top","zoomIn","zoomOut","setTransform","resetTransform","centerView","getCenterPosition","zoomToElement","getControls","getState","getContext","ref","passiveSupported","makePassiveEventOption","exclude","cancelTimeout","getTransformStyles","getMatrixTransformStyles","tx","ty","centerPositionX","centerPositionY","mergeRefs","refs","current","isWheelAllowed","ctrlKey","getDeltaY","deltaY","getDelta","customDelta","getMousePosition","touch","handleCalculateWheelZoom","disable","getTarget","paddingEnabled","handleWheelZoomStop","previousWheelEvent","sign","isPinchStartAllowed","isPinchAllowed","pinchStartDistance","calculateTouchMidPoint","firstPointX","firstPointY","secondPointX","secondPointY","getTouchDistance","pow","pageX","pageY","calculatePinchZoom","currentDistance","pinchStartScale","touchProportion","wheelStopEventTime","wheelAnimationTime","handleWheelStart","onWheelStart","onZoomStart","wheelStopEventTimer","handleWheelZoom","onWheel","onZoom","preventDefault","stopPropagation","zoomStep","abs","mousePosition","isPaddingDisabled","isLimitedToBounds","handleWheelStop","onWheelStop","onZoomStop","wheelAnimationTimer","hasStoppedZooming","handlePinchStart","distance","lastDistance","handlePinchZoom","midPoint","pinchMidpoint","handlePinchStop","handleDoubleClickStop","doubleClickStopEventTimer","handleDoubleClickResetMode","getDoubleClickScale","handleDoubleClick","isDoubleClickAllowed","ZoomPanPinch","onChangeCallbacks","Set","onInitCallbacks","isWheelPanning","lastTouch","maxBounds","pressedKeys","mount","initializeWindowEvents","unmount","cleanupWindowEvents","update","newProps","passive","currentDocument","ownerDocument","currentWindow","defaultView","onWheelPanning","onPanningStart","onPanning","onPanningStop","clearPanning","setKeyUnPressed","setKeyPressed","observer","disconnect","handleInitializeWrapperEvents","onWheelZoom","onDoubleClick","onTouchPanningStart","onTouchPanning","onTouchPanningStop","handleInitialize","applyTransformation","setCenter","ResizeObserver","currentWidth","currentHeight","observe","keysPressed","isPressingKeys","deltaX","button","onPinchStart","onPinchingStart","onPinch","onPinching","onPinchStop","onPinchingStop","isDoubleTap","isPanningAction","isPinchAction","find","onTransformed","ctx_1","handleTransformStyles","customTransform","style","onChange","add","delete","onInit","init","ctx","Context","getContent","children","TransformWrapper","useRef","useImperativeHandle","useEffect","Provider","KeepScale","localRef","useContext","initialElementRect","bottom","right","useResize","onResize","dependencies","resizeObserverRef","rectRef","didUnmount","useLayoutEffect","newSize","unobserve","previewStyles","zIndex","boxSizing","border","transformOrigin","boxShadow","MiniMap","borderColor","rest","_e","useState","initialized","setInitialized","useTransformContext","miniMapInstance","mainRef","wrapperRef","previewRef","getContentSize","useCallback","rect","computeMiniMapScale","contentSize","computeMiniMapSize","computeMiniMapStyle","overflow","transformMiniMap","miniSize","wrapSize","previewScale","initialize","useTransformEffect","useTransformInit","zpp","wrapperStyle","useMemo","styleInject","css","insertAt","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","css_248z","styles","TransformComponent","wrapperClass","contentClass","contentStyle","wrapperProps","contentProps","_f","contentRef","libraryContext","useControls","unmountCallback","ImageController","getRotatedImageIndex","animationSequenceLength","dragStartScreenX","dragStartImageIndex","numImages","pixelsPerImage","pixelsPerDegree","dx","getImageHeight","newImageHeight","currentWindowWidth","helper","outerWidth","devicePixelRatio","breakPointMobile","imageHeightMobile","breakPointTablet","imageHeightTablet","breakPointDesktopMin","imageHeightDesktopMin","imageHeightDesktopMax","_ImageController","minZoomLevel","maxZoomLevel","ThreeSixtyAnimation","dragging","imageIndex","animationSequenceIndex","playAnimation","animationIsLoaded","currentImageHeight","zoomInLevel","imageMovementIsEnabled","zoomedImageIndex","zoomedImageHeight","loadAnimation","displayThreeSixtyOverlay","imageHeight","imageLoadedProgress","imageController","handleRotationByHand","handleRotationByTouch","handleTouchend","handleMouseDown","handleTouchDown","preventDragHandler","handleStartStopClick","restartAnimation","handleWindowResize","handleZoomInClick","handleZoomOutClick","openThreeSixtyOverlay","handleOnInit","onEnterViewport","updateZoomedImagePosition","updateZoomedImagePositionTouch","componentDidMount","_this2","animationRef","zoomBtn","threeDOverlay","displayG3dOverlay","handleShowThreeSixtyViewEvent","showThreeDView","playStopAnimation","play3d","componentWillUnmount","animationTimer","setState","unsubscribeFrom","setImageSize","initAnimation","_this3","windowResizeTimer","_this4","setOverlayViewWindowSize","scrollLock","threeDImagesRef","new_height","clientHeight","hasThreeSixtyThumbnails","setThreeDImagesContainerDimensions","_this5","_this6","animationSequence","updateSliderIndex","animationSpeed","updateImageIndex","screenX","handleImageMovement","persist","gMouseDownX","gMouseDownY","leftPart","activeImageContainer","leftPos","leftNumString","gMouseDownOffsetX","topPart","topPos","topNumString","gMouseDownOffsetY","topAmount","leftAmount","resetDefaultImageSize","_this7","tmpZoomInLevel","maxWidth","maxHeight","clientWidth","removeProperty","reactZoomPanPinchRef","renderElementsForThreeSixtyView","threeDImagesClass","onMouseDown","onDragStart","getImageElements","handleImageLoaded","_this8","imageUrlArray","getAltTag","_this9","imgUrl","newIndex","src","getImageUrl","data-testid","threeDImageClass","data-index","decoding","onLoad","alt","imgHeight","_this$state$zoomedIma","play","_this10","_this11","zoomButtonsClass","tdiClassName","renderableImageIndex","zoomOutBtnStyleClass","zoomInBtnStyleClass","viewportReached","innerHeight","handleKeyDown","tabNav","nextSibling","focus","previousSibling","onClick","onKeyDown","ArrowUp","fillRule","clipRule","fill","ArrowDown","ThreeSixtyThumbnails","forceControlBntFocus","activeIndex","moveValue","positionIndex","maxPositionIndex","slotSize","handleArrowUpLeftClick","handleArrowDownRightClick","handleThreeSixtyThumbnailSelected","handleOnKeyDown","setSlotSize","prepareImageUrl","getSlotStyle","renderControls","tSlotImageContainerStyleClass","onThreeSixtyThumbnailSelected","start_stop_button","tsLabel","setGroupAtt","hasAttribute","toggleAttribute","setFocusAtt","order","renderThumbnails","label","ArrowUpLeft","ArrowDownRight","Icon_Close_Large","currentThreeSixty","currentThreeSixtyThumbnails","threeDIsAvailable","handleThreeSixtyThumbnailSelection","handleCloseGallery3d","hideShowCase","restoreShowCase","handleESPPDataUpdate","variantSelection","selectedColor","oldPI","_ref","showCaseContainerId","isTargetContainer","tsAnimationRef","updateCurrentData","hidden","tsThumbnailsRef","setModalAtt","CloseIconLarge","_interopDefault","ex","React__default","UAParser","ClientUAInstance","browser","getBrowser","cpu","getCPU","device","getDevice","engine","getEngine","os","getOS","ua","getUA","setUa","userAgentString","setUA","parseUserAgent","UserAgentInstance","UA","setUserAgent","UAHelper","freeze","ownKeys","object","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","_typeof","Constructor","_defineProperties","protoProps","staticProps","_extends","subClass","superClass","_setPrototypeOf","_getPrototypeOf","o","setPrototypeOf","__proto__","_objectWithoutPropertiesLoose","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_i","_arr","_n","_s","minLen","_arrayLikeToArray","arr2","DeviceTypes","Mobile","Tablet","SmartTv","Console","Wearable","Embedded","Browser","BrowserTypes","Chrome","Firefox","Opera","Yandex","Safari","InternetExplorer","Edge","Chromium","Ie","MobileSafari","EdgeChromium","MIUI","SamsungBrowser","OsTypes","IOS","Android","WindowsPhone","Windows","MAC_OS","InitialDeviceTypes","isMobile","isSmartTV","isConsole","isWearable","checkDeviceType","isEmbedded","setDefaults","getNavigatorInstance","isIOS13Check","nav","maxTouchPoints","MSStream","browserPayload","browserMajorVersion","major","browserFullVersion","browserName","engineName","engineVersion","osName","osVersion","mobilePayload","vendor","model","smartTvPayload","consolePayload","wearablePayload","embeddedPayload","deviceDetect","isMobileType","isTabletType","_ref2","isMobileAndTabletType","_ref3","isSmartTVType","_ref4","isBrowserType","_ref5","isWearableType","_ref6","isConsoleType","_ref7","isEmbeddedType","_ref8","getMobileVendor","_ref9","getMobileModel","_ref10","getDeviceType","_ref11","isAndroidType","_ref12","isWindowsType","_ref13","isMacOsType","_ref14","isWinPhoneType","_ref15","isIOSType","_ref16","getOsVersion","_ref17","getOsName","_ref18","isChromeType","_ref19","isFirefoxType","_ref20","isChromiumType","_ref21","isEdgeType","_ref22","isYandexType","_ref23","isSafariType","_ref24","isMobileSafariType","_ref25","isOperaType","_ref26","isIEType","_ref27","isMIUIType","_ref28","isSamsungBrowserType","_ref29","getBrowserFullVersion","_ref30","getBrowserVersion","_ref31","getBrowserName","_ref32","getEngineName","_ref33","getEngineVersion","_ref34","isElectronType","isEdgeChromiumType","getIOS13","getIPad13","getIphone13","getIPod13","getUseragent","userAg","buildSelectorsObject","isMobileSafari","isChromium","isMobileOnly","isDesktop","isAndroid","isWinPhone","isIOS","isChrome","isFirefox","isSafari","isOpera","isIE","fullBrowserVersion","browserVersion","mobileVendor","mobileModel","isEdge","isYandex","deviceType","isIOS13","isIPad13","isIPhone13","isIPod13","isElectron","isEdgeChromium","isLegacyEdge","isWindows","isMacOs","isMIUI","isSamsungBrowser","getSelectorsByUserAgent","_UAHelper$parseUserAg","AndroidView","renderWithFragment","Fragment","BrowserView","IEView","IOSView","MobileView","TabletView","WinPhoneView","MobileOnlyView","viewClassName","SmartTVView","ConsoleView","WearableView","CustomView","condition","withOrientationChange","WrappedComponent","_class","isEventListenerAdded","handleOrientationChange","onOrientationChange","onPageLoad","isLandscape","isPortrait","orientation","Component","useMobileOrientation","_useState","_useState2","useDeviceData","hookUserAgent","useDeviceSelectors","deviceData","selectors","exports","f","g","k","C","sortIndex","performance","unstable_now","q","r","u","v","z","A","B","D","E","F","scheduling","isInputPending","G","expirationTime","H","I","J","K","L","M","priorityLevel","N","O","P","Q","R","S","MessageChannel","T","U","port2","port1","onmessage","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","unstable_continueExecution","unstable_forceFrameRate","unstable_getCurrentPriorityLevel","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","delay","unstable_shouldYield","unstable_wrapCallback","module","LIBVERSION","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","UA_MAX_LENGTH","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","EDGE","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","regexes","extensions","mergedRegexes","enumerize","enums","str1","str2","lowerize","majorize","rgxMapper","arrays","j","regex","strMapper","oldSafariMap","1.2","1.3","windowsVersionMap","ME","XP","Vista","7","8","8.1","10","RT","getResult","_ua","_uach","userAgentData","_rgxmap","_isSelfNav","_browser","brave","isBrave","_cpu","_device","mobile","standalone","_engine","_os","CPU","DEVICE","ENGINE","OS","$","jQuery","Zepto"],"mappings":"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","file":"app_threeSixtyView.js","sourcesContent":["import React from 'react';\r\nimport { ThreeSixtyViewDataController } from './components/common/threeSixtyViewDataController';\r\nimport ThreeSixtyView from './components/threeSixtyView/threeSixtyView';\r\nimport { IThreeSixtyViewProps } from './components/threeSixtyView/threeSixtyView.d';\r\nimport { createRoot } from 'react-dom/client';\r\nimport { IProductInfo } from './components/common/productInfo';\r\n\r\nlet magicLink;\r\n\r\n// get magic link:\r\nif (typeof window.__SCS_CLIENT_DATA__ !== 'undefined') {\r\n const data = JSON.parse(JSON.stringify(window.__SCS_CLIENT_DATA__));\r\n\r\n magicLink = data.magicLink;\r\n\r\n delete window.__SCS_CLIENT_DATA__;\r\n}\r\n\r\nif (window && window.shell) {\r\n window.shell.subscribeTo('SCS.Init.ThreeSixtyAnimation',\r\n (payload) => {\r\n const placeHolder: HTMLElement = document.getElementById(payload.containerId);\r\n\r\n if (placeHolder) {\r\n loadDataAndRenderApp(payload.masterArticleNo, payload.colorCode,\r\n payload.containerId, payload.fallBackImageUrl, placeHolder);\r\n }\r\n },\r\n 'SCS.Init.ThreeSixtyAnimation');\r\n}\r\n\r\nfunction loadDataAndRenderApp(masterArticleNo: string, colorCode: number,\r\n containerId: string, fallBackImageUrl: string, placeHolder: HTMLElement) {\r\n const threeSixtyViewController: ThreeSixtyViewDataController = \r\n ThreeSixtyViewDataController.instance(magicLink);\r\n\r\n threeSixtyViewController.getThreeSixtyViewData(colorCode, masterArticleNo)\r\n .then((threeSixtyView) => {\r\n renderApp(threeSixtyView, containerId, fallBackImageUrl, placeHolder);\r\n });\r\n}\r\n\r\nfunction getProductInfo(dataset): IProductInfo { // for Accessibility tags\r\n const categoryName = dataset.categoryname ? dataset.categoryname : '';\r\n const designation = dataset.designation ? dataset.designation : '';\r\n const colorName = dataset.colorname ? dataset.colorname : '';\r\n\r\n return {categoryName: categoryName, \r\n designation: designation, \r\n colorName: colorName,\r\n l10n: {localizationKey: '$$$LocalizationProductPresentation.Image.Showcase$$$'}};\r\n}\r\n\r\nfunction renderApp(threeSixtyView: IThreeSixtyViewProps,\r\n containerId: string, fallBackImageUrl: string, \r\n placeHolder: HTMLElement) { \r\n const root = createRoot(placeHolder);\r\n root.render(\r\n
\r\n \r\n
);\r\n}\r\n","import defaultStyles from '../../styles/defaults.scss';\r\nimport {isTablet} from 'react-device-detect';\r\n\r\nexport function isMobileShop(): boolean {\r\n if (typeof document !== 'undefined')\r\n return document.getElementsByTagName('html')[0].classList.contains('mobileshop');\r\n else\r\n return false;\r\n}\r\n\r\nexport function isTabletView(): boolean {\r\n return isTablet;\r\n}\r\n\r\nexport function isDeskTopView(): boolean {\r\n const width = parseInt(defaultStyles.breakpointDesktopMinWidth);\r\n return window.innerWidth >= width;\r\n}\r\n\r\nexport function decodeHTML(value: string): string {\r\n return value.replace(/&#(\\d+);/g, (match, dec) => {\r\n return String.fromCharCode(dec);\r\n });\r\n}\r\n\r\nexport function isKioskPc(): boolean {\r\n if (typeof document !== 'undefined')\r\n return document.getElementsByTagName('html')[0].classList.contains('kiosk');\r\n else\r\n return false;\r\n}\r\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.7\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios, { AxiosError, AxiosResponse } from 'axios';\r\n\r\nexport class Fetch {\r\n public fetch(apiUrl: string, masterArticleNo: string, colorCode: string, showCase: string) {\r\n const requestUrl = new URL(apiUrl);\r\n requestUrl.searchParams.set('masterArticleNo', masterArticleNo);\r\n requestUrl.searchParams.set('colorCode', colorCode);\r\n\r\n if(showCase)\r\n requestUrl.searchParams.set('showCase', showCase);\r\n\r\n return axios.get(requestUrl.toString())\r\n .then((response: AxiosResponse) => response.status === 200 ? response.data : undefined)\r\n .catch((error: Error | AxiosError) => {\r\n const errorMsg = this.isAxiosError(error)\r\n ? error.message\r\n : `${error.name}: ${error.message}`;\r\n const errorStack = this.isAxiosError(error)\r\n ? JSON.stringify(error.toJSON())\r\n : error.stack;\r\n\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n `fetch() failed with \"${errorMsg}\". Full error:\\n${errorStack}`\r\n );\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private isAxiosError(error: any): error is AxiosError {\r\n return typeof error.toJSON !== 'undefined';\r\n }\r\n}\r\n","import { IThreeSixtyViewProps } from '../threeSixtyView/threeSixtyView.d';\r\nimport { Fetch } from './Fetch';\r\n\r\nexport class ThreeSixtyViewDataController {\r\n private static _instance: ThreeSixtyViewDataController;\r\n private readonly fetch: Fetch;\r\n private readonly magicLink: string;\r\n\r\n static instance(magicLink) {\r\n return this._instance || (this._instance = new this(magicLink));\r\n }\r\n\r\n constructor(magicLink: string) {\r\n this.fetch = new Fetch();\r\n this.magicLink = magicLink;\r\n }\r\n \r\n public getThreeSixtyViewData(colorCode: number, masterArticleNo: string, \r\n showCase: string = null): Promise {\r\n const apiUrl = this.magicLink + 'api/showcase/getthreesixtyviewdata';\r\n\r\n return this.fetch.fetch(apiUrl, masterArticleNo, colorCode.toString(), showCase)\r\n .then((response) => {\r\n if (response) {\r\n return response;\r\n }\r\n else {\r\n // ping PDP and hide SCS fragment, \r\n // because selected does not have 3D animation\r\n window.shell.publishTo('SCS.Hide.Fragment', true);\r\n return undefined;\r\n }\r\n });\r\n }\r\n}\r\n","/* eslint-disable react/no-unknown-property */\r\n/* eslint-disable max-len */\r\nimport React from 'react';\r\n\r\nconst IconZoomOut = () => (\r\n \r\n \r\n);\r\n\r\nexport default IconZoomOut;\r\n","/* eslint-disable react/no-unknown-property */\r\n/* eslint-disable max-len */\r\nimport React from 'react';\r\n\r\nconst IconZoomIn = () => (\r\n \r\n \r\n);\r\n\r\nexport default IconZoomIn;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"breakpointDesktopMinWidth\":\"1200px\",\"dpWhite\":\"#fff\",\"dpGainsboro\":\"#e6e6e6\",\"three_sixty_animation\":\"three_sixty_animation\",\"react-transform-wrapper\":\"react-transform-wrapper\",\"three_d_images\":\"three_d_images\",\"three_d_image\":\"three_d_image\",\"active_image\":\"active_image\",\"show_td_images\":\"show_td_images\",\"tdi_full_width\":\"tdi_full_width\",\"zoom_buttons\":\"zoom_buttons\",\"start_stop_button\":\"start_stop_button\",\"zoom_in_btn\":\"zoom_in_btn\",\"zoom_out_btn\":\"zoom_out_btn\",\"border\":\"border\",\"inactive\":\"inactive\",\"three_sixty_thumbnails\":\"three_sixty_thumbnails\",\"three_sixty_view\":\"three_sixty_view\"};","export class SCSScrollLock {\r\n private static _instance: SCSScrollLock;\r\n private bodyScrollPosition = 0;\r\n\r\n static get instance() {\r\n return this._instance || (this._instance = new this());\r\n }\r\n\r\n public lock(): void {\r\n const webContainer = document.querySelector('.container');\r\n const mobileContainer = document.querySelector('.page-container');\r\n this.bodyScrollPosition = window.scrollY;\r\n\r\n if (webContainer || mobileContainer)\r\n document.body.setAttribute(\r\n 'style',\r\n 'overflow: hidden !important; position: fixed !important; top: -' +\r\n this.bodyScrollPosition +\r\n 'px;'\r\n );\r\n }\r\n\r\n public unlock(): void {\r\n const webContainer = document.querySelector('.container');\r\n const mobileContainer = document.querySelector('.page-container');\r\n\r\n if (webContainer || mobileContainer) {\r\n document.body.removeAttribute('style');\r\n window.scrollTo(0, this.bodyScrollPosition);\r\n }\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport default {\"loading_spinner\":\"loading_spinner\",\"show_loading_spinner\":\"show_loading_spinner\",\"scs_loader\":\"scs_loader\",\"load2\":\"load2\"};","import React from 'react';\r\nimport { ILoadingSpinnerProps, ILoadingSpinnerState } from './loadingSpinner.d';\r\nimport './loadingSpinner.scss';\r\n\r\nexport default class LoadingSpinner extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n showLoadingSpinner: this.props.showLoadingSpinner\r\n };\r\n }\r\n\r\n private loadingSpinnerClass(): string {\r\n return this.props.showLoadingSpinner\r\n ? ['loading_spinner', 'show_loading_spinner'].join(' ')\r\n : 'loading_spinner';\r\n }\r\n\r\n public render() {\r\n return (\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","/* eslint-disable react/no-unknown-property */\r\n/* eslint-disable max-len */\r\nimport React from 'react';\r\n\r\nconst IconPlayStop = () => (\r\n \r\n \r\n);\r\n\r\nexport default IconPlayStop;\r\n","import React, { useRef, useImperativeHandle, useEffect, useContext, useLayoutEffect, useState, useCallback, useMemo } from 'react';\n\n/**\n * Rounds number to given decimal\n * eg. roundNumber(2.34343, 1) => 2.3\n */\nvar roundNumber = function (num, decimal) {\n return Number(num.toFixed(decimal));\n};\n/**\n * Checks if value is number, if not it returns default value\n * 1# eg. checkIsNumber(2, 30) => 2\n * 2# eg. checkIsNumber(null, 30) => 30\n */\nvar checkIsNumber = function (num, defaultValue) {\n return typeof num === \"number\" ? num : defaultValue;\n};\n\nvar handleCallback = function (context, event, callback) {\n if (callback && typeof callback === \"function\") {\n callback(context, event);\n }\n};\n\n/* eslint-disable no-plusplus */\n/* eslint-disable no-param-reassign */\n/**\n * Functions should return denominator of the target value, which is the next animation step.\n * t is a value from 0 to 1, reflecting the percentage of animation status.\n */\nvar easeOut = function (t) {\n return -Math.cos(t * Math.PI) / 2 + 0.5;\n};\n// linear\nvar linear = function (t) {\n return t;\n};\n// accelerating from zero velocity\nvar easeInQuad = function (t) {\n return t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuad = function (t) {\n return t * (2 - t);\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuad = function (t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n};\n// accelerating from zero velocity\nvar easeInCubic = function (t) {\n return t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutCubic = function (t) {\n return --t * t * t + 1;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutCubic = function (t) {\n return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n};\n// accelerating from zero velocity\nvar easeInQuart = function (t) {\n return t * t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuart = function (t) {\n return 1 - --t * t * t * t;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuart = function (t) {\n return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;\n};\n// accelerating from zero velocity\nvar easeInQuint = function (t) {\n return t * t * t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuint = function (t) {\n return 1 + --t * t * t * t * t;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuint = function (t) {\n return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;\n};\nvar animations = {\n easeOut: easeOut,\n linear: linear,\n easeInQuad: easeInQuad,\n easeOutQuad: easeOutQuad,\n easeInOutQuad: easeInOutQuad,\n easeInCubic: easeInCubic,\n easeOutCubic: easeOutCubic,\n easeInOutCubic: easeInOutCubic,\n easeInQuart: easeInQuart,\n easeOutQuart: easeOutQuart,\n easeInOutQuart: easeInOutQuart,\n easeInQuint: easeInQuint,\n easeOutQuint: easeOutQuint,\n easeInOutQuint: easeInOutQuint,\n};\n\n/* eslint-disable no-param-reassign */\nvar handleCancelAnimationFrame = function (animation) {\n if (typeof animation === \"number\") {\n cancelAnimationFrame(animation);\n }\n};\nvar handleCancelAnimation = function (contextInstance) {\n if (!contextInstance.mounted)\n return;\n handleCancelAnimationFrame(contextInstance.animation);\n // Clear animation state\n contextInstance.animate = false;\n contextInstance.animation = null;\n contextInstance.velocity = null;\n};\nfunction handleSetupAnimation(contextInstance, animationName, animationTime, callback) {\n if (!contextInstance.mounted)\n return;\n var startTime = new Date().getTime();\n var lastStep = 1;\n // if another animation is active\n handleCancelAnimation(contextInstance);\n // new animation\n contextInstance.animation = function () {\n if (!contextInstance.mounted) {\n return handleCancelAnimationFrame(contextInstance.animation);\n }\n var frameTime = new Date().getTime() - startTime;\n var animationProgress = frameTime / animationTime;\n var animationType = animations[animationName];\n var step = animationType(animationProgress);\n if (frameTime >= animationTime) {\n callback(lastStep);\n contextInstance.animation = null;\n }\n else if (contextInstance.animation) {\n callback(step);\n requestAnimationFrame(contextInstance.animation);\n }\n };\n requestAnimationFrame(contextInstance.animation);\n}\nfunction isValidTargetState(targetState) {\n var scale = targetState.scale, positionX = targetState.positionX, positionY = targetState.positionY;\n if (Number.isNaN(scale) ||\n Number.isNaN(positionX) ||\n Number.isNaN(positionY)) {\n return false;\n }\n return true;\n}\nfunction animate(contextInstance, targetState, animationTime, animationName) {\n var isValid = isValidTargetState(targetState);\n if (!contextInstance.mounted || !isValid)\n return;\n var setTransformState = contextInstance.setTransformState;\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n var scaleDiff = targetState.scale - scale;\n var positionXDiff = targetState.positionX - positionX;\n var positionYDiff = targetState.positionY - positionY;\n if (animationTime === 0) {\n setTransformState(targetState.scale, targetState.positionX, targetState.positionY);\n }\n else {\n // animation start timestamp\n handleSetupAnimation(contextInstance, animationName, animationTime, function (step) {\n var newScale = scale + scaleDiff * step;\n var newPositionX = positionX + positionXDiff * step;\n var newPositionY = positionY + positionYDiff * step;\n setTransformState(newScale, newPositionX, newPositionY);\n });\n }\n}\n\n/* eslint-disable no-param-reassign */\nfunction getComponentsSizes(wrapperComponent, contentComponent, newScale) {\n var wrapperWidth = wrapperComponent.offsetWidth;\n var wrapperHeight = wrapperComponent.offsetHeight;\n var contentWidth = contentComponent.offsetWidth;\n var contentHeight = contentComponent.offsetHeight;\n var newContentWidth = contentWidth * newScale;\n var newContentHeight = contentHeight * newScale;\n var newDiffWidth = wrapperWidth - newContentWidth;\n var newDiffHeight = wrapperHeight - newContentHeight;\n return {\n wrapperWidth: wrapperWidth,\n wrapperHeight: wrapperHeight,\n newContentWidth: newContentWidth,\n newDiffWidth: newDiffWidth,\n newContentHeight: newContentHeight,\n newDiffHeight: newDiffHeight,\n };\n}\nvar getBounds = function (wrapperWidth, newContentWidth, diffWidth, wrapperHeight, newContentHeight, diffHeight, centerZoomedOut) {\n var scaleWidthFactor = wrapperWidth > newContentWidth\n ? diffWidth * (centerZoomedOut ? 1 : 0.5)\n : 0;\n var scaleHeightFactor = wrapperHeight > newContentHeight\n ? diffHeight * (centerZoomedOut ? 1 : 0.5)\n : 0;\n var minPositionX = wrapperWidth - newContentWidth - scaleWidthFactor;\n var maxPositionX = scaleWidthFactor;\n var minPositionY = wrapperHeight - newContentHeight - scaleHeightFactor;\n var maxPositionY = scaleHeightFactor;\n return { minPositionX: minPositionX, maxPositionX: maxPositionX, minPositionY: minPositionY, maxPositionY: maxPositionY };\n};\nvar calculateBounds = function (contextInstance, newScale) {\n var wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n var centerZoomedOut = contextInstance.setup.centerZoomedOut;\n if (!wrapperComponent || !contentComponent) {\n throw new Error(\"Components are not mounted\");\n }\n var _a = getComponentsSizes(wrapperComponent, contentComponent, newScale), wrapperWidth = _a.wrapperWidth, wrapperHeight = _a.wrapperHeight, newContentWidth = _a.newContentWidth, newDiffWidth = _a.newDiffWidth, newContentHeight = _a.newContentHeight, newDiffHeight = _a.newDiffHeight;\n var bounds = getBounds(wrapperWidth, newContentWidth, newDiffWidth, wrapperHeight, newContentHeight, newDiffHeight, Boolean(centerZoomedOut));\n return bounds;\n};\n/**\n * Keeps value between given bounds, used for limiting view to given boundaries\n * 1# eg. boundLimiter(2, 0, 3, true) => 2\n * 2# eg. boundLimiter(4, 0, 3, true) => 3\n * 3# eg. boundLimiter(-2, 0, 3, true) => 0\n * 4# eg. boundLimiter(10, 0, 3, false) => 10\n */\nvar boundLimiter = function (value, minBound, maxBound, isActive) {\n if (!isActive)\n return roundNumber(value, 2);\n if (value < minBound)\n return roundNumber(minBound, 2);\n if (value > maxBound)\n return roundNumber(maxBound, 2);\n return roundNumber(value, 2);\n};\nvar handleCalculateBounds = function (contextInstance, newScale) {\n var bounds = calculateBounds(contextInstance, newScale);\n // Save bounds\n contextInstance.bounds = bounds;\n return bounds;\n};\nfunction getMouseBoundedPosition(positionX, positionY, bounds, limitToBounds, paddingValueX, paddingValueY, wrapperComponent) {\n var minPositionX = bounds.minPositionX, minPositionY = bounds.minPositionY, maxPositionX = bounds.maxPositionX, maxPositionY = bounds.maxPositionY;\n var paddingX = 0;\n var paddingY = 0;\n if (wrapperComponent) {\n paddingX = paddingValueX;\n paddingY = paddingValueY;\n }\n var x = boundLimiter(positionX, minPositionX - paddingX, maxPositionX + paddingX, limitToBounds);\n var y = boundLimiter(positionY, minPositionY - paddingY, maxPositionY + paddingY, limitToBounds);\n return { x: x, y: y };\n}\n\nfunction handleCalculateZoomPositions(contextInstance, mouseX, mouseY, newScale, bounds, limitToBounds) {\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n var scaleDifference = newScale - scale;\n if (typeof mouseX !== \"number\" || typeof mouseY !== \"number\") {\n console.error(\"Mouse X and Y position were not provided!\");\n return { x: positionX, y: positionY };\n }\n var calculatedPositionX = positionX - mouseX * scaleDifference;\n var calculatedPositionY = positionY - mouseY * scaleDifference;\n // do not limit to bounds when there is padding animation,\n // it causes animation strange behaviour\n var newPositions = getMouseBoundedPosition(calculatedPositionX, calculatedPositionY, bounds, limitToBounds, 0, 0, null);\n return newPositions;\n}\nfunction checkZoomBounds(zoom, minScale, maxScale, zoomPadding, enablePadding) {\n var scalePadding = enablePadding ? zoomPadding : 0;\n var minScaleWithPadding = minScale - scalePadding;\n if (!Number.isNaN(maxScale) && zoom >= maxScale)\n return maxScale;\n if (!Number.isNaN(minScale) && zoom <= minScaleWithPadding)\n return minScaleWithPadding;\n return zoom;\n}\n\nvar isPanningStartAllowed = function (contextInstance, event) {\n var excluded = contextInstance.setup.panning.excluded;\n var isInitialized = contextInstance.isInitialized, wrapperComponent = contextInstance.wrapperComponent;\n var target = event.target;\n var targetIsShadowDom = \"shadowRoot\" in target && \"composedPath\" in event;\n var isWrapperChild = targetIsShadowDom\n ? event.composedPath().some(function (el) {\n if (!(el instanceof Element)) {\n return false;\n }\n return wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.contains(el);\n })\n : wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.contains(target);\n var isAllowed = isInitialized && target && isWrapperChild;\n if (!isAllowed)\n return false;\n var isExcluded = isExcludedNode(target, excluded);\n if (isExcluded)\n return false;\n return true;\n};\nvar isPanningAllowed = function (contextInstance) {\n var isInitialized = contextInstance.isInitialized, isPanning = contextInstance.isPanning, setup = contextInstance.setup;\n var disabled = setup.panning.disabled;\n var isAllowed = isInitialized && isPanning && !disabled;\n if (!isAllowed)\n return false;\n return true;\n};\nvar handlePanningSetup = function (contextInstance, event) {\n var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY;\n contextInstance.isPanning = true;\n // Panning with mouse\n var x = event.clientX;\n var y = event.clientY;\n contextInstance.startCoords = { x: x - positionX, y: y - positionY };\n};\nvar handleTouchPanningSetup = function (contextInstance, event) {\n var touches = event.touches;\n var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY;\n contextInstance.isPanning = true;\n // Panning with touch\n var oneFingerTouch = touches.length === 1;\n if (oneFingerTouch) {\n var x = touches[0].clientX;\n var y = touches[0].clientY;\n contextInstance.startCoords = { x: x - positionX, y: y - positionY };\n }\n};\nfunction handlePanToBounds(contextInstance) {\n var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY, scale = _a.scale;\n var _b = contextInstance.setup, disabled = _b.disabled, limitToBounds = _b.limitToBounds, centerZoomedOut = _b.centerZoomedOut;\n var wrapperComponent = contextInstance.wrapperComponent;\n if (disabled || !wrapperComponent || !contextInstance.bounds)\n return;\n var _c = contextInstance.bounds, maxPositionX = _c.maxPositionX, minPositionX = _c.minPositionX, maxPositionY = _c.maxPositionY, minPositionY = _c.minPositionY;\n var xChanged = positionX > maxPositionX || positionX < minPositionX;\n var yChanged = positionY > maxPositionY || positionY < minPositionY;\n var mousePosX = positionX > maxPositionX\n ? wrapperComponent.offsetWidth\n : contextInstance.setup.minPositionX || 0;\n var mousePosY = positionY > maxPositionY\n ? wrapperComponent.offsetHeight\n : contextInstance.setup.minPositionY || 0;\n var _d = handleCalculateZoomPositions(contextInstance, mousePosX, mousePosY, scale, contextInstance.bounds, limitToBounds || centerZoomedOut), x = _d.x, y = _d.y;\n return {\n scale: scale,\n positionX: xChanged ? x : positionX,\n positionY: yChanged ? y : positionY,\n };\n}\nfunction handleNewPosition(contextInstance, newPositionX, newPositionY, paddingValueX, paddingValueY) {\n var limitToBounds = contextInstance.setup.limitToBounds;\n var wrapperComponent = contextInstance.wrapperComponent, bounds = contextInstance.bounds;\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n if (wrapperComponent === null ||\n bounds === null ||\n (newPositionX === positionX && newPositionY === positionY)) {\n return;\n }\n var _b = getMouseBoundedPosition(newPositionX, newPositionY, bounds, limitToBounds, paddingValueX, paddingValueY, wrapperComponent), x = _b.x, y = _b.y;\n contextInstance.setTransformState(scale, x, y);\n}\nvar getPanningClientPosition = function (contextInstance, clientX, clientY) {\n var startCoords = contextInstance.startCoords, transformState = contextInstance.transformState;\n var panning = contextInstance.setup.panning;\n var lockAxisX = panning.lockAxisX, lockAxisY = panning.lockAxisY;\n var positionX = transformState.positionX, positionY = transformState.positionY;\n if (!startCoords) {\n return { x: positionX, y: positionY };\n }\n var mouseX = clientX - startCoords.x;\n var mouseY = clientY - startCoords.y;\n var newPositionX = lockAxisX ? positionX : mouseX;\n var newPositionY = lockAxisY ? positionY : mouseY;\n return { x: newPositionX, y: newPositionY };\n};\nvar getPaddingValue = function (contextInstance, size) {\n var setup = contextInstance.setup, transformState = contextInstance.transformState;\n var scale = transformState.scale;\n var minScale = setup.minScale, disablePadding = setup.disablePadding;\n if (size > 0 && scale >= minScale && !disablePadding) {\n return size;\n }\n return 0;\n};\n\nvar isVelocityCalculationAllowed = function (contextInstance) {\n var mounted = contextInstance.mounted;\n var _a = contextInstance.setup, disabled = _a.disabled, velocityAnimation = _a.velocityAnimation;\n var scale = contextInstance.transformState.scale;\n var disabledVelocity = velocityAnimation.disabled;\n var isAllowed = !disabledVelocity || scale > 1 || !disabled || mounted;\n if (!isAllowed)\n return false;\n return true;\n};\nvar isVelocityAllowed = function (contextInstance) {\n var mounted = contextInstance.mounted, velocity = contextInstance.velocity, bounds = contextInstance.bounds;\n var _a = contextInstance.setup, disabled = _a.disabled, velocityAnimation = _a.velocityAnimation;\n var scale = contextInstance.transformState.scale;\n var disabledVelocity = velocityAnimation.disabled;\n var isAllowed = !disabledVelocity || scale > 1 || !disabled || mounted;\n if (!isAllowed)\n return false;\n if (!velocity || !bounds)\n return false;\n return true;\n};\nfunction getVelocityMoveTime(contextInstance, velocity) {\n var velocityAnimation = contextInstance.setup.velocityAnimation;\n var equalToMove = velocityAnimation.equalToMove, animationTime = velocityAnimation.animationTime, sensitivity = velocityAnimation.sensitivity;\n if (equalToMove) {\n return animationTime * velocity * sensitivity;\n }\n return animationTime;\n}\nfunction getVelocityPosition(newPosition, startPosition, currentPosition, isLocked, limitToBounds, minPosition, maxPosition, minTarget, maxTarget, step) {\n if (limitToBounds) {\n if (startPosition > maxPosition && currentPosition > maxPosition) {\n var calculatedPosition = maxPosition + (newPosition - maxPosition) * step;\n if (calculatedPosition > maxTarget)\n return maxTarget;\n if (calculatedPosition < maxPosition)\n return maxPosition;\n return calculatedPosition;\n }\n if (startPosition < minPosition && currentPosition < minPosition) {\n var calculatedPosition = minPosition + (newPosition - minPosition) * step;\n if (calculatedPosition < minTarget)\n return minTarget;\n if (calculatedPosition > minPosition)\n return minPosition;\n return calculatedPosition;\n }\n }\n if (isLocked)\n return startPosition;\n return boundLimiter(newPosition, minPosition, maxPosition, limitToBounds);\n}\n\nfunction getSizeMultiplier(wrapperComponent, equalToMove) {\n var defaultMultiplier = 1;\n if (equalToMove) {\n return Math.min(defaultMultiplier, wrapperComponent.offsetWidth / window.innerWidth);\n }\n return defaultMultiplier;\n}\nfunction handleCalculateVelocity(contextInstance, position) {\n var isAllowed = isVelocityCalculationAllowed(contextInstance);\n if (!isAllowed) {\n return;\n }\n var lastMousePosition = contextInstance.lastMousePosition, velocityTime = contextInstance.velocityTime, setup = contextInstance.setup;\n var wrapperComponent = contextInstance.wrapperComponent;\n var equalToMove = setup.velocityAnimation.equalToMove;\n var now = Date.now();\n if (lastMousePosition && velocityTime && wrapperComponent) {\n var sizeMultiplier = getSizeMultiplier(wrapperComponent, equalToMove);\n var distanceX = position.x - lastMousePosition.x;\n var distanceY = position.y - lastMousePosition.y;\n var velocityX = distanceX / sizeMultiplier;\n var velocityY = distanceY / sizeMultiplier;\n var interval = now - velocityTime;\n var speed = distanceX * distanceX + distanceY * distanceY;\n var velocity = Math.sqrt(speed) / interval;\n contextInstance.velocity = { velocityX: velocityX, velocityY: velocityY, total: velocity };\n }\n contextInstance.lastMousePosition = position;\n contextInstance.velocityTime = now;\n}\nfunction handleVelocityPanning(contextInstance) {\n var velocity = contextInstance.velocity, bounds = contextInstance.bounds, setup = contextInstance.setup, wrapperComponent = contextInstance.wrapperComponent;\n var isAllowed = isVelocityAllowed(contextInstance);\n if (!isAllowed || !velocity || !bounds || !wrapperComponent) {\n return;\n }\n var velocityX = velocity.velocityX, velocityY = velocity.velocityY, total = velocity.total;\n var maxPositionX = bounds.maxPositionX, minPositionX = bounds.minPositionX, maxPositionY = bounds.maxPositionY, minPositionY = bounds.minPositionY;\n var limitToBounds = setup.limitToBounds, alignmentAnimation = setup.alignmentAnimation;\n var zoomAnimation = setup.zoomAnimation, panning = setup.panning;\n var lockAxisY = panning.lockAxisY, lockAxisX = panning.lockAxisX;\n var animationType = zoomAnimation.animationType;\n var sizeX = alignmentAnimation.sizeX, sizeY = alignmentAnimation.sizeY, velocityAlignmentTime = alignmentAnimation.velocityAlignmentTime;\n var alignAnimationTime = velocityAlignmentTime;\n var moveAnimationTime = getVelocityMoveTime(contextInstance, total);\n var finalAnimationTime = Math.max(moveAnimationTime, alignAnimationTime);\n var paddingValueX = getPaddingValue(contextInstance, sizeX);\n var paddingValueY = getPaddingValue(contextInstance, sizeY);\n var paddingX = (paddingValueX * wrapperComponent.offsetWidth) / 100;\n var paddingY = (paddingValueY * wrapperComponent.offsetHeight) / 100;\n var maxTargetX = maxPositionX + paddingX;\n var minTargetX = minPositionX - paddingX;\n var maxTargetY = maxPositionY + paddingY;\n var minTargetY = minPositionY - paddingY;\n var startState = contextInstance.transformState;\n var startTime = new Date().getTime();\n handleSetupAnimation(contextInstance, animationType, finalAnimationTime, function (step) {\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n var frameTime = new Date().getTime() - startTime;\n var animationProgress = frameTime / alignAnimationTime;\n var alignAnimation = animations[alignmentAnimation.animationType];\n var alignStep = 1 - alignAnimation(Math.min(1, animationProgress));\n var customStep = 1 - step;\n var newPositionX = positionX + velocityX * customStep;\n var newPositionY = positionY + velocityY * customStep;\n var currentPositionX = getVelocityPosition(newPositionX, startState.positionX, positionX, lockAxisX, limitToBounds, minPositionX, maxPositionX, minTargetX, maxTargetX, alignStep);\n var currentPositionY = getVelocityPosition(newPositionY, startState.positionY, positionY, lockAxisY, limitToBounds, minPositionY, maxPositionY, minTargetY, maxTargetY, alignStep);\n if (positionX !== newPositionX || positionY !== newPositionY) {\n contextInstance.setTransformState(scale, currentPositionX, currentPositionY);\n }\n });\n}\n\nfunction handlePanningStart(contextInstance, event) {\n var scale = contextInstance.transformState.scale;\n handleCancelAnimation(contextInstance);\n handleCalculateBounds(contextInstance, scale);\n if (window.TouchEvent !== undefined && event instanceof TouchEvent) {\n handleTouchPanningSetup(contextInstance, event);\n }\n else {\n handlePanningSetup(contextInstance, event);\n }\n}\nfunction handleAlignToBounds(contextInstance) {\n var scale = contextInstance.transformState.scale;\n var _a = contextInstance.setup, minScale = _a.minScale, alignmentAnimation = _a.alignmentAnimation;\n var disabled = alignmentAnimation.disabled, sizeX = alignmentAnimation.sizeX, sizeY = alignmentAnimation.sizeY, animationTime = alignmentAnimation.animationTime, animationType = alignmentAnimation.animationType;\n var isDisabled = disabled || scale < minScale || (!sizeX && !sizeY);\n if (isDisabled)\n return;\n var targetState = handlePanToBounds(contextInstance);\n if (targetState) {\n animate(contextInstance, targetState, animationTime, animationType);\n }\n}\nfunction handlePanning(contextInstance, clientX, clientY) {\n var startCoords = contextInstance.startCoords, setup = contextInstance.setup;\n var _a = setup.alignmentAnimation, sizeX = _a.sizeX, sizeY = _a.sizeY;\n if (!startCoords)\n return;\n var _b = getPanningClientPosition(contextInstance, clientX, clientY), x = _b.x, y = _b.y;\n var paddingValueX = getPaddingValue(contextInstance, sizeX);\n var paddingValueY = getPaddingValue(contextInstance, sizeY);\n handleCalculateVelocity(contextInstance, { x: x, y: y });\n handleNewPosition(contextInstance, x, y, paddingValueX, paddingValueY);\n}\nfunction handlePanningEnd(contextInstance) {\n if (contextInstance.isPanning) {\n var velocityDisabled = contextInstance.setup.panning.velocityDisabled;\n var velocity = contextInstance.velocity, wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n contextInstance.isPanning = false;\n contextInstance.animate = false;\n contextInstance.animation = null;\n var wrapperRect = wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.getBoundingClientRect();\n var contentRect = contentComponent === null || contentComponent === void 0 ? void 0 : contentComponent.getBoundingClientRect();\n var wrapperWidth = (wrapperRect === null || wrapperRect === void 0 ? void 0 : wrapperRect.width) || 0;\n var wrapperHeight = (wrapperRect === null || wrapperRect === void 0 ? void 0 : wrapperRect.height) || 0;\n var contentWidth = (contentRect === null || contentRect === void 0 ? void 0 : contentRect.width) || 0;\n var contentHeight = (contentRect === null || contentRect === void 0 ? void 0 : contentRect.height) || 0;\n var isZoomed = wrapperWidth < contentWidth || wrapperHeight < contentHeight;\n var shouldAnimate = !velocityDisabled && velocity && (velocity === null || velocity === void 0 ? void 0 : velocity.total) > 0.1 && isZoomed;\n if (shouldAnimate) {\n handleVelocityPanning(contextInstance);\n }\n else {\n handleAlignToBounds(contextInstance);\n }\n }\n}\n\nfunction handleZoomToPoint(contextInstance, scale, mouseX, mouseY) {\n var _a = contextInstance.setup, minScale = _a.minScale, maxScale = _a.maxScale, limitToBounds = _a.limitToBounds;\n var newScale = checkZoomBounds(roundNumber(scale, 2), minScale, maxScale, 0, false);\n var bounds = handleCalculateBounds(contextInstance, newScale);\n var _b = handleCalculateZoomPositions(contextInstance, mouseX, mouseY, newScale, bounds, limitToBounds), x = _b.x, y = _b.y;\n return { scale: newScale, positionX: x, positionY: y };\n}\nfunction handleAlignToScaleBounds(contextInstance, mousePositionX, mousePositionY) {\n var scale = contextInstance.transformState.scale;\n var wrapperComponent = contextInstance.wrapperComponent;\n var _a = contextInstance.setup, minScale = _a.minScale, limitToBounds = _a.limitToBounds, zoomAnimation = _a.zoomAnimation;\n var disabled = zoomAnimation.disabled, animationTime = zoomAnimation.animationTime, animationType = zoomAnimation.animationType;\n var isDisabled = disabled || scale >= minScale;\n if (scale >= 1 || limitToBounds) {\n // fire fit to bounds animation\n handleAlignToBounds(contextInstance);\n }\n if (isDisabled || !wrapperComponent || !contextInstance.mounted)\n return;\n var mouseX = mousePositionX || wrapperComponent.offsetWidth / 2;\n var mouseY = mousePositionY || wrapperComponent.offsetHeight / 2;\n var targetState = handleZoomToPoint(contextInstance, minScale, mouseX, mouseY);\n if (targetState) {\n animate(contextInstance, targetState, animationTime, animationType);\n }\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar initialState = {\n previousScale: 1,\n scale: 1,\n positionX: 0,\n positionY: 0,\n};\nvar initialSetup = {\n disabled: false,\n minPositionX: null,\n maxPositionX: null,\n minPositionY: null,\n maxPositionY: null,\n minScale: 1,\n maxScale: 8,\n limitToBounds: true,\n centerZoomedOut: false,\n centerOnInit: false,\n disablePadding: false,\n smooth: true,\n wheel: {\n step: 0.2,\n disabled: false,\n smoothStep: 0.001,\n wheelDisabled: false,\n touchPadDisabled: false,\n activationKeys: [],\n excluded: [],\n },\n panning: {\n disabled: false,\n velocityDisabled: false,\n lockAxisX: false,\n lockAxisY: false,\n allowLeftClickPan: true,\n allowMiddleClickPan: true,\n allowRightClickPan: true,\n wheelPanning: false,\n activationKeys: [],\n excluded: [],\n },\n pinch: {\n step: 5,\n disabled: false,\n excluded: [],\n },\n doubleClick: {\n disabled: false,\n step: 0.7,\n mode: \"zoomIn\",\n animationType: \"easeOut\",\n animationTime: 200,\n excluded: [],\n },\n zoomAnimation: {\n disabled: false,\n size: 0.4,\n animationTime: 200,\n animationType: \"easeOut\",\n },\n alignmentAnimation: {\n disabled: false,\n sizeX: 100,\n sizeY: 100,\n animationTime: 200,\n velocityAlignmentTime: 400,\n animationType: \"easeOut\",\n },\n velocityAnimation: {\n disabled: false,\n sensitivity: 1,\n animationTime: 400,\n animationType: \"easeOut\",\n equalToMove: true,\n },\n};\n\nvar createState = function (props) {\n var _a, _b, _c, _d;\n return {\n previousScale: (_a = props.initialScale) !== null && _a !== void 0 ? _a : initialState.scale,\n scale: (_b = props.initialScale) !== null && _b !== void 0 ? _b : initialState.scale,\n positionX: (_c = props.initialPositionX) !== null && _c !== void 0 ? _c : initialState.positionX,\n positionY: (_d = props.initialPositionY) !== null && _d !== void 0 ? _d : initialState.positionY,\n };\n};\nvar createSetup = function (props) {\n var newSetup = __assign({}, initialSetup);\n Object.keys(props).forEach(function (key) {\n var validValue = typeof props[key] !== \"undefined\";\n var validParameter = typeof initialSetup[key] !== \"undefined\";\n if (validParameter && validValue) {\n var dataType = Object.prototype.toString.call(initialSetup[key]);\n var isObject = dataType === \"[object Object]\";\n var isArray = dataType === \"[object Array]\";\n if (isObject) {\n newSetup[key] = __assign(__assign({}, initialSetup[key]), props[key]);\n }\n else if (isArray) {\n newSetup[key] = __spreadArray(__spreadArray([], initialSetup[key], true), props[key], true);\n }\n else {\n newSetup[key] = props[key];\n }\n }\n });\n return newSetup;\n};\n\nvar handleCalculateButtonZoom = function (contextInstance, delta, step) {\n var scale = contextInstance.transformState.scale;\n var wrapperComponent = contextInstance.wrapperComponent, setup = contextInstance.setup;\n var maxScale = setup.maxScale, minScale = setup.minScale, zoomAnimation = setup.zoomAnimation, smooth = setup.smooth;\n var size = zoomAnimation.size;\n if (!wrapperComponent) {\n throw new Error(\"Wrapper is not mounted\");\n }\n var targetScale = smooth\n ? scale * Math.exp(delta * step)\n : scale + delta * step;\n var newScale = checkZoomBounds(roundNumber(targetScale, 3), minScale, maxScale, size, false);\n return newScale;\n};\nfunction handleZoomToViewCenter(contextInstance, delta, step, animationTime, animationType) {\n var wrapperComponent = contextInstance.wrapperComponent;\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n if (!wrapperComponent)\n return console.error(\"No WrapperComponent found\");\n var wrapperWidth = wrapperComponent.offsetWidth;\n var wrapperHeight = wrapperComponent.offsetHeight;\n var mouseX = (wrapperWidth / 2 - positionX) / scale;\n var mouseY = (wrapperHeight / 2 - positionY) / scale;\n var newScale = handleCalculateButtonZoom(contextInstance, delta, step);\n var targetState = handleZoomToPoint(contextInstance, newScale, mouseX, mouseY);\n if (!targetState) {\n return console.error(\"Error during zoom event. New transformation state was not calculated.\");\n }\n animate(contextInstance, targetState, animationTime, animationType);\n}\nfunction resetTransformations(contextInstance, animationTime, animationType, onResetTransformation) {\n var setup = contextInstance.setup, wrapperComponent = contextInstance.wrapperComponent;\n var limitToBounds = setup.limitToBounds;\n var initialTransformation = createState(contextInstance.props);\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n if (!wrapperComponent)\n return;\n var newBounds = calculateBounds(contextInstance, initialTransformation.scale);\n var boundedPositions = getMouseBoundedPosition(initialTransformation.positionX, initialTransformation.positionY, newBounds, limitToBounds, 0, 0, wrapperComponent);\n var newState = {\n scale: initialTransformation.scale,\n positionX: boundedPositions.x,\n positionY: boundedPositions.y,\n };\n if (scale === initialTransformation.scale &&\n positionX === initialTransformation.positionX &&\n positionY === initialTransformation.positionY) {\n return;\n }\n onResetTransformation === null || onResetTransformation === void 0 ? void 0 : onResetTransformation();\n animate(contextInstance, newState, animationTime, animationType);\n}\nfunction getOffset(element, wrapper, content, state) {\n var offset = element.getBoundingClientRect();\n var wrapperOffset = wrapper.getBoundingClientRect();\n var contentOffset = content.getBoundingClientRect();\n var xOff = wrapperOffset.x * state.scale;\n var yOff = wrapperOffset.y * state.scale;\n return {\n x: (offset.x - contentOffset.x + xOff) / state.scale,\n y: (offset.y - contentOffset.y + yOff) / state.scale,\n };\n}\nfunction calculateZoomToNode(contextInstance, node, customZoom) {\n var wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent, transformState = contextInstance.transformState;\n var _a = contextInstance.setup, limitToBounds = _a.limitToBounds, minScale = _a.minScale, maxScale = _a.maxScale;\n if (!wrapperComponent || !contentComponent)\n return transformState;\n var wrapperRect = wrapperComponent.getBoundingClientRect();\n var nodeRect = node.getBoundingClientRect();\n var nodeOffset = getOffset(node, wrapperComponent, contentComponent, transformState);\n var nodeLeft = nodeOffset.x;\n var nodeTop = nodeOffset.y;\n var nodeWidth = nodeRect.width / transformState.scale;\n var nodeHeight = nodeRect.height / transformState.scale;\n var scaleX = wrapperComponent.offsetWidth / nodeWidth;\n var scaleY = wrapperComponent.offsetHeight / nodeHeight;\n var newScale = checkZoomBounds(customZoom || Math.min(scaleX, scaleY), minScale, maxScale, 0, false);\n var offsetX = (wrapperRect.width - nodeWidth * newScale) / 2;\n var offsetY = (wrapperRect.height - nodeHeight * newScale) / 2;\n var newPositionX = (wrapperRect.left - nodeLeft) * newScale + offsetX;\n var newPositionY = (wrapperRect.top - nodeTop) * newScale + offsetY;\n var bounds = calculateBounds(contextInstance, newScale);\n var _b = getMouseBoundedPosition(newPositionX, newPositionY, bounds, limitToBounds, 0, 0, wrapperComponent), x = _b.x, y = _b.y;\n return { positionX: x, positionY: y, scale: newScale };\n}\n\nvar zoomIn = function (contextInstance) {\n return function (step, animationTime, animationType) {\n if (step === void 0) { step = 0.5; }\n if (animationTime === void 0) { animationTime = 300; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n handleZoomToViewCenter(contextInstance, 1, step, animationTime, animationType);\n };\n};\nvar zoomOut = function (contextInstance) {\n return function (step, animationTime, animationType) {\n if (step === void 0) { step = 0.5; }\n if (animationTime === void 0) { animationTime = 300; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n handleZoomToViewCenter(contextInstance, -1, step, animationTime, animationType);\n };\n};\nvar setTransform = function (contextInstance) {\n return function (newPositionX, newPositionY, newScale, animationTime, animationType) {\n if (animationTime === void 0) { animationTime = 300; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY, scale = _a.scale;\n var wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n var disabled = contextInstance.setup.disabled;\n if (disabled || !wrapperComponent || !contentComponent)\n return;\n var targetState = {\n positionX: Number.isNaN(newPositionX) ? positionX : newPositionX,\n positionY: Number.isNaN(newPositionY) ? positionY : newPositionY,\n scale: Number.isNaN(newScale) ? scale : newScale,\n };\n animate(contextInstance, targetState, animationTime, animationType);\n };\n};\nvar resetTransform = function (contextInstance) {\n return function (animationTime, animationType) {\n if (animationTime === void 0) { animationTime = 200; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n resetTransformations(contextInstance, animationTime, animationType);\n };\n};\nvar centerView = function (contextInstance) {\n return function (scale, animationTime, animationType) {\n if (animationTime === void 0) { animationTime = 200; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n var transformState = contextInstance.transformState, wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n if (wrapperComponent && contentComponent) {\n var targetState = getCenterPosition(scale || transformState.scale, wrapperComponent, contentComponent);\n animate(contextInstance, targetState, animationTime, animationType);\n }\n };\n};\nvar zoomToElement = function (contextInstance) {\n return function (node, scale, animationTime, animationType) {\n if (animationTime === void 0) { animationTime = 600; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n handleCancelAnimation(contextInstance);\n var wrapperComponent = contextInstance.wrapperComponent;\n var target = typeof node === \"string\" ? document.getElementById(node) : node;\n if (wrapperComponent && target && wrapperComponent.contains(target)) {\n var targetState = calculateZoomToNode(contextInstance, target, scale);\n animate(contextInstance, targetState, animationTime, animationType);\n }\n };\n};\n\nvar getControls = function (contextInstance) {\n return {\n instance: contextInstance,\n zoomIn: zoomIn(contextInstance),\n zoomOut: zoomOut(contextInstance),\n setTransform: setTransform(contextInstance),\n resetTransform: resetTransform(contextInstance),\n centerView: centerView(contextInstance),\n zoomToElement: zoomToElement(contextInstance),\n };\n};\nvar getState = function (contextInstance) {\n return {\n instance: contextInstance,\n state: contextInstance.transformState,\n };\n};\nvar getContext = function (contextInstance) {\n var ref = {};\n Object.assign(ref, getState(contextInstance));\n Object.assign(ref, getControls(contextInstance));\n return ref;\n};\n\n// We want to make event listeners non-passive, and to do so have to check\n// that browsers support EventListenerOptions in the first place.\n// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\nvar passiveSupported = false;\nfunction makePassiveEventOption() {\n try {\n var options = {\n get passive() {\n // This function will be called when the browser\n // attempts to access the passive property.\n passiveSupported = true;\n return false;\n },\n };\n return options;\n }\n catch (err) {\n passiveSupported = false;\n return passiveSupported;\n }\n}\n\nvar isExcludedNode = function (node, excluded) {\n return excluded.some(function (exclude) {\n return node.matches(\"\".concat(exclude, \", .\").concat(exclude, \", \").concat(exclude, \" *, .\").concat(exclude, \" *\"));\n });\n};\nvar cancelTimeout = function (timeout) {\n if (timeout) {\n clearTimeout(timeout);\n }\n};\n\nvar getTransformStyles = function (x, y, scale) {\n // Standard translate prevents blurry svg on the safari\n return \"translate(\".concat(x, \"px, \").concat(y, \"px) scale(\").concat(scale, \")\");\n};\nvar getMatrixTransformStyles = function (x, y, scale) {\n // The shorthand for matrix does not work for Safari hence the need to explicitly use matrix3d\n // Refer to https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix\n var a = scale;\n var b = 0;\n var c = 0;\n var d = scale;\n var tx = x;\n var ty = y;\n return \"matrix3d(\".concat(a, \", \").concat(b, \", 0, 0, \").concat(c, \", \").concat(d, \", 0, 0, 0, 0, 1, 0, \").concat(tx, \", \").concat(ty, \", 0, 1)\");\n};\nvar getCenterPosition = function (scale, wrapperComponent, contentComponent) {\n var contentWidth = contentComponent.offsetWidth * scale;\n var contentHeight = contentComponent.offsetHeight * scale;\n var centerPositionX = (wrapperComponent.offsetWidth - contentWidth) / 2;\n var centerPositionY = (wrapperComponent.offsetHeight - contentHeight) / 2;\n return {\n scale: scale,\n positionX: centerPositionX,\n positionY: centerPositionY,\n };\n};\n\nfunction mergeRefs(refs) {\n return function (value) {\n refs.forEach(function (ref) {\n if (typeof ref === \"function\") {\n ref(value);\n }\n else if (ref != null) {\n ref.current = value;\n }\n });\n };\n}\n\nvar isWheelAllowed = function (contextInstance, event) {\n var _a = contextInstance.setup.wheel, disabled = _a.disabled, wheelDisabled = _a.wheelDisabled, touchPadDisabled = _a.touchPadDisabled, excluded = _a.excluded;\n var isInitialized = contextInstance.isInitialized, isPanning = contextInstance.isPanning;\n var target = event.target;\n var isAllowed = isInitialized && !isPanning && !disabled && target;\n if (!isAllowed)\n return false;\n // Event ctrlKey detects if touchpad action is executing wheel or pinch gesture\n if (wheelDisabled && !event.ctrlKey)\n return false;\n if (touchPadDisabled && event.ctrlKey)\n return false;\n var isExcluded = isExcludedNode(target, excluded);\n if (isExcluded)\n return false;\n return true;\n};\nvar getDeltaY = function (event) {\n if (event) {\n return event.deltaY < 0 ? 1 : -1;\n }\n return 0;\n};\nfunction getDelta(event, customDelta) {\n var deltaY = getDeltaY(event);\n var delta = checkIsNumber(customDelta, deltaY);\n return delta;\n}\nfunction getMousePosition(event, contentComponent, scale) {\n var contentRect = contentComponent.getBoundingClientRect();\n var mouseX = 0;\n var mouseY = 0;\n if (\"clientX\" in event) {\n // mouse position x, y over wrapper component\n mouseX = (event.clientX - contentRect.left) / scale;\n mouseY = (event.clientY - contentRect.top) / scale;\n }\n else {\n var touch = event.touches[0];\n mouseX = (touch.clientX - contentRect.left) / scale;\n mouseY = (touch.clientY - contentRect.top) / scale;\n }\n if (Number.isNaN(mouseX) || Number.isNaN(mouseY))\n console.error(\"No mouse or touch offset found\");\n return {\n x: mouseX,\n y: mouseY,\n };\n}\nvar handleCalculateWheelZoom = function (contextInstance, delta, step, disable, getTarget) {\n var scale = contextInstance.transformState.scale;\n var wrapperComponent = contextInstance.wrapperComponent, setup = contextInstance.setup;\n var maxScale = setup.maxScale, minScale = setup.minScale, zoomAnimation = setup.zoomAnimation, disablePadding = setup.disablePadding;\n var size = zoomAnimation.size, disabled = zoomAnimation.disabled;\n if (!wrapperComponent) {\n throw new Error(\"Wrapper is not mounted\");\n }\n var targetScale = scale + delta * step;\n if (getTarget)\n return targetScale;\n var paddingEnabled = disable ? false : !disabled;\n var newScale = checkZoomBounds(roundNumber(targetScale, 3), minScale, maxScale, size, paddingEnabled && !disablePadding);\n return newScale;\n};\nvar handleWheelZoomStop = function (contextInstance, event) {\n var previousWheelEvent = contextInstance.previousWheelEvent;\n var scale = contextInstance.transformState.scale;\n var _a = contextInstance.setup, maxScale = _a.maxScale, minScale = _a.minScale;\n if (!previousWheelEvent)\n return false;\n if (scale < maxScale || scale > minScale)\n return true;\n if (Math.sign(previousWheelEvent.deltaY) !== Math.sign(event.deltaY))\n return true;\n if (previousWheelEvent.deltaY > 0 && previousWheelEvent.deltaY < event.deltaY)\n return true;\n if (previousWheelEvent.deltaY < 0 && previousWheelEvent.deltaY > event.deltaY)\n return true;\n if (Math.sign(previousWheelEvent.deltaY) !== Math.sign(event.deltaY))\n return true;\n return false;\n};\n\nvar isPinchStartAllowed = function (contextInstance, event) {\n var _a = contextInstance.setup.pinch, disabled = _a.disabled, excluded = _a.excluded;\n var isInitialized = contextInstance.isInitialized;\n var target = event.target;\n var isAllowed = isInitialized && !disabled && target;\n if (!isAllowed)\n return false;\n var isExcluded = isExcludedNode(target, excluded);\n if (isExcluded)\n return false;\n return true;\n};\nvar isPinchAllowed = function (contextInstance) {\n var disabled = contextInstance.setup.pinch.disabled;\n var isInitialized = contextInstance.isInitialized, pinchStartDistance = contextInstance.pinchStartDistance;\n var isAllowed = isInitialized && !disabled && pinchStartDistance;\n if (!isAllowed)\n return false;\n return true;\n};\nvar calculateTouchMidPoint = function (event, scale, contentComponent) {\n var contentRect = contentComponent.getBoundingClientRect();\n var touches = event.touches;\n var firstPointX = roundNumber(touches[0].clientX - contentRect.left, 5);\n var firstPointY = roundNumber(touches[0].clientY - contentRect.top, 5);\n var secondPointX = roundNumber(touches[1].clientX - contentRect.left, 5);\n var secondPointY = roundNumber(touches[1].clientY - contentRect.top, 5);\n return {\n x: (firstPointX + secondPointX) / 2 / scale,\n y: (firstPointY + secondPointY) / 2 / scale,\n };\n};\nvar getTouchDistance = function (event) {\n return Math.sqrt(Math.pow((event.touches[0].pageX - event.touches[1].pageX), 2) +\n Math.pow((event.touches[0].pageY - event.touches[1].pageY), 2));\n};\nvar calculatePinchZoom = function (contextInstance, currentDistance) {\n var pinchStartScale = contextInstance.pinchStartScale, pinchStartDistance = contextInstance.pinchStartDistance, setup = contextInstance.setup;\n var maxScale = setup.maxScale, minScale = setup.minScale, zoomAnimation = setup.zoomAnimation, disablePadding = setup.disablePadding;\n var size = zoomAnimation.size, disabled = zoomAnimation.disabled;\n if (!pinchStartScale || pinchStartDistance === null || !currentDistance) {\n throw new Error(\"Pinch touches distance was not provided\");\n }\n if (currentDistance < 0) {\n return contextInstance.transformState.scale;\n }\n var touchProportion = currentDistance / pinchStartDistance;\n var scaleDifference = touchProportion * pinchStartScale;\n return checkZoomBounds(roundNumber(scaleDifference, 2), minScale, maxScale, size, !disabled && !disablePadding);\n};\n\nvar wheelStopEventTime = 160;\nvar wheelAnimationTime = 100;\nvar handleWheelStart = function (contextInstance, event) {\n var _a = contextInstance.props, onWheelStart = _a.onWheelStart, onZoomStart = _a.onZoomStart;\n if (!contextInstance.wheelStopEventTimer) {\n handleCancelAnimation(contextInstance);\n handleCallback(getContext(contextInstance), event, onWheelStart);\n handleCallback(getContext(contextInstance), event, onZoomStart);\n }\n};\nvar handleWheelZoom = function (contextInstance, event) {\n var _a = contextInstance.props, onWheel = _a.onWheel, onZoom = _a.onZoom;\n var contentComponent = contextInstance.contentComponent, setup = contextInstance.setup, transformState = contextInstance.transformState;\n var scale = transformState.scale;\n var limitToBounds = setup.limitToBounds, centerZoomedOut = setup.centerZoomedOut, zoomAnimation = setup.zoomAnimation, wheel = setup.wheel, disablePadding = setup.disablePadding, smooth = setup.smooth;\n var size = zoomAnimation.size, disabled = zoomAnimation.disabled;\n var step = wheel.step, smoothStep = wheel.smoothStep;\n if (!contentComponent) {\n throw new Error(\"Component not mounted\");\n }\n event.preventDefault();\n event.stopPropagation();\n var delta = getDelta(event, null);\n var zoomStep = smooth ? smoothStep * Math.abs(event.deltaY) : step;\n var newScale = handleCalculateWheelZoom(contextInstance, delta, zoomStep, !event.ctrlKey);\n // if scale not change\n if (scale === newScale)\n return;\n var bounds = handleCalculateBounds(contextInstance, newScale);\n var mousePosition = getMousePosition(event, contentComponent, scale);\n var isPaddingDisabled = disabled || size === 0 || centerZoomedOut || disablePadding;\n var isLimitedToBounds = limitToBounds && isPaddingDisabled;\n var _b = handleCalculateZoomPositions(contextInstance, mousePosition.x, mousePosition.y, newScale, bounds, isLimitedToBounds), x = _b.x, y = _b.y;\n contextInstance.previousWheelEvent = event;\n contextInstance.setTransformState(newScale, x, y);\n handleCallback(getContext(contextInstance), event, onWheel);\n handleCallback(getContext(contextInstance), event, onZoom);\n};\nvar handleWheelStop = function (contextInstance, event) {\n var _a = contextInstance.props, onWheelStop = _a.onWheelStop, onZoomStop = _a.onZoomStop;\n // fire animation\n cancelTimeout(contextInstance.wheelAnimationTimer);\n contextInstance.wheelAnimationTimer = setTimeout(function () {\n if (!contextInstance.mounted)\n return;\n handleAlignToScaleBounds(contextInstance, event.x, event.y);\n contextInstance.wheelAnimationTimer = null;\n }, wheelAnimationTime);\n // Wheel stop event\n var hasStoppedZooming = handleWheelZoomStop(contextInstance, event);\n if (hasStoppedZooming) {\n cancelTimeout(contextInstance.wheelStopEventTimer);\n contextInstance.wheelStopEventTimer = setTimeout(function () {\n if (!contextInstance.mounted)\n return;\n contextInstance.wheelStopEventTimer = null;\n handleCallback(getContext(contextInstance), event, onWheelStop);\n handleCallback(getContext(contextInstance), event, onZoomStop);\n }, wheelStopEventTime);\n }\n};\n\nvar handlePinchStart = function (contextInstance, event) {\n var distance = getTouchDistance(event);\n contextInstance.pinchStartDistance = distance;\n contextInstance.lastDistance = distance;\n contextInstance.pinchStartScale = contextInstance.transformState.scale;\n contextInstance.isPanning = false;\n handleCancelAnimation(contextInstance);\n};\nvar handlePinchZoom = function (contextInstance, event) {\n var contentComponent = contextInstance.contentComponent, pinchStartDistance = contextInstance.pinchStartDistance;\n var scale = contextInstance.transformState.scale;\n var _a = contextInstance.setup, limitToBounds = _a.limitToBounds, centerZoomedOut = _a.centerZoomedOut, zoomAnimation = _a.zoomAnimation;\n var disabled = zoomAnimation.disabled, size = zoomAnimation.size;\n // if one finger starts from outside of wrapper\n if (pinchStartDistance === null || !contentComponent)\n return;\n var midPoint = calculateTouchMidPoint(event, scale, contentComponent);\n // if touches goes off of the wrapper element\n if (!Number.isFinite(midPoint.x) || !Number.isFinite(midPoint.y))\n return;\n var currentDistance = getTouchDistance(event);\n var newScale = calculatePinchZoom(contextInstance, currentDistance);\n if (newScale === scale)\n return;\n var bounds = handleCalculateBounds(contextInstance, newScale);\n var isPaddingDisabled = disabled || size === 0 || centerZoomedOut;\n var isLimitedToBounds = limitToBounds && isPaddingDisabled;\n var _b = handleCalculateZoomPositions(contextInstance, midPoint.x, midPoint.y, newScale, bounds, isLimitedToBounds), x = _b.x, y = _b.y;\n contextInstance.pinchMidpoint = midPoint;\n contextInstance.lastDistance = currentDistance;\n contextInstance.setTransformState(newScale, x, y);\n};\nvar handlePinchStop = function (contextInstance) {\n var pinchMidpoint = contextInstance.pinchMidpoint;\n contextInstance.velocity = null;\n contextInstance.lastDistance = null;\n contextInstance.pinchMidpoint = null;\n contextInstance.pinchStartScale = null;\n contextInstance.pinchStartDistance = null;\n handleAlignToScaleBounds(contextInstance, pinchMidpoint === null || pinchMidpoint === void 0 ? void 0 : pinchMidpoint.x, pinchMidpoint === null || pinchMidpoint === void 0 ? void 0 : pinchMidpoint.y);\n};\n\nvar handleDoubleClickStop = function (contextInstance, event) {\n var onZoomStop = contextInstance.props.onZoomStop;\n var animationTime = contextInstance.setup.doubleClick.animationTime;\n cancelTimeout(contextInstance.doubleClickStopEventTimer);\n contextInstance.doubleClickStopEventTimer = setTimeout(function () {\n contextInstance.doubleClickStopEventTimer = null;\n handleCallback(getContext(contextInstance), event, onZoomStop);\n }, animationTime);\n};\nvar handleDoubleClickResetMode = function (contextInstance, event) {\n var _a = contextInstance.props, onZoomStart = _a.onZoomStart, onZoom = _a.onZoom;\n var _b = contextInstance.setup.doubleClick, animationTime = _b.animationTime, animationType = _b.animationType;\n handleCallback(getContext(contextInstance), event, onZoomStart);\n resetTransformations(contextInstance, animationTime, animationType, function () {\n return handleCallback(getContext(contextInstance), event, onZoom);\n });\n handleDoubleClickStop(contextInstance, event);\n};\nfunction getDoubleClickScale(mode, scale) {\n if (mode === \"toggle\") {\n return scale === 1 ? 1 : -1;\n }\n return mode === \"zoomOut\" ? -1 : 1;\n}\nfunction handleDoubleClick(contextInstance, event) {\n var setup = contextInstance.setup, doubleClickStopEventTimer = contextInstance.doubleClickStopEventTimer, transformState = contextInstance.transformState, contentComponent = contextInstance.contentComponent;\n var scale = transformState.scale;\n var _a = contextInstance.props, onZoomStart = _a.onZoomStart, onZoom = _a.onZoom;\n var _b = setup.doubleClick, disabled = _b.disabled, mode = _b.mode, step = _b.step, animationTime = _b.animationTime, animationType = _b.animationType;\n if (disabled)\n return;\n if (doubleClickStopEventTimer)\n return;\n if (mode === \"reset\") {\n return handleDoubleClickResetMode(contextInstance, event);\n }\n if (!contentComponent)\n return console.error(\"No ContentComponent found\");\n var delta = getDoubleClickScale(mode, contextInstance.transformState.scale);\n var newScale = handleCalculateButtonZoom(contextInstance, delta, step);\n // stop execution when scale didn't change\n if (scale === newScale)\n return;\n handleCallback(getContext(contextInstance), event, onZoomStart);\n var mousePosition = getMousePosition(event, contentComponent, scale);\n var targetState = handleZoomToPoint(contextInstance, newScale, mousePosition.x, mousePosition.y);\n if (!targetState) {\n return console.error(\"Error during zoom event. New transformation state was not calculated.\");\n }\n handleCallback(getContext(contextInstance), event, onZoom);\n animate(contextInstance, targetState, animationTime, animationType);\n handleDoubleClickStop(contextInstance, event);\n}\nvar isDoubleClickAllowed = function (contextInstance, event) {\n var isInitialized = contextInstance.isInitialized, setup = contextInstance.setup, wrapperComponent = contextInstance.wrapperComponent;\n var _a = setup.doubleClick, disabled = _a.disabled, excluded = _a.excluded;\n var target = event.target;\n var isWrapperChild = wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.contains(target);\n var isAllowed = isInitialized && target && isWrapperChild && !disabled;\n if (!isAllowed)\n return false;\n var isExcluded = isExcludedNode(target, excluded);\n if (isExcluded)\n return false;\n return true;\n};\n\nvar ZoomPanPinch = /** @class */ (function () {\n function ZoomPanPinch(props) {\n var _this = this;\n this.mounted = true;\n this.onChangeCallbacks = new Set();\n this.onInitCallbacks = new Set();\n // Components\n this.wrapperComponent = null;\n this.contentComponent = null;\n // Initialization\n this.isInitialized = false;\n this.bounds = null;\n // wheel helpers\n this.previousWheelEvent = null;\n this.wheelStopEventTimer = null;\n this.wheelAnimationTimer = null;\n // panning helpers\n this.isPanning = false;\n this.isWheelPanning = false;\n this.startCoords = null;\n this.lastTouch = null;\n // pinch helpers\n this.distance = null;\n this.lastDistance = null;\n this.pinchStartDistance = null;\n this.pinchStartScale = null;\n this.pinchMidpoint = null;\n // double click helpers\n this.doubleClickStopEventTimer = null;\n // velocity helpers\n this.velocity = null;\n this.velocityTime = null;\n this.lastMousePosition = null;\n // animations helpers\n this.animate = false;\n this.animation = null;\n this.maxBounds = null;\n // key press\n this.pressedKeys = {};\n this.mount = function () {\n _this.initializeWindowEvents();\n };\n this.unmount = function () {\n _this.cleanupWindowEvents();\n };\n this.update = function (newProps) {\n _this.props = newProps;\n handleCalculateBounds(_this, _this.transformState.scale);\n _this.setup = createSetup(newProps);\n };\n this.initializeWindowEvents = function () {\n var _a, _b;\n var passive = makePassiveEventOption();\n var currentDocument = (_a = _this.wrapperComponent) === null || _a === void 0 ? void 0 : _a.ownerDocument;\n var currentWindow = currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.defaultView;\n (_b = _this.wrapperComponent) === null || _b === void 0 ? void 0 : _b.addEventListener(\"wheel\", _this.onWheelPanning, passive);\n // Panning on window to allow panning when mouse is out of component wrapper\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"mousedown\", _this.onPanningStart, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"mousemove\", _this.onPanning, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"mouseup\", _this.onPanningStop, passive);\n currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.addEventListener(\"mouseleave\", _this.clearPanning, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"keyup\", _this.setKeyUnPressed, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"keydown\", _this.setKeyPressed, passive);\n };\n this.cleanupWindowEvents = function () {\n var _a, _b;\n var passive = makePassiveEventOption();\n var currentDocument = (_a = _this.wrapperComponent) === null || _a === void 0 ? void 0 : _a.ownerDocument;\n var currentWindow = currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.defaultView;\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"mousedown\", _this.onPanningStart, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"mousemove\", _this.onPanning, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"mouseup\", _this.onPanningStop, passive);\n currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.removeEventListener(\"mouseleave\", _this.clearPanning, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"keyup\", _this.setKeyUnPressed, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"keydown\", _this.setKeyPressed, passive);\n document.removeEventListener(\"mouseleave\", _this.clearPanning, passive);\n handleCancelAnimation(_this);\n (_b = _this.observer) === null || _b === void 0 ? void 0 : _b.disconnect();\n };\n this.handleInitializeWrapperEvents = function (wrapper) {\n // Zooming events on wrapper\n var passive = makePassiveEventOption();\n wrapper.addEventListener(\"wheel\", _this.onWheelZoom, passive);\n wrapper.addEventListener(\"dblclick\", _this.onDoubleClick, passive);\n wrapper.addEventListener(\"touchstart\", _this.onTouchPanningStart, passive);\n wrapper.addEventListener(\"touchmove\", _this.onTouchPanning, passive);\n wrapper.addEventListener(\"touchend\", _this.onTouchPanningStop, passive);\n };\n this.handleInitialize = function (contentComponent) {\n var centerOnInit = _this.setup.centerOnInit;\n _this.applyTransformation();\n _this.onInitCallbacks.forEach(function (callback) { return callback(getContext(_this)); });\n if (centerOnInit) {\n _this.setCenter();\n _this.observer = new ResizeObserver(function () {\n var _a;\n var currentWidth = contentComponent.offsetWidth;\n var currentHeight = contentComponent.offsetHeight;\n if (currentWidth > 0 || currentHeight > 0) {\n _this.onInitCallbacks.forEach(function (callback) { return callback(getContext(_this)); });\n _this.setCenter();\n (_a = _this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();\n }\n });\n // if nothing about the contentComponent has changed after 5 seconds, disconnect the observer\n setTimeout(function () {\n var _a;\n (_a = _this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();\n }, 5000);\n // Start observing the target node for configured mutations\n _this.observer.observe(contentComponent);\n }\n };\n /// ///////\n // Zoom\n /// ///////\n this.onWheelZoom = function (event) {\n var disabled = _this.setup.disabled;\n if (disabled)\n return;\n var isAllowed = isWheelAllowed(_this, event);\n if (!isAllowed)\n return;\n var keysPressed = _this.isPressingKeys(_this.setup.wheel.activationKeys);\n if (!keysPressed)\n return;\n handleWheelStart(_this, event);\n handleWheelZoom(_this, event);\n handleWheelStop(_this, event);\n };\n /// ///////\n // Pan\n /// ///////\n this.onWheelPanning = function (event) {\n var _a = _this.setup, disabled = _a.disabled, wheel = _a.wheel, panning = _a.panning;\n if (!_this.wrapperComponent ||\n !_this.contentComponent ||\n disabled ||\n !wheel.wheelDisabled ||\n panning.disabled ||\n !panning.wheelPanning ||\n event.ctrlKey) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n var _b = _this.transformState, positionX = _b.positionX, positionY = _b.positionY;\n var mouseX = positionX - event.deltaX;\n var mouseY = positionY - event.deltaY;\n var newPositionX = panning.lockAxisX ? positionX : mouseX;\n var newPositionY = panning.lockAxisY ? positionY : mouseY;\n var _c = _this.setup.alignmentAnimation, sizeX = _c.sizeX, sizeY = _c.sizeY;\n var paddingValueX = getPaddingValue(_this, sizeX);\n var paddingValueY = getPaddingValue(_this, sizeY);\n if (newPositionX === positionX && newPositionY === positionY)\n return;\n handleNewPosition(_this, newPositionX, newPositionY, paddingValueX, paddingValueY);\n };\n this.onPanningStart = function (event) {\n var disabled = _this.setup.disabled;\n var onPanningStart = _this.props.onPanningStart;\n if (disabled)\n return;\n var isAllowed = isPanningStartAllowed(_this, event);\n if (!isAllowed)\n return;\n var keysPressed = _this.isPressingKeys(_this.setup.panning.activationKeys);\n if (!keysPressed)\n return;\n if (event.button === 0 && !_this.setup.panning.allowLeftClickPan)\n return;\n if (event.button === 1 && !_this.setup.panning.allowMiddleClickPan)\n return;\n if (event.button === 2 && !_this.setup.panning.allowRightClickPan)\n return;\n event.preventDefault();\n event.stopPropagation();\n handleCancelAnimation(_this);\n handlePanningStart(_this, event);\n handleCallback(getContext(_this), event, onPanningStart);\n };\n this.onPanning = function (event) {\n var disabled = _this.setup.disabled;\n var onPanning = _this.props.onPanning;\n if (disabled)\n return;\n var isAllowed = isPanningAllowed(_this);\n if (!isAllowed)\n return;\n var keysPressed = _this.isPressingKeys(_this.setup.panning.activationKeys);\n if (!keysPressed)\n return;\n event.preventDefault();\n event.stopPropagation();\n handlePanning(_this, event.clientX, event.clientY);\n handleCallback(getContext(_this), event, onPanning);\n };\n this.onPanningStop = function (event) {\n var onPanningStop = _this.props.onPanningStop;\n if (_this.isPanning) {\n handlePanningEnd(_this);\n handleCallback(getContext(_this), event, onPanningStop);\n }\n };\n /// ///////\n // Pinch\n /// ///////\n this.onPinchStart = function (event) {\n var disabled = _this.setup.disabled;\n var _a = _this.props, onPinchingStart = _a.onPinchingStart, onZoomStart = _a.onZoomStart;\n if (disabled)\n return;\n var isAllowed = isPinchStartAllowed(_this, event);\n if (!isAllowed)\n return;\n handlePinchStart(_this, event);\n handleCancelAnimation(_this);\n handleCallback(getContext(_this), event, onPinchingStart);\n handleCallback(getContext(_this), event, onZoomStart);\n };\n this.onPinch = function (event) {\n var disabled = _this.setup.disabled;\n var _a = _this.props, onPinching = _a.onPinching, onZoom = _a.onZoom;\n if (disabled)\n return;\n var isAllowed = isPinchAllowed(_this);\n if (!isAllowed)\n return;\n event.preventDefault();\n event.stopPropagation();\n handlePinchZoom(_this, event);\n handleCallback(getContext(_this), event, onPinching);\n handleCallback(getContext(_this), event, onZoom);\n };\n this.onPinchStop = function (event) {\n var _a = _this.props, onPinchingStop = _a.onPinchingStop, onZoomStop = _a.onZoomStop;\n if (_this.pinchStartScale) {\n handlePinchStop(_this);\n handleCallback(getContext(_this), event, onPinchingStop);\n handleCallback(getContext(_this), event, onZoomStop);\n }\n };\n /// ///////\n // Touch\n /// ///////\n this.onTouchPanningStart = function (event) {\n var disabled = _this.setup.disabled;\n var onPanningStart = _this.props.onPanningStart;\n if (disabled)\n return;\n var isAllowed = isPanningStartAllowed(_this, event);\n if (!isAllowed)\n return;\n var isDoubleTap = _this.lastTouch && +new Date() - _this.lastTouch < 200;\n if (isDoubleTap && event.touches.length === 1) {\n _this.onDoubleClick(event);\n }\n else {\n _this.lastTouch = +new Date();\n handleCancelAnimation(_this);\n var touches = event.touches;\n var isPanningAction = touches.length === 1;\n var isPinchAction = touches.length === 2;\n if (isPanningAction) {\n handleCancelAnimation(_this);\n handlePanningStart(_this, event);\n handleCallback(getContext(_this), event, onPanningStart);\n }\n if (isPinchAction) {\n _this.onPinchStart(event);\n }\n }\n };\n this.onTouchPanning = function (event) {\n var disabled = _this.setup.disabled;\n var onPanning = _this.props.onPanning;\n if (_this.isPanning && event.touches.length === 1) {\n if (disabled)\n return;\n var isAllowed = isPanningAllowed(_this);\n if (!isAllowed)\n return;\n event.preventDefault();\n event.stopPropagation();\n var touch = event.touches[0];\n handlePanning(_this, touch.clientX, touch.clientY);\n handleCallback(getContext(_this), event, onPanning);\n }\n else if (event.touches.length > 1) {\n _this.onPinch(event);\n }\n };\n this.onTouchPanningStop = function (event) {\n _this.onPanningStop(event);\n _this.onPinchStop(event);\n };\n /// ///////\n // Double Click\n /// ///////\n this.onDoubleClick = function (event) {\n var disabled = _this.setup.disabled;\n if (disabled)\n return;\n var isAllowed = isDoubleClickAllowed(_this, event);\n if (!isAllowed)\n return;\n handleDoubleClick(_this, event);\n };\n /// ///////\n // Helpers\n /// ///////\n this.clearPanning = function (event) {\n if (_this.isPanning) {\n _this.onPanningStop(event);\n }\n };\n this.setKeyPressed = function (e) {\n _this.pressedKeys[e.key] = true;\n };\n this.setKeyUnPressed = function (e) {\n _this.pressedKeys[e.key] = false;\n };\n this.isPressingKeys = function (keys) {\n if (!keys.length) {\n return true;\n }\n return Boolean(keys.find(function (key) { return _this.pressedKeys[key]; }));\n };\n this.setTransformState = function (scale, positionX, positionY) {\n var onTransformed = _this.props.onTransformed;\n if (!Number.isNaN(scale) &&\n !Number.isNaN(positionX) &&\n !Number.isNaN(positionY)) {\n if (scale !== _this.transformState.scale) {\n _this.transformState.previousScale = _this.transformState.scale;\n _this.transformState.scale = scale;\n }\n _this.transformState.positionX = positionX;\n _this.transformState.positionY = positionY;\n _this.applyTransformation();\n var ctx_1 = getContext(_this);\n _this.onChangeCallbacks.forEach(function (callback) { return callback(ctx_1); });\n handleCallback(ctx_1, { scale: scale, positionX: positionX, positionY: positionY }, onTransformed);\n }\n else {\n console.error(\"Detected NaN set state values\");\n }\n };\n this.setCenter = function () {\n if (_this.wrapperComponent && _this.contentComponent) {\n var targetState = getCenterPosition(_this.transformState.scale, _this.wrapperComponent, _this.contentComponent);\n _this.setTransformState(targetState.scale, targetState.positionX, targetState.positionY);\n }\n };\n this.handleTransformStyles = function (x, y, scale) {\n if (_this.props.customTransform) {\n return _this.props.customTransform(x, y, scale);\n }\n return getTransformStyles(x, y, scale);\n };\n this.applyTransformation = function () {\n if (!_this.mounted || !_this.contentComponent)\n return;\n var _a = _this.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n var transform = _this.handleTransformStyles(positionX, positionY, scale);\n _this.contentComponent.style.transform = transform;\n };\n this.getContext = function () {\n return getContext(_this);\n };\n /**\n * Hooks\n */\n this.onChange = function (callback) {\n if (!_this.onChangeCallbacks.has(callback)) {\n _this.onChangeCallbacks.add(callback);\n }\n return function () {\n _this.onChangeCallbacks.delete(callback);\n };\n };\n this.onInit = function (callback) {\n if (!_this.onInitCallbacks.has(callback)) {\n _this.onInitCallbacks.add(callback);\n }\n return function () {\n _this.onInitCallbacks.delete(callback);\n };\n };\n /**\n * Initialization\n */\n this.init = function (wrapperComponent, contentComponent) {\n _this.cleanupWindowEvents();\n _this.wrapperComponent = wrapperComponent;\n _this.contentComponent = contentComponent;\n handleCalculateBounds(_this, _this.transformState.scale);\n _this.handleInitializeWrapperEvents(wrapperComponent);\n _this.handleInitialize(contentComponent);\n _this.initializeWindowEvents();\n _this.isInitialized = true;\n var ctx = getContext(_this);\n handleCallback(ctx, undefined, _this.props.onInit);\n };\n this.props = props;\n this.setup = createSetup(this.props);\n this.transformState = createState(this.props);\n }\n return ZoomPanPinch;\n}());\n\nvar Context = React.createContext(null);\nvar getContent = function (children, ctx) {\n if (typeof children === \"function\") {\n return children(ctx);\n }\n return children;\n};\nvar TransformWrapper = React.forwardRef(function (props, ref) {\n var instance = useRef(new ZoomPanPinch(props)).current;\n var content = getContent(props.children, getControls(instance));\n useImperativeHandle(ref, function () { return getControls(instance); }, [instance]);\n useEffect(function () {\n instance.update(props);\n }, [instance, props]);\n return React.createElement(Context.Provider, { value: instance }, content);\n});\n\nvar KeepScale = React.forwardRef(function (props, ref) {\n var localRef = useRef(null);\n var instance = useContext(Context);\n useEffect(function () {\n return instance.onChange(function (ctx) {\n if (localRef.current) {\n var positionX = 0;\n var positionY = 0;\n localRef.current.style.transform = instance.handleTransformStyles(positionX, positionY, 1 / ctx.instance.transformState.scale);\n }\n });\n }, [instance]);\n return React.createElement(\"div\", __assign({}, props, { ref: mergeRefs([localRef, ref]) }));\n});\n\nvar initialElementRect = {\n width: 0,\n height: 0,\n y: 0,\n x: 0,\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n};\nvar useResize = function (ref, onResize, dependencies) {\n var resizeObserverRef = useRef();\n var rectRef = useRef(initialElementRect);\n var didUnmount = useRef(false);\n useLayoutEffect(function () {\n var _a;\n didUnmount.current = false;\n if (!(\"ResizeObserver\" in window)) {\n return;\n }\n if (ref) {\n resizeObserverRef.current = new ResizeObserver(function (entries) {\n var newSize = ref.getBoundingClientRect();\n if (!Array.isArray(entries) ||\n !entries.length ||\n didUnmount.current ||\n (newSize.width === rectRef.current.width &&\n newSize.height === rectRef.current.height))\n return;\n onResize(newSize, ref);\n rectRef.current = newSize;\n });\n (_a = resizeObserverRef.current) === null || _a === void 0 ? void 0 : _a.observe(ref);\n }\n return function () {\n var _a;\n didUnmount.current = true;\n if (ref) {\n (_a = resizeObserverRef.current) === null || _a === void 0 ? void 0 : _a.unobserve(ref);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, __spreadArray([onResize, ref], dependencies, true));\n};\n\nvar previewStyles = {\n position: \"absolute\",\n zIndex: 2,\n top: \"0px\",\n left: \"0px\",\n boxSizing: \"border-box\",\n border: \"3px solid red\",\n transformOrigin: \"0% 0%\",\n boxShadow: \"rgba(0,0,0,0.2) 0 0 0 10000000px\",\n};\nvar MiniMap = function (_a) {\n var _b = _a.width, width = _b === void 0 ? 200 : _b, _c = _a.height, height = _c === void 0 ? 200 : _c, _d = _a.borderColor, borderColor = _d === void 0 ? \"red\" : _d, children = _a.children, rest = __rest(_a, [\"width\", \"height\", \"borderColor\", \"children\"]);\n var _e = useState(false), initialized = _e[0], setInitialized = _e[1];\n var instance = useTransformContext();\n var miniMapInstance = useRef(null);\n var mainRef = useRef(null);\n var wrapperRef = useRef(null);\n var previewRef = useRef(null);\n var getContentSize = useCallback(function () {\n if (instance.contentComponent) {\n var rect = instance.contentComponent.getBoundingClientRect();\n return {\n width: rect.width / instance.transformState.scale,\n height: rect.height / instance.transformState.scale,\n };\n }\n return {\n width: 0,\n height: 0,\n };\n }, [instance.contentComponent, instance.transformState.scale]);\n var computeMiniMapScale = useCallback(function () {\n var contentSize = getContentSize();\n var scaleX = width / contentSize.width;\n var scaleY = height / contentSize.height;\n var scale = scaleY > scaleX ? scaleX : scaleY;\n return scale;\n }, [getContentSize, height, width]);\n var computeMiniMapSize = function () {\n var contentSize = getContentSize();\n var scaleX = width / contentSize.width;\n var scaleY = height / contentSize.height;\n if (scaleY > scaleX) {\n return { width: width, height: contentSize.height * scaleX };\n }\n return { width: contentSize.width * scaleY, height: height };\n };\n var computeMiniMapStyle = function () {\n var scale = computeMiniMapScale();\n var style = {\n transform: \"scale(\".concat(scale || 1, \")\"),\n transformOrigin: \"0% 0%\",\n position: \"absolute\",\n boxSizing: \"border-box\",\n zIndex: 1,\n overflow: \"hidden\",\n };\n Object.keys(style).forEach(function (key) {\n if (wrapperRef.current) {\n wrapperRef.current.style[key] = style[key];\n }\n });\n };\n var transformMiniMap = function () {\n computeMiniMapStyle();\n var miniSize = computeMiniMapSize();\n var wrapSize = getContentSize();\n if (wrapperRef.current) {\n wrapperRef.current.style.width = \"\".concat(wrapSize.width, \"px\");\n wrapperRef.current.style.height = \"\".concat(wrapSize.height, \"px\");\n }\n if (mainRef.current) {\n mainRef.current.style.width = \"\".concat(miniSize.width, \"px\");\n mainRef.current.style.height = \"\".concat(miniSize.height, \"px\");\n }\n if (previewRef.current) {\n var size = getContentSize();\n var scale = computeMiniMapScale();\n var previewScale = scale * (1 / instance.transformState.scale);\n var transform = instance.handleTransformStyles(-instance.transformState.positionX * previewScale, -instance.transformState.positionY * previewScale, 1);\n previewRef.current.style.transform = transform;\n previewRef.current.style.width = \"\".concat(size.width * previewScale, \"px\");\n previewRef.current.style.height = \"\".concat(size.height * previewScale, \"px\");\n }\n };\n var initialize = function () {\n transformMiniMap();\n };\n useTransformEffect(function () {\n transformMiniMap();\n });\n useTransformInit(function () {\n initialize();\n setInitialized(true);\n });\n useResize(instance.contentComponent, initialize, [initialized]);\n useEffect(function () {\n return instance.onChange(function (zpp) {\n var scale = computeMiniMapScale();\n if (miniMapInstance.current) {\n miniMapInstance.current.instance.transformState.scale =\n zpp.instance.transformState.scale;\n miniMapInstance.current.instance.transformState.positionX =\n zpp.instance.transformState.positionX * scale;\n miniMapInstance.current.instance.transformState.positionY =\n zpp.instance.transformState.positionY * scale;\n }\n });\n }, [computeMiniMapScale, instance, miniMapInstance]);\n var wrapperStyle = useMemo(function () {\n return {\n position: \"relative\",\n zIndex: 2,\n overflow: \"hidden\",\n };\n }, []);\n return (React.createElement(\"div\", __assign({}, rest, { ref: mainRef, style: wrapperStyle, className: \"rzpp-mini-map \".concat(rest.className || \"\") }),\n React.createElement(\"div\", __assign({}, rest, { ref: wrapperRef, className: \"rzpp-wrapper\" }), children),\n React.createElement(\"div\", { className: \"rzpp-preview\", ref: previewRef, style: __assign(__assign({}, previewStyles), { borderColor: borderColor }) })));\n};\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \".transform-component-module_wrapper__SPB86 {\\n position: relative;\\n width: -moz-fit-content;\\n width: fit-content;\\n height: -moz-fit-content;\\n height: fit-content;\\n overflow: hidden;\\n -webkit-touch-callout: none; /* iOS Safari */\\n -webkit-user-select: none; /* Safari */\\n -khtml-user-select: none; /* Konqueror HTML */\\n -moz-user-select: none; /* Firefox */\\n -ms-user-select: none; /* Internet Explorer/Edge */\\n user-select: none;\\n margin: 0;\\n padding: 0;\\n}\\n.transform-component-module_content__FBWxo {\\n display: flex;\\n flex-wrap: wrap;\\n width: -moz-fit-content;\\n width: fit-content;\\n height: -moz-fit-content;\\n height: fit-content;\\n margin: 0;\\n padding: 0;\\n transform-origin: 0% 0%;\\n}\\n.transform-component-module_content__FBWxo img {\\n pointer-events: none;\\n}\\n\";\nvar styles = {\"wrapper\":\"transform-component-module_wrapper__SPB86\",\"content\":\"transform-component-module_content__FBWxo\"};\nstyleInject(css_248z);\n\nvar TransformComponent = function (_a) {\n var children = _a.children, _b = _a.wrapperClass, wrapperClass = _b === void 0 ? \"\" : _b, _c = _a.contentClass, contentClass = _c === void 0 ? \"\" : _c, wrapperStyle = _a.wrapperStyle, contentStyle = _a.contentStyle, _d = _a.wrapperProps, wrapperProps = _d === void 0 ? {} : _d, _e = _a.contentProps, contentProps = _e === void 0 ? {} : _e;\n var _f = useContext(Context), init = _f.init, cleanupWindowEvents = _f.cleanupWindowEvents;\n var wrapperRef = useRef(null);\n var contentRef = useRef(null);\n useEffect(function () {\n var wrapper = wrapperRef.current;\n var content = contentRef.current;\n if (wrapper !== null && content !== null && init) {\n init === null || init === void 0 ? void 0 : init(wrapper, content);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return function () {\n cleanupWindowEvents === null || cleanupWindowEvents === void 0 ? void 0 : cleanupWindowEvents();\n };\n }, []);\n return (React.createElement(\"div\", __assign({}, wrapperProps, { ref: wrapperRef, className: \"react-transform-wrapper \".concat(styles.wrapper, \" \").concat(wrapperClass), style: wrapperStyle }),\n React.createElement(\"div\", __assign({}, contentProps, { ref: contentRef, className: \"react-transform-component \".concat(styles.content, \" \").concat(contentClass), style: contentStyle }), children)));\n};\n\nvar useTransformContext = function () {\n var libraryContext = useContext(Context);\n if (!libraryContext) {\n throw new Error(\"Transform context must be placed inside TransformWrapper\");\n }\n return libraryContext;\n};\n\nvar useControls = function () {\n var libraryContext = useTransformContext();\n return getControls(libraryContext);\n};\n\nvar useTransformInit = function (callback) {\n var libraryContext = useTransformContext();\n useEffect(function () {\n var unmountCallback;\n var unmount;\n if (libraryContext.contentComponent && libraryContext.wrapperComponent) {\n unmountCallback = callback(getState(libraryContext));\n }\n else {\n unmount = libraryContext.onInit(function (ref) {\n unmountCallback = callback(getState(ref.instance));\n });\n }\n return function () {\n unmount === null || unmount === void 0 ? void 0 : unmount();\n unmountCallback === null || unmountCallback === void 0 ? void 0 : unmountCallback();\n };\n }, []);\n};\n\nvar useTransformEffect = function (callback) {\n var libraryContext = useTransformContext();\n useEffect(function () {\n var unmountCallback;\n var unmount = libraryContext.onChange(function (ref) {\n unmountCallback = callback(getState(ref.instance));\n });\n return function () {\n unmount();\n unmountCallback === null || unmountCallback === void 0 ? void 0 : unmountCallback();\n };\n }, [callback, libraryContext]);\n};\n\nexport { Context, KeepScale, MiniMap, TransformComponent, TransformWrapper, getCenterPosition, getMatrixTransformStyles, getTransformStyles, useControls, useTransformContext, useTransformEffect, useTransformInit };\n//# sourceMappingURL=index.esm.js.map\n","import { IGeneralData } from './generalData';\r\nimport * as helper from './scs-html-helper';\r\n\r\nexport class ImageController {\r\n private static _instance: ImageController;\r\n\r\n // This const affects rotation sensitivity dragging with mouse, higher value make's it less sensitive.\r\n private readonly pixelsPerDegree = 3;\r\n\r\n static get instance() {\r\n return this._instance || (this._instance = new this());\r\n }\r\n\r\n public getRotatedImageIndex(currentPositionX: number, animationSequenceLength: number,\r\n dragStartScreenX: number, dragStartImageIndex: number): number {\r\n let result = 0;\r\n \r\n const numImages = animationSequenceLength;\r\n const pixelsPerImage = this.pixelsPerDegree * (50 / numImages);\r\n\r\n // Pixels moved:\r\n const dx: number = (currentPositionX - dragStartScreenX) / pixelsPerImage;\r\n let index = Math.floor(dx) % numImages;\r\n\r\n // Setting rotation direction: +- x\r\n index = numImages - index;\r\n\r\n // Calculate real index in the boundaries of 3d images length:\r\n result = (index + dragStartImageIndex) % numImages;\r\n\r\n return result;\r\n }\r\n\r\n public getImageHeight(generalData: IGeneralData): number {\r\n let newImageHeight;\r\n let currentWindowWidth = helper.isMobileShop() ? window.outerWidth : window.innerWidth;\r\n \r\n // for zoom in browser feature\r\n if(window.devicePixelRatio > 1 && !helper.isMobileShop() && !helper.isTabletView())\r\n currentWindowWidth = currentWindowWidth / window.devicePixelRatio;\r\n\r\n if (currentWindowWidth < generalData.breakPointMobile) {\r\n newImageHeight = generalData.imageHeightMobile;\r\n }\r\n else if (currentWindowWidth < generalData.breakPointTablet) {\r\n newImageHeight = generalData.imageHeightTablet;\r\n }\r\n else if (currentWindowWidth < generalData.breakPointDesktopMin) {\r\n newImageHeight = generalData.imageHeightDesktopMin;\r\n }\r\n else {\r\n // greater then 1200\r\n newImageHeight = generalData.imageHeightDesktopMax;\r\n }\r\n\r\n return newImageHeight;\r\n }\r\n}\r\n","import React, { ReactNode } from 'react';\r\nimport { IThreeSixtyAnimationProps, IThreeSixtyAnimationState } from './threeSixtyAnimation.d';\r\nimport IconZoomOut from '../../Assets/svg/icon_zoom_out';\r\nimport IconZoomIn from '../../Assets/svg/icon_zoom_in';\r\nimport * as helper from '../common/scs-html-helper';\r\nimport './threeSixtyAnimation.scss';\r\nimport { SCSScrollLock } from '../common/scs-scrollLock';\r\nimport LoadingSpinner from '../common/loadingSpinner/loadingSpinner';\r\nimport IconPlayStop from '../../Assets/svg/icon_play_stop';\r\nimport { TransformWrapper, TransformComponent, ReactZoomPanPinchRef } from 'react-zoom-pan-pinch';\r\n\r\nimport {ImageController} from '../common/imageController';\r\n\r\nconst minZoomLevel = 0;\r\nconst maxZoomLevel = 2;\r\n\r\nexport default class ThreeSixtyAnimation extends React.Component {\r\n \r\n private animationTimer: ReturnType;\r\n private windowResizeTimer: ReturnType;\r\n private animationRef = React.createRef();\r\n private threeDImagesRef = React.createRef();\r\n private zoomBtn = React.createRef();\r\n private threeDOverlay: HTMLElement;\r\n private imageLoadedProgress: number;\r\n private scrollLock: SCSScrollLock;\r\n private reactZoomPanPinchRef: ReactZoomPanPinchRef;\r\n private offset = 0;\r\n\r\n private imageController: ImageController;\r\n\r\n // image move feature:\r\n private gMouseDownX = 0;\r\n private gMouseDownY = 0;\r\n private gMouseDownOffsetX = 0;\r\n private gMouseDownOffsetY = 0;\r\n private activeImageContainer: HTMLElement;\r\n //--\r\n \r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n dragging: false,\r\n imageIndex: 1,\r\n animationSequenceIndex: 1, // mostly used in pf component slider\r\n dragStartImageIndex: 0,\r\n playAnimation: true,\r\n dragStartScreenX: 0,\r\n animationIsLoaded: false,\r\n currentImageHeight: 0,\r\n zoomInLevel: minZoomLevel,\r\n imageMovementIsEnabled: false,\r\n loadContentAfterPageLoad: this.props.loadContentAfterPageLoad,\r\n zoomedImageIndex: null,\r\n zoomedImageHeight: null,\r\n loadAnimation: false, // prevents image load during component render time\r\n displayThreeSixtyOverlay: false, // needed for kiosk pc\r\n imageHeight: null\r\n };\r\n\r\n this.imageLoadedProgress = 0;\r\n this.imageController = ImageController.instance;\r\n\r\n // Init events:\r\n this.handleRotationByHand = this.handleRotationByHand.bind(this);\r\n this.handleRotationByTouch = this.handleRotationByTouch.bind(this);\r\n this.handleTouchend = this.handleTouchend.bind(this);\r\n this.handleMouseDown = this.handleMouseDown.bind(this);\r\n this.handleTouchDown = this.handleTouchDown.bind(this);\r\n this.preventDragHandler = this.preventDragHandler.bind(this);\r\n this.handleStartStopClick = this.handleStartStopClick.bind(this); \r\n this.restartAnimation = this.restartAnimation.bind(this);\r\n this.handleWindowResize = this.handleWindowResize.bind(this);\r\n this.handleZoomInClick = this.handleZoomInClick.bind(this);\r\n this.handleZoomOutClick = this.handleZoomOutClick.bind(this);\r\n this.openThreeSixtyOverlay = this.openThreeSixtyOverlay.bind(this);\r\n \r\n this.onPinchingStart = this.onPinchingStart.bind(this);\r\n this.onPinchingStop = this.onPinchingStop.bind(this);\r\n this.handleOnInit = this.handleOnInit.bind(this);\r\n this.onEnterViewport = this.onEnterViewport.bind(this);\r\n\r\n // image zoom feature:\r\n if(this.props.showOverlayAnimation) {\r\n this.updateZoomedImagePosition = this.updateZoomedImagePosition.bind(this);\r\n this.updateZoomedImagePositionTouch = this.updateZoomedImagePositionTouch.bind(this);\r\n }\r\n //--\r\n }\r\n\r\n componentDidMount() {\r\n if(this.animationRef && this.animationRef.current)\r\n this.animationRef.current.setAttribute('group', '');\r\n\r\n if(this.zoomBtn && this.zoomBtn.current) {\r\n this.zoomBtn.current.setAttribute('group', '');\r\n\r\n if (this.zoomBtn.current.children) {\r\n let index = 1;\r\n Array.from(this.zoomBtn.current.children).forEach((el: Element) => {\r\n el.setAttribute('focusable', '');\r\n el.setAttribute('order', (index++).toString());\r\n });\r\n }\r\n }\r\n\r\n document.addEventListener('mousemove', this.handleRotationByHand, false);\r\n document.addEventListener('mouseup', this.handleTouchend, false);\r\n window.addEventListener('resize', this.handleWindowResize, false);\r\n this.threeDOverlay = document.getElementById(this.props.containerId);\r\n\r\n if (this.props.showOverlayAnimation && this.threeDOverlay) {\r\n window.shell.subscribeTo('SCS.Open.Gallery3DView',\r\n (displayG3dOverlay: boolean) => {\r\n if (displayG3dOverlay)\r\n this.openThreeSixtyOverlay();\r\n },\r\n 'SCS.Gallery3DView');\r\n } else {\r\n document.addEventListener('scroll', this.onEnterViewport, true);\r\n }\r\n\r\n if(window.shell) {\r\n window.shell.subscribeTo('SCS.Show.ThreeSixtyView',\r\n (payload) => {\r\n this.handleShowThreeSixtyViewEvent(payload.containerId, payload.showThreeDView);\r\n },\r\n this.props.containerId + '.ShowThreeDView');\r\n\r\n window.shell.subscribeTo('SCS.PlayPauseAnimation',\r\n (payload) => {\r\n if (this.props.containerId === payload.containerId) {\r\n this.playStopAnimation(payload.play3d);\r\n }\r\n },\r\n this.props.containerId + '.ShowThreeDView');\r\n } \r\n }\r\n\r\n componentWillUnmount() {\r\n // No longer need to keep endless loop if component is unmounted:\r\n // clear previous timeout:\r\n clearTimeout(this.animationTimer);\r\n this.setState({ playAnimation: false });\r\n\r\n document.removeEventListener('mousemove', this.handleRotationByHand, false);\r\n document.removeEventListener('mouseup', this.handleTouchend, false);\r\n window.removeEventListener('resize', this.handleWindowResize);\r\n\r\n if (this.props.showOverlayAnimation && this.threeDOverlay)\r\n window.shell.unsubscribeFrom('SCS.Open.Gallery3DView', 'SCS.Gallery3DView');\r\n\r\n window.shell.unsubscribeFrom('SCS.Show.ThreeSixtyView', \r\n this.props.containerId + '.ShowThreeDView');\r\n window.shell.unsubscribeFrom('SCS.PlayPauseAnimation', \r\n this.props.containerId + '.ShowThreeDView');\r\n }\r\n\r\n public handleShowThreeSixtyViewEvent(containerId: string, showThreeDView: boolean): void {\r\n if (this.props.containerId === containerId) {\r\n this.setState({\r\n loadContentAfterPageLoad: showThreeDView,\r\n loadAnimation: true\r\n });\r\n }\r\n }\r\n\r\n private setImageSize(): void {\r\n const newImageHeight: number = this.imageController.getImageHeight(\r\n this.props.generalData);\r\n this.setState({imageHeight: newImageHeight});\r\n }\r\n\r\n public initAnimation(): void {\r\n this.setImageSize();\r\n\r\n // handling regular 3d animation:\r\n if (this.state.loadContentAfterPageLoad && !helper.isMobileShop()) {\r\n this.setState({loadAnimation: true});\r\n } else if (this.state.loadContentAfterPageLoad && this.props.loadContentAfterPageLoadMobile \r\n && helper.isMobileShop()) {\r\n // only for specific cases when we need to show 3d on mobile at once: \r\n // (additional description in PDP)\r\n this.setState({loadAnimation: true});\r\n }\r\n\r\n this.onEnterViewport();\r\n }\r\n\r\n public handleWindowResize(): void {\r\n // clear previous timeout:\r\n clearTimeout(this.windowResizeTimer);\r\n\r\n this.windowResizeTimer = setTimeout(() => {\r\n this.setImageSize();\r\n }, 500);\r\n\r\n\r\n if(this.props.showOverlayAnimation \r\n && this.threeDOverlay && this.state.loadContentAfterPageLoad ) {\r\n if (!helper.isMobileShop() && !helper.isTabletView())\r\n // handling gallery overlay:\r\n this.openThreeSixtyOverlay();\r\n }\r\n else {\r\n // resize simple 360 animation in details page view (not mobile or tablet)\r\n this.initAnimation();\r\n }\r\n }\r\n\r\n public openThreeSixtyOverlay(): void {\r\n if(!this.state.loadContentAfterPageLoad) {\r\n this.setState({\r\n loadContentAfterPageLoad: true,\r\n loadAnimation: true,\r\n displayThreeSixtyOverlay: true\r\n }, () => {\r\n this.setOverlayViewWindowSize();\r\n\r\n if(helper.isTabletView() || helper.isMobileShop()) {\r\n this.scrollLock = SCSScrollLock.instance;\r\n this.threeDImagesRef.current.addEventListener('touchstart', this.handleTouchDown, false);\r\n this.threeDImagesRef.current.addEventListener('touchend', this.handleTouchend, false);\r\n this.threeDImagesRef.current.addEventListener('touchmove', this.handleRotationByTouch, false);\r\n }\r\n });\r\n }\r\n else {\r\n this.setOverlayViewWindowSize();\r\n }\r\n }\r\n\r\n private setOverlayViewWindowSize(): void {\r\n let new_height = 900; // default value is needed only for tests\r\n if (this.threeDOverlay)\r\n new_height = this.threeDOverlay.clientHeight > 900\r\n ? 900 : this.threeDOverlay.clientHeight;\r\n\r\n // only desktop devices has controls\r\n if (this.props.showOverlayAnimation && !helper.isMobileShop()) {\r\n new_height = new_height - 130 - 70; // remove zoom on/out buttons size - start/stop and close buttons\r\n }\r\n\r\n // clientHeight - threeSixtyThumbnails:\r\n if (this.props.hasThreeSixtyThumbnails && !helper.isDeskTopView()) {\r\n new_height = new_height - 130;\r\n }\r\n\r\n this.setThreeDImagesContainerDimensions(new_height);\r\n\r\n this.playStopAnimation(true);\r\n }\r\n\r\n private setThreeDImagesContainerDimensions(height: number): void {\r\n this.setState({ \r\n currentImageHeight: height,\r\n loadAnimation: true\r\n }, () => {\r\n // If height is greater then max value, use maximum allowed height:\r\n if (this.animationRef.current.clientHeight > 0\r\n && this.animationRef.current.clientHeight > height) {\r\n this.threeDImagesRef.current.style.height = height + 'px';\r\n } else {\r\n this.threeDImagesRef.current.style.height = this.state.currentImageHeight + 'px';\r\n }\r\n });\r\n }\r\n\r\n private playAnimation(index: number, animationSequenceIndex: number): void {\r\n if (this.state.playAnimation && this.props.animationSequence.length > 1) {\r\n if (index === this.props.animationSequence.length) {\r\n index = 0; // reset rotation\r\n animationSequenceIndex = 0; // reset slider\r\n }\r\n\r\n // set next 3D image index:\r\n this.setState({ imageIndex: this.props.animationSequence[index].imageIndex });\r\n\r\n // provide imag image index to observer component:\r\n if(this.props.updateSliderIndex)\r\n this.props.updateSliderIndex(animationSequenceIndex);\r\n\r\n // clear previous timeout:\r\n clearTimeout(this.animationTimer);\r\n\r\n this.animationTimer = setTimeout(() => {\r\n this.playAnimation(++index, ++animationSequenceIndex);\r\n }, this.props.animationSpeed);\r\n }\r\n }\r\n\r\n private handleRotationByTouch(event: TouchEvent): void {\r\n if (this.state.dragging && !this.state.imageMovementIsEnabled) {\r\n this.updateImageIndex(event.touches[0].screenX);\r\n }\r\n }\r\n\r\n private handleRotationByHand(event: MouseEvent): void {\r\n if (this.state.dragging && !this.state.imageMovementIsEnabled) {\r\n this.updateImageIndex(event.screenX);\r\n }\r\n }\r\n\r\n private updateImageIndex(currentPositionX: number): void {\r\n const index = this.imageController.getRotatedImageIndex(currentPositionX,\r\n this.props.animationSequence.length, this.state.dragStartScreenX,\r\n this.state.dragStartImageIndex);\r\n\r\n if (index !== this.state.imageIndex) {\r\n this.setState({ imageIndex: this.props.animationSequence[index].imageIndex });\r\n }\r\n }\r\n\r\n private handleTouchend(): void { \r\n if(!this.state.imageMovementIsEnabled)\r\n this.setState({ dragging: false });\r\n else {\r\n // image move feature:\r\n window.removeEventListener('mousemove', this.updateZoomedImagePosition, true);\r\n window.removeEventListener('touchmove', this.updateZoomedImagePositionTouch, true);\r\n\r\n if(helper.isTabletView())\r\n this.scrollLock.unlock();\r\n //--\r\n }\r\n }\r\n\r\n private handleTouchDown(event: TouchEvent): void {\r\n if(this.state.imageMovementIsEnabled) {\r\n this.scrollLock.lock();\r\n const touch = event.touches[0];\r\n this.handleImageMovement(touch.clientX, touch.clientY);\r\n }\r\n else {\r\n this.setState(state => ({\r\n playAnimation: false,\r\n dragging: true,\r\n dragStartScreenX: event.touches[0].screenX,\r\n dragStartImageIndex: state.imageIndex\r\n }));\r\n }\r\n }\r\n\r\n private handleMouseDown(event): void {\r\n if(this.state.imageMovementIsEnabled) {\r\n this.handleImageMovement(event.clientX, event.clientY);\r\n }\r\n else {\r\n event.persist();\r\n\r\n this.setState(state => ({\r\n playAnimation: false,\r\n dragging: true,\r\n dragStartScreenX: event.screenX,\r\n dragStartImageIndex: state.imageIndex,\r\n }));\r\n }\r\n }\r\n\r\n // image move feature:\r\n private handleImageMovement(clientX: number, clientY: number): void {\r\n this.gMouseDownX = clientX;\r\n this.gMouseDownY = clientY;\r\n \r\n //The following block gets the X offset (the difference between where it starts and where it was clicked)\r\n const leftPart = this.activeImageContainer.style.left;\r\n const leftPos = leftPart.indexOf('px');\r\n const leftNumString = leftPart.slice(0, leftPos); // Get the X value of the object.\r\n\r\n this.gMouseDownOffsetX = this.gMouseDownX - parseInt(leftNumString, 10);\r\n \r\n // The following block gets the existing Y offset \r\n // (the difference between where it starts and where it was clicked)\r\n if(this.activeImageContainer.style.top) {\r\n const topPart = this.activeImageContainer.style.top; \r\n \r\n const topPos = topPart.indexOf('px');\r\n const topNumString = topPart.slice(0, topPos); // Get the Y value of the object. \r\n\r\n this.gMouseDownOffsetY = this.gMouseDownY - parseInt(topNumString, 10);\r\n }\r\n\r\n window.addEventListener('mousemove', this.updateZoomedImagePosition, true);\r\n\r\n if(helper.isTabletView())\r\n window.addEventListener('touchmove', this.updateZoomedImagePositionTouch, true);\r\n }\r\n\r\n private updateZoomedImagePosition(event: MouseEvent): void {\r\n let topAmount: number;\r\n\r\n // Set top position value for a first time after mouse is down and image move starts:\r\n if(!this.activeImageContainer.style.top) {\r\n this.gMouseDownOffsetY = (parseInt(this.threeDImagesRef.current.style.height, 10) / 2) * -1;\r\n topAmount = this.gMouseDownOffsetY;\r\n\r\n // set value for future image move:\r\n this.gMouseDownOffsetY = event.clientY - this.gMouseDownOffsetY;\r\n }\r\n else {\r\n topAmount = event.clientY - this.gMouseDownOffsetY;\r\n } \r\n\r\n this.activeImageContainer.style.top = topAmount + 'px';\r\n const leftAmount = event.clientX - this.gMouseDownOffsetX;\r\n this.activeImageContainer.style.left = leftAmount + 'px';\r\n }\r\n\r\n private updateZoomedImagePositionTouch(event: TouchEvent): void {\r\n let topAmount: number;\r\n\r\n // Set top position value for a first time after mouse is down and image move starts:\r\n if(!this.activeImageContainer.style.top) {\r\n this.gMouseDownOffsetY = (parseInt(this.threeDImagesRef.current.style.height, 10) / 2) * -1;\r\n topAmount = this.gMouseDownOffsetY;\r\n\r\n // set value for future image move:\r\n this.gMouseDownOffsetY = event.touches[0].clientY - this.gMouseDownOffsetY;\r\n }\r\n else {\r\n topAmount = event.touches[0].clientY - this.gMouseDownOffsetY;\r\n }\r\n\r\n this.activeImageContainer.style.top = topAmount + 'px';\r\n const leftAmount = event.touches[0].clientX - this.gMouseDownOffsetX;\r\n this.activeImageContainer.style.left = leftAmount + 'px';\r\n }\r\n //--\r\n\r\n private preventDragHandler(event): void {\r\n event.preventDefault();\r\n }\r\n\r\n private handleStartStopClick(): void {\r\n if(this.state.playAnimation) {\r\n // stop animation:\r\n this.playStopAnimation(false);\r\n }\r\n else {\r\n // start animation:\r\n // restore zoomed image state:\r\n this.resetDefaultImageSize();\r\n this.playStopAnimation(true);\r\n }\r\n }\r\n\r\n private handleZoomInClick(): void {\r\n this.playStopAnimation(false);\r\n\r\n this.activeImageContainer = this.animationRef.current.querySelector('.active_image');\r\n\r\n // Zoom in limit exceeded:\r\n if(this.state.zoomInLevel === maxZoomLevel)\r\n return;\r\n\r\n if(this.state.zoomInLevel === minZoomLevel) {\r\n this.setState({imageMovementIsEnabled: true});\r\n }\r\n\r\n const tmpZoomInLevel = this.state.zoomInLevel + 1;\r\n\r\n this.setState({\r\n zoomInLevel: tmpZoomInLevel,\r\n zoomedImageHeight: this.state.currentImageHeight + this.state.currentImageHeight * tmpZoomInLevel,\r\n zoomedImageIndex: parseInt(this.activeImageContainer.dataset.index)\r\n }, ()=>{\r\n this.activeImageContainer.style.position = 'absolute';\r\n this.activeImageContainer.style.width = 'auto';\r\n this.activeImageContainer.style.height = 'auto';\r\n this.activeImageContainer.style.maxWidth = 'initial';\r\n this.activeImageContainer.style.maxHeight = 'initial';\r\n this.activeImageContainer.style.transform = 'translateX(-50%)';\r\n\r\n if(!this.activeImageContainer.style.left) {\r\n this.activeImageContainer.style.left = this.threeDImagesRef.current.clientWidth / 2 + 'px';\r\n }\r\n });\r\n }\r\n\r\n private handleZoomOutClick(): void {\r\n // Zoom in bottom limit exceeded:\r\n if(this.state.zoomInLevel === minZoomLevel) {\r\n return;\r\n }\r\n\r\n const tmpZoomInLevel = this.state.zoomInLevel - 1;\r\n\r\n if(tmpZoomInLevel === minZoomLevel) {\r\n this.resetDefaultImageSize();\r\n }\r\n else {\r\n this.setState({\r\n zoomInLevel: tmpZoomInLevel,\r\n zoomedImageHeight: this.state.zoomedImageHeight - this.state.currentImageHeight * tmpZoomInLevel\r\n });\r\n }\r\n }\r\n\r\n public resetDefaultImageSize(): void {\r\n if (this.activeImageContainer) {\r\n this.activeImageContainer.style.removeProperty('position');\r\n this.activeImageContainer.style.removeProperty('top');\r\n this.activeImageContainer.style.removeProperty('left');\r\n this.activeImageContainer.style.removeProperty('transform');\r\n this.activeImageContainer.style.removeProperty('height');\r\n this.activeImageContainer.style.removeProperty('width');\r\n this.activeImageContainer.style.removeProperty('max-height');\r\n this.activeImageContainer.style.removeProperty('max-width');\r\n }\r\n\r\n // reset default size:\r\n this.setState({\r\n zoomInLevel: minZoomLevel,\r\n imageMovementIsEnabled: false, // enable rotation by hand\r\n zoomedImageIndex: null,\r\n zoomedImageHeight: null,\r\n });\r\n\r\n if (helper.isMobileShop() && !!this.reactZoomPanPinchRef) {\r\n this.reactZoomPanPinchRef.resetTransform();\r\n this.reactZoomPanPinchRef.instance.setup.panning.disabled = true;\r\n }\r\n\r\n // this.scrollLock can be not yet initialized while 3d overlay was not open, it just not needed yet:\r\n if((helper.isTabletView() || helper.isMobileShop()) && this.scrollLock) \r\n this.scrollLock.unlock();\r\n }\r\n\r\n private renderElementsForThreeSixtyView(): JSX.Element {\r\n return (\r\n this.props.showOverlayAnimation ?\r\n
\r\n {this.getImageElements()}\r\n
\r\n :
{this.getImageElements()}
\r\n );\r\n }\r\n\r\n private handleImageLoaded(): void {\r\n this.imageLoadedProgress++;\r\n\r\n if (this.props.imageUrlArray.length === this.imageLoadedProgress)\r\n {\r\n // reset load process counter:\r\n this.imageLoadedProgress = 0;\r\n \r\n this.setState({\r\n animationIsLoaded: true\r\n }, ()=> {\r\n // start/restart animation rotation if only it was not stopped bus user before:\r\n if (!this.props.preventAutoPlay)\r\n this.playStopAnimation(true);\r\n\r\n if(window.shell)\r\n window.shell.publishTo('SCS.Animation.WasLoaded', {\r\n containerId: this.props.containerId});\r\n });\r\n }\r\n }\r\n\r\n private getAltTag(): string {\r\n if (!this.props.productInfo)\r\n return '';\r\n const categoryName = \r\n this.props.productInfo.categoryName ? ', ' + this.props.productInfo.categoryName : '';\r\n const designation = \r\n this.props.productInfo.designation ? ', ' + this.props.productInfo.designation : '';\r\n const colorName = \r\n this.props.productInfo.colorName ? ', ' + this.props.productInfo.colorName : '';\r\n return this.props.productInfo.l10n.localizationKey + categoryName + designation + colorName;\r\n }\r\n\r\n private getImageElements(): ReactNode {\r\n return this.state.loadAnimation ?\r\n this.props.imageUrlArray.map((imgUrl, imageIndex) => {\r\n const newIndex: number = imageIndex + 1;\r\n\r\n return {this.getAltTag()}\r\n\r\n })\r\n :\r\n <>\r\n }\r\n\r\n private getImageUrl(imgUrl: string, index: number): string {\r\n let imgHeight = this.state.imageHeight;\r\n\r\n if (this.state.zoomedImageIndex && this.state.zoomedImageIndex === index) {\r\n imgHeight = this.state.zoomedImageHeight ?? this.state.currentImageHeight;\r\n }\r\n\r\n return [imgUrl, '&height=', imgHeight].join('');\r\n }\r\n\r\n public playStopAnimation(play: boolean): void {\r\n this.setState({ playAnimation: play }, () => {\r\n if (play)\r\n this.playAnimation(this.state.imageIndex, this.state.animationSequenceIndex);\r\n });\r\n }\r\n\r\n public restartAnimation(playAnimation: boolean): void {\r\n this.setState({\r\n dragging: false,\r\n imageIndex: 1,\r\n animationSequenceIndex: 1,\r\n dragStartImageIndex: 0,\r\n playAnimation: playAnimation,\r\n dragStartScreenX: 0,\r\n imageMovementIsEnabled: false\r\n }, () => {\r\n // restore zoomed image state:\r\n this.resetDefaultImageSize();\r\n\r\n // reset load process counter:\r\n this.imageLoadedProgress = 0;\r\n this.playStopAnimation(playAnimation);\r\n });\r\n }\r\n\r\n private zoomButtonsClass(): string {\r\n return this.props.hasThreeSixtyThumbnails\r\n ? ['zoom_buttons'].join(' ')\r\n : ['zoom_buttons', 'tdi_full_width'].join(' ');\r\n }\r\n\r\n private threeDImagesClass(): string {\r\n const tdiClassName = this.props.hasThreeSixtyThumbnails ? '' : 'tdi_full_width';\r\n\r\n return this.state.animationIsLoaded\r\n ? [tdiClassName, 'three_d_images', 'show_td_images'].join(' ')\r\n : [tdiClassName, 'three_d_images'].join(' ');\r\n }\r\n\r\n private threeDImageClass(renderableImageIndex: number): string {\r\n return this.state.imageIndex == renderableImageIndex || this.props.imageUrlArray.length == 1\r\n ? ['three_d_image', 'active_image'].join(' ') : 'three_d_image';\r\n } \r\n\r\n private zoomOutBtnStyleClass(): string {\r\n return this.state.zoomInLevel === minZoomLevel ? 'zoom_out_btn inactive' : 'zoom_out_btn';\r\n }\r\n\r\n private zoomInBtnStyleClass(): string {\r\n return this.state.zoomInLevel === maxZoomLevel ? 'zoom_in_btn inactive' : 'zoom_in_btn';\r\n }\r\n\r\n private onPinchingStart(ref: ReactZoomPanPinchRef): void {\r\n if(ref.state.scale === 1) {\r\n ref.instance.setup.panning.disabled = false;\r\n this.playStopAnimation(false);\r\n this.setState({imageMovementIsEnabled: true});\r\n }\r\n\r\n this.activeImageContainer = this.animationRef.current.querySelector('.active_image');\r\n }\r\n\r\n private onPinchingStop(ref: ReactZoomPanPinchRef): void {\r\n if(ref.state.scale <= 1) {\r\n ref.instance.setup.panning.disabled = true;\r\n this.resetDefaultImageSize();\r\n }\r\n else {\r\n this.setState({\r\n zoomInLevel: ref.state.scale,\r\n zoomedImageHeight: Math.round(this.state.currentImageHeight * ref.state.scale),\r\n zoomedImageIndex: parseInt(this.activeImageContainer.dataset.index)\r\n });\r\n }\r\n }\r\n\r\n private handleOnInit(ref: ReactZoomPanPinchRef): void {\r\n this.reactZoomPanPinchRef = ref;\r\n ref.instance.setup.panning.disabled = true;\r\n ref.instance.setup.doubleClick.disabled = true;\r\n }\r\n\r\n private onEnterViewport(): void {\r\n if (!this.animationRef.current) {\r\n return;\r\n } else {\r\n const top = this.animationRef.current.getBoundingClientRect().top;\r\n const viewportReached = top + this.offset >= 0 && top - this.offset <= window.innerHeight;\r\n\r\n if (viewportReached && top > 0) {\r\n this.setState({\r\n loadContentAfterPageLoad: true,\r\n loadAnimation: true\r\n });\r\n\r\n document.removeEventListener('scroll', this.onEnterViewport, true);\r\n }\r\n }\r\n }\r\n\r\n private handleKeyDown(event): void {\r\n // prevent page jump down when 3dG is closed with Space btn., click\r\n if (event.code === 'Space')\r\n event.preventDefault();\r\n\r\n if(!window.shell.tabNav)\r\n return;\r\n\r\n if (event.code === 'ArrowRight' && event.target.nextSibling) {\r\n window.shell.tabNav.focus(event.target.nextSibling);\r\n }\r\n\r\n if (event.code === 'ArrowLeft' && event.target.previousSibling) {\r\n window.shell.tabNav.focus(event.target.previousSibling);\r\n }\r\n }\r\n\r\n public render() {\r\n return (\r\n
\r\n {\r\n (helper.isMobileShop() && this.props.showOverlayAnimation) ?\r\n \r\n \r\n {this.renderElementsForThreeSixtyView()}\r\n \r\n \r\n : \r\n this.renderElementsForThreeSixtyView()\r\n }\r\n \r\n {(this.props.showOverlayAnimation && !helper.isMobileShop()) &&\r\n // only desktop devices has controls\r\n
\r\n
\r\n
\r\n
\r\n
\r\n }\r\n
\r\n );\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport default {\"breakpointDesktopMinWidth\":\"1200px\",\"dpWhite\":\"#fff\",\"dpGainsboro\":\"#e6e6e6\",\"three_sixty_thumbnails_container\":\"three_sixty_thumbnails_container\",\"t_arrow_left\":\"t_arrow_left\",\"t_arrow_right\":\"t_arrow_right\",\"three_sixty_thumbnails\":\"three_sixty_thumbnails\",\"thumbnail_slot\":\"thumbnail_slot\",\"t_slot_image_container\":\"t_slot_image_container\",\"selected\":\"selected\",\"t_slot_image\":\"t_slot_image\",\"t_slot_label\":\"t_slot_label\"};","import React from 'react';\r\n\r\nconst ArrowUp = () => (\r\n \r\n \r\n \r\n);\r\n\r\nexport default ArrowUp;\r\n","import React from 'react';\r\n\r\nconst ArrowDown = () => (\r\n \r\n \r\n \r\n);\r\n\r\nexport default ArrowDown;\r\n","import React from 'react';\r\nimport * as ThreeSixtyThumbnailsTypes from './threeSixtyThumbnails.d';\r\nimport './threeSixtyThumbnails.scss';\r\nimport * as helper from '../common/scs-html-helper';\r\nimport ArrowUpLeft from '../../Assets/svg/arrowUp';\r\nimport ArrowDownRight from '../../Assets/svg/arrowDown';\r\n\r\nexport default class ThreeSixtyThumbnails extends React.Component {\r\n private forceControlBntFocus: boolean;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.forceControlBntFocus = false;\r\n\r\n // Startup state:\r\n this.state = {\r\n activeIndex: 0,\r\n moveValue: 0,\r\n positionIndex: 0,\r\n maxPositionIndex: 0,\r\n slotSize: 0,\r\n displayThreeSixtyOverlay: process.env.NODE_ENV === 'test' ? true : false,\r\n };\r\n\r\n this.handleArrowUpLeftClick = this.handleArrowUpLeftClick.bind(this);\r\n this.handleArrowDownRightClick = this.handleArrowDownRightClick.bind(this);\r\n this.handleWindowResize = this.handleWindowResize.bind(this);\r\n this.handleThreeSixtyThumbnailSelected = this.handleThreeSixtyThumbnailSelected.bind(this);\r\n this.openThreeSixtyOverlay = this.openThreeSixtyOverlay.bind(this);\r\n this.handleOnKeyDown = this.handleOnKeyDown.bind(this);\r\n }\r\n \r\n componentDidMount() {\r\n window.shell.subscribeTo(\r\n 'SCS.Open.Gallery3DView',\r\n (displayG3dOverlay: boolean) => {\r\n if(displayG3dOverlay)\r\n this.openThreeSixtyOverlay();\r\n },\r\n 'SCS.ThreeSixtyThumbnails');\r\n\r\n window.addEventListener('resize', this.handleWindowResize, false);\r\n this.init();\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.handleWindowResize);\r\n }\r\n \r\n public restartAnimation(): void {\r\n this.setState({\r\n activeIndex: 0,\r\n moveValue: 0,\r\n positionIndex: 0\r\n });\r\n\r\n this.init();\r\n }\r\n\r\n private openThreeSixtyOverlay(): void {\r\n this.setState({\r\n displayThreeSixtyOverlay: true\r\n });\r\n }\r\n\r\n private setSlotSize(): void {\r\n this.setState({slotSize: helper.isDeskTopView() ? 185 : 130});\r\n }\r\n\r\n private handleWindowResize(): void {\r\n this.setSlotSize();\r\n }\r\n\r\n private init(): void {\r\n this.setSlotSize();\r\n\r\n if(this.props.threeSixtyThumbnails.length > 3)\r\n this.setState({maxPositionIndex: this.props.threeSixtyThumbnails.length - 3});\r\n else\r\n this.setState({maxPositionIndex: 1});\r\n }\r\n \r\n private handleArrowUpLeftClick(): void {\r\n if (this.state.positionIndex <= 0) {\r\n this.setState({\r\n moveValue: 0,\r\n positionIndex: 0\r\n });\r\n }\r\n else {\r\n this.setState({\r\n moveValue: this.state.moveValue + this.state.slotSize,\r\n positionIndex: this.state.positionIndex - 1\r\n });\r\n }\r\n }\r\n\r\n private handleArrowDownRightClick(): void {\r\n if(this.state.positionIndex < this.state.maxPositionIndex) {\r\n this.setState({\r\n moveValue: this.state.moveValue - this.state.slotSize,\r\n positionIndex: this.state.positionIndex + 1\r\n });\r\n }\r\n }\r\n\r\n private prepareImageUrl(imgUrl: string): string {\r\n if (helper.isDeskTopView())\r\n return [imgUrl, '&width=110', '&height=110'].join('');\r\n\r\n return [imgUrl, '&width=80', '&height=80'].join('');\r\n }\r\n\r\n private getSlotStyle(): React.CSSProperties {\r\n if (helper.isDeskTopView())\r\n return { transform: 'translateY(' + this.state.moveValue + 'px' + ')' };\r\n\r\n return { transform: 'translateX(' + this.state.moveValue + 'px' + ')' };\r\n }\r\n\r\n private renderControls(): boolean { \r\n return this.props.threeSixtyThumbnails && this.props.threeSixtyThumbnails.length > 3;\r\n }\r\n\r\n private tSlotImageContainerStyleClass(index: number): string {\r\n return this.state.activeIndex === index ? 't_slot_image_container selected' : 't_slot_image_container';\r\n }\r\n\r\n private handleThreeSixtyThumbnailSelected(threeSixty, index: number): void {\r\n this.setState({\r\n activeIndex: index\r\n });\r\n\r\n this.props.onThreeSixtyThumbnailSelected(threeSixty);\r\n\r\n if (this.forceControlBntFocus) { // step 2\r\n const start_stop_button = document.querySelector('.start_stop_button');\r\n if (start_stop_button && window.shell.tabNav) {\r\n window.shell.tabNav.focus(start_stop_button);\r\n }\r\n\r\n this.forceControlBntFocus = false;\r\n }\r\n }\r\n\r\n private getAltTag(tsLabel: string): string {\r\n if (!this.props.productInfo)\r\n return '';\r\n const localizationKey = \r\n this.props.productInfo.l10n.localizationKey + ', ';\r\n const categoryName = \r\n this.props.productInfo.categoryName ? ', ' + this.props.productInfo.categoryName : '';\r\n const designation = \r\n this.props.productInfo.designation ? ', ' + this.props.productInfo.designation : '';\r\n const colorName = \r\n this.props.productInfo.colorName ? ', ' + this.props.productInfo.colorName : '';\r\n return localizationKey + tsLabel + ', ' + categoryName + designation + colorName;\r\n }\r\n\r\n private setGroupAtt(el: HTMLDivElement): void {\r\n if (el) {\r\n if (!el.hasAttribute('group')) {\r\n el.toggleAttribute('group');\r\n }\r\n }\r\n }\r\n\r\n private setFocusAtt(el: HTMLDivElement, order: number): void {\r\n if(el) {\r\n el.setAttribute('focusable', '');\r\n el.setAttribute('order', order.toString());\r\n }\r\n }\r\n\r\n private handleOnKeyDown(event): void {\r\n // prevent page jump down when 3dG is closed with Space btn., click\r\n if (event.code === 'Space') {\r\n event.preventDefault();\r\n this.forceControlBntFocus = true; // step 1\r\n }\r\n }\r\n\r\n private renderThumbnails() {\r\n return (\r\n this.props.threeSixtyThumbnails.map((threeSixty, index) => {\r\n const tsLabel = helper.decodeHTML(threeSixty.label);\r\n\r\n return (\r\n
this.setFocusAtt(el, index + 1)}\r\n data-testid={'thumbnail_slot'}\r\n key={index} className={'thumbnail_slot'}\r\n onClick={() => this.handleThreeSixtyThumbnailSelected(threeSixty, index)}\r\n onKeyDown={this.handleOnKeyDown}>\r\n
\r\n {this.getAltTag(tsLabel)}\r\n
\r\n
\r\n {tsLabel}\r\n
\r\n
\r\n );\r\n })\r\n );\r\n }\r\n\r\n public render() {\r\n return (\r\n (this.state.displayThreeSixtyOverlay && \r\n this.props.threeSixtyThumbnails.length && this.props.threeSixtyThumbnails.length > 0) ?\r\n
this.setGroupAtt(el)}>\r\n {this.renderControls() &&\r\n
\r\n \r\n
}\r\n
this.setGroupAtt(el)}>\r\n {this.renderThumbnails()}\r\n
\r\n {this.renderControls() &&\r\n
\r\n \r\n
}\r\n
: <>\r\n );\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport default {\"breakpointDesktopMinWidth\":\"1200px\",\"dpWhite\":\"#fff\",\"dpGainsboro\":\"#e6e6e6\",\"showcase-container\":\"showcase-container\",\"no_background\":\"no_background\",\"fall_back_img\":\"fall_back_img\",\"fbi_show\":\"fbi_show\",\"three_sixty_view\":\"three_sixty_view\",\"three_sixty_container\":\"three_sixty_container\",\"three_sixty_animation\":\"three_sixty_animation\",\"three_d_images\":\"three_d_images\",\"three_d_image\":\"three_d_image\",\"gallery_buttons\":\"gallery_buttons\",\"close_g3d_overlay_btn\":\"close_g3d_overlay_btn\",\"border\":\"border\",\"mobile_gallery_buttons\":\"mobile_gallery_buttons\"};","/* eslint-disable max-len */\r\nimport React from 'react';\r\n\r\nconst Icon_Close_Large = () => (\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default Icon_Close_Large;\r\n","import React from 'react';\r\nimport ThreeSixtyThumbnails from '../threeSixtyThumbnails/threeSixtyThumbnails';\r\nimport './threeSixtyView.scss';\r\nimport { IResponseData } from '../../types/VariantSelection';\r\nimport * as helper from '../common/scs-html-helper';\r\nimport CloseIconLarge from '../../Assets/svg/icon_close_large';\r\nimport { IThreeSixtyViewProps, IThreeSixtyOverlayState } from './threeSixtyView.d';\r\nimport { ThreeSixtyViewDataController } from '../common/threeSixtyViewDataController';\r\nimport ThreeSixtyAnimation from '../threeSixtyAnimation/threeSixtyAnimation';\r\nimport { IThreeSixtyAnimationProps } from '../threeSixtyAnimation/threeSixtyAnimation.d';\r\n\r\nexport default class ThreeSixtyView extends React.Component {\r\n\r\n private threeSixtyViewController: ThreeSixtyViewDataController;\r\n private tsAnimationRef = React.createRef();\r\n private tsThumbnailsRef = React.createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // Startup state:\r\n this.state = {\r\n currentThreeSixty: this.props.threeSixty,\r\n currentThreeSixtyThumbnails: this.props.threeSixtyThumbnails,\r\n threeDIsAvailable: (this.props.threeSixty && this.props.threeSixty.imageUrlArray\r\n && this.props.threeSixty.imageUrlArray.length > 0),\r\n colorCode: this.props.colorCode,\r\n hasThreeSixtyThumbnails: this.props.threeSixtyThumbnails\r\n ? this.props.threeSixtyThumbnails.length > 0 : false,\r\n productInfo: this.props.productInfo\r\n };\r\n\r\n this.threeSixtyViewController = ThreeSixtyViewDataController.instance(\r\n this.props.generalData.magicLink);\r\n\r\n this.handleThreeSixtyThumbnailSelection = this.handleThreeSixtyThumbnailSelection.bind(this);\r\n this.handleCloseGallery3d = this.handleCloseGallery3d.bind(this);\r\n this.hideShowCase = this.hideShowCase.bind(this);\r\n this.restoreShowCase = this.restoreShowCase.bind(this);\r\n this.handleESPPDataUpdate = this.handleESPPDataUpdate.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (typeof window !== 'undefined' && window.shell\r\n && !this.props.doNotUpdateAfterVariantChange) {\r\n window.shell.subscribeTo(\r\n 'ESPP.DetailPage.PageUpdate',\r\n (response: IResponseData) => {\r\n if (this.state.colorCode !== response.variantSelection.selectedColor.code) {\r\n const oldPI = this.state.productInfo;\r\n oldPI.colorName = response.variantSelection.selectedColor.name;\r\n\r\n this.setState({\r\n colorCode: response.variantSelection.selectedColor.code,\r\n productInfo: oldPI\r\n }, () => {\r\n this.handleESPPDataUpdate(response.variantSelection.selectedColor.code, true);\r\n });\r\n }\r\n },\r\n this.props.containerId);\r\n\r\n window.shell.subscribeTo(\r\n 'ESPP.OrderModal.Update',\r\n ({ showCaseContainerId, response, restartAnimation }:\r\n { showCaseContainerId: string, response: IResponseData, restartAnimation: boolean }\r\n ) => {\r\n const isTargetContainer = showCaseContainerId === this.props.containerId;\r\n if (isTargetContainer && this.state.colorCode !== response.variantSelection.selectedColor.code) {\r\n const oldPI = this.state.productInfo;\r\n oldPI.colorName = response.variantSelection.selectedColor.name;\r\n\r\n this.setState({ \r\n colorCode: response.variantSelection.selectedColor.code,\r\n productInfo: oldPI \r\n }, () => {\r\n this.handleESPPDataUpdate(\r\n response.variantSelection.selectedColor.code, \r\n (restartAnimation !== undefined && restartAnimation !== null)\r\n ? restartAnimation : true);\r\n });\r\n }\r\n },\r\n this.props.containerId);\r\n }\r\n\r\n if(this.state.threeDIsAvailable)\r\n setTimeout(() => {\r\n if (this.tsAnimationRef.current)\r\n this.tsAnimationRef.current.initAnimation();\r\n }, 500);\r\n else\r\n this.hideShowCase();\r\n }\r\n\r\n // dedicated only for tests:\r\n public get getThreeSixtyAnimationRef() {\r\n return this.tsAnimationRef;\r\n }\r\n\r\n private handleESPPDataUpdate(colorCode: number, restartAnimation: boolean): void {\r\n this.threeSixtyViewController.getThreeSixtyViewData(colorCode, this.props.masterArticleNo)\r\n .then((threeSixtyView) => {\r\n this.updateCurrentData(threeSixtyView, colorCode, restartAnimation);\r\n });\r\n }\r\n\r\n public updateCurrentData(threeSixtyView: IThreeSixtyViewProps, colorCode: number, restartAnimation: boolean): void {\r\n if(threeSixtyView && threeSixtyView.threeSixty) {\r\n this.setState({\r\n colorCode: colorCode,\r\n currentThreeSixty: threeSixtyView.threeSixty,\r\n currentThreeSixtyThumbnails: threeSixtyView.threeSixtyThumbnails,\r\n hasThreeSixtyThumbnails: threeSixtyView.threeSixtyThumbnails \r\n && threeSixtyView.threeSixtyThumbnails.length > 0\r\n }, ()=> {\r\n this.restoreShowCase(restartAnimation);\r\n });\r\n }\r\n else {\r\n this.hideShowCase();\r\n }\r\n }\r\n\r\n public handleThreeSixtyThumbnailSelection(threeSixty: IThreeSixtyAnimationProps): void {\r\n // update current three sixty view:\r\n this.setState({\r\n currentThreeSixty: threeSixty\r\n });\r\n this.tsAnimationRef.current.restartAnimation(true);\r\n }\r\n\r\n private handleCloseGallery3d(): void {\r\n window.shell.publishTo('SCS.Close.Gallery3DView', null);\r\n this.tsAnimationRef.current.resetDefaultImageSize();\r\n }\r\n \r\n public hideShowCase(): void {\r\n // hide 3d button:\r\n this.setState({threeDIsAvailable: false});\r\n window.shell.publishTo('SCS.Hide.Fragment',\r\n {hidden: true, containerId: this.props.containerId});\r\n }\r\n\r\n private restoreShowCase(restartAnimation: boolean): void {\r\n // restore 3d button:\r\n this.setState({threeDIsAvailable: true}, ()=> {\r\n this.tsAnimationRef.current.initAnimation();\r\n this.tsAnimationRef.current.restartAnimation(restartAnimation);\r\n \r\n if(this.tsThumbnailsRef.current)\r\n this.tsThumbnailsRef.current.restartAnimation();\r\n });\r\n window.shell.publishTo('SCS.Hide.Fragment',\r\n {hidden: false, containerId: this.props.containerId});\r\n }\r\n\r\n private getAltTag(): string {\r\n if (!this.props.productInfo)\r\n return '';\r\n const categoryName = \r\n this.props.productInfo.categoryName ? ', ' + this.props.productInfo.categoryName : '';\r\n const designation = \r\n this.props.productInfo.designation ? ', ' + this.props.productInfo.designation : '';\r\n const colorName = \r\n this.props.productInfo.colorName ? ', ' + this.props.productInfo.colorName : '';\r\n return this.props.productInfo.l10n.localizationKey + categoryName + designation + colorName;\r\n }\r\n\r\n private setModalAtt(el: HTMLDivElement): void {\r\n if (el) {\r\n if (!el.hasAttribute('modal')) {\r\n el.toggleAttribute('modal');\r\n }\r\n }\r\n }\r\n\r\n private setGroupAtt(el: HTMLDivElement): void {\r\n if (el) {\r\n if (!el.hasAttribute('group')) {\r\n el.toggleAttribute('group');\r\n }\r\n }\r\n }\r\n\r\n private setFocusAtt(el: HTMLDivElement, order: number): void {\r\n if(el) {\r\n el.setAttribute('focusable', '');\r\n el.setAttribute('order', order.toString());\r\n }\r\n }\r\n\r\n public render() {\r\n return (\r\n (this.props.showOverlayAnimation && !helper.isMobileShop()) ?\r\n
{this.setGroupAtt(el); this.setModalAtt(el);}}>\r\n
this.setGroupAtt(el)}>\r\n
{\r\n // prevent page jump down when 3dG is closed with Space btn., click\r\n if (event.code === 'Space')\r\n event.preventDefault(); \r\n }}\r\n data-testid={'close_g3d_overlay_btn'} ref={(el)=> this.setFocusAtt(el, 1)}>\r\n \r\n
\r\n
\r\n
this.setGroupAtt(el)}>\r\n \r\n
\r\n \r\n
\r\n :\r\n <>\r\n {\r\n (this.props.showOverlayAnimation && helper.isMobileShop()) &&\r\n
\r\n
\r\n \r\n
\r\n
\r\n }\r\n {\r\n this.state.threeDIsAvailable &&\r\n \r\n }\r\n {this.getAltTag()}\r\n\r\n \r\n );\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport default {\"breakpointDesktopMinWidth\":\"1200px\",\"dpWhite\":\"#fff\",\"dpGainsboro\":\"#e6e6e6\"};","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\n\nvar ClientUAInstance = new UAParser();\nvar browser = ClientUAInstance.getBrowser();\nvar cpu = ClientUAInstance.getCPU();\nvar device = ClientUAInstance.getDevice();\nvar engine = ClientUAInstance.getEngine();\nvar os = ClientUAInstance.getOS();\nvar ua = ClientUAInstance.getUA();\nvar setUa = function setUa(userAgentString) {\n return ClientUAInstance.setUA(userAgentString);\n};\nvar parseUserAgent = function parseUserAgent(userAgent) {\n if (!userAgent) {\n console.error('No userAgent string was provided');\n return;\n }\n\n var UserAgentInstance = new UAParser(userAgent);\n return {\n UA: UserAgentInstance,\n browser: UserAgentInstance.getBrowser(),\n cpu: UserAgentInstance.getCPU(),\n device: UserAgentInstance.getDevice(),\n engine: UserAgentInstance.getEngine(),\n os: UserAgentInstance.getOS(),\n ua: UserAgentInstance.getUA(),\n setUserAgent: function setUserAgent(userAgentString) {\n return UserAgentInstance.setUA(userAgentString);\n }\n };\n};\n\nvar UAHelper = /*#__PURE__*/Object.freeze({\n ClientUAInstance: ClientUAInstance,\n browser: browser,\n cpu: cpu,\n device: device,\n engine: engine,\n os: os,\n ua: ua,\n setUa: setUa,\n parseUserAgent: parseUserAgent\n});\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar DeviceTypes = {\n Mobile: 'mobile',\n Tablet: 'tablet',\n SmartTv: 'smarttv',\n Console: 'console',\n Wearable: 'wearable',\n Embedded: 'embedded',\n Browser: undefined\n};\nvar BrowserTypes = {\n Chrome: 'Chrome',\n Firefox: 'Firefox',\n Opera: 'Opera',\n Yandex: 'Yandex',\n Safari: 'Safari',\n InternetExplorer: 'Internet Explorer',\n Edge: 'Edge',\n Chromium: 'Chromium',\n Ie: 'IE',\n MobileSafari: 'Mobile Safari',\n EdgeChromium: 'Edge Chromium',\n MIUI: 'MIUI Browser',\n SamsungBrowser: 'Samsung Browser'\n};\nvar OsTypes = {\n IOS: 'iOS',\n Android: 'Android',\n WindowsPhone: 'Windows Phone',\n Windows: 'Windows',\n MAC_OS: 'Mac OS'\n};\nvar InitialDeviceTypes = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\n\nvar checkDeviceType = function checkDeviceType(type) {\n switch (type) {\n case DeviceTypes.Mobile:\n return {\n isMobile: true\n };\n\n case DeviceTypes.Tablet:\n return {\n isTablet: true\n };\n\n case DeviceTypes.SmartTv:\n return {\n isSmartTV: true\n };\n\n case DeviceTypes.Console:\n return {\n isConsole: true\n };\n\n case DeviceTypes.Wearable:\n return {\n isWearable: true\n };\n\n case DeviceTypes.Browser:\n return {\n isBrowser: true\n };\n\n case DeviceTypes.Embedded:\n return {\n isEmbedded: true\n };\n\n default:\n return InitialDeviceTypes;\n }\n};\nvar setUserAgent = function setUserAgent(userAgent) {\n return setUa(userAgent);\n};\nvar setDefaults = function setDefaults(p) {\n var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n var nav = getNavigatorInstance();\n return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nvar browserPayload = function browserPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: setDefaults(browser.major),\n browserFullVersion: setDefaults(browser.version),\n browserName: setDefaults(browser.name),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n return _objectSpread2({}, type, {\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n os: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n ua: setDefaults(ua)\n });\n};\nvar smartTvPayload = function smartTvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar wearablePayload = function wearablePayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar embeddedPayload = function embeddedPayload(isEmbedded, device, engine, os, ua) {\n return {\n isEmbedded: isEmbedded,\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\n\nfunction deviceDetect(userAgent) {\n var _ref = userAgent ? parseUserAgent(userAgent) : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n engine = _ref.engine,\n os = _ref.os,\n ua = _ref.ua;\n\n var type = checkDeviceType(device.type);\n var isBrowser = type.isBrowser,\n isMobile = type.isMobile,\n isTablet = type.isTablet,\n isSmartTV = type.isSmartTV,\n isConsole = type.isConsole,\n isWearable = type.isWearable,\n isEmbedded = type.isEmbedded;\n\n if (isBrowser) {\n return browserPayload(isBrowser, browser, engine, os, ua);\n }\n\n if (isSmartTV) {\n return smartTvPayload(isSmartTV, engine, os, ua);\n }\n\n if (isConsole) {\n return consolePayload(isConsole, engine, os, ua);\n }\n\n if (isMobile) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isTablet) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isWearable) {\n return wearablePayload(isWearable, engine, os, ua);\n }\n\n if (isEmbedded) {\n return embeddedPayload(isEmbedded, device, engine, os, ua);\n }\n}\n\nvar isMobileType = function isMobileType(_ref) {\n var type = _ref.type;\n return type === DeviceTypes.Mobile;\n};\nvar isTabletType = function isTabletType(_ref2) {\n var type = _ref2.type;\n return type === DeviceTypes.Tablet;\n};\nvar isMobileAndTabletType = function isMobileAndTabletType(_ref3) {\n var type = _ref3.type;\n return type === DeviceTypes.Mobile || type === DeviceTypes.Tablet;\n};\nvar isSmartTVType = function isSmartTVType(_ref4) {\n var type = _ref4.type;\n return type === DeviceTypes.SmartTv;\n};\nvar isBrowserType = function isBrowserType(_ref5) {\n var type = _ref5.type;\n return type === DeviceTypes.Browser;\n};\nvar isWearableType = function isWearableType(_ref6) {\n var type = _ref6.type;\n return type === DeviceTypes.Wearable;\n};\nvar isConsoleType = function isConsoleType(_ref7) {\n var type = _ref7.type;\n return type === DeviceTypes.Console;\n};\nvar isEmbeddedType = function isEmbeddedType(_ref8) {\n var type = _ref8.type;\n return type === DeviceTypes.Embedded;\n};\nvar getMobileVendor = function getMobileVendor(_ref9) {\n var vendor = _ref9.vendor;\n return setDefaults(vendor);\n};\nvar getMobileModel = function getMobileModel(_ref10) {\n var model = _ref10.model;\n return setDefaults(model);\n};\nvar getDeviceType = function getDeviceType(_ref11) {\n var type = _ref11.type;\n return setDefaults(type, 'browser');\n}; // os types\n\nvar isAndroidType = function isAndroidType(_ref12) {\n var name = _ref12.name;\n return name === OsTypes.Android;\n};\nvar isWindowsType = function isWindowsType(_ref13) {\n var name = _ref13.name;\n return name === OsTypes.Windows;\n};\nvar isMacOsType = function isMacOsType(_ref14) {\n var name = _ref14.name;\n return name === OsTypes.MAC_OS;\n};\nvar isWinPhoneType = function isWinPhoneType(_ref15) {\n var name = _ref15.name;\n return name === OsTypes.WindowsPhone;\n};\nvar isIOSType = function isIOSType(_ref16) {\n var name = _ref16.name;\n return name === OsTypes.IOS;\n};\nvar getOsVersion = function getOsVersion(_ref17) {\n var version = _ref17.version;\n return setDefaults(version);\n};\nvar getOsName = function getOsName(_ref18) {\n var name = _ref18.name;\n return setDefaults(name);\n}; // browser types\n\nvar isChromeType = function isChromeType(_ref19) {\n var name = _ref19.name;\n return name === BrowserTypes.Chrome;\n};\nvar isFirefoxType = function isFirefoxType(_ref20) {\n var name = _ref20.name;\n return name === BrowserTypes.Firefox;\n};\nvar isChromiumType = function isChromiumType(_ref21) {\n var name = _ref21.name;\n return name === BrowserTypes.Chromium;\n};\nvar isEdgeType = function isEdgeType(_ref22) {\n var name = _ref22.name;\n return name === BrowserTypes.Edge;\n};\nvar isYandexType = function isYandexType(_ref23) {\n var name = _ref23.name;\n return name === BrowserTypes.Yandex;\n};\nvar isSafariType = function isSafariType(_ref24) {\n var name = _ref24.name;\n return name === BrowserTypes.Safari || name === BrowserTypes.MobileSafari;\n};\nvar isMobileSafariType = function isMobileSafariType(_ref25) {\n var name = _ref25.name;\n return name === BrowserTypes.MobileSafari;\n};\nvar isOperaType = function isOperaType(_ref26) {\n var name = _ref26.name;\n return name === BrowserTypes.Opera;\n};\nvar isIEType = function isIEType(_ref27) {\n var name = _ref27.name;\n return name === BrowserTypes.InternetExplorer || name === BrowserTypes.Ie;\n};\nvar isMIUIType = function isMIUIType(_ref28) {\n var name = _ref28.name;\n return name === BrowserTypes.MIUI;\n};\nvar isSamsungBrowserType = function isSamsungBrowserType(_ref29) {\n var name = _ref29.name;\n return name === BrowserTypes.SamsungBrowser;\n};\nvar getBrowserFullVersion = function getBrowserFullVersion(_ref30) {\n var version = _ref30.version;\n return setDefaults(version);\n};\nvar getBrowserVersion = function getBrowserVersion(_ref31) {\n var major = _ref31.major;\n return setDefaults(major);\n};\nvar getBrowserName = function getBrowserName(_ref32) {\n var name = _ref32.name;\n return setDefaults(name);\n}; // engine types\n\nvar getEngineName = function getEngineName(_ref33) {\n var name = _ref33.name;\n return setDefaults(name);\n};\nvar getEngineVersion = function getEngineVersion(_ref34) {\n var version = _ref34.version;\n return setDefaults(version);\n};\nvar isElectronType = function isElectronType() {\n var nav = getNavigatorInstance();\n var ua = nav && nav.userAgent && nav.userAgent.toLowerCase();\n return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\nvar isEdgeChromiumType = function isEdgeChromiumType(ua) {\n return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\nvar getIOS13 = function getIOS13() {\n var nav = getNavigatorInstance();\n return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\nvar getIPad13 = function getIPad13() {\n return isIOS13Check('iPad');\n};\nvar getIphone13 = function getIphone13() {\n return isIOS13Check('iPhone');\n};\nvar getIPod13 = function getIPod13() {\n return isIOS13Check('iPod');\n};\nvar getUseragent = function getUseragent(userAg) {\n return setDefaults(userAg);\n};\n\nfunction buildSelectorsObject(options) {\n var _ref = options ? options : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n os = _ref.os,\n engine = _ref.engine,\n ua = _ref.ua;\n\n return {\n isSmartTV: isSmartTVType(device),\n isConsole: isConsoleType(device),\n isWearable: isWearableType(device),\n isEmbedded: isEmbeddedType(device),\n isMobileSafari: isMobileSafariType(browser) || getIPad13(),\n isChromium: isChromiumType(browser),\n isMobile: isMobileAndTabletType(device) || getIPad13(),\n isMobileOnly: isMobileType(device),\n isTablet: isTabletType(device) || getIPad13(),\n isBrowser: isBrowserType(device),\n isDesktop: isBrowserType(device),\n isAndroid: isAndroidType(os),\n isWinPhone: isWinPhoneType(os),\n isIOS: isIOSType(os) || getIPad13(),\n isChrome: isChromeType(browser),\n isFirefox: isFirefoxType(browser),\n isSafari: isSafariType(browser),\n isOpera: isOperaType(browser),\n isIE: isIEType(browser),\n osVersion: getOsVersion(os),\n osName: getOsName(os),\n fullBrowserVersion: getBrowserFullVersion(browser),\n browserVersion: getBrowserVersion(browser),\n browserName: getBrowserName(browser),\n mobileVendor: getMobileVendor(device),\n mobileModel: getMobileModel(device),\n engineName: getEngineName(engine),\n engineVersion: getEngineVersion(engine),\n getUA: getUseragent(ua),\n isEdge: isEdgeType(browser) || isEdgeChromiumType(ua),\n isYandex: isYandexType(browser),\n deviceType: getDeviceType(device),\n isIOS13: getIOS13(),\n isIPad13: getIPad13(),\n isIPhone13: getIphone13(),\n isIPod13: getIPod13(),\n isElectron: isElectronType(),\n isEdgeChromium: isEdgeChromiumType(ua),\n isLegacyEdge: isEdgeType(browser) && !isEdgeChromiumType(ua),\n isWindows: isWindowsType(os),\n isMacOs: isMacOsType(os),\n isMIUI: isMIUIType(browser),\n isSamsungBrowser: isSamsungBrowserType(browser)\n };\n}\n\nvar isSmartTV = isSmartTVType(device);\nvar isConsole = isConsoleType(device);\nvar isWearable = isWearableType(device);\nvar isEmbedded = isEmbeddedType(device);\nvar isMobileSafari = isMobileSafariType(browser) || getIPad13();\nvar isChromium = isChromiumType(browser);\nvar isMobile = isMobileAndTabletType(device) || getIPad13();\nvar isMobileOnly = isMobileType(device);\nvar isTablet = isTabletType(device) || getIPad13();\nvar isBrowser = isBrowserType(device);\nvar isDesktop = isBrowserType(device);\nvar isAndroid = isAndroidType(os);\nvar isWinPhone = isWinPhoneType(os);\nvar isIOS = isIOSType(os) || getIPad13();\nvar isChrome = isChromeType(browser);\nvar isFirefox = isFirefoxType(browser);\nvar isSafari = isSafariType(browser);\nvar isOpera = isOperaType(browser);\nvar isIE = isIEType(browser);\nvar osVersion = getOsVersion(os);\nvar osName = getOsName(os);\nvar fullBrowserVersion = getBrowserFullVersion(browser);\nvar browserVersion = getBrowserVersion(browser);\nvar browserName = getBrowserName(browser);\nvar mobileVendor = getMobileVendor(device);\nvar mobileModel = getMobileModel(device);\nvar engineName = getEngineName(engine);\nvar engineVersion = getEngineVersion(engine);\nvar getUA = getUseragent(ua);\nvar isEdge = isEdgeType(browser) || isEdgeChromiumType(ua);\nvar isYandex = isYandexType(browser);\nvar deviceType = getDeviceType(device);\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType(ua);\nvar isLegacyEdge = isEdgeType(browser) && !isEdgeChromiumType(ua);\nvar isWindows = isWindowsType(os);\nvar isMacOs = isMacOsType(os);\nvar isMIUI = isMIUIType(browser);\nvar isSamsungBrowser = isSamsungBrowserType(browser);\nvar getSelectorsByUserAgent = function getSelectorsByUserAgent(userAgent) {\n if (!userAgent || typeof userAgent !== 'string') {\n console.error('No valid user agent string was provided');\n return;\n }\n\n var _UAHelper$parseUserAg = parseUserAgent(userAgent),\n device = _UAHelper$parseUserAg.device,\n browser = _UAHelper$parseUserAg.browser,\n os = _UAHelper$parseUserAg.os,\n engine = _UAHelper$parseUserAg.engine,\n ua = _UAHelper$parseUserAg.ua;\n\n return buildSelectorsObject({\n device: device,\n browser: browser,\n os: os,\n engine: engine,\n ua: ua\n });\n};\n\nvar AndroidView = function AndroidView(_ref) {\n var renderWithFragment = _ref.renderWithFragment,\n children = _ref.children,\n props = _objectWithoutProperties(_ref, [\"renderWithFragment\", \"children\"]);\n\n return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n var renderWithFragment = _ref2.renderWithFragment,\n children = _ref2.children,\n props = _objectWithoutProperties(_ref2, [\"renderWithFragment\", \"children\"]);\n\n return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IEView = function IEView(_ref3) {\n var renderWithFragment = _ref3.renderWithFragment,\n children = _ref3.children,\n props = _objectWithoutProperties(_ref3, [\"renderWithFragment\", \"children\"]);\n\n return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n var renderWithFragment = _ref4.renderWithFragment,\n children = _ref4.children,\n props = _objectWithoutProperties(_ref4, [\"renderWithFragment\", \"children\"]);\n\n return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n var renderWithFragment = _ref5.renderWithFragment,\n children = _ref5.children,\n props = _objectWithoutProperties(_ref5, [\"renderWithFragment\", \"children\"]);\n\n return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n var renderWithFragment = _ref6.renderWithFragment,\n children = _ref6.children,\n props = _objectWithoutProperties(_ref6, [\"renderWithFragment\", \"children\"]);\n\n return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n var renderWithFragment = _ref7.renderWithFragment,\n children = _ref7.children,\n props = _objectWithoutProperties(_ref7, [\"renderWithFragment\", \"children\"]);\n\n return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n var renderWithFragment = _ref8.renderWithFragment,\n children = _ref8.children,\n viewClassName = _ref8.viewClassName,\n style = _ref8.style,\n props = _objectWithoutProperties(_ref8, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n\n return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n var renderWithFragment = _ref9.renderWithFragment,\n children = _ref9.children,\n props = _objectWithoutProperties(_ref9, [\"renderWithFragment\", \"children\"]);\n\n return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n var renderWithFragment = _ref10.renderWithFragment,\n children = _ref10.children,\n props = _objectWithoutProperties(_ref10, [\"renderWithFragment\", \"children\"]);\n\n return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n var renderWithFragment = _ref11.renderWithFragment,\n children = _ref11.children,\n props = _objectWithoutProperties(_ref11, [\"renderWithFragment\", \"children\"]);\n\n return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n var renderWithFragment = _ref12.renderWithFragment,\n children = _ref12.children,\n viewClassName = _ref12.viewClassName,\n style = _ref12.style,\n condition = _ref12.condition,\n props = _objectWithoutProperties(_ref12, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\", \"condition\"]);\n\n return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\n\nfunction withOrientationChange(WrappedComponent) {\n return /*#__PURE__*/function (_React$Component) {\n _inherits(_class, _React$Component);\n\n function _class(props) {\n var _this;\n\n _classCallCheck(this, _class);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n _this.isEventListenerAdded = false;\n _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n _this.state = {\n isLandscape: false,\n isPortrait: false\n };\n return _this;\n }\n\n _createClass(_class, [{\n key: \"handleOrientationChange\",\n value: function handleOrientationChange() {\n if (!this.isEventListenerAdded) {\n this.isEventListenerAdded = true;\n }\n\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n this.setState({\n isPortrait: orientation === 0,\n isLandscape: orientation === 90\n });\n }\n }, {\n key: \"onOrientationChange\",\n value: function onOrientationChange() {\n this.handleOrientationChange();\n }\n }, {\n key: \"onPageLoad\",\n value: function onPageLoad() {\n this.handleOrientationChange();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n if (!this.isEventListenerAdded) {\n this.handleOrientationChange();\n window.addEventListener(\"load\", this.onPageLoad, false);\n } else {\n window.removeEventListener(\"load\", this.onPageLoad, false);\n }\n\n window.addEventListener(\"resize\", this.onOrientationChange, false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onOrientationChange, false);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n isLandscape: this.state.isLandscape,\n isPortrait: this.state.isPortrait\n }));\n }\n }]);\n\n return _class;\n }(React__default.Component);\n}\n\nfunction useMobileOrientation() {\n var _useState = React.useState(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n return {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n }),\n _useState2 = _slicedToArray(_useState, 2),\n state = _useState2[0],\n setState = _useState2[1];\n\n var handleOrientationChange = React.useCallback(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n var next = {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n state.orientation !== next.orientation && setState(next);\n }, [state.orientation]);\n React.useEffect(function () {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n handleOrientationChange();\n window.addEventListener(\"load\", handleOrientationChange, false);\n window.addEventListener(\"resize\", handleOrientationChange, false);\n }\n\n return function () {\n window.removeEventListener(\"resize\", handleOrientationChange, false);\n window.removeEventListener(\"load\", handleOrientationChange, false);\n };\n }, [handleOrientationChange]);\n return state;\n}\n\nfunction useDeviceData(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n return parseUserAgent(hookUserAgent);\n}\n\nfunction useDeviceSelectors(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n var deviceData = useDeviceData(hookUserAgent);\n var selectors = buildSelectorsObject(deviceData);\n return [selectors, deviceData];\n}\n\nexports.AndroidView = AndroidView;\nexports.BrowserTypes = BrowserTypes;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.OsTypes = OsTypes;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getSelectorsByUserAgent = getSelectorsByUserAgent;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isDesktop = isDesktop;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isEmbedded = isEmbedded;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSamsungBrowser = isSamsungBrowser;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.parseUserAgent = parseUserAgent;\nexports.setUserAgent = setUserAgent;\nexports.useDeviceData = useDeviceData;\nexports.useDeviceSelectors = useDeviceSelectors;\nexports.useMobileOrientation = useMobileOrientation;\nexports.withOrientationChange = withOrientationChange;\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/* UAParser.js v1.0.38\n Copyright © 2012-2021 Faisal Salman \n MIT License */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"1.0.38\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\",UA_MAX_LENGTH=500;var AMAZON=\"Amazon\",APPLE=\"Apple\",ASUS=\"ASUS\",BLACKBERRY=\"BlackBerry\",BROWSER=\"Browser\",CHROME=\"Chrome\",EDGE=\"Edge\",FIREFOX=\"Firefox\",GOOGLE=\"Google\",HUAWEI=\"Huawei\",LG=\"LG\",MICROSOFT=\"Microsoft\",MOTOROLA=\"Motorola\",OPERA=\"Opera\",SAMSUNG=\"Samsung\",SHARP=\"Sharp\",SONY=\"Sony\",XIAOMI=\"Xiaomi\",ZEBRA=\"Zebra\",FACEBOOK=\"Facebook\",CHROMIUM_OS=\"Chromium OS\",MAC_OS=\"Mac OS\";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j2){_device[MODEL]=\"iPad\";_device[TYPE]=TABLET}return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined;_engine[VERSION]=undefined;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined;_os[VERSION]=undefined;rgxMapper.call(_os,_ua,_rgxmap.os);if(_isSelfNav&&!_os[NAME]&&_uach&&_uach.platform&&_uach.platform!=\"Unknown\"){_os[NAME]=_uach.platform.replace(/chrome os/i,CHROMIUM_OS).replace(/macos/i,MAC_OS)}return _os};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(typeof define===FUNC_TYPE&&define.amd){define(function(){return UAParser})}else if(typeof window!==UNDEF_TYPE){window.UAParser=UAParser}}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window===\"object\"?window:this);"],"sourceRoot":""}